Compare commits

..

8 Commits
3.7.2 ... 3.6.2

Author SHA1 Message Date
Giovanni Campagna
651f4542d8 Bump version to 3.6.2
Time for some translation updates.
2012-11-16 20:36:53 +01:00
Giovanni Campagna
f1eb846b47 PlacesMenu: ignore missing local bookmarks
If a local bookmark does not refer to an existing directory, ignore
it instead of showing a broken entry.
2012-11-16 20:31:18 +01:00
Giovanni Campagna
7428d1702f PlacesMenu: support historical location for bookmarks file
Ubuntu is shipping with Nautilus 3.4 in 12.10, so the bookmarks file
was not moved to .config/gtk-3.0.
2012-11-16 20:31:17 +01:00
Giovanni Campagna
8d2e8c8cb1 native-window-placement: fix disabling the extension
The monkey patch was being reinstalled under the wrong name.
2012-11-11 19:27:36 +01:00
Giovanni Campagna
5673baa6b5 PlacesMenu: don't fail for GIO errors getting the file name
Different GIO backends can fail in different ways trying to query
file infos. If that's the case, fail back to safe get_basename()
instead of crashing.
2012-11-07 17:43:46 +01:00
Dušan Kazik
6833713da0 Updated slovak translation 2012-11-06 23:46:30 +01:00
Мирослав Николић
b5d143fabb Updated Serbian translation 2012-10-27 21:37:10 +02:00
Christian Kirbach
6cd0ad710d Updated German translation 2012-10-24 12:40:36 +02:00
26 changed files with 2394 additions and 763 deletions

14
NEWS
View File

@@ -1,17 +1,3 @@
3.7.2
=====
* fixed crashes with places-menu, windowsNavigator, alternate-tab
and native-window-placement
* alternate-tab now hides attached modal dialogs
* places-menu has restored support for Nautilus 3.4
* the default for hibernate is now to show in alternative-status-menu
* some extensions are now tagged as "classic", and can be chosen with
--enable-extensions=classic-mode
* dock and gajim were removed at the beginning of the 3.7.1 cycle,
as they were buggy and unmaintained
* updated translations (ar, cs, de, el, es, gl, id, lt, lv, pa, pl
ru, sk, sl, sr, sr@latin)
3.6.1
=====
* fixed alternative-status-menu for the new lock screen

View File

@@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell-extensions],[3.7.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
AC_INIT([gnome-shell-extensions],[3.6.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([config])
@@ -27,23 +27,22 @@ fi
AC_SUBST([SHELL_VERSION])
dnl keep this in alphabetic order
CLASSIC_EXTENSIONS="apps-menu places-menu alternate-tab workspace-indicator"
DEFAULT_EXTENSIONS="$CLASSIC_EXTENSIONS alternative-status-menu drive-menu windowsNavigator"
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator"
dnl by default, install only extensions that do not change completely the shell experience,
dnl that don't require GSettings and that don't require external packages for typelibs
dnl (so basically only menus, status icons, search providers, overview tabs, message tray sources, etc.)
DEFAULT_EXTENSIONS="alternative-status-menu apps-menu dock drive-menu gajim places-menu windowsNavigator workspace-indicator"
ALL_EXTENSIONS="$DEFAULT_EXTENSIONS alternate-tab auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator"
AC_SUBST(ALL_EXTENSIONS, [$ALL_EXTENSIONS])
AC_ARG_ENABLE([extensions],
[AS_HELP_STRING([--enable-extensions],[Space separated list of extensions to enable.
The default is to build and distribute all extensions that can be installed in the home directory and have no external depedencies.
Use "all" to enable all available extensions, or "classic-mode" to enable extensions that restore GNOME 2 functionality.])],
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=$DEFAULT_EXTENSIONS]
)
if test x"$enable_extensions" = xall; then
enable_extensions="$ALL_EXTENSIONS"
fi
if test x"$enable_extensions" = xclassic-mode; then
enable_extensions="$CLASSIC_EXTENSIONS"
fi
ENABLED_EXTENSIONS=
for e in $enable_extensions; do
@@ -59,7 +58,7 @@ for e in $enable_extensions; do
[AC_MSG_WARN([gnome-desktop-3.0 not found, disabling xrandr-indicator])])
;;
dnl keep this in alphabetic order
alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|drive-menu|example|native-window-placement|places-menu|user-theme|windowsNavigator|workspace-indicator)
alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|dock|drive-menu|example|gajim|native-window-placement|places-menu|user-theme|windowsNavigator|workspace-indicator)
ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e"
;;
*)
@@ -75,8 +74,10 @@ AC_CONFIG_FILES([
extensions/alternative-status-menu/Makefile
extensions/apps-menu/Makefile
extensions/auto-move-windows/Makefile
extensions/dock/Makefile
extensions/drive-menu/Makefile
extensions/example/Makefile
extensions/gajim/Makefile
extensions/native-window-placement/Makefile
extensions/places-menu/Makefile
extensions/systemMonitor/Makefile

View File

@@ -119,14 +119,13 @@ const AltTabPopup = new Lang.Class({
});
} else {
windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL, global.screen,
global.screen.get_active_workspace());
global.screen.get_active_workspace());
}
// Filter away attached modal dialogs (switch to their parents instead)
windows = windows.filter(function(win) { return !win.is_attached_dialog(); });
if (windows.length == 0)
if (!windows.length) {
this.destroy();
return false;
}
if (!Main.pushModal(this.actor)) {
// Probably someone else has a pointer grab, try again with keyboard only
@@ -429,20 +428,16 @@ function init(metadata) {
settings = Convenience.getSettings();
}
function setKeybinding(name, func) {
Main.wm.setCustomKeybindingHandler(name, Main.KeybindingMode.NORMAL, func);
}
function enable() {
setKeybinding('switch-windows', doAltTab);
setKeybinding('switch-group', doAltTab);
setKeybinding('switch-windows-backward', doAltTab);
setKeybinding('switch-group-backward', doAltTab);
Meta.keybindings_set_custom_handler('switch-windows', doAltTab);
Meta.keybindings_set_custom_handler('switch-group', doAltTab);
Meta.keybindings_set_custom_handler('switch-windows-backward', doAltTab);
Meta.keybindings_set_custom_handler('switch-group-backward', doAltTab);
}
function disable() {
setKeybinding('switch-windows', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
setKeybinding('switch-group', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
setKeybinding('switch-windows-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
setKeybinding('switch-group-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
Meta.keybindings_set_custom_handler('switch-windows', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
Meta.keybindings_set_custom_handler('switch-group', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
Meta.keybindings_set_custom_handler('switch-windows-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
Meta.keybindings_set_custom_handler('switch-group-backward', Lang.bind(Main.wm, Main.wm._startAppSwitcher));
}

View File

@@ -1,12 +1,6 @@
/* -*- mode: js2 - indent-tabs-mode: nil - js2-basic-offset: 4 -*- */
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const St = imports.gi.St;
const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
@@ -19,65 +13,19 @@ const Convenience = Me.imports.convenience;
const LOCK_ENABLED_KEY = 'lock-enabled';
let extension;
let suspend_item = null;
let hibernate_item = null;
let poweroff_item = null;
let suspend_signal_id = 0, hibernate_signal_id = 0;
let settings = null;
let setting_changed_id = 0;
// Need to reimplement here the missing bits from LoginManager
function loginManager_hibernate() {
if (this._proxy) {
// systemd path
this._proxy.call("Hibernate",
GLib.Variant.new('(b)', [true]),
Gio.DBusCallFlags.NONE,
-1, null, null);
} else {
// upower path
this._upClient.hibernate_sync(null);
}
function updateSuspend(object, pspec, item) {
item.actor.visible = object.get_can_suspend() && settings.get_boolean('allow-suspend');
}
function loginManager_canHibernate(asyncCallback) {
if (this._proxy) {
// systemd path
this._proxy.call("CanHibernate",
null,
Gio.DBusCallFlags.NONE,
-1, null, function(proxy, asyncResult) {
let result, error;
try {
result = proxy.call_finish(asyncResult);
} catch(e) {
error = e;
}
if (error)
asyncCallback(false);
else
asyncCallback(result[0] != 'no');
});
} else {
Mainloop.idle_add(Lang.bind(this, function() {
asyncCallback(this._upClient.get_can_hibernate());
return false;
}));
}
}
function statusMenu_updateHaveHibernate() {
loginManager_canHibernate.call(this._loginManager, Lang.bind(this,
function(result) {
this._haveHibernate = result;
this._updateSuspendOrPowerOff();
}));
}
function statusMenu_updateSuspendOrPowerOff() {
this._suspendOrPowerOffItem.actor.hide();
extension.suspendItem.actor.visible = this._haveSuspend;
extension.hibernateItem.actor.visible = this._haveHibernate;
extension.powerOffItem.actor.visible = this._haveShutdown;
function updateHibernate(object, pspec, item) {
item.actor.visible = object.get_can_hibernate() && settings.get_boolean('allow-hibernate');
}
function onSuspendActivate(item) {
@@ -87,13 +35,12 @@ function onSuspendActivate(item) {
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
Main.screenShield.disconnect(tmpId);
this._loginManager.suspend();
this._upClient.suspend_sync(null);
}));
this.menu.close(BoxPointer.PopupAnimation.NONE);
Main.screenShield.lock(true);
} else {
this._loginManager.suspend();
this._upClient.suspend_sync(null);
}
}
@@ -104,88 +51,102 @@ function onHibernateActivate(item) {
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
Main.screenShield.disconnect(tmpId);
loginManager_hibernate.call(this._loginManager);
this._upClient.hibernate_sync(null);
}));
this.menu.close(BoxPointer.PopupAnimation.NONE);
Main.screenShield.lock(true);
} else {
loginManager_hibernate.call(this._loginManager);
this._upClient.hibernate_sync(null);
}
}
const Extension = new Lang.Class({
Name: 'AlternativeStatusMenu.Extension',
_init: function() {
this.suspendItem = null;
this.hibernateItem = null;
this.powerOffItem = null;
Convenience.initTranslations();
this._settings = Convenience.getSettings();
},
enable: function() {
let statusMenu = Main.panel.statusArea.userMenu;
let children = statusMenu.menu._getMenuItems();
let index = children.length;
/* find the old entry */
for (let i = children.length - 1; i >= 0; i--) {
if (children[i] == statusMenu._suspendOrPowerOffItem) {
index = i;
break;
}
}
/* add the new entries */
this.suspendItem = new PopupMenu.PopupMenuItem(_("Suspend"));
this.suspendItem.connect('activate', Lang.bind(statusMenu, onSuspendActivate));
this.hibernateItem = new PopupMenu.PopupMenuItem(_("Hibernate"));
this.hibernateItem.connect('activate', Lang.bind(statusMenu, onHibernateActivate));
this.powerOffItem = new PopupMenu.PopupMenuItem(_("Power Off"));
this.powerOffItem.connect('activate', Lang.bind(statusMenu, function() {
this._session.ShutdownRemote();
}));
/* insert the entries at the found position */
statusMenu.menu.addMenuItem(this.suspendItem, index);
statusMenu.menu.addMenuItem(this.hibernateItem, index + 1);
statusMenu.menu.addMenuItem(this.powerOffItem, index + 2);
this._openStateChangedId = statusMenu.menu.connect('open-state-changed', function() {
statusMenu_updateHaveHibernate.call(statusMenu);
});
this._previousUpdateSuspendOrPowerOff = statusMenu._updateSuspendOrPowerOff;
statusMenu._updateSuspendOrPowerOff = statusMenu_updateSuspendOrPowerOff;
this._settingsChangedId = this._settings.connect('changed', function() {
statusMenu._updateSuspendOrPowerOff();
});
},
disable: function() {
let statusMenu = Main.panel.statusArea.userMenu;
this.suspendItem.destroy();
this.hibernateItem.destroy();
this.powerOffItem.destroy();
statusMenu.menu.disconnect(this._openStateChangedId);
this._settings.disconnect(this._settingsChangedId);
statusMenu._updateSuspendOrPowerOff = this._previousUpdateSuspendOrPowerOff;
statusMenu._updateSuspendOrPowerOff();
},
});
// Put your extension initialization code here
function init(metadata) {
return (extension = new Extension());
Convenience.initTranslations();
}
function enable() {
let statusMenu = Main.panel.statusArea.userMenu;
settings = Convenience.getSettings();
let children = statusMenu.menu._getMenuItems();
let index = children.length;
/* find and destroy the old entry */
for (let i = children.length - 1; i >= 0; i--) {
if (children[i] == statusMenu._suspendOrPowerOffItem) {
children[i].destroy();
index = i;
break;
}
}
/* add the new entries */
suspend_item = new PopupMenu.PopupMenuItem(_("Suspend"));
suspend_item.connect('activate', Lang.bind(statusMenu, onSuspendActivate));
suspend_signal_id = statusMenu._upClient.connect('notify::can-suspend', Lang.bind(statusMenu, updateSuspend, suspend_item));
updateSuspend(statusMenu._upClient, null, suspend_item);
hibernate_item = new PopupMenu.PopupMenuItem(_("Hibernate"));
hibernate_item.connect('activate', Lang.bind(statusMenu, onHibernateActivate));
hibernate_signal_id = statusMenu._upClient.connect('notify::can-hibernate', Lang.bind(statusMenu, updateHibernate, hibernate_item));
updateHibernate(statusMenu._upClient, null, hibernate_item);
poweroff_item = new PopupMenu.PopupMenuItem(_("Power Off"));
poweroff_item.connect('activate', Lang.bind(statusMenu, function() {
this._session.ShutdownRemote();
}));
/* insert the entries at the found position */
statusMenu.menu.addMenuItem(suspend_item, index);
statusMenu.menu.addMenuItem(hibernate_item, index + 1);
statusMenu.menu.addMenuItem(poweroff_item, index + 2);
// clear out this to avoid criticals (we don't mess with
// updateSuspendOrPowerOff)
statusMenu._suspendOrPowerOffItem = null;
setting_changed_id = settings.connect('changed', function() {
updateSuspend(statusMenu._upClient, null, suspend_item);
updateHibernate(statusMenu._upClient, null, hibernate_item);
});
}
function disable() {
let statusMenu = Main.panel.statusArea.userMenu;
let children = statusMenu.menu._getMenuItems();
let index = children.length;
/* find the index for the previously created suspend entry */
for (let i = children.length - 1; i >= 0; i--) {
if (children[i] == suspend_item) {
index = i;
break;
}
}
/* disconnect signals */
statusMenu._upClient.disconnect(suspend_signal_id);
statusMenu._upClient.disconnect(hibernate_signal_id);
suspend_signal_id = hibernate_signal_id = 0;
settings.disconnect(setting_changed_id);
setting_changed_id = 0;
settings = null;
/* destroy the entries we had created */
suspend_item.destroy();
hibernate_item.destroy();
poweroff_item.destroy();
/* create a new suspend/poweroff entry */
/* empty strings are fine for the labels, since we immediately call updateSuspendOrPowerOff */
let item = new PopupMenu.PopupAlternatingMenuItem("", "");
/* restore the userMenu field */
statusMenu._suspendOrPowerOffItem = item;
statusMenu.menu.addMenuItem(item, index);
item.connect('activate', Lang.bind(statusMenu, statusMenu._onSuspendOrPowerOffActivate));
statusMenu._updateSuspendOrPowerOff();
}

View File

@@ -6,7 +6,7 @@
<_description>Control the visibility of the Suspend menu item</_description>
</key>
<key name="allow-hibernate" type="b">
<default>true</default>
<default>false</default>
<_summary>Enable hibernating</_summary>
<_description>Control the visibility of the Hibernate menu item</_description>
</key>

View File

@@ -0,0 +1,5 @@
EXTENSION_ID = dock
include ../../extension.mk
include ../../settings.mk

View File

@@ -0,0 +1,991 @@
/* -*- 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 ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Convenience = Me.imports.convenience;
// Settings
const DOCK_POSITION_KEY = 'position';
const DOCK_SIZE_KEY = 'size';
const DOCK_HIDE_KEY = 'autohide';
const DOCK_EFFECTHIDE_KEY = 'hide-effect';
const DOCK_AUTOHIDE_ANIMATION_TIME_KEY = 'hide-effect-duration';
const DOCK_MONITOR_KEY = 'monitor';
// Keep enums in sync with GSettings schemas
const PositionMode = {
LEFT: 0,
RIGHT: 1
};
const AutoHideEffect = {
RESIZE: 0,
RESCALE: 1,
MOVE: 2
};
const DND_RAISE_APP_TIMEOUT = 500;
// Utility function to make the dock clipped to the primary monitor
function updateClip(actor, monitorNumber) {
let monitor;
if (monitorNumber > -1 && monitorNumber < Main.layoutManager.monitors.length)
monitor = Main.layoutManager.monitors[monitorNumber];
else
monitor = Main.layoutManager.primaryMonitor;
let allocation = actor.allocation;
// Here we implicitly assume that the stage and actor's parent
// share the same coordinate space
let clip = new Clutter.ActorBox({ x1: Math.max(monitor.x, allocation.x1),
y1: Math.max(monitor.y, allocation.y1),
x2: Math.min(monitor.x + monitor.width, allocation.x2),
y2: Math.min(monitor.y + monitor.height, allocation.y2) });
// Translate back into actor's coordinate space
clip.x1 -= actor.x;
clip.x2 -= actor.x;
clip.y1 -= actor.y;
clip.y2 -= actor.y;
// Apply the clip
actor.set_clip(clip.x1, clip.y1, clip.x2-clip.x1, clip.y2 - clip.y1);
}
/*************************************************************************************/
/**** start resize's Dock functions *****************/
/*************************************************************************************/
function hideDock_size () {
if (!this._hideable)
return;
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let position_x = monitor.x;
let height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
Tweener.addTween(this, {
_item_size: 1,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function () {
height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
width = this._item_size + 4*this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
position_x=monitor.x-2*this._spacing;
break;
case PositionMode.RIGHT:
default:
position_x = monitor.x + (monitor.width-1-this._item_size-2*this._spacing);
}
this.actor.set_position (position_x,monitor.y+(monitor.height-height)/2);
this.actor.set_size(width,height);
updateClip(this.actor, this._displayMonitor);
},
});
this._hidden = true;
}
function showDock_size () {
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
let position_x = monitor.x;
Tweener.addTween(this, {
_item_size: this._settings.get_int(DOCK_SIZE_KEY),
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function () {
height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
width = this._item_size + 4*this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
position_x=monitor.x-2*this._spacing;
break;
case PositionMode.RIGHT:
default:
position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
}
this.actor.set_position (position_x, monitor.y+(monitor.height-height)/2);
this.actor.set_size(width,height);
updateClip(this.actor, this._displayMonitor);
}
});
this._hidden = false;
}
function showEffectAddItem_size () {
let primary = Main.layoutManager.primaryMonitor;
let height = (this._nicons)*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
Tweener.addTween(this.actor, {
y: primary.y + (primary.height-height)/2,
height: height,
width: width,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function (monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
}
/**************************************************************************************/
/**** start rescale's Dock functions *****************/
/**************************************************************************************/
function hideDock_scale () {
if (!this._hideable)
return;
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let cornerX = 0;
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
cornerX=monitor.x;
break;
case PositionMode.RIGHT:
default:
cornerX = monitor.x + monitor.width-1;
}
Tweener.addTween(this.actor,{
y: monitor.y + (monitor.height-height)/2,
x: cornerX,
height:height,
width: width,
scale_x: 0.025,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function(monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
this._hidden = true;
}
function showDock_scale () {
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let position_x = monitor.x;
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
position_x=monitor.x-2*this._spacing;
break;
case PositionMode.RIGHT:
default:
position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
}
Tweener.addTween(this.actor, {
y: monitor.y + (monitor.height-height)/2,
x: monitor.x + position_x,
height: height,
width: width,
scale_x: 1,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function(monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
this._hidden = false;
}
function showEffectAddItem_scale () {
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
Tweener.addTween(this.actor, {
y: monitor.y + (monitor.height-height)/2,
height: height,
width: width,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function(monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
}
/**************************************************************************************/
/**** start move Dock functions *****************/
/**************************************************************************************/
function hideDock_move () {
if (!this._hideable)
return;
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let cornerX = 0;
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
cornerX= monitor.x - width + this._spacing;
break;
case PositionMode.RIGHT:
default:
cornerX = monitor.x + monitor.width - this._spacing;
}
Tweener.addTween(this.actor,{
x: cornerX,
y: monitor.y + (monitor.height - height)/2,
width: width,
height: height,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function(monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
this._hidden = true;
}
function showDock_move () {
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let position_x = monitor.x;
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
position_x=monitor.x - 2*this._spacing;
break;
case PositionMode.RIGHT:
default:
position_x=monitor.x + (monitor.width-this._item_size-2*this._spacing);
}
Tweener.addTween(this.actor, {
x: position_x,
y: monitor.y + (monitor.height - height)/2,
width: width,
height: height,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function(monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
this._hidden = false;
}
function showEffectAddItem_move () {
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let height = this._nicons*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
Tweener.addTween(this.actor, {
y: monitor.y + (monitor.height-height)/2,
height: height,
width: width,
time: this._settings.get_double(DOCK_AUTOHIDE_ANIMATION_TIME_KEY),
transition: 'easeOutQuad',
onUpdate: function(monitor) {
updateClip(this, monitor);
},
onUpdateParams: [this._displayMonitor]
});
}
const Dock = new Lang.Class({
Name: 'Dock.Dock',
_init : function() {
this._placeholderText = null;
this._menus = [];
this._menuDisplays = [];
this._favorites = [];
// Load Settings
this._settings = Convenience.getSettings();
this._hidden = false;
this._hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
this._displayMonitor = this._settings.get_int(DOCK_MONITOR_KEY);
this._spacing = 4;
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
this._nicons = 0;
this._selectEffectFunctions(this._settings.get_enum(DOCK_EFFECTHIDE_KEY));
let [_x, _y, _w, _h] = this.get_start_position();
this.actor = new St.BoxLayout({ name: 'dock', vertical: true, reactive: true,
x: _x, y: _y, width: _w, height: _h });
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._installedChangedId = this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
this._appFavoritesChangedId = AppFavorites.getAppFavorites().connect('changed', Lang.bind(this, this._queueRedisplay));
this._appStateChangedId = this._appSystem.connect('app-state-changed', Lang.bind(this, this._queueRedisplay));
this._overviewShowingId = Main.overview.connect('showing', Lang.bind(this, function() {
this.actor.hide();
}));
this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this, function() {
this.actor.show();
}));
Main.layoutManager.addChrome(this.actor,
{ affectsStruts: !this._settings.get_boolean(DOCK_HIDE_KEY) });
//hidden
this._settings.connect('changed::'+DOCK_POSITION_KEY, Lang.bind(this, this._redisplay));
this._settings.connect('changed::'+DOCK_SIZE_KEY, Lang.bind(this, this._redisplay));
this._settings.connect('changed::'+DOCK_MONITOR_KEY, Lang.bind(this, function (){
this._displayMonitor = this._settings.get_int(DOCK_MONITOR_KEY);
this._redisplay();
}));
this._settings.connect('changed::'+DOCK_HIDE_KEY, Lang.bind(this, function (){
Main.layoutManager.removeChrome(this.actor);
Main.layoutManager.addChrome(this.actor,
{ affectsStruts: !this._settings.get_boolean(DOCK_HIDE_KEY) });
this._hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
if (this._hideable)
this._hideDock();
else
this._showDock();
}));
this._settings.connect('changed::' + DOCK_EFFECTHIDE_KEY, Lang.bind(this, function () {
let hideEffect = this._settings.get_enum(DOCK_EFFECTHIDE_KEY);
// restore the effects of the other functions
switch (hideEffect) {
case AutoHideEffect.RESCALE:
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
break;
case AutoHideEffect.RESIZE:
this.actor.set_scale(1, 1);
break;
case AutoHideEffect.MOVE:
this.actor.set_scale(1, 1);
this._item_size = this._settings.get_int(DOCK_SIZE_KEY);
}
this.actor.disconnect(this._leave_event);
this.actor.disconnect(this._enter_event);
this._selectEffectFunctions(hideEffect);
this._leave_event = this.actor.connect('leave-event', Lang.bind(this, this._hideDock));
this._enter_event = this.actor.connect('enter-event', Lang.bind(this, this._showDock));
this._redisplay();
}));
this._leave_event = this.actor.connect('leave-event', Lang.bind(this, this._hideDock));
this._enter_event = this.actor.connect('enter-event', Lang.bind(this, this._showDock));
this._hideDock();
},
get_start_position: function() {
let item_size = this._settings.get_int(DOCK_SIZE_KEY);
let monitor = Main.layoutManager.primaryMonitor;
if (this._displayMonitor > -1 && this._displayMonitor < Main.layoutManager.monitors.length) {
monitor = Main.layoutManager.monitors[this._displayMonitor];
}
let position_x = monitor.x;
let width = item_size + 4 * this._spacing;
switch (this._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
position_x=monitor.x - 2 * this._spacing;
break;
case PositionMode.RIGHT:
default:
position_x=monitor.x + (monitor.width - item_size - 2 * this._spacing);
}
return [ position_x, monitor.y, width, monitor.height ];
},
destroy: function() {
if (this._installedChangedId) {
this._appSystem.disconnect(this._installedChangedId);
this._installedChangedId = 0;
}
if (this._appFavoritesChangedId) {
AppFavorites.getAppFavorites().disconnect(this._appFavoritesChangedId);
this._appFavoritesChangedId = 0;
}
if (this._appStateChangedId) {
this._appSystem.disconnect(this._appStateChangedId);
this._appStateChangedId = 0;
}
if (this._overviewShowingId) {
Main.overview.disconnect(this._overviewShowingId);
this._overviewShowingId = 0;
}
if (this._overviewHiddenId) {
Main.overview.disconnect(this._overviewHiddenId);
this._overviewHiddenId = 0;
}
this.actor.destroy();
// Break reference cycles
this._settings.run_dispose();
this._settings = null;
this._appSystem = null;
this._tracker = null;
},
// fuctions hide
_restoreHideDock: function() {
this._hideable = this._settings.get_boolean(DOCK_HIDE_KEY);
},
_disableHideDock: function() {
this._hideable = false;
},
_selectEffectFunctions: function(hideEffect) {
switch (hideEffect) {
case AutoHideEffect.RESCALE:
this._hideDock = hideDock_scale;
this._showDock = showDock_scale;
this._showEffectAddItem = showEffectAddItem_scale;
break;
case AutoHideEffect.MOVE:
this._hideDock = hideDock_move;
this._showDock = showDock_move;
this._showEffectAddItem = showEffectAddItem_move;
break;
case AutoHideEffect.RESIZE:
default:
this._hideDock = hideDock_size;
this._showDock = showDock_size;
this._showEffectAddItem = showEffectAddItem_size;
}
},
_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();
let running = this._appSystem.get_running();
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);
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,this);
icons++;
this.addItem(display.actor);
}
this._nicons=icons;
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 = Main.layoutManager.primaryMonitor;
let height = (icons)*(this._item_size + this._spacing) + 2*this._spacing;
let width = this._item_size + 4*this._spacing;
if (this._hideable && this._hidden) {
this._hideDock();
} else {
if (this._settings.get_int(DOCK_SIZE_KEY) == this._item_size) {
// only add/delete icon
this._showEffectAddItem ();
} else {
// change size icon
this._showDock ();
}
}
},
_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;
if (this._settings.get_enum(DOCK_POSITION_KEY) == PositionMode.LEFT)
x = box.x1 + 2*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);
const DockIcon = new Lang.Class({
Name: 'Dock.DockIcon',
_init : function(app, dock) {
this._dock = dock;
this._settings = dock._settings;
this.app = app;
this.actor = new St.Button({ style_class: 'app-well-app',
button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO,
reactive: true,
x_fill: true,
y_fill: true });
this.actor._delegate = this;
this._icon = new AppDisplay.AppIcon(app, { setSizeManually: true,
showLabel: false });
this.actor.set_child(this._icon.actor);
this._icon.setIconSize(this._settings.get_int(DOCK_SIZE_KEY));
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();
this._dock._disableHideDock();
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('open-state-changed', Lang.bind(this, function (menu, isPoppedUp) {
if (!isPoppedUp){
//Restore value of autohidedock
this._dock._restoreHideDock();
this._dock._hideDock();
this._onMenuPoppedDown();
}
}));
this._menuManager.addMenu(this._menu, true);
}
this._menu.redisplay();
this._menu.open();
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 = event.get_state();
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();
}
});
Signals.addSignalMethods(DockIcon.prototype);
const DockIconMenu = new Lang.Class({
Name: 'Dock.DockIconMenu',
Extends: PopupMenu.PopupMenu,
_init: function(source) {
let side;
switch (source._settings.get_enum(DOCK_POSITION_KEY)) {
case PositionMode.LEFT:
side = St.Side.LEFT;
break;
case PositionMode.RIGHT:
default:
side = St.Side.RIGHT;
}
this.parent(source.actor, 0.5, side);
this._source = source;
this.connect('activate', Lang.bind(this, this._onActivate));
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.destroy(); }));
Main.layoutManager.addChrome(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;
},
_appendSeparator: function () {
let separator = new PopupMenu.PopupSeparatorMenuItem();
this.addMenuItem(separator);
},
_appendMenuItem: function(labelText) {
// FIXME: app-well-menu-item style
let item = new PopupMenu.PopupMenuItem(labelText);
this.addMenuItem(item);
return item;
},
popup: function(activatingButton) {
this._redisplay();
this.open();
},
_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 init() {
Convenience.initTranslations();
}
let dock;
function enable() {
dock = new Dock();
}
function disable() {
dock.destroy();
dock = null;
}

View File

@@ -0,0 +1,11 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Dock",
"description": "A dock for the GNOME Shell -- displays favorite and running applications",
"original-author": "tclaesson@gmail.com",
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}

View File

@@ -0,0 +1,43 @@
<schemalist gettext-domain="gnome-shell-extensions">
<enum id='org.gnome.shell.extensions.dock.PositionMode'>
<value nick='left' value='0'/>
<value nick='right' value='1'/>
</enum>
<enum id='org.gnome.shell.extensions.dock.AutoHideEffect'>
<value nick='resize' value='0'/>
<value nick='rescale' value='1'/>
<value nick='move' value='2'/>
</enum>
<schema id="org.gnome.shell.extensions.dock" path="/org/gnome/shell/extensions/dock/">
<key name="position" enum="org.gnome.shell.extensions.dock.PositionMode">
<default>'right'</default>
<_summary>Position of the dock</_summary>
<_description>Sets the position of the dock in the screen. Allowed values are 'right' or 'left'</_description>
</key>
<key name="size" type="i">
<default>48</default>
<_summary>Icon size</_summary>
<_description>Sets icon size of the dock.</_description>
</key>
<key name="autohide" type="b">
<default>true</default>
<_summary>Enable/disable autohide</_summary>
</key>
<key name="hide-effect" enum="org.gnome.shell.extensions.dock.AutoHideEffect">
<default>'move'</default>
<_summary>Autohide effect</_summary>
<_description>Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and 'move'</_description>
</key>
<key name="hide-effect-duration" type="d">
<default>0.3</default>
<_summary>Autohide duration</_summary>
<_description>Sets the time duration of the autohide effect.</_description>
</key>
<key name="monitor" type="i">
<default>-1</default>
<_summary>Monitor</_summary>
<_description>Sets monitor to display dock in. The default value (-1) is the primary monitor.</_description>
</key>
</schema>
</schemalist>

View File

@@ -0,0 +1,10 @@
#dock {
border-radius: 9px;
background-color: rgba(0,0,0,0.9);
border-width: 2px;
border-color: #5f5f5f;
}
.dock-menu {
font-size: 12px
}

View File

@@ -0,0 +1,3 @@
EXTENSION_ID = gajim
include ../../extension.mk

View File

@@ -0,0 +1,339 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const DBus = imports.dbus;
const Gettext = imports.gettext.domain('gnome-shell');
const Gio = imports.gi.Gio;
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) {
if (!timestamp)
timestamp = (Date.now() / 1000);
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.ChatNotification(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'] || result['NICKNAME'] || result['jid'];
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_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().lookup_app('gajim.desktop');
app.activate(-1);
},
_onChatState: function(emitter, data) {
let chatstate = data[1][5];
if (chatstate == 'gone')
this.destroy();
},
setChatState: function(state) {
// Gajim DBUS API doesn't support sending chatstate yet.
},
_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 recipient = data[1][0];
let text = data[1][1];
let chatstate = data[1][3];
if (text && (recipient == this._author)) {
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 = {};
},
proxy : function() {
return this._proxy;
},
enable: function() {
this._cacheDir = GLib.get_user_cache_dir() + '/gnome-shell/gajim-avatars';
let dir = Gio.file_new_for_path(this._cacheDir);
if (!dir.query_exists(null)) {
GLib.mkdir_with_parents(this._cacheDir, 0x1c0); // 0x1c0 = octal 0700
}
this._proxy = new Gajim(DBus.session, 'org.gajim.dbus', '/org/gajim/dbus/RemoteObject');
this._newMessageId = this._proxy.connect('NewMessage', Lang.bind(this, this._messageReceived));
},
disable: function() {
if (this._newMessageId) {
this._proxy.disconnect(this._newMessageId);
this._newMessageId = 0;
}
this._proxy = null;
for (let id in this._sources)
this._sources[id].destroy();
this._sources = { };
},
_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 init() {
return new GajimClient();
}

View File

@@ -0,0 +1,10 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Gajim IM integration",
"description": "Display Gajim incoming chats as notifications in the Shell message tray.",
"shell-version": [ "@shell_current@" ],
"url": "http://base-art.net"
}

View File

@@ -0,0 +1 @@
/* none used */

View File

@@ -123,7 +123,6 @@ function enable() {
let settings = Convenience.getSettings();
let useMoreScreen = settings.get_boolean('use-more-screen');
let windowCaptionsOnTop = settings.get_boolean('window-captions-on-top');
let signalId = settings.connect('changed::use-more-screen', function() {
useMoreScreen = settings.get_boolean('use-more-screen');
});
@@ -149,13 +148,7 @@ function enable() {
let ratio = this._width / this._height;
let x_gap = Math.max(WORKSPACE_BORDER_GAP, WINDOW_AREA_TOP_GAP * ratio);
let y_gap = Math.max(WORKSPACE_BORDER_GAP / ratio, WINDOW_AREA_TOP_GAP);
let bottom_padding = 0;
// If the window captions are below the window, put an additional gap to account for them
if (!windowCaptionsOnTop && this._windowOverlays.length)
bottom_padding += this._windowOverlays[0].chromeHeights()[1];
let area = new Rect(this._x + x_gap/2, this._y + y_gap, this._width - x_gap, this._height - y_gap - bottom_padding);
let area = new Rect(this._x + x_gap/2, this._y + y_gap, this._width - x_gap, this._height - y_gap);
let bounds = area.copy();
@@ -328,17 +321,17 @@ function enable() {
let animate = flags & WindowPositionFlags.ANIMATE;
// Start the animations
let targets = [];
let targets = [];
let scales = [];
[clones, targets] = this._calculateWindowTransformationsNatural(clones);
let currentWorkspace = global.screen.get_active_workspace();
let currentWorkspace = global.screen.get_active_workspace();
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
for (let i = 0; i < clones.length; i++) {
let clone = clones[i];
let [x, y , scale] = targets[i];
let [x, y , scale] = targets[i];
let metaWindow = clone.metaWindow;
let mainIndex = this._lookupIndex(metaWindow);
let overlay = this._windowOverlays[mainIndex];
@@ -382,15 +375,63 @@ function enable() {
}
/// position window titles on top of windows in overlay ////
if (windowCaptionsOnTop) {
if (settings.get_boolean('window-captions-on-top')) {
winInjections['_init'] = Workspace.WindowOverlay.prototype._init;
Workspace.WindowOverlay.prototype._init = function(windowClone, parentActor) {
let metaWindow = windowClone.metaWindow;
this._windowClone = windowClone;
this._parentActor = parentActor;
this._hidden = false;
let title = new St.Label({ style_class: 'window-caption',
text: metaWindow.title });
title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
title._spacing = 0;
title._overlap = 0;
this._updateCaptionId = metaWindow.connect('notify::title', Lang.bind(this, function(w) {
this.title.text = w.title;
}));
let button = new St.Button({ style_class: 'window-close' });
button._overlap = 0;
this._idleToggleCloseId = 0;
button.connect('clicked', Lang.bind(this, this._closeWindow));
windowClone.actor.connect('destroy', Lang.bind(this, this._onDestroy));
windowClone.actor.connect('enter-event', Lang.bind(this, this._onEnter));
windowClone.actor.connect('leave-event', Lang.bind(this, this._onLeave));
this._windowAddedId = 0;
windowClone.connect('zoom-start', Lang.bind(this, this.hide));
windowClone.connect('zoom-end', Lang.bind(this, this.show));
button.hide();
this.title = title;
this.closeButton = button;
parentActor.add_actor(this.title);
parentActor.add_actor(this.closeButton);
title.connect('style-changed', Lang.bind(this, this._onStyleChanged));
button.connect('style-changed', Lang.bind(this, this._onStyleChanged));
// force a style change if we are already on a stage - otherwise
// the signal will be emitted normally when we are added
if (parentActor.get_stage())
this._onStyleChanged();
},
winInjections['chromeHeights'] = Workspace.WindowOverlay.prototype.chromeHeights;
Workspace.WindowOverlay.prototype.chromeHeights = function () {
Workspace.WindowOverlay.prototype.chromeHeights = function () {
return [Math.max( this.closeButton.height - this.closeButton._overlap, this.title.height - this.title._overlap),
0];
};
0];
},
winInjections['updatePositions'] = Workspace.WindowOverlay.prototype.updatePositions;
Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight, animate) {
Workspace.WindowOverlay.prototype.updatePositions = function(cloneX, cloneY, cloneWidth, cloneHeight, animate) {
let button = this.closeButton;
let title = this.title;
@@ -422,7 +463,7 @@ function enable() {
let titleWidth = Math.min(title.fullWidth, cloneWidth);
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
let titleY = cloneY - title.height + title._spacing;
let titleY = cloneY - title.height + title._overlap;
if (animate)
this._animateOverlayActor(title, Math.floor(titleX), Math.floor(titleY), titleWidth);
@@ -430,7 +471,19 @@ function enable() {
title.width = titleWidth;
title.set_position(Math.floor(titleX), Math.floor(titleY));
}
};
},
winInjections['_onStyleChanged'] = Workspace.WindowOverlay.prototype._onStyleChanged;
Workspace.WindowOverlay.prototype._onStyleChanged = function() {
let titleNode = this.title.get_theme_node();
this.title._spacing = titleNode.get_length('-shell-caption-spacing');
this.title._overlap = titleNode.get_length('-shell-caption-overlap');
let closeNode = this.closeButton.get_theme_node();
this.closeButton._overlap = closeNode.get_length('-shell-close-overlap');
this._parentActor.queue_relayout();
}
}
}

View File

@@ -1,3 +1,3 @@
.window-caption {
-shell-caption-spacing: 13px; /* current caption height is 26px => set it to half of it. TODO: better solution needed */
-shell-caption-overlap: 13px; /* current caption height is 26px => set it to half of it. TODO: better solution needed */
}

View File

@@ -123,15 +123,8 @@ const PlacesManager = new Lang.Class({
let specialPath = GLib.get_user_special_dir(DEFAULT_DIRECTORIES[i]);
if (specialPath == homePath)
continue;
let file = Gio.File.new_for_path(specialPath), info;
try {
info = new PlaceInfo('special', file);
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
continue;
}
this._places.special.push(info);
this._places.special.push(new PlaceInfo('special',
Gio.File.new_for_path(specialPath)));
}
/*
@@ -318,14 +311,7 @@ const PlacesManager = new Lang.Class({
},
_addMount: function(kind, mount) {
let devItem;
try {
devItem = new PlaceDeviceInfo(kind, mount);
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
return;
}
let devItem = new PlaceDeviceInfo(kind, mount);
this._places[kind].push(devItem);
},

View File

@@ -33,10 +33,26 @@ function resetState() {
function enable() {
resetState();
Workspace.WindowOverlay.prototype.setId = function(id) {
if (this._text && this._text.visible && id == null)
this._text.hide();
this._id = id;
if (id != null)
this._text.text = this._id.toString();
}
winInjections['setId'] = undefined;
Workspace.WindowOverlay.prototype.getId = function() {
return this._id;
}
winInjections['getId'] = undefined;
Workspace.WindowOverlay.prototype.showTooltip = function() {
if (this._id === null)
return;
this._text.raise_top();
this._text.show();
this._text.text = (this._windowClone.slotId + 1).toString();
this._text.text = this._id.toString();
}
winInjections['showTooltip'] = undefined;
@@ -67,9 +83,11 @@ function enable() {
workspaceInjections['hideTooltip'] = undefined;
Workspace.Workspace.prototype.getWindowWithTooltip = function(id) {
for (let i = 0; i < this._windows.length; i++) {
if ((this._windows[i].slotId + 1) == id)
return this._windows[i].metaWindow;
for (let i in this._windowOverlays) {
if (this._windowOverlays[i] == null)
continue;
if (this._windowOverlays[i].getId() === id)
return this._windowOverlays[i]._windowClone.metaWindow;
}
return null;
}
@@ -109,11 +127,11 @@ function enable() {
workViewInjections['_hideWorkspacesTooltips'] = undefined;
WorkspacesView.WorkspacesView.prototype._onKeyRelease = function(s, o) {
if (this._pickWindow &&
if (this._pickWindow &&
(o.get_key_symbol() == Clutter.KEY_Alt_L ||
o.get_key_symbol() == Clutter.KEY_Alt_R))
this._hideTooltips();
if (this._pickWorkspace &&
if (this._pickWorkspace &&
(o.get_key_symbol() == Clutter.KEY_Control_L ||
o.get_key_symbol() == Clutter.KEY_Control_R))
this._hideWorkspacesTooltips();
@@ -227,6 +245,23 @@ function enable() {
this._tip = null;
});
workspaceInjections['positionWindows'] = injectToFunction(Workspace.Workspace.prototype, 'positionWindows', function(flags) {
let visibleClones = this._windows.slice();
if (this._reservedSlot)
visibleClones.push(this._reservedSlot);
let slots = this._computeAllWindowSlots(visibleClones.length);
visibleClones = this._orderWindowsByMotionAndStartup(visibleClones, slots);
for (let i = 0; i < visibleClones.length; i++) {
let clone = visibleClones[i];
let metaWindow = clone.metaWindow;
let mainIndex = this._lookupIndex(metaWindow);
let overlay = this._windowOverlays[mainIndex];
if (overlay)
overlay.setId(i < 9 ? i + 1 : null);
}
});
workViewInjections['_init'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_init', function(width, height, x, y, workspaces) {
this._pickWorkspace = false;
this._pickWindow = false;

View File

@@ -7,10 +7,13 @@ extensions/apps-menu/extension.js
extensions/auto-move-windows/extension.js
extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in
extensions/auto-move-windows/prefs.js
extensions/dock/extension.js
extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in
extensions/drive-menu/extension.js
extensions/example/extension.js
extensions/example/org.gnome.shell.extensions.example.gschema.xml.in
extensions/example/prefs.js
extensions/gajim/extension.js
extensions/native-window-placement/extension.js
extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in
extensions/places-menu/extension.js

221
po/de.po
View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-10-24 12:41+0200\n"
"POT-Creation-Date: 2012-10-24 12:36+0200\n"
"PO-Revision-Date: 2012-10-24 12:37+0100\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
@@ -26,14 +26,8 @@ msgid "The application icon mode."
msgstr "Der Modus des Anwendungssymbols."
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"Legt fest, wie die Fenster im Fensterumschalter angezeigt werden. Gültige "
"Werte sind »thumbnail-only« (zeigt ein Vorschaubild des Fensters), »app-icon-"
"only« (zeigt das Anwendungssymbol) oder »both« (beides)."
msgid "Configures how the windows are shown in the switcher. Valid possibilities are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' (shows only the application icon) or 'both'."
msgstr "Legt fest, wie die Fenster im Fensterumschalter angezeigt werden. Gültige Werte sind »thumbnail-only« (zeigt ein Vorschaubild des Fensters), »app-icon-only« (zeigt das Anwendungssymbol) oder »both« (beides)."
#: ../extensions/alternate-tab/prefs.js:26
msgid "Thumbnail only"
@@ -89,13 +83,8 @@ msgid "Application and workspace list"
msgstr "Anwendungs- und Arbeitsflächenliste"
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
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"
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/prefs.js:55
msgid "Application"
@@ -118,6 +107,72 @@ msgstr "Neue Übereinstimmungsregel erstellen"
msgid "Add"
msgstr "Hinzufügen"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "Hierher ziehen, um zu Favoriten hinzuzufügen"
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "Neues Fenster"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "Anwendung beenden"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
# Dock = das Dock ? -ck
# Sofern es sich nicht um das Original-Dash handelt, ja. -mb
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "Position des Docks"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid "Sets the position of the dock in the screen. Allowed values are 'right' or 'left'"
msgstr "Legt die Position des Docks auf dem Bildschirm fest. Mögliche Werte sind »right« und »left«"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "Symbolgröße"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "Legt die Symbolgröße für das Dock fest"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "Automatisches Verbergen aktivieren/deaktivieren"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "Effekt automatisch verbergen"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and 'move'"
msgstr "Legt den Effekt für das versteckte Dock fest. Mögliche Werte sind »resize«, »rescale« und »move«"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "Dauer automatisch verbergen"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "Legt die Effektdauer für automatisches Verbergen fest."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "Bildschirm"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid "Sets monitor to display dock in. The default value (-1) is the primary monitor."
msgstr "Legt den Bildschirm fest, in dem das Dock angezeigt werden soll. Die Voreinstellung (-1) entspricht dem primären Bildschirm."
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
@@ -140,58 +195,58 @@ msgid "Alternative greeting text."
msgstr "Alternative Begrüßungstext."
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr ""
"Falls nicht leer, ist dies der Text, der beim Anklicken des Panels angezeigt "
"wird."
msgid "If not empty, it contains the text that will be shown when clicking on the panel."
msgstr "Falls nicht leer, ist dies der Text, der beim Anklicken des Panels angezeigt wird."
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: ../extensions/example/prefs.js:30
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Example aims to show how to build well behaved extensions for the Shell and as such it has little functionality on its own.\n"
"Nevertheless it's possible to customize the greeting message."
msgstr ""
"Das Beispiel soll zeigen, wie sich korrekt verhaltende Erweiterungen für die "
"Shell erstellt werden. Es enthält grundlegende Funktionalität.\n"
"Das Beispiel soll zeigen, wie sich korrekt verhaltende Erweiterungen für die Shell erstellt werden. Es enthält grundlegende Funktionalität.\n"
"Es ist möglich, die Begrüßungsnachricht zu ändern."
#: ../extensions/example/prefs.js:36
msgid "Message:"
msgstr "Nachricht:"
#: ../extensions/gajim/extension.js:226
#, c-format
msgid "%s is away."
msgstr "%s ist abwesend."
#: ../extensions/gajim/extension.js:229
#, c-format
msgid "%s is offline."
msgstr "%s ist abgemeldet."
#: ../extensions/gajim/extension.js:232
#, c-format
msgid "%s is online."
msgstr "%s ist angemeldet."
#: ../extensions/gajim/extension.js:235
#, c-format
msgid "%s is busy."
msgstr "%s ist beschäftigt."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "Mehr Bildschirmbereich für Fenster verwenden"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"Versuchen, mehr Bildschirmfläche zum Platzieren der Fenstervorschaubilder zu "
"verwenden, indem das Bildschirmseitenverhältnis berücksichtigt wird und "
"diese stärker zusammengelegt werden, um den umgebenden Rahmen zu "
"verkleinern. Diese Einstellung betrifft nur den natürlichen "
"Platzierungsalgorithmus."
msgid "Try to use more screen for placing window thumbnails by adapting to screen aspect ratio, and consolidating them further to reduce the bounding box. This setting applies only with the natural placement strategy."
msgstr "Versuchen, mehr Bildschirmfläche zum Platzieren der Fenstervorschaubilder zu verwenden, indem das Bildschirmseitenverhältnis berücksichtigt wird und diese stärker zusammengelegt werden, um den umgebenden Rahmen zu verkleinern. Diese Einstellung betrifft nur den natürlichen Platzierungsalgorithmus."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
msgid "Place window captions on top"
msgstr "Fensterbeschriftungen oben platzieren"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"Falls wahr, so werden die Fensterbeschriftungen über dem zugehörigen "
"Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. "
"Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
msgid "If true, place window captions on top the respective thumbnail, overriding shell default of placing it at the bottom. Changing this setting requires restarting the shell to have any effect."
msgstr "Falls wahr, so werden die Fensterbeschriftungen über dem zugehörigen Vorschaubild platziert und damit die Voreinstellung der Shell übergangen. Eine Änderungseinstellung tritt erst mit einem Neustart der Shell in Kraft."
#: ../extensions/places-menu/extension.js:46
msgid "Places"
@@ -240,9 +295,7 @@ msgstr "Themenname"
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
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"
msgstr "Der Name des Themas, welches aus ~/.themes/name/gnome-shell geladen werden soll"
#: ../extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
@@ -285,80 +338,6 @@ msgstr "Anzeige"
msgid "Display Settings"
msgstr "Bildschirmeinstellungen"
#~ msgid "Drag here to add favorites"
#~ msgstr "Hierher ziehen, um zu Favoriten hinzuzufügen"
#~ msgid "New Window"
#~ msgstr "Neues Fenster"
#~ msgid "Quit Application"
#~ msgstr "Anwendung beenden"
#~ msgid "Remove from Favorites"
#~ msgstr "Aus Favoriten entfernen"
#~ msgid "Add to Favorites"
#~ msgstr "Zu Favoriten hinzufügen"
# Dock = das Dock ? -ck
# Sofern es sich nicht um das Original-Dash handelt, ja. -mb
#~ msgid "Position of the dock"
#~ msgstr "Position des Docks"
#~ msgid ""
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
#~ "or 'left'"
#~ msgstr ""
#~ "Legt die Position des Docks auf dem Bildschirm fest. Mögliche Werte sind "
#~ "»right« und »left«"
#~ msgid "Icon size"
#~ msgstr "Symbolgröße"
#~ msgid "Sets icon size of the dock."
#~ msgstr "Legt die Symbolgröße für das Dock fest"
#~ msgid "Enable/disable autohide"
#~ msgstr "Automatisches Verbergen aktivieren/deaktivieren"
#~ msgid "Autohide effect"
#~ msgstr "Effekt automatisch verbergen"
#~ msgid ""
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
#~ "and 'move'"
#~ msgstr ""
#~ "Legt den Effekt für das versteckte Dock fest. Mögliche Werte sind "
#~ "»resize«, »rescale« und »move«"
#~ msgid "Autohide duration"
#~ msgstr "Dauer automatisch verbergen"
#~ msgid "Sets the time duration of the autohide effect."
#~ msgstr "Legt die Effektdauer für automatisches Verbergen fest."
#~ msgid "Monitor"
#~ msgstr "Bildschirm"
#~ msgid ""
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
#~ "monitor."
#~ msgstr ""
#~ "Legt den Bildschirm fest, in dem das Dock angezeigt werden soll. Die "
#~ "Voreinstellung (-1) entspricht dem primären Bildschirm."
#~ msgid "%s is away."
#~ msgstr "%s ist abwesend."
#~ msgid "%s is offline."
#~ msgstr "%s ist abgemeldet."
#~ msgid "%s is online."
#~ msgstr "%s ist angemeldet."
#~ msgid "%s is busy."
#~ msgstr "%s ist beschäftigt."
#~ msgid "Removable Devices"
#~ msgstr "Wechseldatenträger"

109
po/lt.po
View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: lt\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2012-10-16 14:24+0000\n"
"PO-Revision-Date: 2012-10-20 21:51+0300\n"
"POT-Creation-Date: 2012-09-07 15:25+0000\n"
"PO-Revision-Date: 2012-09-15 15:14+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <>\n"
"Language: \n"
@@ -26,10 +26,12 @@ msgid "Configures how the windows are shown in the switcher. Valid possibilities
msgstr "Nustato, kaip langai yra rodomi perjungimo lange. Galimos vertės yra „thumbnail-only“ (rodo lango miniatiūrą), „app-icon-only“ (rodo tik programos piktogramą) ir „both“."
#: ../extensions/alternate-tab/prefs.js:26
#| msgid "All & Thumbnails"
msgid "Thumbnail only"
msgstr "Tik miniatiūros"
#: ../extensions/alternate-tab/prefs.js:27
#| msgid "Application"
msgid "Application icon only"
msgstr "Tik programos piktograma"
@@ -46,15 +48,15 @@ msgid "Show only windows in the current workspace"
msgstr "Rodyti tik dabartinio darbalaukio langus"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:86
#: ../extensions/alternative-status-menu/extension.js:68
msgid "Suspend"
msgstr "Užmigdyti"
#: ../extensions/alternative-status-menu/extension.js:91
#: ../extensions/alternative-status-menu/extension.js:73
msgid "Hibernate"
msgstr "Hibernuoti"
#: ../extensions/alternative-status-menu/extension.js:96
#: ../extensions/alternative-status-menu/extension.js:78
msgid "Power Off"
msgstr "Išjungti"
@@ -103,19 +105,77 @@ msgstr "Sukurti naują atitikimo taisyklę"
msgid "Add"
msgstr "Pridėti"
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "Laikmenos „%s“ išstūmimas nepavyko:"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "Nuvilkite čia, jei norite pridėt prie mėgstamų"
#: ../extensions/drive-menu/extension.js:89
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "Naujas langas"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "Uždaryti programą"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "Skydelio pozicija"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid "Sets the position of the dock in the screen. Allowed values are 'right' or 'left'"
msgstr "Nustato skydelio vietą ekrane. Galimos reikšmės yra „right“ arba „left“"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "Piktogramų dydis"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "Nustato skydelio piktogramos dydį."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "Įjungti/Išjungti automatinį slėpimą"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "Automatinio slėpimo efektas"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and 'move'"
msgstr "Nustato skydelio slėpimo efektą. Galimos reikšmės yra „resize“, „rescale“ arba „move“"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "Automatinio slėpimo trukmė"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "Nustato automatinio slėpimo efekto trukmę."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "Monitorius"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid "Sets monitor to display dock in. The default value (-1) is the primary monitor."
msgstr "Nustato monitorių, kuriame rodyti doką. Numatytoji reikšmė (-1) yra pagrindinis monitorius."
#: ../extensions/drive-menu/extension.js:56
msgid "Removable devices"
msgstr "Išimami įrenginiai"
#: ../extensions/drive-menu/extension.js:106
#| msgid "Open file manager"
msgid "Open File"
msgstr "Atverti failą"
#: ../extensions/drive-menu/extension.js:67
msgid "Open file manager"
msgstr "Atverti failų tvarkyklę"
#: ../extensions/example/extension.js:17
msgid "Hello, world!"
@@ -143,6 +203,26 @@ msgstr ""
msgid "Message:"
msgstr "Pranešimas:"
#: ../extensions/gajim/extension.js:226
#, c-format
msgid "%s is away."
msgstr "%s yra pasitraukęs."
#: ../extensions/gajim/extension.js:229
#, c-format
msgid "%s is offline."
msgstr "%s yra atsijungęs."
#: ../extensions/gajim/extension.js:232
#, c-format
msgid "%s is online."
msgstr "%s yra prisijungęs."
#: ../extensions/gajim/extension.js:235
#, c-format
msgid "%s is busy."
msgstr "%s yra užsiėmęs."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "Naudoti daugiau ekrano langams "
@@ -246,6 +326,7 @@ msgid "Display"
msgstr "Vaizduoklis"
#: ../extensions/xrandr-indicator/extension.js:80
#| msgid "System Settings"
msgid "Display Settings"
msgstr "Vaizduoklio nustatymai"

251
po/pa.po
View File

@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-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: 2012-10-16 14:24+0000\n"
"PO-Revision-Date: 2012-10-25 09:10+0530\n"
"POT-Creation-Date: 2012-08-18 00:42+0000\n"
"PO-Revision-Date: 2012-08-19 15:11+0530\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
"Language: pa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.5\n"
"X-Generator: Lokalize 1.4\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
@@ -31,10 +31,12 @@ msgid ""
msgstr ""
#: ../extensions/alternate-tab/prefs.js:26
#| msgid "All & Thumbnails"
msgid "Thumbnail only"
msgstr "ਕੇਵਲ ਥੰਮਨੇਲ ਹੀ"
#: ../extensions/alternate-tab/prefs.js:27
#| msgid "Application"
msgid "Application icon only"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ ਹੀ"
@@ -51,15 +53,16 @@ msgid "Show only windows in the current workspace"
msgstr "ਮੌਜੂਦਾ ਵਰਕਸਪੇਸ ਵਿੱਚੋਂ ਹੀ ਵਿੰਡੋਜ਼ ਹੀ ਵੇਖਾਓ"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:86
#: ../extensions/alternative-status-menu/extension.js:68
msgid "Suspend"
msgstr "ਸਸਪੈਂਡ"
#: ../extensions/alternative-status-menu/extension.js:91
#: ../extensions/alternative-status-menu/extension.js:73
msgid "Hibernate"
msgstr "ਹਾਈਬਰਨੇਟ"
#: ../extensions/alternative-status-menu/extension.js:96
#: ../extensions/alternative-status-menu/extension.js:78
#| msgid "Power Off..."
msgid "Power Off"
msgstr "ਬੰਦ ਕਰੋ"
@@ -113,19 +116,87 @@ msgstr "ਨਵਾਂ ਮਿਲਾਉਣ ਨਿਯਮ ਬਣਾਉ"
msgid "Add"
msgstr "ਸ਼ਾਮਲ"
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "ਡਰਾਇਵ '%s' ਬਾਹਰ ਕੱਢਣ ਲਈ ਫੇਲ੍ਹ:"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜਨ ਲਈ ਇੱਥੇ ਸੁੱਟੋ"
#: ../extensions/drive-menu/extension.js:89
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "ਨਵੀਂ ਵਿੰਡੋ"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰੋ"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "ਡੌਕ ਦੀ ਸਥਿਤੀ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid ""
"Sets the position of the dock in the screen. Allowed values are 'right' or "
"'left'"
msgstr "ਸਕਰੀਨ ਵਿੱਚ ਡੌਕ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਸੰਭਵ ਮੁੱਲ ਹਨ 'right' ਜਾਂ 'left'"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "ਆਈਕਾਨ ਆਕਾਰ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "ਡੌਕ ਦਾ ਆਈਕਾਨ ਆਕਾਰ ਸੈੱਟ ਕਰੋ।"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "ਆਪੇ-ਓਹਲੇ ਕਰਨਾ ਚਾਲੂ/ਬੰਦ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "ਆਪੇ-ਓਹਲੇ ਹੋਣ ਪ੍ਰਭਾਵ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid ""
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
"'move'"
msgstr ""
"ਡੌਕ ਓਹਲੇ ਕਰਨ ਦਾ ਪ੍ਰਭਾਵ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਸੰਭਵ ਮੁੱਲ ਹਨ 'resize', 'rescale' ਅਤੇ "
"'move'"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "ਆਪੇ ਓਹਲੇ ਹੋਣ ਅੰਤਰਾਲ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "ਆਪੇ-ਓਹਲੇ ਕਰਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਸਮੇਂ ਦਾ ਅੰਤਰਾਲ ਸੈੱਟ ਕਰੋ।"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "ਮਾਨੀਟਰ"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid ""
"Sets monitor to display dock in. The default value (-1) is the primary "
"monitor."
msgstr ""
"ਡੌਕ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਨਿਗਾਰਨ ਸੈੱਟ ਕਰੋ। ਪ੍ਰਾਈਮਰੀ ਮਾਨੀਟਰ ਲਈ ਡਿਫਾਲਟ ਮੁੱਲ (-1) ਹੈ।"
#: ../extensions/drive-menu/extension.js:57
#| msgid "Removable Devices"
msgid "Removable devices"
msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ"
#: ../extensions/drive-menu/extension.js:106
#| msgid "Open file manager"
msgid "Open File"
msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ"
#: ../extensions/drive-menu/extension.js:68
msgid "Open file manager"
msgstr "ਫਾਇਲ ਮੈਨੇਜਰ ਖੋਲ੍ਹੋ"
#: ../extensions/example/extension.js:17
msgid "Hello, world!"
@@ -156,6 +227,26 @@ msgstr ""
msgid "Message:"
msgstr "ਸੁਨੇਹਾ:"
#: ../extensions/gajim/extension.js:227
#, c-format
msgid "%s is away."
msgstr "%s ਦੂਰ ਹੈ।"
#: ../extensions/gajim/extension.js:230
#, c-format
msgid "%s is offline."
msgstr "%s ਆਫਲਾਈਨ ਹੈ।"
#: ../extensions/gajim/extension.js:233
#, c-format
msgid "%s is online."
msgstr "%s ਆਨਲਾਈਨ ਹੈ।"
#: ../extensions/gajim/extension.js:236
#, c-format
msgid "%s is busy."
msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "ਵਿੰਡੋਜ਼ ਲਈ ਹੋਰ ਸਕਰੀਨ ਵਰਤੋਂ"
@@ -178,46 +269,9 @@ msgid ""
"restarting the shell to have any effect."
msgstr ""
#: ../extensions/places-menu/extension.js:46
msgid "Places"
msgstr "ਥਾਵਾਂ"
#: ../extensions/places-menu/extension.js:47
msgid "Devices"
msgstr "ਜੰਤਰ"
#: ../extensions/places-menu/extension.js:48
msgid "Bookmarks"
msgstr "ਬੁੱਕਮਾਰਕ"
#: ../extensions/places-menu/extension.js:49
msgid "Network"
msgstr "ਨੈੱਟਵਰਕ"
#: ../extensions/places-menu/placeDisplay.js:48
#, c-format
msgid "Failed to launch \"%s\""
msgstr "\"%s\" ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
#: ../extensions/places-menu/placeDisplay.js:121
msgid "Home"
msgstr "ਘਰ"
#: ../extensions/places-menu/placeDisplay.js:184
msgid "File System"
msgstr "ਫਾਇਲ ਸਿਸਟਮ"
#: ../extensions/places-menu/placeDisplay.js:188
msgid "Browse network"
msgstr "ਨੈੱਟਵਰਕ ਝਲਕ"
#: ../extensions/systemMonitor/extension.js:213
msgid "CPU"
msgstr "ਸੀਪੀਯੂ"
#: ../extensions/systemMonitor/extension.js:266
msgid "Memory"
msgstr "ਮੈਮੋਰੀ"
#: ../extensions/places-menu/extension.js:39
msgid "Removable Devices"
msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ"
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
msgid "Theme name"
@@ -260,87 +314,9 @@ msgstr "ਸੱਜੇ"
msgid "Upside-down"
msgstr "ਉਤਲਾ ਹੇਠ"
#: ../extensions/xrandr-indicator/extension.js:50
msgid "Display"
msgstr "ਡਿਸਪਲੇਅ"
#: ../extensions/xrandr-indicator/extension.js:80
#| msgid "System Settings"
msgid "Display Settings"
msgstr "ਡਿਸਪਲੇਅ ਸੈਟਿੰਗ"
#~ msgid "Drag here to add favorites"
#~ msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜਨ ਲਈ ਇੱਥੇ ਸੁੱਟੋ"
#~ msgid "New Window"
#~ msgstr "ਨਵੀਂ ਵਿੰਡੋ"
#~ msgid "Quit Application"
#~ msgstr "ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰੋ"
#~ msgid "Remove from Favorites"
#~ msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
#~ msgid "Add to Favorites"
#~ msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
#~ msgid "Position of the dock"
#~ msgstr "ਡੌਕ ਦੀ ਸਥਿਤੀ"
#~ msgid ""
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
#~ "or 'left'"
#~ msgstr "ਸਕਰੀਨ ਵਿੱਚ ਡੌਕ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਸੰਭਵ ਮੁੱਲ ਹਨ 'right' ਜਾਂ 'left'"
#~ msgid "Icon size"
#~ msgstr "ਆਈਕਾਨ ਆਕਾਰ"
#~ msgid "Sets icon size of the dock."
#~ msgstr "ਡੌਕ ਦਾ ਆਈਕਾਨ ਆਕਾਰ ਸੈੱਟ ਕਰੋ।"
#~ msgid "Enable/disable autohide"
#~ msgstr "ਆਪੇ-ਓਹਲੇ ਕਰਨਾ ਚਾਲੂ/ਬੰਦ"
#~ msgid "Autohide effect"
#~ msgstr "ਆਪੇ-ਓਹਲੇ ਹੋਣ ਪ੍ਰਭਾਵ"
#~ msgid ""
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
#~ "and 'move'"
#~ msgstr ""
#~ "ਡੌਕ ਓਹਲੇ ਕਰਨ ਦਾ ਪ੍ਰਭਾਵ ਸੈੱਟ ਕਰਦਾ ਹੈ। ਸੰਭਵ ਮੁੱਲ ਹਨ 'resize', 'rescale' ਅਤੇ 'move'"
#~ msgid "Autohide duration"
#~ msgstr "ਆਪੇ ਓਹਲੇ ਹੋਣ ਅੰਤਰਾਲ"
#~ msgid "Sets the time duration of the autohide effect."
#~ msgstr "ਆਪੇ-ਓਹਲੇ ਕਰਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਸਮੇਂ ਦਾ ਅੰਤਰਾਲ ਸੈੱਟ ਕਰੋ।"
#~ msgid "Monitor"
#~ msgstr "ਮਾਨੀਟਰ"
#~ msgid ""
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
#~ "monitor."
#~ msgstr "ਡੌਕ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਨਿਗਾਰਨ ਸੈੱਟ ਕਰੋ। ਪ੍ਰਾਈਮਰੀ ਮਾਨੀਟਰ ਲਈ ਡਿਫਾਲਟ ਮੁੱਲ (-1) ਹੈ।"
#~ msgid "%s is away."
#~ msgstr "%s ਦੂਰ ਹੈ।"
#~ msgid "%s is offline."
#~ msgstr "%s ਆਫਲਾਈਨ ਹੈ।"
#~ msgid "%s is online."
#~ msgstr "%s ਆਨਲਾਈਨ ਹੈ।"
#~ msgid "%s is busy."
#~ msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
#~ msgid "Removable Devices"
#~ msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ"
#~ msgid "Configure display settings..."
#~ msgstr "ਡਿਸਪਲੇਅ ਸੈਟਿੰਗ ਸੰਰਚਨਾ..."
#: ../extensions/xrandr-indicator/extension.js:82
msgid "Configure display settings..."
msgstr "ਡਿਸਪਲੇਅ ਸੈਟਿੰਗ ਸੰਰਚਨਾ..."
#~ msgid "The alt tab behaviour."
#~ msgstr "alt tab ਰਵੱਈਆ ਹੈ।"
@@ -367,6 +343,9 @@ msgstr "ਡਿਸਪਲੇਅ ਸੈਟਿੰਗ"
#~ msgid "My Account"
#~ msgstr "ਮੇਰਾ ਅਕਾਊਂਟ"
#~ msgid "System Settings"
#~ msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ"
#~ msgid "Lock Screen"
#~ msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ"

199
po/ru.po
View File

@@ -1,18 +1,18 @@
# Russian 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.
# Yuri Myasoedov <omerta13@yandex.ru>, 2011, 2012.
# Stas Solovey <whats_up@tut.by>, 2011, 2012.
# Yuri Myasoedov <omerta13@yandex.ru>, 2011, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-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: 2012-11-16 19:30+0000\n"
"PO-Revision-Date: 2012-11-16 18:29+0300\n"
"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
"Language-Team: Russian <gnome-cyr@gnome.org>\n"
"POT-Creation-Date: 2012-09-22 10:34+0000\n"
"PO-Revision-Date: 2012-09-27 17:23+0400\n"
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
"Language-Team: русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -57,15 +57,15 @@ msgid "Show only windows in the current workspace"
msgstr "Отображать окна только текущей рабочей области"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:68
msgid "Suspend"
msgstr "Ждущий режим"
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:73
msgid "Hibernate"
msgstr "Спящий режим"
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:78
msgid "Power Off"
msgstr "Выключить"
@@ -118,18 +118,89 @@ msgstr "Создать новое правило соответствия"
msgid "Add"
msgstr "Добавить"
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "Не удалось извлечь диск «%s»:"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "Перетащите, чтобы добавить в избранное"
#: ../extensions/drive-menu/extension.js:89
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "Создать окно"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "Закрыть приложение"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "Удалить из избранного"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "Добавить в избранное"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "Расположение док-панели"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid ""
"Sets the position of the dock in the screen. Allowed values are 'right' or "
"'left'"
msgstr ""
"Устанавливает положение док-панели на экране. Возможные значения: «right» "
"или «left»"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "Размер значков"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "Устанавливает размер значка док-панели."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "Включить/выключить автоскрытие"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "Эффект автоскрытия"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid ""
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
"'move'"
msgstr ""
"Устанавливает эффект скрытия док-панели. Возможные значения: «resize», "
"«rescale» и «move»"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "Таймер автоскрытия"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "Устанавливает продолжительность эффекта автоскрытия."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "Монитор"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid ""
"Sets monitor to display dock in. The default value (-1) is the primary "
"monitor."
msgstr ""
"Устанавливает монитор для отображения док-панели. Значением по умолчанию "
"(-1) является основной монитор."
#: ../extensions/drive-menu/extension.js:56
msgid "Removable devices"
msgstr "Съёмные устройства"
#: ../extensions/drive-menu/extension.js:106
msgid "Open File"
msgstr "Открыть файл"
#: ../extensions/drive-menu/extension.js:67
msgid "Open file manager"
msgstr "Открыть файловый менеджер"
#: ../extensions/example/extension.js:17
msgid "Hello, world!"
@@ -162,6 +233,26 @@ msgstr ""
msgid "Message:"
msgstr "Сообщение:"
#: ../extensions/gajim/extension.js:226
#, c-format
msgid "%s is away."
msgstr "%s отошёл."
#: ../extensions/gajim/extension.js:229
#, c-format
msgid "%s is offline."
msgstr "%s не в сети."
#: ../extensions/gajim/extension.js:232
#, c-format
msgid "%s is online."
msgstr "%s в сети."
#: ../extensions/gajim/extension.js:235
#, c-format
msgid "%s is busy."
msgstr "%s занят."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "Использовать дополнительную площадь экрана для окон"
@@ -216,11 +307,11 @@ msgstr "Не удалось запустить «%s»"
msgid "Home"
msgstr "Домашняя папка"
#: ../extensions/places-menu/placeDisplay.js:195
#: ../extensions/places-menu/placeDisplay.js:184
msgid "File System"
msgstr "Файловая система"
#: ../extensions/places-menu/placeDisplay.js:199
#: ../extensions/places-menu/placeDisplay.js:188
msgid "Browse network"
msgstr "Обзор сети"
@@ -280,75 +371,3 @@ msgstr "Экран"
#: ../extensions/xrandr-indicator/extension.js:80
msgid "Display Settings"
msgstr "Параметры экрана"
#~ msgid "Drag here to add favorites"
#~ msgstr "Перетащите, чтобы добавить в избранное"
#~ msgid "New Window"
#~ msgstr "Создать окно"
#~ msgid "Quit Application"
#~ msgstr "Закрыть приложение"
#~ msgid "Remove from Favorites"
#~ msgstr "Удалить из избранного"
#~ msgid "Add to Favorites"
#~ msgstr "Добавить в избранное"
#~ msgid "Position of the dock"
#~ msgstr "Расположение док-панели"
#~ msgid ""
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
#~ "or 'left'"
#~ msgstr ""
#~ "Устанавливает положение док-панели на экране. Возможные значения: «right» "
#~ "или «left»"
#~ msgid "Icon size"
#~ msgstr "Размер значков"
#~ msgid "Sets icon size of the dock."
#~ msgstr "Устанавливает размер значка док-панели."
#~ msgid "Enable/disable autohide"
#~ msgstr "Включить/выключить автоскрытие"
#~ msgid "Autohide effect"
#~ msgstr "Эффект автоскрытия"
#~ msgid ""
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
#~ "and 'move'"
#~ msgstr ""
#~ "Устанавливает эффект скрытия док-панели. Возможные значения: «resize», "
#~ "«rescale» и «move»"
#~ msgid "Autohide duration"
#~ msgstr "Таймер автоскрытия"
#~ msgid "Sets the time duration of the autohide effect."
#~ msgstr "Устанавливает продолжительность эффекта автоскрытия."
#~ msgid "Monitor"
#~ msgstr "Монитор"
#~ msgid ""
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
#~ "monitor."
#~ msgstr ""
#~ "Устанавливает монитор для отображения док-панели. Значением по умолчанию "
#~ "(-1) является основной монитор."
#~ msgid "%s is away."
#~ msgstr "%s отошёл."
#~ msgid "%s is offline."
#~ msgstr "%s не в сети."
#~ msgid "%s is online."
#~ msgstr "%s в сети."
#~ msgid "%s is busy."
#~ msgstr "%s занят."

126
po/sk.po
View File

@@ -9,7 +9,7 @@ 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: 2012-10-26 15:22+0000\n"
"POT-Creation-Date: 2012-10-27 19:36+0000\n"
"PO-Revision-Date: 2012-11-04 21:46+0100\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
@@ -51,7 +51,7 @@ msgstr "Len ikona aplikácie"
msgid "Thumbnail and application icon"
msgstr "Miniatúra a ikona aplikácie"
# Label
#  Label
#: ../extensions/alternate-tab/prefs.js:43
msgid "Present windows as"
msgstr "Uvádzať okná ako"
@@ -63,17 +63,17 @@ msgstr "Zobraziť len okná z aktuálneho pracovného priestoru"
# PopupMenuItem
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:86
msgid "Suspend"
msgstr "Uspať"
# PopupMenuItem
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:91
msgid "Hibernate"
msgstr "Hibernovať"
# PopupMenuItem
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:96
msgid "Power Off"
msgstr "Vypnúť"
@@ -137,13 +137,87 @@ msgstr "Vytvorenie nového odpovedajúceho pravidla"
msgid "Add"
msgstr "Pridať"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "Pretiahnutím na toto miesto položku preidáte do obľúbených"
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "Nové okno"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "Ukončiť aplikáciu"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "Odstrániť z obľúbených"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "Pridať do obľúbených"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "Pozícia doku"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid ""
"Sets the position of the dock in the screen. Allowed values are 'right' or "
"'left'"
msgstr ""
"Nastaví pozíciu doku na obrazovke. Povolené hodnoty sú „right“ (vpravo) "
"alebo „left“ (vľavo)"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "Veľkosť ikony"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "Nastaví veľkosť ikony v doku."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "Povoliť/zakázať automatické skrývanie"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "Efekt automatického skrývania"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid ""
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
"'move'"
msgstr ""
"Nastaví efekt skrývania doku. Povolené hodnoty sú „resize“ (zmena veľkosti) "
"alebo „rescale“ (zmena mierky)"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "Trvanie automatického skrývania"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "Nastaví dĺžku trvania efektu automatického skrývania."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "Monitor"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid ""
"Sets monitor to display dock in. The default value (-1) is the primary "
"monitor."
msgstr "Nastaví monitor, v ktorom sa má zobraziť dok. Predvolená hodnota (-1) je hlavný monitor."
# https://bugzilla.gnome.org/show_bug.cgi?id=687590
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "Zlyhalo vysúvanie jednotky „%s“:"
# Menu
#  Menu
#: ../extensions/drive-menu/extension.js:89
msgid "Removable devices"
msgstr "Vymeniteľné zariadenia"
@@ -172,24 +246,42 @@ msgid ""
"panel."
msgstr "Obsahuje text, ktorý bude zobrazený po kliknutí na panel."
# PM: podľa mňa chýba preklad druhej časti prvej vety
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: ../extensions/example/prefs.js:30
#, fuzzy
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Nevertheless it's possible to customize the greeting message."
msgstr ""
"Rozšírenie Example vám má ukázať, ako sa dajú zostaviť dobre vyzerajúce a jednoduché rozšírenia "
"pre Shell.\n"
"Rozšírenie Example vám má ukázať, ako sa dajú zostaviť dobre vyzerajúce a "
"jednoduché rozšírenia pre Shell.\n"
"Napriek tomu je možné prispôsobiť správu privítania."
#: ../extensions/example/prefs.js:36
msgid "Message:"
msgstr "Správa:"
#: ../extensions/gajim/extension.js:226
#, c-format
msgid "%s is away."
msgstr "Kontakt %s je neprítomný."
#: ../extensions/gajim/extension.js:229
#, c-format
msgid "%s is offline."
msgstr "Kontakt %s je odpojený."
#: ../extensions/gajim/extension.js:232
#, c-format
msgid "%s is online."
msgstr "Kontakt %s je pripojený."
#: ../extensions/gajim/extension.js:235
#, c-format
msgid "%s is busy."
msgstr "Kontakt %s je zaneprázdnený."
# summary
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
@@ -222,22 +314,22 @@ msgstr ""
"miniatúry. Prepíše sa tým predvolené nastavenie shellu, ktorý ho umiestňuje "
"nadol. Aby sa prejavila zmena, je potrebné reštartovať shell."
# menu item
#  menu item
#: ../extensions/places-menu/extension.js:46
msgid "Places"
msgstr "Miesta"
# menu item
#  menu item
#: ../extensions/places-menu/extension.js:47
msgid "Devices"
msgstr "Zariadenia"
# menu item
#  menu item
#: ../extensions/places-menu/extension.js:48
msgid "Bookmarks"
msgstr "Záložky"
# menu item
#  menu item
#: ../extensions/places-menu/extension.js:49
msgid "Network"
msgstr "Sieť"
@@ -252,11 +344,11 @@ msgstr "Zlyhalo spustenie „%s“"
msgid "Home"
msgstr "Domov"
#: ../extensions/places-menu/placeDisplay.js:191
#: ../extensions/places-menu/placeDisplay.js:184
msgid "File System"
msgstr "Súborový systém"
#: ../extensions/places-menu/placeDisplay.js:195
#: ../extensions/places-menu/placeDisplay.js:188
msgid "Browse network"
msgstr "Prehliadať sieť"
@@ -322,7 +414,7 @@ msgid "Upside-down"
msgstr "Hore nohami"
# PM: V tomto prípade by asi viac hodilo obrazovka
# menu
#  menu
#: ../extensions/xrandr-indicator/extension.js:50
msgid "Display"
msgstr "Displej"

186
po/sr.po
View File

@@ -8,8 +8,8 @@ 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: 2012-11-07 16:43+0000\n"
"PO-Revision-Date: 2012-11-09 11:53+0200\n"
"POT-Creation-Date: 2012-10-16 14:51+0000\n"
"PO-Revision-Date: 2012-10-27 21:33+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
@@ -55,15 +55,15 @@ msgid "Show only windows in the current workspace"
msgstr "Приказује само прозоре у текућем радном простору"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:86
msgid "Suspend"
msgstr "Обустави"
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:91
msgid "Hibernate"
msgstr "Замрзни"
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:96
msgid "Power Off"
msgstr "Угаси"
@@ -116,10 +116,87 @@ msgstr "Додајте ново правило за поклапање"
msgid "Add"
msgstr "Додај"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "Превуците овде да додате међу омиљене"
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "Нови прозор"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "Напусти програм"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "Уклони из омиљених"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "Додај у омиљене"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "Положај луке"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid ""
"Sets the position of the dock in the screen. Allowed values are 'right' or "
"'left'"
msgstr ""
"Подешава место где се налази површ са иконицама. Дозвољене су вредности "
"„right“ (десно) и „left“ (лево)"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "Величина иконице"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "Одређује величину иконице у луци."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "Самостално скривање"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "Дејство самоскривања"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid ""
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
"'move'"
msgstr ""
"Одређује дејство које се приказује приликом скривања површи са иконицама. "
"Дозвољене вредности су: „resize“ (промени величину), „rescale“ (промени "
"величину уз задржавање размере) и „move“ (премести)"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "Трајање самоскривања"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "Одређује дужину трајања дејства самоскривања."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "Монитор"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid ""
"Sets monitor to display dock in. The default value (-1) is the primary "
"monitor."
msgstr ""
"Подешава који монитор ће да прикаже луку. Основна вредност (-1) јесте "
"примарни монитор."
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "Нисам успео да избацим уређај „%s“:"
msgstr "Избацивање уређаја „%s“ није успело:"
#: ../extensions/drive-menu/extension.js:89
msgid "Removable devices"
@@ -161,6 +238,26 @@ msgstr ""
msgid "Message:"
msgstr "Порука:"
#: ../extensions/gajim/extension.js:226
#, c-format
msgid "%s is away."
msgstr "„%s“ је одсутан."
#: ../extensions/gajim/extension.js:229
#, c-format
msgid "%s is offline."
msgstr "„%s“ је ван мреже."
#: ../extensions/gajim/extension.js:232
#, c-format
msgid "%s is online."
msgstr "„%s“ је на мрежи."
#: ../extensions/gajim/extension.js:235
#, c-format
msgid "%s is busy."
msgstr "„%s“ је заузет."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "Користи више простора за прозор"
@@ -214,11 +311,11 @@ msgstr "Нисам успео да покренем „%s“"
msgid "Home"
msgstr "Личнo"
#: ../extensions/places-menu/placeDisplay.js:191
#: ../extensions/places-menu/placeDisplay.js:184
msgid "File System"
msgstr "Систем датотека"
#: ../extensions/places-menu/placeDisplay.js:195
#: ../extensions/places-menu/placeDisplay.js:188
msgid "Browse network"
msgstr "Разгледајте мрежу"
@@ -279,79 +376,6 @@ msgstr "Екран"
msgid "Display Settings"
msgstr "Подешавања екрана"
#~ msgid "Drag here to add favorites"
#~ msgstr "Превуците овде да додате међу омиљене"
#~ msgid "New Window"
#~ msgstr "Нови прозор"
#~ msgid "Quit Application"
#~ msgstr "Напусти програм"
#~ msgid "Remove from Favorites"
#~ msgstr "Уклони из омиљених"
#~ msgid "Add to Favorites"
#~ msgstr "Додај у омиљене"
#~ msgid "Position of the dock"
#~ msgstr "Положај луке"
#~ msgid ""
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
#~ "or 'left'"
#~ msgstr ""
#~ "Подешава место где се налази површ са иконицама. Дозвољене су вредности "
#~ "„right“ (десно) и „left“ (лево)"
#~ msgid "Icon size"
#~ msgstr "Величина иконице"
#~ msgid "Sets icon size of the dock."
#~ msgstr "Одређује величину иконице у луци."
#~ msgid "Enable/disable autohide"
#~ msgstr "Самостално скривање"
#~ msgid "Autohide effect"
#~ msgstr "Дејство самоскривања"
#~ msgid ""
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
#~ "and 'move'"
#~ msgstr ""
#~ "Одређује дејство које се приказује приликом скривања површи са иконицама. "
#~ "Дозвољене вредности су: „resize“ (промени величину), „rescale“ (промени "
#~ "величину уз задржавање размере) и „move“ (премести)"
#~ msgid "Autohide duration"
#~ msgstr "Трајање самоскривања"
#~ msgid "Sets the time duration of the autohide effect."
#~ msgstr "Одређује дужину трајања дејства самоскривања."
#~ msgid "Monitor"
#~ msgstr "Монитор"
#~ msgid ""
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
#~ "monitor."
#~ msgstr ""
#~ "Подешава који монитор ће да прикаже луку. Основна вредност (-1) јесте "
#~ "примарни монитор."
#~ msgid "%s is away."
#~ msgstr "„%s“ је одсутан."
#~ msgid "%s is offline."
#~ msgstr "„%s“ је ван мреже."
#~ msgid "%s is online."
#~ msgstr "„%s“ је на мрежи."
#~ msgid "%s is busy."
#~ msgstr "„%s“ је заузет."
#~ msgid "The alt tab behaviour."
#~ msgstr "Понашање тастера „алт-таб“."

View File

@@ -8,8 +8,8 @@ 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: 2012-11-07 16:43+0000\n"
"PO-Revision-Date: 2012-11-09 11:53+0200\n"
"POT-Creation-Date: 2012-10-16 14:51+0000\n"
"PO-Revision-Date: 2012-10-27 21:33+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
@@ -55,15 +55,15 @@ msgid "Show only windows in the current workspace"
msgstr "Prikazuje samo prozore u tekućem radnom prostoru"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:86
msgid "Suspend"
msgstr "Obustavi"
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:91
msgid "Hibernate"
msgstr "Zamrzni"
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:96
msgid "Power Off"
msgstr "Ugasi"
@@ -116,10 +116,87 @@ msgstr "Dodajte novo pravilo za poklapanje"
msgid "Add"
msgstr "Dodaj"
#: ../extensions/dock/extension.js:600
msgid "Drag here to add favorites"
msgstr "Prevucite ovde da dodate među omiljene"
#: ../extensions/dock/extension.js:926
msgid "New Window"
msgstr "Novi prozor"
#: ../extensions/dock/extension.js:928
msgid "Quit Application"
msgstr "Napusti program"
#: ../extensions/dock/extension.js:933
msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih"
#: ../extensions/dock/extension.js:934
msgid "Add to Favorites"
msgstr "Dodaj u omiljene"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "Položaj luke"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid ""
"Sets the position of the dock in the screen. Allowed values are 'right' or "
"'left'"
msgstr ""
"Podešava mesto gde se nalazi površ sa ikonicama. Dozvoljene su vrednosti "
"„right“ (desno) i „left“ (levo)"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "Veličina ikonice"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "Određuje veličinu ikonice u luci."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "Samostalno skrivanje"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "Dejstvo samoskrivanja"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid ""
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
"'move'"
msgstr ""
"Određuje dejstvo koje se prikazuje prilikom skrivanja površi sa ikonicama. "
"Dozvoljene vrednosti su: „resize“ (promeni veličinu), „rescale“ (promeni "
"veličinu uz zadržavanje razmere) i „move“ (premesti)"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "Trajanje samoskrivanja"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "Određuje dužinu trajanja dejstva samoskrivanja."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:10
msgid "Monitor"
msgstr "Monitor"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:11
msgid ""
"Sets monitor to display dock in. The default value (-1) is the primary "
"monitor."
msgstr ""
"Podešava koji monitor će da prikaže luku. Osnovna vrednost (-1) jeste "
"primarni monitor."
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "Nisam uspeo da izbacim uređaj „%s“:"
msgstr "Izbacivanje uređaja „%s“ nije uspelo:"
#: ../extensions/drive-menu/extension.js:89
msgid "Removable devices"
@@ -161,6 +238,26 @@ msgstr ""
msgid "Message:"
msgstr "Poruka:"
#: ../extensions/gajim/extension.js:226
#, c-format
msgid "%s is away."
msgstr "„%s“ je odsutan."
#: ../extensions/gajim/extension.js:229
#, c-format
msgid "%s is offline."
msgstr "„%s“ je van mreže."
#: ../extensions/gajim/extension.js:232
#, c-format
msgid "%s is online."
msgstr "„%s“ je na mreži."
#: ../extensions/gajim/extension.js:235
#, c-format
msgid "%s is busy."
msgstr "„%s“ je zauzet."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "Koristi više prostora za prozor"
@@ -214,11 +311,11 @@ msgstr "Nisam uspeo da pokrenem „%s“"
msgid "Home"
msgstr "Lično"
#: ../extensions/places-menu/placeDisplay.js:191
#: ../extensions/places-menu/placeDisplay.js:184
msgid "File System"
msgstr "Sistem datoteka"
#: ../extensions/places-menu/placeDisplay.js:195
#: ../extensions/places-menu/placeDisplay.js:188
msgid "Browse network"
msgstr "Razgledajte mrežu"
@@ -279,79 +376,6 @@ msgstr "Ekran"
msgid "Display Settings"
msgstr "Podešavanja ekrana"
#~ msgid "Drag here to add favorites"
#~ msgstr "Prevucite ovde da dodate među omiljene"
#~ msgid "New Window"
#~ msgstr "Novi prozor"
#~ msgid "Quit Application"
#~ msgstr "Napusti program"
#~ msgid "Remove from Favorites"
#~ msgstr "Ukloni iz omiljenih"
#~ msgid "Add to Favorites"
#~ msgstr "Dodaj u omiljene"
#~ msgid "Position of the dock"
#~ msgstr "Položaj luke"
#~ msgid ""
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
#~ "or 'left'"
#~ msgstr ""
#~ "Podešava mesto gde se nalazi površ sa ikonicama. Dozvoljene su vrednosti "
#~ "„right“ (desno) i „left“ (levo)"
#~ msgid "Icon size"
#~ msgstr "Veličina ikonice"
#~ msgid "Sets icon size of the dock."
#~ msgstr "Određuje veličinu ikonice u luci."
#~ msgid "Enable/disable autohide"
#~ msgstr "Samostalno skrivanje"
#~ msgid "Autohide effect"
#~ msgstr "Dejstvo samoskrivanja"
#~ msgid ""
#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' "
#~ "and 'move'"
#~ msgstr ""
#~ "Određuje dejstvo koje se prikazuje prilikom skrivanja površi sa ikonicama. "
#~ "Dozvoljene vrednosti su: „resize“ (promeni veličinu), „rescale“ (promeni "
#~ "veličinu uz zadržavanje razmere) i „move“ (premesti)"
#~ msgid "Autohide duration"
#~ msgstr "Trajanje samoskrivanja"
#~ msgid "Sets the time duration of the autohide effect."
#~ msgstr "Određuje dužinu trajanja dejstva samoskrivanja."
#~ msgid "Monitor"
#~ msgstr "Monitor"
#~ msgid ""
#~ "Sets monitor to display dock in. The default value (-1) is the primary "
#~ "monitor."
#~ msgstr ""
#~ "Podešava koji monitor će da prikaže luku. Osnovna vrednost (-1) jeste "
#~ "primarni monitor."
#~ msgid "%s is away."
#~ msgstr "„%s“ je odsutan."
#~ msgid "%s is offline."
#~ msgstr "„%s“ je van mreže."
#~ msgid "%s is online."
#~ msgstr "„%s“ je na mreži."
#~ msgid "%s is busy."
#~ msgstr "„%s“ je zauzet."
#~ msgid "The alt tab behaviour."
#~ msgstr "Ponašanje tastera „alt-tab“."