Compare commits
55 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 26f5c03040 | |||
| 6cd9530862 | |||
| fcddcc5185 | |||
| 311accd815 | |||
| ac8d16674c | |||
| 941c819604 | |||
| 6edb1c7c60 | |||
| 5a5b7e56a1 | |||
| 0f3e93a39a | |||
| a0181ce802 | |||
| 0307c59f0e | |||
| 46e959845d | |||
| 610bdb0b52 | |||
| 0ecccc7868 | |||
| e0f27e9496 | |||
| 9563164d76 | |||
| 223e934ba9 | |||
| a4d7a4eba4 | |||
| 1639f9f624 | |||
| 1148415672 | |||
| 1d9a26d7d7 | |||
| 783ec6cf68 | |||
| 5514ecbc3e | |||
| 2cc0eec19d | |||
| 40dff3d08f | |||
| f28e3c78ab | |||
| a1ae5a338a | |||
| 441d4b6b01 | |||
| e4602fd890 | |||
| 6e5114d897 | |||
| 6177734a65 | |||
| 3825069e52 | |||
| c3e1e63eef | |||
| 064a4c5891 | |||
| c828d09539 | |||
| 27a1714f37 | |||
| 41ec4150e5 | |||
| 984e755ee6 | |||
| fbbe5ba764 | |||
| a7d59970cb | |||
| 4e12738df2 | |||
| 349d1f5e52 | |||
| b289b0fdee | |||
| e7c2d2c277 | |||
| f62424e9bb | |||
| f92addbbf6 | |||
| 53384f9eaf | |||
| e12ff1b6f9 | |||
| 586d72f1fe | |||
| 7a4e22feec | |||
| b730d7f97e | |||
| ecd7c1754d | |||
| 951d59ba15 | |||
| 2962768a6f | |||
| aaf2057725 |
+7
-2
@@ -4,10 +4,15 @@ Makefile.in.in
|
|||||||
configure
|
configure
|
||||||
config.log
|
config.log
|
||||||
config.status
|
config.status
|
||||||
config/
|
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
autom4te.cache/
|
autom4te.cache/
|
||||||
m4/
|
po/gnome-shell-extensions.pot
|
||||||
po/POTFILES
|
po/POTFILES
|
||||||
po/stamp-it
|
po/stamp-it
|
||||||
staging/
|
staging/
|
||||||
|
|
||||||
|
*~
|
||||||
|
*.gmo
|
||||||
|
metadata.json
|
||||||
|
*.gschema.xml
|
||||||
|
*.gschema.valid
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||||
|
|
||||||
SUBDIRS = extensions po
|
SUBDIRS = extensions po
|
||||||
|
|
||||||
|
DISTCHECK_CONFIGURE_FLAGS = --enable-extensions=all
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
install-sh
|
||||||
|
mkinstalldirs
|
||||||
|
missing
|
||||||
+26
-10
@@ -1,10 +1,10 @@
|
|||||||
AC_PREREQ(2.63)
|
AC_PREREQ(2.63)
|
||||||
AC_INIT([gnome-shell-extensions],[2.91.6],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
AC_INIT([gnome-shell-extensions],[3.0.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
||||||
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AC_CONFIG_AUX_DIR([config])
|
AC_CONFIG_AUX_DIR([config])
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.10 dist-bzip2 no-dist-gzip foreign])
|
AM_INIT_AUTOMAKE([1.10 dist-bzip2 no-dist-gzip foreign tar-ustar])
|
||||||
|
|
||||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
@@ -16,23 +16,33 @@ IT_PROG_INTLTOOL(0.26)
|
|||||||
|
|
||||||
PKG_PROG_PKG_CONFIG([0.22])
|
PKG_PROG_PKG_CONFIG([0.22])
|
||||||
|
|
||||||
|
GLIB_GSETTINGS
|
||||||
|
|
||||||
ADDITIONAL_PACKAGES=
|
ADDITIONAL_PACKAGES=
|
||||||
|
|
||||||
dnl keep this in sync with extensions/Makefile.am
|
dnl keep this in sync with extensions/Makefile.am
|
||||||
ALL_EXTENSIONS="example alternate-tab xrandr-indicator windowsNavigator"
|
ALL_EXTENSIONS="example alternate-tab xrandr-indicator windowsNavigator auto-move-windows dock user-theme alternative-status-menu gajim"
|
||||||
|
DEFAULT_EXTENSIONS="alternate-tab windowsNavigator dock alternative-status-menu"
|
||||||
AC_ARG_ENABLE([extensions],
|
AC_ARG_ENABLE([extensions],
|
||||||
[AS_HELP_STRING([--enable-extensions],[Space separated list of extensions to enable. Default is that all extensions are built.])],
|
[AS_HELP_STRING([--enable-extensions],[Space separated list of extensions to enable.
|
||||||
|
The default is to build all extensions that can be installed in the home directory and have no external depedencies.
|
||||||
|
Use "all" to enable all available extensions.])],
|
||||||
[],
|
[],
|
||||||
[enable_extensions=$ALL_EXTENSIONS]
|
[enable_extensions=$DEFAULT_EXTENSIONS]
|
||||||
)
|
)
|
||||||
|
if test x$enable_extensions = xall; then
|
||||||
|
enable_extensions="$ALL_EXTENSIONS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ADDITIONAL_PACKAGES=
|
||||||
ENABLED_EXTENSIONS=
|
ENABLED_EXTENSIONS=
|
||||||
for e in $enable_extensions; do
|
for e in $enable_extensions; do
|
||||||
case $e in
|
case $e in
|
||||||
xrandr-indicator)
|
xrandr-indicator)
|
||||||
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
||||||
ADDITIONAL_PACKAGES="gnome-desktop-3.0 >= 2.91.6"
|
ADDITIONAL_PACKAGES="$ADDITIONAL_PAGKAGES gnome-desktop-3.0 >= 2.91.6"
|
||||||
;;
|
;;
|
||||||
alternate-tab|example|windowsNavigator)
|
alternate-tab|example|windowsNavigator|auto-move-windows|dock|user-theme|alternative-status-menu|gajim)
|
||||||
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -49,13 +59,19 @@ if test "x$ADDITIONAL_PACKAGES" != x; then
|
|||||||
PKG_CHECK_MODULES(ADDITIONAL, [$ADDITIONAL_PACKAGES])
|
PKG_CHECK_MODULES(ADDITIONAL, [$ADDITIONAL_PACKAGES])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl Please keep this sorted alphabetically
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
|
||||||
extensions/Makefile
|
|
||||||
extensions/example/Makefile
|
|
||||||
extensions/alternate-tab/Makefile
|
extensions/alternate-tab/Makefile
|
||||||
|
extensions/alternative-status-menu/Makefile
|
||||||
|
extensions/auto-move-windows/Makefile
|
||||||
|
extensions/dock/Makefile
|
||||||
|
extensions/example/Makefile
|
||||||
extensions/windowsNavigator/Makefile
|
extensions/windowsNavigator/Makefile
|
||||||
|
extensions/gajim/Makefile
|
||||||
extensions/xrandr-indicator/Makefile
|
extensions/xrandr-indicator/Makefile
|
||||||
|
extensions/user-theme/Makefile
|
||||||
|
extensions/Makefile
|
||||||
|
Makefile
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
])
|
])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|||||||
+17
-5
@@ -1,10 +1,22 @@
|
|||||||
|
extensionurl = http://git.gnome.org/gnome-shell-extensions
|
||||||
|
|
||||||
# Change these to modify how installation is performed
|
# Change these to modify how installation is performed
|
||||||
# If you modify extensionbase, you also need to modify
|
|
||||||
# metadata.json of each extension
|
|
||||||
topextensiondir = $(datadir)/gnome-shell/extensions
|
topextensiondir = $(datadir)/gnome-shell/extensions
|
||||||
extensionbase = @gnome-shell-extensions.gnome.org
|
extensionbase = @gnome-shell-extensions.gnome.org
|
||||||
|
|
||||||
extensiondir = $(topextensiondir)/$(EXTENSION_ID)$(extensionbase)
|
uuid = $(EXTENSION_ID)$(extensionbase)
|
||||||
|
|
||||||
dist_extension_DATA = metadata.json extension.js stylesheet.css
|
extensiondir = $(topextensiondir)/$(uuid)
|
||||||
nodist_extension_DATA = $(EXTRA_EXTENSION)
|
|
||||||
|
dist_extension_DATA = extension.js stylesheet.css
|
||||||
|
nodist_extension_DATA = metadata.json $(EXTRA_EXTENSION)
|
||||||
|
|
||||||
|
EXTRA_DIST = metadata.json.in
|
||||||
|
|
||||||
|
metadata.json: metadata.json.in $(top_builddir)/config.status
|
||||||
|
$(AM_V_GEN) sed -e "s|[@]LOCALEDIR@|$(datadir)/locale|" \
|
||||||
|
-e "s|[@]uuid@|$(uuid)|" \
|
||||||
|
-e "s|[@]shell_current@|$(PACKAGE_VERSION)|" \
|
||||||
|
-e "s|[@]url@|$(extensionurl)|" $< > $@
|
||||||
|
|
||||||
|
CLEANFILES = metadata.json
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
DIST_SUBDIRS = example alternate-tab xrandr-indicator windowsNavigator
|
DIST_SUBDIRS = example alternate-tab xrandr-indicator windowsNavigator auto-move-windows dock user-theme alternative-status-menu gajim
|
||||||
|
|
||||||
SUBDIRS = $(ENABLED_EXTENSIONS)
|
SUBDIRS = $(ENABLED_EXTENSIONS)
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ AltTabPopup2.prototype = {
|
|||||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
||||||
|
|
||||||
this._appSwitcher = new WindowList(windows);
|
this._appSwitcher = new WindowList(windows);
|
||||||
|
this._appSwitcher._altTabPopup=this;
|
||||||
this._appSwitcher.highlight(0,false);
|
this._appSwitcher.highlight(0,false);
|
||||||
this.actor.add_actor(this._appSwitcher.actor);
|
this.actor.add_actor(this._appSwitcher.actor);
|
||||||
this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated));
|
this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated));
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"uuid": "alternate-tab@gnome-shell-extensions.gnome.org",
|
"uuid": "@uuid@",
|
||||||
"name": "AlternateTab",
|
"name": "AlternateTab",
|
||||||
"description": "A replacement for Alt-Tab, allows to cycle between windows and does not group by application",
|
"description": "A replacement for Alt-Tab, allows to cycle between windows and does not group by application",
|
||||||
"original-author": "thomas.bouffon@gmail.com",
|
"original-author": "thomas.bouffon@gmail.com",
|
||||||
"shell-version": [ "2.91.5", "2.91.6" ]
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXTENSION_ID = alternative-status-menu
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
/* -*- mode: js2 - indent-tabs-mode: nil - js2-basic-offset: 4 -*- */
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
const GnomeSession = imports.misc.gnomeSession;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
function updateSuspendOrHibernate(object, pspec, item) {
|
||||||
|
let canSuspend = this._upClient.get_can_suspend();
|
||||||
|
let canHibernate = this._upClient.get_can_hibernate();
|
||||||
|
|
||||||
|
if (!canSuspend && !canHibernate) {
|
||||||
|
item.actor.hide();
|
||||||
|
return;
|
||||||
|
} else
|
||||||
|
item.actor.show();
|
||||||
|
if (!canSuspend && canHibernate) {
|
||||||
|
item.updateText(_("Hibernate"), null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let suspendText = _("Suspend");
|
||||||
|
let hibernateText = canHibernate ? _("Hibernate") : null;
|
||||||
|
item.updateText(suspendText, hibernateText);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSuspendOrHibernateActivate(item) {
|
||||||
|
Main.overview.hide();
|
||||||
|
|
||||||
|
let haveSuspend = this._upClient.get_can_suspend();
|
||||||
|
let haveHibernate = this._upClient.get_can_hibernate();
|
||||||
|
|
||||||
|
if (haveSuspend &&
|
||||||
|
item.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
||||||
|
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||||
|
this._upClient.suspend_sync(null);
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||||
|
this._upClient.hibernate_sync(null);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function createSubMenu() {
|
||||||
|
let item;
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupImageMenuItem(_("Available"), 'user-available');
|
||||||
|
item.connect('activate', Lang.bind(this, this._setPresenceStatus, GnomeSession.PresenceStatus.AVAILABLE));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
this._presenceItems[GnomeSession.PresenceStatus.AVAILABLE] = item;
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupImageMenuItem(_("Busy"), 'user-busy');
|
||||||
|
item.connect('activate', Lang.bind(this, this._setPresenceStatus, GnomeSession.PresenceStatus.BUSY));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
this._presenceItems[GnomeSession.PresenceStatus.BUSY] = item;
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupMenuItem(_("My Account"));
|
||||||
|
item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupMenuItem(_("System Settings"));
|
||||||
|
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupMenuItem(_("Lock Screen"));
|
||||||
|
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupMenuItem(_("Switch User"));
|
||||||
|
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
this._loginScreenItem = item;
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupMenuItem(_("Log Out..."));
|
||||||
|
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
|
||||||
|
_("Hibernate"));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
item.connect('activate', Lang.bind(this, onSuspendOrHibernateActivate));
|
||||||
|
this._upClient.connect('notify::can-suspend', Lang.bind(this, updateSuspendOrHibernate, item));
|
||||||
|
this._upClient.connect('notify::can-hibernate', Lang.bind(this, updateSuspendOrHibernate, item));
|
||||||
|
updateSuspendOrHibernate.call(this, null, null, item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupMenuItem(_("Power Off..."));
|
||||||
|
item.connect('activate', Lang.bind(this, function() {
|
||||||
|
this._session.ShutdownRemote();
|
||||||
|
}));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put your extension initialization code here
|
||||||
|
function main(metadata) {
|
||||||
|
let statusMenu = Main.panel._statusmenu;
|
||||||
|
statusMenu.menu.removeAll();
|
||||||
|
createSubMenu.call(statusMenu);
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"name": "Alternative Status Menu",
|
||||||
|
"description": "Replaces GNOME Shell Status Menu with one showing Suspend/Hibernate and Power Off as separate items",
|
||||||
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
.popup-alternating-menu-item:alternate {
|
||||||
|
font-weight: normal !important;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
EXTENSION_ID = auto-move-windows
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
|
|
||||||
|
gschemas_in = org.gnome.shell.extensions.auto-move-windows.gschema.xml.in
|
||||||
|
|
||||||
|
@INTLTOOL_XML_NOMERGE_RULE@
|
||||||
|
|
||||||
|
gsettings_SCHEMAS = $(gschemas_in:.xml.in=.xml)
|
||||||
|
|
||||||
|
@GSETTINGS_RULES@
|
||||||
|
|
||||||
|
CLEANFILES += $(gschemas_in:.xml.in=.valid) $(gsettings_SCHEMAS)
|
||||||
|
EXTRA_DIST += $(gschemas_in)
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
// Start apps on custom workspaces
|
||||||
|
|
||||||
|
const Glib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
|
const SETTINGS_SCHEMA = 'org.gnome.shell.extensions.auto-move-windows';
|
||||||
|
const SETTINGS_KEY = 'application-list';
|
||||||
|
|
||||||
|
function WindowMover() {
|
||||||
|
this._init();
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowMover.prototype = {
|
||||||
|
_init: function() {
|
||||||
|
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
||||||
|
this._windowTracker = Shell.WindowTracker.get_default();
|
||||||
|
|
||||||
|
let display = global.screen.get_display();
|
||||||
|
// Connect after so the handler from ShellWindowTracker has already run
|
||||||
|
display.connect_after('window-created', Lang.bind(this, this._findAndMove));
|
||||||
|
},
|
||||||
|
|
||||||
|
_ensureAtLeastWorkspaces: function(num, window) {
|
||||||
|
for (let j = global.screen.n_workspaces; j <= num; j++) {
|
||||||
|
window.change_workspace_by_index(j-1, false, global.get_current_time());
|
||||||
|
global.screen.append_new_workspace(false, 0);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_findAndMove: function(display, window, noRecurse) {
|
||||||
|
if (!this._windowTracker.is_window_interesting(window))
|
||||||
|
return;
|
||||||
|
|
||||||
|
let spaces = this._settings.get_strv(SETTINGS_KEY);
|
||||||
|
|
||||||
|
let app = this._windowTracker.get_window_app(window);
|
||||||
|
if (!app) {
|
||||||
|
if (!noRecurse) {
|
||||||
|
// window is not tracked yet
|
||||||
|
Mainloop.idle_add(Lang.bind(this, function() {
|
||||||
|
this._findAndMove(display, window, true);
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
} else
|
||||||
|
log ('Cannot find application for window');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let app_id = app.get_id();
|
||||||
|
for ( let j = 0 ; j < spaces.length; j++ ) {
|
||||||
|
let apps_to_space = spaces[j].split(":");
|
||||||
|
// Match application id
|
||||||
|
if (apps_to_space[0] == app_id) {
|
||||||
|
let workspace_num = parseInt(apps_to_space[1]) - 1;
|
||||||
|
|
||||||
|
if (workspace_num >= global.screen.n_workspaces)
|
||||||
|
this._ensureAtLeastWorkspaces(workspace_num, window);
|
||||||
|
|
||||||
|
window.change_workspace_by_index(workspace_num, false, global.get_current_time());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function main(extensionMeta) {
|
||||||
|
Main._checkWorkspaces = function() {
|
||||||
|
let i;
|
||||||
|
let emptyWorkspaces = new Array(Main._workspaces.length);
|
||||||
|
|
||||||
|
for (i = 0; i < Main._workspaces.length; i++)
|
||||||
|
emptyWorkspaces[i] = true;
|
||||||
|
|
||||||
|
let windows = global.get_window_actors();
|
||||||
|
for (i = 0; i < windows.length; i++) {
|
||||||
|
let win = windows[i];
|
||||||
|
|
||||||
|
if (win.get_meta_window().is_on_all_workspaces())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let workspaceIndex = win.get_workspace();
|
||||||
|
emptyWorkspaces[workspaceIndex] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we don't have an empty workspace at the end, add one
|
||||||
|
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
||||||
|
global.screen.append_new_workspace(false, global.get_current_time());
|
||||||
|
emptyWorkspaces.push(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete other empty workspaces; do it from the end to avoid index changes
|
||||||
|
for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
|
||||||
|
if (emptyWorkspaces[i])
|
||||||
|
global.screen.remove_workspace(Main._workspaces[i], global.get_current_time());
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Main._checkWorkspacesId = 0;
|
||||||
|
return false;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
new WindowMover();
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"name": "Auto Move Windows",
|
||||||
|
"description": "Move applications to specific workspaces when they create windows",
|
||||||
|
"shell-version": [ "@shell_current@" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"original-authors": [ "alessandro.crismani@gmail.com", "thomas.bouffon@gmail.com" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
<schemalist gettext-domain="gnome-shell-extensions">
|
||||||
|
<schema id="org.gnome.shell.extensions.auto-move-windows" path="/org/gnome/shell/extensions/auto-move-windows/">
|
||||||
|
<key name="application-list" type="as">
|
||||||
|
<!-- FIXME: should be a(su), when JS supports more of GVariant -->
|
||||||
|
<default>[ ]</default>
|
||||||
|
<_summary>Application and workspace list</_summary>
|
||||||
|
<_description>A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number</_description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/* This extensions requires no special styling */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXTENSION_ID = dock
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
@@ -0,0 +1,456 @@
|
|||||||
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Pango = imports.gi.Pango;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
|
||||||
|
const AppFavorites = imports.ui.appFavorites;
|
||||||
|
const DND = imports.ui.dnd;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Overview = imports.ui.overview;
|
||||||
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
|
const Search = imports.ui.search;
|
||||||
|
const Tweener = imports.ui.tweener;
|
||||||
|
const Workspace = imports.ui.workspace;
|
||||||
|
const AppDisplay = imports.ui.appDisplay;
|
||||||
|
const AltTab = imports.ui.altTab;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
const DOCKICON_SIZE = 48;
|
||||||
|
const DND_RAISE_APP_TIMEOUT = 500;
|
||||||
|
|
||||||
|
function Dock() {
|
||||||
|
this._init();
|
||||||
|
}
|
||||||
|
|
||||||
|
Dock.prototype = {
|
||||||
|
_init : function() {
|
||||||
|
this._placeholderText = null;
|
||||||
|
this._menus = [];
|
||||||
|
this._menuDisplays = [];
|
||||||
|
|
||||||
|
this._favorites = [];
|
||||||
|
|
||||||
|
this._spacing = 4;
|
||||||
|
this._item_size = DOCKICON_SIZE;
|
||||||
|
|
||||||
|
this.actor = new St.BoxLayout({ name: 'dock', vertical: true, reactive: true });
|
||||||
|
|
||||||
|
this._grid = new Shell.GenericContainer();
|
||||||
|
this.actor.add(this._grid, { expand: true, y_align: St.Align.START });
|
||||||
|
this.actor.connect('style-changed', Lang.bind(this, this._onStyleChanged));
|
||||||
|
|
||||||
|
this._grid.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
|
this._grid.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||||
|
this._grid.connect('allocate', Lang.bind(this, this._allocate));
|
||||||
|
|
||||||
|
this._workId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._redisplay));
|
||||||
|
|
||||||
|
this._tracker = Shell.WindowTracker.get_default();
|
||||||
|
this._appSystem = Shell.AppSystem.get_default();
|
||||||
|
|
||||||
|
this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
|
||||||
|
AppFavorites.getAppFavorites().connect('changed', Lang.bind(this, this._queueRedisplay));
|
||||||
|
this._tracker.connect('app-state-changed', Lang.bind(this, this._queueRedisplay));
|
||||||
|
|
||||||
|
Main.chrome.addActor(this.actor, { visibleInOverview: false });
|
||||||
|
this.actor.lower_bottom();
|
||||||
|
},
|
||||||
|
|
||||||
|
_appIdListToHash: function(apps) {
|
||||||
|
let ids = {};
|
||||||
|
for (let i = 0; i < apps.length; i++)
|
||||||
|
ids[apps[i].get_id()] = apps[i];
|
||||||
|
return ids;
|
||||||
|
},
|
||||||
|
|
||||||
|
_queueRedisplay: function () {
|
||||||
|
Main.queueDeferredWork(this._workId);
|
||||||
|
},
|
||||||
|
|
||||||
|
_redisplay: function () {
|
||||||
|
this.removeAll();
|
||||||
|
|
||||||
|
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
|
||||||
|
|
||||||
|
/* hardcode here pending some design about how exactly desktop contexts behave */
|
||||||
|
let contextId = '';
|
||||||
|
|
||||||
|
let running = this._tracker.get_running_apps(contextId);
|
||||||
|
let runningIds = this._appIdListToHash(running);
|
||||||
|
|
||||||
|
let icons = 0;
|
||||||
|
|
||||||
|
let nFavorites = 0;
|
||||||
|
for (let id in favorites) {
|
||||||
|
let app = favorites[id];
|
||||||
|
let display = new DockIcon(app);
|
||||||
|
this.addItem(display.actor);
|
||||||
|
nFavorites++;
|
||||||
|
icons++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < running.length; i++) {
|
||||||
|
let app = running[i];
|
||||||
|
if (app.get_id() in favorites)
|
||||||
|
continue;
|
||||||
|
let display = new DockIcon(app);
|
||||||
|
icons++;
|
||||||
|
this.addItem(display.actor);
|
||||||
|
}
|
||||||
|
if (this._placeholderText) {
|
||||||
|
this._placeholderText.destroy();
|
||||||
|
this._placeholderText = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (running.length == 0 && nFavorites == 0) {
|
||||||
|
this._placeholderText = new St.Label({ text: _("Drag here to add favorites") });
|
||||||
|
this.actor.add_actor(this._placeholderText);
|
||||||
|
}
|
||||||
|
|
||||||
|
let primary = global.get_primary_monitor();
|
||||||
|
let height = (icons)*(this._item_size + this._spacing) + 2*this._spacing;
|
||||||
|
this.actor.set_size(this._item_size + 4*this._spacing, height);
|
||||||
|
this.actor.set_position(primary.width-this._item_size-this._spacing-2, (primary.height-height)/2);
|
||||||
|
},
|
||||||
|
|
||||||
|
_getPreferredWidth: function (grid, forHeight, alloc) {
|
||||||
|
alloc.min_size = this._item_size;
|
||||||
|
alloc.natural_size = this._item_size + this._spacing;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getPreferredHeight: function (grid, forWidth, alloc) {
|
||||||
|
let children = this._grid.get_children();
|
||||||
|
let nRows = children.length;
|
||||||
|
let totalSpacing = Math.max(0, nRows - 1) * this._spacing;
|
||||||
|
let height = nRows * this._item_size + totalSpacing;
|
||||||
|
alloc.min_size = height;
|
||||||
|
alloc.natural_size = height;
|
||||||
|
},
|
||||||
|
|
||||||
|
_allocate: function (grid, box, flags) {
|
||||||
|
let children = this._grid.get_children();
|
||||||
|
|
||||||
|
let x = box.x1 + this._spacing;
|
||||||
|
let y = box.y1 + this._spacing;
|
||||||
|
|
||||||
|
for (let i = 0; i < children.length; i++) {
|
||||||
|
let childBox = new Clutter.ActorBox();
|
||||||
|
childBox.x1 = x;
|
||||||
|
childBox.y1 = y;
|
||||||
|
childBox.x2 = childBox.x1 + this._item_size;
|
||||||
|
childBox.y2 = childBox.y1 + this._item_size;
|
||||||
|
children[i].allocate(childBox, flags);
|
||||||
|
y += this._item_size + this._spacing;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_onStyleChanged: function() {
|
||||||
|
let themeNode = this.actor.get_theme_node();
|
||||||
|
let [success, len] = themeNode.get_length('spacing', false);
|
||||||
|
if (success)
|
||||||
|
this._spacing = len;
|
||||||
|
[success, len] = themeNode.get_length('-shell-grid-item-size', false);
|
||||||
|
if (success)
|
||||||
|
this._item_size = len;
|
||||||
|
this._grid.queue_relayout();
|
||||||
|
},
|
||||||
|
|
||||||
|
removeAll: function () {
|
||||||
|
this._grid.get_children().forEach(Lang.bind(this, function (child) {
|
||||||
|
child.destroy();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
addItem: function(actor) {
|
||||||
|
this._grid.add_actor(actor);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Signals.addSignalMethods(Dock.prototype);
|
||||||
|
|
||||||
|
function DockIcon(app) {
|
||||||
|
this._init(app);
|
||||||
|
}
|
||||||
|
|
||||||
|
DockIcon.prototype = {
|
||||||
|
_init : function(app) {
|
||||||
|
this.app = app;
|
||||||
|
this.actor = new St.Button({ style_class: 'dock-app',
|
||||||
|
button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO,
|
||||||
|
reactive: true,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true });
|
||||||
|
this.actor._delegate = this;
|
||||||
|
this.actor.set_size(DOCKICON_SIZE, DOCKICON_SIZE);
|
||||||
|
|
||||||
|
this._icon = this.app.create_icon_texture(DOCKICON_SIZE);
|
||||||
|
this.actor.set_child(this._icon);
|
||||||
|
|
||||||
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
|
|
||||||
|
this._menu = null;
|
||||||
|
this._menuManager = new PopupMenu.PopupMenuManager(this);
|
||||||
|
|
||||||
|
this._has_focus = false;
|
||||||
|
|
||||||
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
|
tracker.connect('notify::focus-app', Lang.bind(this, this._onStateChanged));
|
||||||
|
|
||||||
|
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||||
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
this.actor.connect('notify::hover', Lang.bind(this, this._hoverChanged));
|
||||||
|
|
||||||
|
this._menuTimeoutId = 0;
|
||||||
|
this._stateChangedId = this.app.connect('notify::state',
|
||||||
|
Lang.bind(this, this._onStateChanged));
|
||||||
|
this._onStateChanged();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDestroy: function() {
|
||||||
|
if (this._stateChangedId > 0)
|
||||||
|
this.app.disconnect(this._stateChangedId);
|
||||||
|
this._stateChangedId = 0;
|
||||||
|
this._removeMenuTimeout();
|
||||||
|
},
|
||||||
|
|
||||||
|
_removeMenuTimeout: function() {
|
||||||
|
if (this._menuTimeoutId > 0) {
|
||||||
|
Mainloop.source_remove(this._menuTimeoutId);
|
||||||
|
this._menuTimeoutId = 0;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_hoverChanged: function(actor) {
|
||||||
|
if (actor != this.actor)
|
||||||
|
this._has_focus = false;
|
||||||
|
else
|
||||||
|
this._has_focus = true;
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onStateChanged: function() {
|
||||||
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
|
let focusedApp = tracker.focus_app;
|
||||||
|
if (this.app.state != Shell.AppState.STOPPED) {
|
||||||
|
this.actor.add_style_class_name('running');
|
||||||
|
if (this.app == focusedApp) {
|
||||||
|
this.actor.add_style_class_name('focused');
|
||||||
|
} else {
|
||||||
|
this.actor.remove_style_class_name('focused');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.actor.remove_style_class_name('focused');
|
||||||
|
this.actor.remove_style_class_name('running');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onButtonPress: function(actor, event) {
|
||||||
|
let button = event.get_button();
|
||||||
|
if (button == 1) {
|
||||||
|
this._removeMenuTimeout();
|
||||||
|
this._menuTimeoutId = Mainloop.timeout_add(AppDisplay.MENU_POPUP_TIMEOUT, Lang.bind(this, function() {
|
||||||
|
this.popupMenu();
|
||||||
|
}));
|
||||||
|
} else if (button == 3) {
|
||||||
|
this.popupMenu();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onClicked: function(actor, button) {
|
||||||
|
this._removeMenuTimeout();
|
||||||
|
|
||||||
|
if (button == 1) {
|
||||||
|
this._onActivate(Clutter.get_current_event());
|
||||||
|
} else if (button == 2) {
|
||||||
|
// Last workspace is always empty
|
||||||
|
let launchWorkspace = global.screen.get_workspace_by_index(global.screen.n_workspaces - 1);
|
||||||
|
launchWorkspace.activate(global.get_current_time());
|
||||||
|
this.emit('launching');
|
||||||
|
this.app.open_new_window(-1);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
getId: function() {
|
||||||
|
return this.app.get_id();
|
||||||
|
},
|
||||||
|
|
||||||
|
popupMenu: function() {
|
||||||
|
this._removeMenuTimeout();
|
||||||
|
this.actor.fake_release();
|
||||||
|
|
||||||
|
if (!this._menu) {
|
||||||
|
this._menu = new DockIconMenu(this);
|
||||||
|
this._menu.connect('activate-window', Lang.bind(this, function (menu, window) {
|
||||||
|
this.activateWindow(window);
|
||||||
|
}));
|
||||||
|
this._menu.connect('popup', Lang.bind(this, function (menu, isPoppedUp) {
|
||||||
|
if (!isPoppedUp)
|
||||||
|
this._onMenuPoppedDown();
|
||||||
|
}));
|
||||||
|
|
||||||
|
this._menuManager.addMenu(this._menu, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._menu.popup();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
activateWindow: function(metaWindow) {
|
||||||
|
if (metaWindow) {
|
||||||
|
this._didActivateWindow = true;
|
||||||
|
Main.activateWindow(metaWindow);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
setSelected: function (isSelected) {
|
||||||
|
this._selected = isSelected;
|
||||||
|
if (this._selected)
|
||||||
|
this.actor.add_style_class_name('selected');
|
||||||
|
else
|
||||||
|
this.actor.remove_style_class_name('selected');
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMenuPoppedDown: function() {
|
||||||
|
this.actor.sync_hover();
|
||||||
|
},
|
||||||
|
|
||||||
|
_getRunning: function() {
|
||||||
|
return this.app.state != Shell.AppState.STOPPED;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onActivate: function (event) {
|
||||||
|
this.emit('launching');
|
||||||
|
let modifiers = Shell.get_event_state(event);
|
||||||
|
|
||||||
|
if (modifiers & Clutter.ModifierType.CONTROL_MASK
|
||||||
|
&& this.app.state == Shell.AppState.RUNNING) {
|
||||||
|
let current_workspace = global.screen.get_active_workspace().index();
|
||||||
|
this.app.open_new_window(current_workspace);
|
||||||
|
} else {
|
||||||
|
let tracker = Shell.WindowTracker.get_default();
|
||||||
|
let focusedApp = tracker.focus_app;
|
||||||
|
|
||||||
|
if (this.app == focusedApp) {
|
||||||
|
let windows = this.app.get_windows();
|
||||||
|
let current_workspace = global.screen.get_active_workspace();
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
let w = windows[i];
|
||||||
|
if (w.get_workspace() == current_workspace)
|
||||||
|
w.minimize();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.app.activate(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Main.overview.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
shellWorkspaceLaunch : function() {
|
||||||
|
this.app.open_new_window();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Signals.addSignalMethods(DockIcon.prototype);
|
||||||
|
|
||||||
|
function DockIconMenu(source) {
|
||||||
|
this._init(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
DockIconMenu.prototype = {
|
||||||
|
__proto__: AppDisplay.AppIconMenu.prototype,
|
||||||
|
|
||||||
|
_init: function(source) {
|
||||||
|
PopupMenu.PopupMenu.prototype._init.call(this, source.actor, St.Align.MIDDLE, St.Side.RIGHT, 0);
|
||||||
|
|
||||||
|
this._source = source;
|
||||||
|
|
||||||
|
this.connect('activate', Lang.bind(this, this._onActivate));
|
||||||
|
this.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged));
|
||||||
|
|
||||||
|
this.actor.add_style_class_name('dock-menu');
|
||||||
|
|
||||||
|
// Chain our visibility and lifecycle to that of the source
|
||||||
|
source.actor.connect('notify::mapped', Lang.bind(this, function () {
|
||||||
|
if (!source.actor.mapped)
|
||||||
|
this.close();
|
||||||
|
}));
|
||||||
|
source.actor.connect('destroy', Lang.bind(this, function () { this.actor.destroy(); }));
|
||||||
|
|
||||||
|
Main.chrome.addActor(this.actor);
|
||||||
|
},
|
||||||
|
|
||||||
|
_redisplay: function() {
|
||||||
|
this.removeAll();
|
||||||
|
|
||||||
|
let windows = this._source.app.get_windows();
|
||||||
|
|
||||||
|
// Display the app windows menu items and the separator between windows
|
||||||
|
// of the current desktop and other windows.
|
||||||
|
let activeWorkspace = global.screen.get_active_workspace();
|
||||||
|
let separatorShown = windows.length > 0 && windows[0].get_workspace() != activeWorkspace;
|
||||||
|
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
if (!separatorShown && windows[i].get_workspace() != activeWorkspace) {
|
||||||
|
this._appendSeparator();
|
||||||
|
separatorShown = true;
|
||||||
|
}
|
||||||
|
let item = this._appendMenuItem(windows[i].title);
|
||||||
|
item._window = windows[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (windows.length > 0)
|
||||||
|
this._appendSeparator();
|
||||||
|
|
||||||
|
let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._source.app.get_id());
|
||||||
|
|
||||||
|
this._newWindowMenuItem = windows.length > 0 ? this._appendMenuItem(_("New Window")) : null;
|
||||||
|
|
||||||
|
this._quitAppMenuItem = windows.length >0 ? this._appendMenuItem(_("Quit Application")) : null;
|
||||||
|
|
||||||
|
if (windows.length > 0)
|
||||||
|
this._appendSeparator();
|
||||||
|
this._toggleFavoriteMenuItem = this._appendMenuItem(isFavorite ?
|
||||||
|
_("Remove from Favorites")
|
||||||
|
: _("Add to Favorites"));
|
||||||
|
|
||||||
|
this._highlightedItem = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
_onActivate: function (actor, child) {
|
||||||
|
if (child._window) {
|
||||||
|
let metaWindow = child._window;
|
||||||
|
this.emit('activate-window', metaWindow);
|
||||||
|
} else if (child == this._newWindowMenuItem) {
|
||||||
|
let current_workspace = global.screen.get_active_workspace().index();
|
||||||
|
this._source.app.open_new_window(current_workspace);
|
||||||
|
this.emit('activate-window', null);
|
||||||
|
} else if (child == this._quitAppMenuItem) {
|
||||||
|
this._source.app.request_quit();
|
||||||
|
} else if (child == this._toggleFavoriteMenuItem) {
|
||||||
|
let favs = AppFavorites.getAppFavorites();
|
||||||
|
let isFavorite = favs.isFavorite(this._source.app.get_id());
|
||||||
|
if (isFavorite)
|
||||||
|
favs.removeFavorite(this._source.app.get_id());
|
||||||
|
else
|
||||||
|
favs.addFavorite(this._source.app.get_id());
|
||||||
|
}
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function main(extensionMeta) {
|
||||||
|
imports.gettext.bindtextdomain('gnome-shell-extensions', extensionMeta.localedir);
|
||||||
|
|
||||||
|
let dock = new Dock();
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"name": "Dock",
|
||||||
|
"description": "A dock for the GNOME Shell -- displays favorite and running applications",
|
||||||
|
"original-author": "tclaesson@gmail.com",
|
||||||
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#dock {
|
||||||
|
border-radius: 9px;
|
||||||
|
background-color: rgba(0,0,0,0.9);
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: #5f5f5f;
|
||||||
|
}
|
||||||
|
/* Panel */
|
||||||
|
.dock-app {
|
||||||
|
padding: 4px;
|
||||||
|
width: 70px;
|
||||||
|
height: 70px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition-duration: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dock-app.running {
|
||||||
|
padding: 3px;
|
||||||
|
border: 1px solid #181818;
|
||||||
|
background-gradient-direction: vertical;
|
||||||
|
background-gradient-start: #3d3d3d;
|
||||||
|
background-gradient-end: #181818;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dock-app.selected {
|
||||||
|
padding: 3px;
|
||||||
|
border: 1px solid #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dock-app.focused {
|
||||||
|
padding: 3px;
|
||||||
|
border: 1px solid #5f5f5f;
|
||||||
|
background-gradient-direction: vertical;
|
||||||
|
background-gradient-start: rgba(61,61,61,0.8);
|
||||||
|
background-gradient-end: rgba(24,24,24,0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dock-app:hover {
|
||||||
|
padding: 3px;
|
||||||
|
border: 1px solid #666666;
|
||||||
|
background-gradient-direction: vertical;
|
||||||
|
background-gradient-start: rgba(61,61,61,0.8);
|
||||||
|
background-gradient-end: rgba(24,24,24,0.2);
|
||||||
|
transition-duration: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dock-app:active {
|
||||||
|
padding: 3px;
|
||||||
|
background-color: #1e1e1e;
|
||||||
|
border: 1px solid #5f5f5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dock-menu {
|
||||||
|
font-size: 12px
|
||||||
|
}
|
||||||
@@ -2,10 +2,13 @@
|
|||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
const Mainloop = imports.mainloop;
|
const Mainloop = imports.mainloop;
|
||||||
|
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
function _showHello() {
|
function _showHello() {
|
||||||
let text = new St.Label({ style_class: 'helloworld-label', text: "Hello, world!" });
|
let text = new St.Label({ style_class: 'helloworld-label', text: _("Hello, world!") });
|
||||||
let monitor = global.get_primary_monitor();
|
let monitor = global.get_primary_monitor();
|
||||||
global.stage.add_actor(text);
|
global.stage.add_actor(text);
|
||||||
text.set_position(Math.floor (monitor.width / 2 - text.width / 2), Math.floor(monitor.height / 2 - text.height / 2));
|
text.set_position(Math.floor (monitor.width / 2 - text.width / 2), Math.floor(monitor.height / 2 - text.height / 2));
|
||||||
@@ -13,7 +16,9 @@ function _showHello() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Put your extension initialization code here
|
// Put your extension initialization code here
|
||||||
function main() {
|
function main(metadata) {
|
||||||
|
imports.gettext.bindtextdomain('gnome-shell-extensions', metadata.localedir);
|
||||||
|
|
||||||
Main.panel.actor.reactive = true;
|
Main.panel.actor.reactive = true;
|
||||||
Main.panel.actor.connect('button-release-event', _showHello);
|
Main.panel.actor.connect('button-release-event', _showHello);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"uuid": "example@gnome-shell-extensions.gnome.org",
|
"uuid": "@uuid@",
|
||||||
"name": "Hello, World!",
|
"name": "Hello, World!",
|
||||||
"description": "An example extension to show how it works. Shows Hello, world when clicking on the top panel.",
|
"description": "An example extension to show how it works. Shows Hello, world when clicking on the top panel.",
|
||||||
"shell-version": [ "2.91.6" ]
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
EXTENSION_ID = gajim
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
@@ -0,0 +1,313 @@
|
|||||||
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
|
const DBus = imports.dbus;
|
||||||
|
const Gettext = imports.gettext.domain('gnome-shell');
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
const Tp = imports.gi.TelepathyGLib;
|
||||||
|
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
const MessageTray = imports.ui.messageTray;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const TelepathyClient = imports.ui.telepathyClient;
|
||||||
|
|
||||||
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
|
// http://ntt.cc/ext/base64-Encoding-Decoding.html
|
||||||
|
const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
||||||
|
|
||||||
|
function decode64(input) {
|
||||||
|
let output = "";
|
||||||
|
let chr1, chr2, chr3;
|
||||||
|
let enc1, enc2, enc3, enc4;
|
||||||
|
let i = 0;
|
||||||
|
|
||||||
|
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
||||||
|
|
||||||
|
do {
|
||||||
|
enc1 = keyStr.indexOf(input.charAt(i++));
|
||||||
|
enc2 = keyStr.indexOf(input.charAt(i++));
|
||||||
|
enc3 = keyStr.indexOf(input.charAt(i++));
|
||||||
|
enc4 = keyStr.indexOf(input.charAt(i++));
|
||||||
|
|
||||||
|
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||||
|
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||||
|
chr3 = ((enc3 & 3) << 6) | enc4;
|
||||||
|
|
||||||
|
output = output + String.fromCharCode(chr1);
|
||||||
|
|
||||||
|
if (enc3 != 64) {
|
||||||
|
output = output + String.fromCharCode(chr2);
|
||||||
|
}
|
||||||
|
if (enc4 != 64) {
|
||||||
|
output = output + String.fromCharCode(chr3);
|
||||||
|
}
|
||||||
|
|
||||||
|
chr1 = chr2 = chr3 = "";
|
||||||
|
enc1 = enc2 = enc3 = enc4 = "";
|
||||||
|
|
||||||
|
} while (i < input.length);
|
||||||
|
|
||||||
|
return unescape(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
function wrappedText(text, sender, timestamp, direction) {
|
||||||
|
return {
|
||||||
|
messageType: Tp.ChannelTextMessageType.NORMAL,
|
||||||
|
text: text,
|
||||||
|
sender: sender,
|
||||||
|
timestamp: timestamp,
|
||||||
|
direction: direction
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function Source(gajimClient, accountName, author, initialMessage) {
|
||||||
|
this._init(gajimClient, accountName, author, initialMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
Source.prototype = {
|
||||||
|
__proto__: MessageTray.Source.prototype,
|
||||||
|
|
||||||
|
_init: function(gajimClient, accountName, author, initialMessage) {
|
||||||
|
MessageTray.Source.prototype._init.call(this, author);
|
||||||
|
this.isChat = true;
|
||||||
|
this._author = author;
|
||||||
|
this._gajimClient = gajimClient;
|
||||||
|
this._accountName = accountName;
|
||||||
|
this._initialMessage = initialMessage;
|
||||||
|
this._iconUri = null;
|
||||||
|
this._presence = "online";
|
||||||
|
|
||||||
|
this._notification = new TelepathyClient.Notification(this);
|
||||||
|
this._notification.setUrgency(MessageTray.Urgency.HIGH);
|
||||||
|
|
||||||
|
let jid = author.split('/')[0];
|
||||||
|
let proxy = this._gajimClient.proxy();
|
||||||
|
proxy.contact_infoRemote(jid, Lang.bind(this, this._gotContactInfos));
|
||||||
|
this._statusChangeId = proxy.connect('ContactStatus',
|
||||||
|
Lang.bind(this, this._onStatusChange));
|
||||||
|
this._contactAbsenceId = proxy.connect('ContactAbsence',
|
||||||
|
Lang.bind(this, this._onStatusChange));
|
||||||
|
this._chatStateId = proxy.connect('ChatState',
|
||||||
|
Lang.bind(this, this._onChatState));
|
||||||
|
this._messageSentId = proxy.connect('MessageSent',
|
||||||
|
Lang.bind(this, this._messageSent));
|
||||||
|
this._newMessageId = proxy.connect('NewMessage',
|
||||||
|
Lang.bind(this, this._messageReceived));
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
let proxy = this._gajimClient.proxy();
|
||||||
|
proxy.disconnect(this._statusChangeId);
|
||||||
|
proxy.disconnect(this._contactAbsenceId);
|
||||||
|
proxy.disconnect(this._chatStateId);
|
||||||
|
proxy.disconnect(this._messageSentId);
|
||||||
|
proxy.disconnect(this._newMessageId);
|
||||||
|
MessageTray.Source.prototype.destroy.call(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
_gotContactInfos: function(result, excp) {
|
||||||
|
this.title = result['FN'];
|
||||||
|
|
||||||
|
let avatarUri = null;
|
||||||
|
if (result['PHOTO']) {
|
||||||
|
let mimeType = result['PHOTO']['TYPE'];
|
||||||
|
let avatarData = decode64(result['PHOTO']['BINVAL']);
|
||||||
|
let sha = result['PHOTO']['SHA'];
|
||||||
|
avatarUri = this._gajimClient.cacheAvatar(mimeType, sha, avatarData);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._iconUri = avatarUri;
|
||||||
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
|
|
||||||
|
let message = wrappedText(this._initialMessage, this._author, null, TelepathyClient.NotificationDirection.RECEIVED);
|
||||||
|
this._notification.appendMessage(message, false);
|
||||||
|
|
||||||
|
if (!Main.messageTray.contains(this))
|
||||||
|
Main.messageTray.add(this);
|
||||||
|
|
||||||
|
this.notify(this._notification);
|
||||||
|
},
|
||||||
|
|
||||||
|
createNotificationIcon: function() {
|
||||||
|
let iconBox = new St.Bin({ style_class: 'avatar-box' });
|
||||||
|
iconBox._size = this.ICON_SIZE;
|
||||||
|
|
||||||
|
if (!this._iconUri) {
|
||||||
|
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||||
|
icon_type: St.IconType.FULLCOLOR,
|
||||||
|
icon_size: iconBox._size });
|
||||||
|
} else {
|
||||||
|
let textureCache = St.TextureCache.get_default();
|
||||||
|
iconBox.child = textureCache.load_uri_async(this._iconUri, iconBox._size, iconBox._size);
|
||||||
|
}
|
||||||
|
return iconBox;
|
||||||
|
},
|
||||||
|
|
||||||
|
open: function(notification) {
|
||||||
|
// Lookup for the messages window and display it. In the case where it's not o
|
||||||
|
// opened yet fallback to the roster window.
|
||||||
|
let windows = global.get_window_actors();
|
||||||
|
for (let i = 0; i < windows.length; i++) {
|
||||||
|
let metaWindow = windows[i].metaWindow;
|
||||||
|
if (metaWindow.get_wm_class_instance() == "gajim" &&
|
||||||
|
metaWindow.get_role() == "messages") {
|
||||||
|
Main.activateWindow(metaWindow);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let app = Shell.AppSystem.get_default().get_app('gajim.desktop');
|
||||||
|
app.activate_window(null, global.get_current_time());
|
||||||
|
},
|
||||||
|
|
||||||
|
_onChatState: function(emitter, data) {
|
||||||
|
let chatstate = data[1][5];
|
||||||
|
if (chatstate == 'gone')
|
||||||
|
this.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
_messageReceived: function(emitter, data) {
|
||||||
|
let author = data[1][0];
|
||||||
|
let text = data[1][1];
|
||||||
|
if (text && (author == this._author)) {
|
||||||
|
let message = wrappedText(text, this._author, null, TelepathyClient.NotificationDirection.RECEIVED);
|
||||||
|
this._notification.appendMessage(message, false);
|
||||||
|
this.notify(this._notification);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_messageSent: function(emitter, data) {
|
||||||
|
let text = data[1][1];
|
||||||
|
let chatstate = data[1][3];
|
||||||
|
|
||||||
|
if (text) {
|
||||||
|
let message = wrappedText(text, this._author, null, TelepathyClient.NotificationDirection.SENT);
|
||||||
|
this._notification.appendMessage(message, false);
|
||||||
|
} else if (chatstate == 'gone')
|
||||||
|
this.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
notify: function() {
|
||||||
|
|
||||||
|
MessageTray.Source.prototype.notify.call(this, this._notification);
|
||||||
|
},
|
||||||
|
|
||||||
|
respond: function(text) {
|
||||||
|
let jid = this._author;
|
||||||
|
let keyID = ""; // unencrypted.
|
||||||
|
this._gajimClient.proxy().send_chat_messageRemote(jid, text, keyID, this._accountName);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onStatusChange: function(emitter, data) {
|
||||||
|
if (!this.title)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let jid = data[1][0];
|
||||||
|
let presence = data[1][1];
|
||||||
|
let message = data[1][2];
|
||||||
|
|
||||||
|
if (jid != this._author.split('/')[0])
|
||||||
|
return;
|
||||||
|
|
||||||
|
let presenceMessage, shouldNotify, title;
|
||||||
|
title = GLib.markup_escape_text(this.title, -1);
|
||||||
|
if (presence == "away") {
|
||||||
|
presenceMessage = _("%s is away.").format(title);
|
||||||
|
shouldNotify = false;
|
||||||
|
} else if (presence == "offline") {
|
||||||
|
presenceMessage = _("%s is offline.").format(title);
|
||||||
|
shouldNotify = (this._presence != "offline");
|
||||||
|
} else if (presence == "online") {
|
||||||
|
presenceMessage = _("%s is online.").format(title);
|
||||||
|
shouldNotify = (this._presence == "offline");
|
||||||
|
} else if (presence == "dnd") {
|
||||||
|
presenceMessage = _("%s is busy.").format(title);
|
||||||
|
shouldNotify = false;
|
||||||
|
} else
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._presence = presence;
|
||||||
|
|
||||||
|
if (message)
|
||||||
|
presenceMessage += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
||||||
|
|
||||||
|
this._notification.appendPresence(presenceMessage, shouldNotify);
|
||||||
|
if (shouldNotify)
|
||||||
|
this.notify(this._notification);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const GajimIface = {
|
||||||
|
name: 'org.gajim.dbus.RemoteInterface',
|
||||||
|
properties: [],
|
||||||
|
methods: [{ name: 'send_chat_message', inSignature: 'ssss', outSignature: 'b'},
|
||||||
|
{ name: 'contact_info', inSignature: 's', outSignature: 'a{sv}'}],
|
||||||
|
signals: [{ name: 'NewMessage', inSignature: 'av' },
|
||||||
|
{ name: 'ChatState', inSignature: 'av' },
|
||||||
|
{ name: 'ContactStatus', inSignature: 'av' },
|
||||||
|
{ name: 'ContactAbsence', inSignature: 'av' },
|
||||||
|
{ name: 'MessageSent', inSignature: 'av' }]
|
||||||
|
};
|
||||||
|
|
||||||
|
let Gajim = DBus.makeProxyClass(GajimIface);
|
||||||
|
|
||||||
|
function GajimClient() {
|
||||||
|
this._init();
|
||||||
|
}
|
||||||
|
|
||||||
|
GajimClient.prototype = {
|
||||||
|
_init: function() {
|
||||||
|
this._sources = {};
|
||||||
|
this._cacheDir = GLib.get_user_cache_dir() + '/gnome-shell/gajim-avatars';
|
||||||
|
GLib.mkdir_with_parents(this._cacheDir, 0x1c0); // 0x1c0 = octal 0700
|
||||||
|
|
||||||
|
this._proxy = new Gajim(DBus.session, 'org.gajim.dbus', '/org/gajim/dbus/RemoteObject');
|
||||||
|
this._proxy.connect('NewMessage', Lang.bind(this, this._messageReceived));
|
||||||
|
},
|
||||||
|
|
||||||
|
proxy : function() {
|
||||||
|
return this._proxy;
|
||||||
|
},
|
||||||
|
|
||||||
|
_messageReceived : function(emitter, data) {
|
||||||
|
let author = data[1][0];
|
||||||
|
let message = data[1][1];
|
||||||
|
let account = data[0];
|
||||||
|
let source = this._sources[author];
|
||||||
|
if (!source) {
|
||||||
|
source = new Source(this, account, author, message);
|
||||||
|
source.connect('destroy', Lang.bind(this,
|
||||||
|
function() {
|
||||||
|
delete this._sources[author];
|
||||||
|
}));
|
||||||
|
this._sources[author] = source;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
cacheAvatar : function(mimeType, sha, avatarData) {
|
||||||
|
let ext = mimeType.split('/')[1];
|
||||||
|
let file = this._cacheDir + '/' + sha + '.' + ext;
|
||||||
|
let uri = GLib.filename_to_uri(file, null);
|
||||||
|
|
||||||
|
if (GLib.file_test(file, GLib.FileTest.EXISTS))
|
||||||
|
return uri;
|
||||||
|
|
||||||
|
let success = false;
|
||||||
|
try {
|
||||||
|
success = GLib.file_set_contents(file, avatarData, avatarData.length);
|
||||||
|
} catch (e) {
|
||||||
|
logError(e, 'Error caching avatar data');
|
||||||
|
}
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
let client = new GajimClient();
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"name": "Gajim IM integration",
|
||||||
|
"description": "Display Gajim incoming chats as notifications in the Shell message tray.",
|
||||||
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"url": "http://base-art.net"
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
EXTENSION_ID = user-theme
|
||||||
|
|
||||||
|
include ../../extension.mk
|
||||||
|
|
||||||
|
gschemas_in = org.gnome.shell.extensions.user-theme.gschema.xml.in
|
||||||
|
|
||||||
|
@INTLTOOL_XML_NOMERGE_RULE@
|
||||||
|
|
||||||
|
gsettings_SCHEMAS = $(gschemas_in:.xml.in=.xml)
|
||||||
|
|
||||||
|
@GSETTINGS_RULES@
|
||||||
|
|
||||||
|
CLEANFILES += $(gschemas_in:.xml.in=.valid) $(gsettings_SCHEMAS)
|
||||||
|
EXTRA_DIST += $(gschemas_in)
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||||
|
// Load shell theme from ~/.themes/name/gnome-shell
|
||||||
|
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
|
const SETTINGS_SCHEMA = 'org.gnome.shell.extensions.user-theme';
|
||||||
|
const SETTINGS_KEY = 'name';
|
||||||
|
|
||||||
|
function ThemeManager() {
|
||||||
|
this._init();
|
||||||
|
}
|
||||||
|
|
||||||
|
ThemeManager.prototype = {
|
||||||
|
_init: function() {
|
||||||
|
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
||||||
|
this._settings.connect('changed::'+SETTINGS_KEY, Lang.bind(this, this._changeTheme));
|
||||||
|
this._changeTheme();
|
||||||
|
},
|
||||||
|
|
||||||
|
_changeTheme: function() {
|
||||||
|
let _stylesheet = null;
|
||||||
|
let _themeName = this._settings.get_string(SETTINGS_KEY);
|
||||||
|
|
||||||
|
if (_themeName) {
|
||||||
|
let _userCssStylesheet = GLib.get_home_dir() + '/.themes/' + _themeName + '/gnome-shell/gnome-shell.css';
|
||||||
|
file = Gio.file_new_for_path(_userCssStylesheet);
|
||||||
|
if (file.query_exists(null))
|
||||||
|
_stylesheet = _userCssStylesheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_stylesheet) {
|
||||||
|
global.log('loading user theme: ' + _stylesheet)
|
||||||
|
Main.setThemeStylesheet(_stylesheet);
|
||||||
|
Main.loadTheme();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function main(metadata) {
|
||||||
|
new ThemeManager();
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"uuid": "@uuid@",
|
||||||
|
"name": "User Themes",
|
||||||
|
"description": "Load shell themes from user directory",
|
||||||
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"original-authors": [ "john.stowers@gmail.com" ],
|
||||||
|
"url": "@url@"
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<schemalist gettext-domain="gnome-shell-extensions">
|
||||||
|
<schema id="org.gnome.shell.extensions.user-theme" path="/org/gnome/shell/extensions/user-theme/">
|
||||||
|
<key name="name" type="s">
|
||||||
|
<default>""</default>
|
||||||
|
<_summary>Theme name</_summary>
|
||||||
|
<_description>The name of the theme, to be loaded from ~/.themes/name/gnome-shell</_description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
||||||
@@ -45,9 +45,10 @@ function main() {
|
|||||||
Workspace.Workspace.prototype.showTooltip = function() {
|
Workspace.Workspace.prototype.showTooltip = function() {
|
||||||
if (this._tip == null)
|
if (this._tip == null)
|
||||||
return;
|
return;
|
||||||
if (this.parent)
|
this._tip.text = (this.metaWorkspace.index() + 1).toString();
|
||||||
return;
|
this._tip.x = this._x;
|
||||||
this.actor.add_actor(this._tip);
|
this._tip.y = this._y;
|
||||||
|
this._tip.show();
|
||||||
this._tip.raise_top();
|
this._tip.raise_top();
|
||||||
}
|
}
|
||||||
Workspace.Workspace.prototype.hideTooltip = function() {
|
Workspace.Workspace.prototype.hideTooltip = function() {
|
||||||
@@ -55,7 +56,7 @@ function main() {
|
|||||||
return;
|
return;
|
||||||
if (!this._tip.get_parent())
|
if (!this._tip.get_parent())
|
||||||
return;
|
return;
|
||||||
this.actor.remove_actor(this._tip);
|
this._tip.hide();
|
||||||
}
|
}
|
||||||
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
|
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
|
||||||
for (let i in this._windowOverlays) {
|
for (let i in this._windowOverlays) {
|
||||||
@@ -80,7 +81,8 @@ function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WorkspacesView.WorkspacesView.prototype._hideTooltips = function() {
|
WorkspacesView.WorkspacesView.prototype._hideTooltips = function() {
|
||||||
global.stage.set_key_focus(this._prevFocusActor);
|
if (global.stage.get_key_focus() == global.stage)
|
||||||
|
global.stage.set_key_focus(this._prevFocusActor);
|
||||||
this._pickWindow = false;
|
this._pickWindow = false;
|
||||||
for (let i = 0; i < this._workspaces.length; i++)
|
for (let i = 0; i < this._workspaces.length; i++)
|
||||||
this._workspaces[i].hideWindowsTooltips();
|
this._workspaces[i].hideWindowsTooltips();
|
||||||
@@ -153,7 +155,7 @@ function main() {
|
|||||||
|
|
||||||
injectToFunction(Workspace.WindowOverlay.prototype, '_init', function(windowClone, parentActor) {
|
injectToFunction(Workspace.WindowOverlay.prototype, '_init', function(windowClone, parentActor) {
|
||||||
this._id = null;
|
this._id = null;
|
||||||
this._text = new St.Label({ style_class: 'window-tooltip' });
|
this._text = new St.Label({ style_class: 'extension-windowsNavigator-window-tooltip' });
|
||||||
this._text.hide();
|
this._text.hide();
|
||||||
parentActor.add_actor(this._text);
|
parentActor.add_actor(this._text);
|
||||||
});
|
});
|
||||||
@@ -164,9 +166,11 @@ function main() {
|
|||||||
this._text.raise_top();
|
this._text.raise_top();
|
||||||
});
|
});
|
||||||
injectToFunction(Workspace.Workspace.prototype, '_init', function(metaWorkspace) {
|
injectToFunction(Workspace.Workspace.prototype, '_init', function(metaWorkspace) {
|
||||||
if (metaWorkspace.index() < 9) {
|
if (metaWorkspace && metaWorkspace.index() < 9) {
|
||||||
this._tip = new St.Label({ style_class: 'window-tooltip',
|
this._tip = new St.Label({ style_class: 'extension-windowsNavigator-window-tooltip',
|
||||||
text: (metaWorkspace.index() + 1).toString() });
|
visible: false });
|
||||||
|
|
||||||
|
this.actor.add_actor(this._tip);
|
||||||
this.actor.connect('notify::scale-x', Lang.bind(this, function() {
|
this.actor.connect('notify::scale-x', Lang.bind(this, function() {
|
||||||
this._tip.set_scale(1 / this.actor.scale_x, 1 / this.actor.scale_x);
|
this._tip.set_scale(1 / this.actor.scale_x, 1 / this.actor.scale_x);
|
||||||
}));
|
}));
|
||||||
@@ -174,7 +178,7 @@ function main() {
|
|||||||
this._tip = null;
|
this._tip = null;
|
||||||
});
|
});
|
||||||
injectToFunction(Workspace.Workspace.prototype, 'positionWindows', function(flags) {
|
injectToFunction(Workspace.Workspace.prototype, 'positionWindows', function(flags) {
|
||||||
let visibleClones = this._getVisibleClones();
|
let visibleClones = this._windows.slice();
|
||||||
if (this._reservedSlot)
|
if (this._reservedSlot)
|
||||||
visibleClones.push(this._reservedSlot);
|
visibleClones.push(this._reservedSlot);
|
||||||
|
|
||||||
|
|||||||
+5
-3
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"shell-version": ["2.91.5", "2.91.6"],
|
"shell-version": ["@shell_current@"],
|
||||||
"uuid": "windowsNavigator@gnome-shell-extensions.gnome.org",
|
"uuid": "@uuid@",
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
"original-author": "zaspire@rambler.ru",
|
"original-author": "zaspire@rambler.ru",
|
||||||
"name": "windowNavigator",
|
"name": "windowNavigator",
|
||||||
"description": "Allow keyboard selection of windows and workspaces in overlay mode"
|
"description": "Allow keyboard selection of windows and workspaces in overlay mode",
|
||||||
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
.window-tooltip {
|
.extension-windowsNavigator-window-tooltip {
|
||||||
color: #ff0000;
|
color: #ff0000;
|
||||||
background: rgba(0,0,0,0.8);
|
background: rgba(0,0,0,0.8);
|
||||||
border: 1px solid rgba(128,128,128,0.40);
|
border: 1px solid rgba(128,128,128,0.40);
|
||||||
|
|||||||
@@ -13,8 +13,9 @@ const PanelMenu = imports.ui.panelMenu;
|
|||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const Panel = imports.ui.panel;
|
const Panel = imports.ui.panel;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
const N_ = function(e) { return e };
|
||||||
|
|
||||||
const possibleRotations = [ GnomeDesktop.RRRotation.ROTATION_0,
|
const possibleRotations = [ GnomeDesktop.RRRotation.ROTATION_0,
|
||||||
GnomeDesktop.RRRotation.ROTATION_90,
|
GnomeDesktop.RRRotation.ROTATION_90,
|
||||||
@@ -22,10 +23,10 @@ const possibleRotations = [ GnomeDesktop.RRRotation.ROTATION_0,
|
|||||||
GnomeDesktop.RRRotation.ROTATION_270
|
GnomeDesktop.RRRotation.ROTATION_270
|
||||||
];
|
];
|
||||||
|
|
||||||
let rotations = [ [ GnomeDesktop.RRRotation.ROTATION_0, _("Normal") ],
|
let rotations = [ [ GnomeDesktop.RRRotation.ROTATION_0, N_("Normal") ],
|
||||||
[ GnomeDesktop.RRRotation.ROTATION_90, _("Left") ],
|
[ GnomeDesktop.RRRotation.ROTATION_90, N_("Left") ],
|
||||||
[ GnomeDesktop.RRRotation.ROTATION_270, _("Right") ],
|
[ GnomeDesktop.RRRotation.ROTATION_270, N_("Right") ],
|
||||||
[ GnomeDesktop.RRRotation.ROTATION_180, _("Upside-down") ]
|
[ GnomeDesktop.RRRotation.ROTATION_180, N_("Upside-down") ]
|
||||||
];
|
];
|
||||||
|
|
||||||
const XRandr2Iface = {
|
const XRandr2Iface = {
|
||||||
@@ -58,7 +59,7 @@ Indicator.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._createMenu();
|
this._createMenu();
|
||||||
this._screen.connect('screen-changed', Lang.bind(this, this._randrEvent));
|
this._screen.connect('changed', Lang.bind(this, this._randrEvent));
|
||||||
},
|
},
|
||||||
|
|
||||||
_randrEvent: function() {
|
_randrEvent: function() {
|
||||||
@@ -70,7 +71,7 @@ Indicator.prototype = {
|
|||||||
let config = GnomeDesktop.RRConfig.new_current(this._screen);
|
let config = GnomeDesktop.RRConfig.new_current(this._screen);
|
||||||
let outputs = config.get_outputs();
|
let outputs = config.get_outputs();
|
||||||
for (let i = 0; i < outputs.length; i++) {
|
for (let i = 0; i < outputs.length; i++) {
|
||||||
if (outputs[i].get_connected())
|
if (outputs[i].is_connected())
|
||||||
this._addOutputItem(config, outputs[i]);
|
this._addOutputItem(config, outputs[i]);
|
||||||
}
|
}
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||||
@@ -87,10 +88,14 @@ Indicator.prototype = {
|
|||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
let allowedRotations = this._getAllowedRotations(config, output);
|
let allowedRotations = this._getAllowedRotations(config, output);
|
||||||
|
let currentRotation = output.get_rotation();
|
||||||
for (let i = 0; i < rotations.length; i++) {
|
for (let i = 0; i < rotations.length; i++) {
|
||||||
let [bitmask, name] = rotations[i];
|
let [bitmask, name] = rotations[i];
|
||||||
if (bitmask & allowedRotations) {
|
if (bitmask & allowedRotations) {
|
||||||
this.menu.addAction(name, Lang.bind(this, function(event) {
|
let item = new PopupMenu.PopupMenuItem(Gettext.gettext(name));
|
||||||
|
if (bitmask & currentRotation)
|
||||||
|
item.setShowDot(true);
|
||||||
|
item.connect('activate', Lang.bind(this, function(item, event) {
|
||||||
/* ensure config is saved so we get a backup if anything goes wrong */
|
/* ensure config is saved so we get a backup if anything goes wrong */
|
||||||
config.save();
|
config.save();
|
||||||
|
|
||||||
@@ -99,9 +104,10 @@ Indicator.prototype = {
|
|||||||
config.save();
|
config.save();
|
||||||
this._proxy.ApplyConfigurationRemote(global.stage_xwindow, event.get_time());
|
this._proxy.ApplyConfigurationRemote(global.stage_xwindow, event.get_time());
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError ('Could not save monitor configuration: ' + e);
|
log ('Could not save monitor configuration: ' + e);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -130,6 +136,8 @@ Indicator.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function main() {
|
function main(metadata) {
|
||||||
|
imports.gettext.bindtextdomain('gnome-shell-extensions', metadata.localedir);
|
||||||
|
|
||||||
Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['display'] = Indicator;
|
Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['display'] = Indicator;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,132 +0,0 @@
|
|||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
||||||
|
|
||||||
const DBus = imports.dbus;
|
|
||||||
const Gdk = imports.gi.Gdk;
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
|
||||||
const Lang = imports.lang;
|
|
||||||
const Shell = imports.gi.Shell;
|
|
||||||
const St = imports.gi.St;
|
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
|
||||||
const Panel = imports.ui.panel;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell');
|
|
||||||
const _ = Gettext.gettext;
|
|
||||||
|
|
||||||
const possibleRotations = [ GnomeDesktop.RRRotation.ROTATION_0,
|
|
||||||
GnomeDesktop.RRRotation.ROTATION_90,
|
|
||||||
GnomeDesktop.RRRotation.ROTATION_180,
|
|
||||||
GnomeDesktop.RRRotation.ROTATION_270
|
|
||||||
];
|
|
||||||
|
|
||||||
let rotations = [ [ GnomeDesktop.RRRotation.ROTATION_0, _("Normal") ],
|
|
||||||
[ GnomeDesktop.RRRotation.ROTATION_90, _("Left") ],
|
|
||||||
[ GnomeDesktop.RRRotation.ROTATION_270, _("Right") ],
|
|
||||||
[ GnomeDesktop.RRRotation.ROTATION_180, _("Upside-down") ]
|
|
||||||
];
|
|
||||||
|
|
||||||
const XRandr2Iface = {
|
|
||||||
name: 'org.gnome.SettingsDaemon.XRANDR_2',
|
|
||||||
methods: [
|
|
||||||
{ name: 'ApplyConfiguration', inSignature: 'xx', outSignature: '' },
|
|
||||||
]
|
|
||||||
};
|
|
||||||
let XRandr2 = DBus.makeProxyClass(XRandr2Iface);
|
|
||||||
|
|
||||||
function Indicator() {
|
|
||||||
this._init.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
Indicator.prototype = {
|
|
||||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
|
||||||
|
|
||||||
_init: function() {
|
|
||||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-display');
|
|
||||||
|
|
||||||
this._proxy = new XRandr2(DBus.session, 'org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/XRANDR');
|
|
||||||
|
|
||||||
try {
|
|
||||||
this._screen = new GnomeDesktop.RRScreen({ gdk_screen: Gdk.Screen.get_default() });
|
|
||||||
this._screen.init(null);
|
|
||||||
} catch(e) {
|
|
||||||
// an error means there is no XRandR extension
|
|
||||||
this.actor.hide();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._createMenu();
|
|
||||||
this._screen.connect('screen-changed', Lang.bind(this, this._randrEvent));
|
|
||||||
},
|
|
||||||
|
|
||||||
_randrEvent: function() {
|
|
||||||
this.menu.removeAll();
|
|
||||||
this._createMenu();
|
|
||||||
},
|
|
||||||
|
|
||||||
_createMenu: function() {
|
|
||||||
let config = GnomeDesktop.RRConfig.new_current(this._screen);
|
|
||||||
let outputs = config.get_outputs();
|
|
||||||
for (let i = 0; i < outputs.length; i++) {
|
|
||||||
if (outputs[i].get_connected())
|
|
||||||
this._addOutputItem(config, outputs[i]);
|
|
||||||
}
|
|
||||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
|
||||||
this.menu.addAction(_("Configure display settings..."), function() {
|
|
||||||
GLib.spawn_command_line_async('gnome-control-center display');
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_addOutputItem: function(config, output) {
|
|
||||||
let item = new PopupMenu.PopupMenuItem(output.get_display_name());
|
|
||||||
item.label.add_style_class_name('display-subtitle');
|
|
||||||
item.actor.reactive = false;
|
|
||||||
item.actor.can_focus = false;
|
|
||||||
this.menu.addMenuItem(item);
|
|
||||||
|
|
||||||
let allowedRotations = this._getAllowedRotations(config, output);
|
|
||||||
for (let i = 0; i < rotations.length; i++) {
|
|
||||||
let [bitmask, name] = rotations[i];
|
|
||||||
if (bitmask & allowedRotations) {
|
|
||||||
this.menu.addAction(name, Lang.bind(this, function(event) {
|
|
||||||
/* ensure config is saved so we get a backup if anything goes wrong */
|
|
||||||
config.save();
|
|
||||||
|
|
||||||
output.set_rotation(bitmask);
|
|
||||||
try {
|
|
||||||
config.save();
|
|
||||||
this._proxy.ApplyConfigurationRemote(global.stage_xwindow, event.get_time());
|
|
||||||
} catch (e) {
|
|
||||||
logError ('Could not save monitor configuration: ' + e);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_getAllowedRotations: function(config, output) {
|
|
||||||
let retval = 0;
|
|
||||||
|
|
||||||
let current = output.get_rotation();
|
|
||||||
|
|
||||||
for (let i = 0; i < possibleRotations.length; i++) {
|
|
||||||
output.set_rotation(possibleRotations[i]);
|
|
||||||
if (config.applicable(this._screen)) {
|
|
||||||
retval |= possibleRotations[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output.set_rotation(current);
|
|
||||||
|
|
||||||
if (retval.lenght == 0) {
|
|
||||||
// what, no rotation?
|
|
||||||
// what's current then?
|
|
||||||
retval = current;
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Panel.STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['display'] = Indicator;
|
|
||||||
+4
-2
@@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"uuid": "xrandr-indicator@gnome-shell-extensions.gnome.org",
|
"uuid": "@uuid@",
|
||||||
"name": "Monitor Status Indicator",
|
"name": "Monitor Status Indicator",
|
||||||
"description": "Add a systems status menu for rotating monitors (overrides what is currently provided by gnome-settings-daemon)",
|
"description": "Add a systems status menu for rotating monitors (overrides what is currently provided by gnome-settings-daemon)",
|
||||||
"shell-version": [ "2.91.5", "2.91.6" ]
|
"shell-version": [ "3.0" ],
|
||||||
|
"localedir": "@LOCALEDIR@",
|
||||||
|
"url": "@url@"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
intltool.m4
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
cs
|
||||||
|
da
|
||||||
|
de
|
||||||
|
es
|
||||||
|
fr
|
||||||
|
it
|
||||||
|
pt
|
||||||
|
pt_BR
|
||||||
|
pl
|
||||||
|
sl
|
||||||
|
sv
|
||||||
|
vi
|
||||||
|
zh_CN
|
||||||
+6
-1
@@ -1,4 +1,9 @@
|
|||||||
|
extensions/alternate-tab/extension.js
|
||||||
|
extensions/auto-move-windows/extension.js
|
||||||
|
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in
|
||||||
|
extensions/dock/extension.js
|
||||||
extensions/example/extension.js
|
extensions/example/extension.js
|
||||||
|
extensions/gajim/extension.js
|
||||||
|
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in
|
||||||
extensions/windowsNavigator/extension.js
|
extensions/windowsNavigator/extension.js
|
||||||
extensions/xrandr-indicator/extension.js
|
extensions/xrandr-indicator/extension.js
|
||||||
extensions/alternate-tab/extension.js
|
|
||||||
|
|||||||
@@ -0,0 +1,104 @@
|
|||||||
|
# Czech translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
#
|
||||||
|
# Marek Černocký <marek@manet.cz>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-04-01 16:40+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-04-02 19:19+0200\n"
|
||||||
|
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||||
|
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: cs\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Seznam řetězců, z nichž každý obsahuje ID aplikace (název souboru pracovní "
|
||||||
|
"plochy), následovaný dvojtečkou a číslem pracovní plochy"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Seznam aplikací a pracovních ploch"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Přetažením sem přidáte do oblíbených"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nové okno"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Ukončit aplikaci"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Odebrat z oblíbených"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Přidat do oblíbených"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Ahoj světe!"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:219
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is away."
|
||||||
|
msgstr "%s je pryč."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:222
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is offline."
|
||||||
|
msgstr "%s je odpojen."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:225
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is online."
|
||||||
|
msgstr "%s je připojen."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:228
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is busy."
|
||||||
|
msgstr "%s je zaneprázdněn."
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Název motivu, který se má načíst z ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Název motivu"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normální"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Doleva"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Doprava"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Vzhůru nohama"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Upravit nastavení zobrazení…"
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# Danish translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
#
|
||||||
|
# Kris Thomsen <lakristho@gmail.com>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2011-03-30 22:37+0200\n"
|
||||||
|
"PO-Revision-Date: 2011-03-29 00:18+0000\n"
|
||||||
|
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
|
||||||
|
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||||
|
"Language: da\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Hej verden!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Venstre"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Højre"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "På hovedet"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Konfigurér skærmindstillinger..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"En liste over strenge, som hver indeholder et program-id "
|
||||||
|
"(skrivebordsfilnavn), efterfulgt af et kolon og arbejdsområdets nummer"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Liste over programmer og arbejdsområder"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Navnet på temaet, som indlæses fra ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Temanavn"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Træk hertil for at føje til favoritter"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nyt vindue"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Afslut program"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Fjern fra favoritter"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Føj til favoritter"
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# German translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Mario Blättermann <mariobl@gnome.org>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-03-16 16:06+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-03-17 17:52+0100\n"
|
||||||
|
"Last-Translator: Mario Blättermann <mariobl@gnome.org>\n"
|
||||||
|
"Language-Team: German <gnome-de@gnome.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Hallo, Welt!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Links"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Rechts"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Kopfüber"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Bildschirmeinstellungen festlegen …"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Eine Liste aus Zeichenketten, wovon jede eine Anwendungskennung (*.desktop-"
|
||||||
|
"Datei) enthält, gefolgt von einem Doppelpunkt und der Nummer der Arbeitsfläche"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Anwendungs- und Arbeitsflächenliste"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr ""
|
||||||
|
"Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden "
|
||||||
|
"soll"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Themenname"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Hierher ziehen, um zu Favoriten hinzuzufügen"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Neues Fenster"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Anwendung beenden"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Aus Favoriten entfernen"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Zu Favoriten hinzufügen"
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# Spanish translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-04-01 16:40+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-04-04 13:30+0200\n"
|
||||||
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Una lista de cadenas, conteniendo cada una un ID de aplicación (nombre de "
|
||||||
|
"archivo de escritorio), seguido de dos puntos y el número del espacio de "
|
||||||
|
"trabajo"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Lista de aplicaciones y espacios de trabajo"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Arrastrar aquí para añadir a favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Ventana nueva"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Salir de la aplicación"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Quitar de favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Añadir a favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "¡Hola, Mundo!"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:219
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is away."
|
||||||
|
msgstr "%s no está disponible."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:222
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is offline."
|
||||||
|
msgstr "%s está desconectado."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:225
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is online."
|
||||||
|
msgstr "%s está conectado."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:228
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is busy."
|
||||||
|
msgstr "%s está ocupado."
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "El nombre del tema, que se carga desde ~/.themes/nombre/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Nombre del tema"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Izquierda"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Derecha"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Hacia abajo"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Configurar las opciones de pantalla…"
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# French translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 Listed translators
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Claude Paroz <claude@2xlibre.net>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-03-18 14:07+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-03-19 09:37+0100\n"
|
||||||
|
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
|
||||||
|
"Language-Team: French <gnomefr@traduc.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Bonjour le monde !"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Gauche"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Droite"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Renversé"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Configurer les paramètres d'affichage..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Une liste de chaînes, contenant chacune un identifiant d'application (nom "
|
||||||
|
"de fichier desktop), suivi par un deux-points et le numéro de l'espace de "
|
||||||
|
"travail"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Liste d'applications et d'espaces de travail"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Le nom du thème, à charger à partir de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Nom du thème"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Déposez ici pour ajouter aux favoris"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nouvelle fenêtre"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Quitter l'application"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Enlever des favoris"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Ajouter aux favoris"
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
# Italian translations for GNOME Shell extensions
|
||||||
|
# Copyright (C) 2011 Giovanni Campagna et al.
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Giovanni Campagna <scampa.giovanni@gmail.com>, 2011
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions 2.91.6\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2011-03-12 22:11+0100\n"
|
||||||
|
"PO-Revision-Date: 2011-03-12 22:12+0100\n"
|
||||||
|
"Last-Translator: Giovanni Campagna <scampa.giovanni@gmail.com>\n"
|
||||||
|
"Language-Team: none <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Ciao, mondo!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normale"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Sinistra"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Destra"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Rovesciato"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Configura impostazioni display..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Una lista di stringhe, ognuna contenente un id applicazione (nome del file ."
|
||||||
|
"desktop), seguito da due punti e il numero dello spazio di lavoro"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Lista applicazioni e spazi di lavoro"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Il nome del tema, da caricare in ~/.themes/nome/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Nome del tema"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Trascina qui per aggiungere ai preferiti"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nuova finestra"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Chiudi applicazione"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Rimuovi dai preferiti"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Aggiungi ai preferiti"
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
# Aviary.pl
|
||||||
|
# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
|
||||||
|
# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
|
||||||
|
# gnomepl@aviary.pl
|
||||||
|
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-03-12 21:49+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-03-12 23:55+0100\n"
|
||||||
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
|
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||||
|
"|| n%100>=20) ? 1 : 2);\n"
|
||||||
|
"X-Poedit-Language: Polish\n"
|
||||||
|
"X-Poedit-Country: Poland\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Witaj, świecie!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normalnie"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "W lewo"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "W prawo"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Odbicie poziomo"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Skonfiguruj ustawienia ekranu..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Lista ciągów, każdy zawierający identyfikator programu (nazwę pliku "
|
||||||
|
".desktop) z przecinkiem i numerem obszaru roboczego"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Lista programów i obszarów roboczych"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Nazwa motywu do wczytania z katalogu ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Nazwa motywu"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Przeciągnięcie tutaj dodaje do ulubionych"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nowe okno"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Zakończ program"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Usuń z ulubionych"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Dodaj do ulubionych"
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
# gnome-shell-extensions' Portuguese translation.
|
||||||
|
# Copyright © 2011 gnome-shell-extensions
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Duarte Loreto <happyguy_pt@hotmail.com>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 3.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-04-01 16:40+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-04-02 00:20+0000\n"
|
||||||
|
"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
|
||||||
|
"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
|
||||||
|
"Language: pt\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Uma lista de expressões, cada uma contendo o id de uma aplicação (nome do "
|
||||||
|
"ficheiro desktop), seguido de dois pontos e o número da área de trabalho"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Lista de aplicações e áreas de trabalho"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Arrastar para aqui para adicionar favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nova Janela"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Sair da Aplicação"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Remover dos Favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Adicionar aos Favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Olá, mundo!"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:219
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is away."
|
||||||
|
msgstr "%s está ausente."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:222
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is offline."
|
||||||
|
msgstr "%s está desligado."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:225
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is online."
|
||||||
|
msgstr "%s está ligado."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:228
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is busy."
|
||||||
|
msgstr "%s está ocupado."
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "O nome do tema, a ser lido de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Nome do tema"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Esquerda"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Direita"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Pernas para o ar"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Configurar as definições de ecrã..."
|
||||||
+103
@@ -0,0 +1,103 @@
|
|||||||
|
# Brazilian Portuguese translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Felipe Borges <felipe10borges@gmail.com>, 2011.
|
||||||
|
# Rodrigo Padula <contato@rodrigopadula.com>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-04-04 17:57+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-04-05 02:39-0300\n"
|
||||||
|
"Last-Translator: Rodrigo Padula de Oliveira <contato@rodrigopadula.com>\n"
|
||||||
|
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Uma lista de strings, cada uma contendo um id do aplicativo (nome de arquivo "
|
||||||
|
"desktop), seguido por dois pontos e o número da área de trabalho"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Aplicativo e lista de área de trabalho"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Arraste aqui para adicionar favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nova janela"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Fechar aplicativo"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Remover dos favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Adicionar aos favoritos"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Olá, mundo!"
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:219
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is away."
|
||||||
|
msgstr "%s está ausente."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:222
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is offline."
|
||||||
|
msgstr "%s está desconectado."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:225
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is online."
|
||||||
|
msgstr "%s está conectado."
|
||||||
|
|
||||||
|
#: ../extensions/gajim/extension.js:228
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is busy."
|
||||||
|
msgstr "%s está ocupado."
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "O nome do tema, para ser carregado de ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Nome do tema"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Esquerda"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Direita"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "De cabeça pra baixo"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Definir configurações de exibição..."
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
#
|
||||||
|
# Matej Urbančič <mateju@svn.gnome.org>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2009-09-10 22:35+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-03-16 11:12+0100\n"
|
||||||
|
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||||
|
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
|
||||||
|
"X-Poedit-Language: Slovenian\n"
|
||||||
|
"X-Poedit-Country: SLOVENIA\n"
|
||||||
|
"X-Poedit-SourceCharset: utf-8\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Pozdravljen, svet!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Običajno"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Levo"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Desno"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Zgornja stran navzdol"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Nastavitve zaslona ..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number"
|
||||||
|
msgstr "Seznam nizov z določilom ID programa (namizno ime programa), ki mu sledi dvopičje in nato številka delovne površine."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Seznam programov in delovnih površin"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Ime teme, ki bo naložena iz ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Ime teme"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Potegnite sem, za dodajanje med priljubljene"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Novo okno"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Končaj program"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Odstrani iz priljubljenih"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Dodaj med priljubljene"
|
||||||
|
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
# Swedish translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Daniel Nylander <po@danielnylander.se>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2011-03-14 10:07+0100\n"
|
||||||
|
"PO-Revision-Date: 2011-03-14 10:10+0100\n"
|
||||||
|
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
|
||||||
|
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Hej, världen!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Normal"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Vänster"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Höger"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Upp och ner"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Konfigurera skärminställningar.."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid "A list of strings, each containing an application id (desktop file name), followed by a colon and the workspace number"
|
||||||
|
msgstr "En lista över strängar, var och en innehållande ett program-id (skrivbordsfilnamn), följt av ett kolontecken och arbetsytans nummer"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Lista över program och arbetsyta"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Namnet på temat, kommer att läsas in från ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Temanamn"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Dra hit för att lägga till i favoriter"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Nytt fönster"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Avsluta programmet"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Ta bort från favoriter"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Lägg till i favoriter"
|
||||||
|
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
# Vietnamese translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-03-26 15:50+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-03-27 17:37+0700\n"
|
||||||
|
"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n"
|
||||||
|
"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "Xin chào!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "Chuẩn"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Trái"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Phải"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "Trên xuống"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "Cấu hình thiết lập hiển thị..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"Danh sách chuỗi các id ứng dụng (tên tập tin .desktop), theo sau là dấu hai "
|
||||||
|
"chấm và mã số vùng làm việc"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "Danh sách ứng dụng và vùng làm việc"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "Tên sắc thái, nạp từ ~/.themes/name/gnome-shell"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "Tên sắc thái"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "Thả vào đây để thêm ưa thích"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "Cửa sổ mới"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "Thoát ứng dụng"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "Hết ưa thích"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "Đánh dấu ưa thích"
|
||||||
+80
@@ -0,0 +1,80 @@
|
|||||||
|
# Chinese (China) translation for gnome-shell-extensions.
|
||||||
|
# Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
|
# This file is distributed under the same license as the gnome-shell-extensions package.
|
||||||
|
# Yinghua_Wang <wantinghard@gmail.com>, 2011.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||||
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
|
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||||
|
"POT-Creation-Date: 2011-03-14 10:28+0000\n"
|
||||||
|
"PO-Revision-Date: 2011-03-18 20:56+0800\n"
|
||||||
|
"Last-Translator: Yinghua Wang <wantinghard@gmail.com>\n"
|
||||||
|
"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: ../extensions/example/extension.js:11
|
||||||
|
msgid "Hello, world!"
|
||||||
|
msgstr "世界,你好!"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:26
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "正常"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:27
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "左"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:28
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "右"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:29
|
||||||
|
msgid "Upside-down"
|
||||||
|
msgstr "上下翻转"
|
||||||
|
|
||||||
|
#: ../extensions/xrandr-indicator/extension.js:78
|
||||||
|
msgid "Configure display settings..."
|
||||||
|
msgstr "配置显示设置..."
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||||
|
msgid ""
|
||||||
|
"A list of strings, each containing an application id (desktop file name), "
|
||||||
|
"followed by a colon and the workspace number"
|
||||||
|
msgstr ""
|
||||||
|
"一系列字符串,每个字符串包含一个应用程序标识(桌面文件名称)、冒号加工作区号"
|
||||||
|
|
||||||
|
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||||
|
msgid "Application and workspace list"
|
||||||
|
msgstr "应用程序和工作区列表"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||||
|
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||||
|
msgstr "将从 ~/.themes/name/gnome-shell 加载的主题名称"
|
||||||
|
|
||||||
|
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||||
|
msgid "Theme name"
|
||||||
|
msgstr "主题名称"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:116
|
||||||
|
msgid "Drag here to add favorites"
|
||||||
|
msgstr "拖放到这里以添加收藏"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:417
|
||||||
|
msgid "New Window"
|
||||||
|
msgstr "新窗口"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:419
|
||||||
|
msgid "Quit Application"
|
||||||
|
msgstr "退出应用程序"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:424
|
||||||
|
msgid "Remove from Favorites"
|
||||||
|
msgstr "移除收藏"
|
||||||
|
|
||||||
|
#: ../extensions/dock/extension.js:425
|
||||||
|
msgid "Add to Favorites"
|
||||||
|
msgstr "添加收藏"
|
||||||
Reference in New Issue
Block a user