Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7cf25a3bc0 | ||
|
|
fdad0263ec | ||
|
|
c5181cda46 | ||
|
|
56f6eccc82 | ||
|
|
6a74326a61 | ||
|
|
48d4956ee0 | ||
|
|
0ab46d5c70 | ||
|
|
cd7d9aa2a4 | ||
|
|
ea3d27c311 | ||
|
|
6c050118f4 | ||
|
|
dfb942f6fe | ||
|
|
262efe3c9e | ||
|
|
d1d099fbbf | ||
|
|
45da997dd3 | ||
|
|
d91c949068 | ||
|
|
5a028aab52 | ||
|
|
c49758f1c5 | ||
|
|
5ca52e89d5 | ||
|
|
dd26111c04 | ||
|
|
f40e7109e5 | ||
|
|
5cb3e1877a | ||
|
|
a78a16b4a7 | ||
|
|
a6307d48c0 | ||
|
|
f9d95b9408 | ||
|
|
fb3df46a25 | ||
|
|
d2a7a95628 |
22
NEWS
22
NEWS
@@ -1,3 +1,25 @@
|
||||
3.5.91
|
||||
======
|
||||
* various crashers were fixed in alternative-tab
|
||||
* auto-move-windows now can be made to work with static workspaces
|
||||
* place-menu is now on the left and uses symbolic icons like Files
|
||||
* StIconType usage was removed from all extensions, after it was
|
||||
removed in core
|
||||
* systemMonitor, xrandr-indicator, apps-menu, places-menu,
|
||||
alternative-status-menu were updated for the newer shell
|
||||
* updated translations (es, gl, it, pl, sl)
|
||||
|
||||
3.5.90
|
||||
======
|
||||
* alternate-tab has been reworked again, the old mode switch
|
||||
was removed and the all&thumbnails code extended to handle
|
||||
icons and filtering to the workspace
|
||||
* alternate-tab thumbnails now reflect the aspect ratio of the windows
|
||||
* systemMonitor now shows a tooltip above the indicator
|
||||
* native-window-placement, systemMonitor and windowsNavigator have been updated
|
||||
for the newer shell
|
||||
* updated translations (es, pa)
|
||||
|
||||
3.5.5
|
||||
=====
|
||||
* convenience module has been relicensed to BSD,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell-extensions],[3.5.5],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
||||
AC_INIT([gnome-shell-extensions],[3.5.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_AUX_DIR([config])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
EXTENSION_ID = alternate-tab
|
||||
|
||||
EXTRA_MODULES = allThumbnails.js workspaceIcons.js prefs.js
|
||||
EXTRA_MODULES = prefs.js
|
||||
|
||||
include ../../extension.mk
|
||||
include ../../settings.mk
|
||||
|
||||
@@ -1,353 +0,0 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const AltTab = imports.ui.altTab;
|
||||
const Main = imports.ui.main;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const WindowManager = imports.ui.windowManager;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = function(e) { return e };
|
||||
|
||||
const SETTINGS_SHOW_APP_ICON_KEY = 'show-app-icon';
|
||||
|
||||
function mod(a, b) {
|
||||
return ((a+b) % b);
|
||||
}
|
||||
|
||||
const AltTabPopupAllThumbnails = new Lang.Class({
|
||||
Name: 'AlternateTab.AltTabPopup.AllThumbnails',
|
||||
|
||||
_init : function(settings) {
|
||||
this._settings = settings;
|
||||
|
||||
this.actor = new Shell.GenericContainer({ name: 'altTabPopup',
|
||||
reactive: true });
|
||||
|
||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
this._haveModal = false;
|
||||
|
||||
this._currentWindow = 0;
|
||||
this._motionTimeoutId = 0;
|
||||
|
||||
// Initially disable hover so we ignore the enter-event if
|
||||
// the switcher appears underneath the current pointer location
|
||||
this._disableHover();
|
||||
|
||||
Main.uiGroup.add_actor(this.actor);
|
||||
},
|
||||
|
||||
_getPreferredWidth: function (actor, forHeight, alloc) {
|
||||
alloc.min_size = global.screen_width;
|
||||
alloc.natural_size = global.screen_width;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function (actor, forWidth, alloc) {
|
||||
alloc.min_size = global.screen_height;
|
||||
alloc.natural_size = global.screen_height;
|
||||
},
|
||||
|
||||
_allocate: function (actor, box, flags) {
|
||||
let childBox = new Clutter.ActorBox();
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
|
||||
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
||||
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
||||
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||
let vPadding = this.actor.get_theme_node().get_vertical_padding();
|
||||
let hPadding = leftPadding + rightPadding;
|
||||
|
||||
// Allocate the appSwitcher
|
||||
// We select a size based on an icon size that does not overflow the screen
|
||||
let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding);
|
||||
let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight);
|
||||
childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2));
|
||||
childBox.x2 = Math.min(primary.x + primary.width - rightPadding, childBox.x1 + childNaturalWidth);
|
||||
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
|
||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||
this._appSwitcher.actor.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
show : function(backward, binding, mask) {
|
||||
// This is roughly what meta_display_get_tab_list does, except
|
||||
// that it doesn't filter on workspace
|
||||
// See in particular src/core/window-private.h for the filters
|
||||
let windows = global.get_window_actors().map(function(actor) {
|
||||
return actor.meta_window;
|
||||
}).filter(function(win) {
|
||||
return !win.is_override_redirect() &&
|
||||
win.get_window_type() != Meta.WindowType.DESKTOP &&
|
||||
win.get_window_type() != Meta.WindowType.DOCK;
|
||||
}).sort(function(one, two) {
|
||||
return two.get_user_time() - one.get_user_time();
|
||||
});
|
||||
|
||||
if (!windows.length) {
|
||||
this.destroy();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Main.pushModal(this.actor)) {
|
||||
// Probably someone else has a pointer grab, try again with keyboard only
|
||||
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this._haveModal = true;
|
||||
this._modifierMask = AltTab.primaryModifier(mask);
|
||||
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent));
|
||||
this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent));
|
||||
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside));
|
||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
||||
|
||||
this._appSwitcher = new WindowList(windows, this._settings);
|
||||
this.actor.add_actor(this._appSwitcher.actor);
|
||||
this._appSwitcher.connect('item-activated', Lang.bind(this, this._windowActivated));
|
||||
this._appSwitcher.connect('item-entered', Lang.bind(this, this._windowEntered));
|
||||
|
||||
// make the initial selection
|
||||
if (backward)
|
||||
this._select(windows.length - 1);
|
||||
else
|
||||
this._select(1);
|
||||
|
||||
this.actor.opacity = 0;
|
||||
this.actor.show();
|
||||
|
||||
// There's a race condition; if the user released Alt before
|
||||
// we got the grab, then we won't be notified. (See
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=596695 for
|
||||
// details.) So we check now. (Have to do this after updating
|
||||
// selection.)
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
if (!(mods & this._modifierMask)) {
|
||||
this._finish();
|
||||
return false;
|
||||
}
|
||||
|
||||
// We delay showing the popup so that fast Alt+Tab users aren't
|
||||
// disturbed by the popup briefly flashing.
|
||||
this._initialDelayTimeoutId = Mainloop.timeout_add(AltTab.POPUP_DELAY_TIMEOUT,
|
||||
Lang.bind(this, function () {
|
||||
this.actor.opacity = 255;
|
||||
this._initialDelayTimeoutId = 0;
|
||||
}));
|
||||
|
||||
return true
|
||||
},
|
||||
|
||||
_windowActivated : function(thumbnailList, n) {
|
||||
let win = this._appSwitcher.windows[n];
|
||||
Main.activateWindow(win);
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_finish : function() {
|
||||
let win = this._appSwitcher.windows[this._currentWindow];
|
||||
Main.activateWindow(win);
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_keyPressEvent : function(actor, event) {
|
||||
let keysym = event.get_key_symbol();
|
||||
let event_state = event.get_state();
|
||||
let backwards = event_state & Clutter.ModifierType.SHIFT_MASK;
|
||||
let action = global.display.get_keybinding_action(event.get_key_code(), event_state);
|
||||
|
||||
this._disableHover();
|
||||
|
||||
if (keysym == Clutter.Escape) {
|
||||
this.destroy();
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS ||
|
||||
action == Meta.KeyBindingAction.SWITCH_GROUP) {
|
||||
this._select(backwards ? this._previousWindow() : this._nextWindow());
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS_BACKWARD ||
|
||||
action == Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) {
|
||||
this._select(this._previousWindow());
|
||||
} else {
|
||||
if (keysym == Clutter.Left)
|
||||
this._select(this._previousWindow());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._nextWindow());
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_keyReleaseEvent : function(actor, event) {
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
let state = mods & this._modifierMask;
|
||||
|
||||
if (state == 0)
|
||||
this._finish();
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_onScroll : function(actor, event) {
|
||||
let direction = event.get_scroll_direction();
|
||||
if (direction == Clutter.ScrollDirection.UP)
|
||||
this._select(this._previousWindow());
|
||||
else if (direction == Clutter.ScrollDirection.DOWN)
|
||||
this._select(this._nextWindow());
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_clickedOutside : function(actor, event) {
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_windowEntered : function(windowSwitcher, n) {
|
||||
if (!this._mouseActive)
|
||||
return;
|
||||
|
||||
this._select(n);
|
||||
},
|
||||
|
||||
_disableHover : function() {
|
||||
this._mouseActive = false;
|
||||
|
||||
if (this._motionTimeoutId != 0)
|
||||
Mainloop.source_remove(this._motionTimeoutId);
|
||||
|
||||
this._motionTimeoutId = Mainloop.timeout_add(AltTab.DISABLE_HOVER_TIMEOUT, Lang.bind(this, this._mouseTimedOut));
|
||||
},
|
||||
|
||||
_mouseTimedOut : function() {
|
||||
this._motionTimeoutId = 0;
|
||||
this._mouseActive = true;
|
||||
},
|
||||
|
||||
_popModal: function() {
|
||||
if (this._haveModal) {
|
||||
Main.popModal(this.actor);
|
||||
this._haveModal = false;
|
||||
}
|
||||
},
|
||||
|
||||
destroy : function() {
|
||||
this._popModal();
|
||||
if (this.actor.visible) {
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 0,
|
||||
time: AltTab.POPUP_FADE_OUT_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this,
|
||||
function() {
|
||||
this.actor.destroy();
|
||||
})
|
||||
});
|
||||
} else
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_onDestroy : function() {
|
||||
this._popModal();
|
||||
|
||||
if (this._motionTimeoutId != 0)
|
||||
Mainloop.source_remove(this._motionTimeoutId);
|
||||
if (this._initialDelayTimeoutId != 0)
|
||||
Mainloop.source_remove(this._initialDelayTimeoutId);
|
||||
},
|
||||
|
||||
_select : function(window) {
|
||||
this._currentWindow = window;
|
||||
this._appSwitcher.highlight(window);
|
||||
},
|
||||
|
||||
_nextWindow: function() {
|
||||
return mod(this._currentWindow + 1, this._appSwitcher.windows.length);
|
||||
},
|
||||
|
||||
_previousWindow: function() {
|
||||
return mod(this._currentWindow - 1, this._appSwitcher.windows.length);
|
||||
},
|
||||
});
|
||||
|
||||
const WindowIcon = new Lang.Class({
|
||||
Name: 'WindowIcon',
|
||||
|
||||
_init: function(window, settings) {
|
||||
this.window = window;
|
||||
|
||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||
vertical: true });
|
||||
this.icon = null;
|
||||
this._iconBin = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||
|
||||
this.actor.add(this._iconBin, { x_fill: false, y_fill: false } );
|
||||
this.label = new St.Label({ text: window.get_title() });
|
||||
this.actor.add(this.label, { x_fill: false });
|
||||
|
||||
if (settings.get_boolean(SETTINGS_SHOW_APP_ICON_KEY)) {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
this.app = tracker.get_window_app(window);
|
||||
}
|
||||
},
|
||||
|
||||
set_size: function(size) {
|
||||
let mutterWindow = this.window.get_compositor_private();
|
||||
let windowTexture = mutterWindow.get_texture();
|
||||
let [width, height] = windowTexture.get_size();
|
||||
let scale = Math.min(1.0, size / width, size / height);
|
||||
|
||||
this.clone = new Clutter.Clone({ source: windowTexture,
|
||||
width: width * scale,
|
||||
height: height * scale,
|
||||
// usual hack for the usual bug in ClutterBinLayout...
|
||||
x_expand: true,
|
||||
y_expand: true });
|
||||
|
||||
this._iconBin.set_size(size, size);
|
||||
this._iconBin.destroy_all_children();
|
||||
this._iconBin.add_actor(this.clone);
|
||||
|
||||
if (this.app) {
|
||||
this.appIcon = this.app.create_icon_texture(size / 2);
|
||||
this.appIcon.x_expand = this.appIcon.y_expand = true;
|
||||
this.appIcon.x_align = Clutter.ActorAlign.END;
|
||||
this.appIcon.y_align = Clutter.ActorAlign.END;
|
||||
this._iconBin.add_actor(this.appIcon);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const WindowList = new Lang.Class({
|
||||
Name: 'AlternateTab.WindowList',
|
||||
Extends: AltTab.SwitcherList,
|
||||
|
||||
_init : function(windows, settings) {
|
||||
this.parent(true);
|
||||
|
||||
this.windows = windows;
|
||||
this.icons = [];
|
||||
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
let win = windows[i];
|
||||
let icon = new WindowIcon(win, settings);
|
||||
icon.set_size(128);
|
||||
|
||||
this.addItem(icon.actor, icon.label);
|
||||
this.icons.push(icon);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -28,33 +28,396 @@ const N_ = function(e) { return e };
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Convenience = Me.imports.convenience;
|
||||
const WorkspaceIcons = Me.imports.workspaceIcons;
|
||||
const AllThumbnails = Me.imports.allThumbnails;
|
||||
|
||||
let settings;
|
||||
|
||||
const SETTINGS_BEHAVIOUR_KEY = 'behaviour';
|
||||
|
||||
const MODES = {
|
||||
all_thumbnails: AllThumbnails.AltTabPopupAllThumbnails,
|
||||
workspace_icons: WorkspaceIcons.AltTabPopupWorkspaceIcons,
|
||||
const AppIconMode = {
|
||||
THUMBNAIL_ONLY: 1,
|
||||
APP_ICON_ONLY: 2,
|
||||
BOTH: 3,
|
||||
};
|
||||
|
||||
const SETTINGS_APP_ICON_MODE = 'app-icon-mode';
|
||||
const SETTINGS_CURRENT_WORKSPACE_ONLY = 'current-workspace-only';
|
||||
|
||||
function mod(a, b) {
|
||||
return ((a+b) % b);
|
||||
}
|
||||
|
||||
const AltTabPopup = new Lang.Class({
|
||||
Name: 'AlternateTab.AltTabPopup',
|
||||
|
||||
_init : function(settings) {
|
||||
this._settings = settings;
|
||||
|
||||
this.actor = new Shell.GenericContainer({ name: 'altTabPopup',
|
||||
reactive: true });
|
||||
|
||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
this._haveModal = false;
|
||||
|
||||
this._currentWindow = 0;
|
||||
this._motionTimeoutId = 0;
|
||||
|
||||
// Initially disable hover so we ignore the enter-event if
|
||||
// the switcher appears underneath the current pointer location
|
||||
this._disableHover();
|
||||
|
||||
Main.uiGroup.add_actor(this.actor);
|
||||
},
|
||||
|
||||
_getPreferredWidth: function (actor, forHeight, alloc) {
|
||||
alloc.min_size = global.screen_width;
|
||||
alloc.natural_size = global.screen_width;
|
||||
},
|
||||
|
||||
_getPreferredHeight: function (actor, forWidth, alloc) {
|
||||
alloc.min_size = global.screen_height;
|
||||
alloc.natural_size = global.screen_height;
|
||||
},
|
||||
|
||||
_allocate: function (actor, box, flags) {
|
||||
let childBox = new Clutter.ActorBox();
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
|
||||
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
||||
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
||||
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||
let vPadding = this.actor.get_theme_node().get_vertical_padding();
|
||||
let hPadding = leftPadding + rightPadding;
|
||||
|
||||
// Allocate the appSwitcher
|
||||
// We select a size based on an icon size that does not overflow the screen
|
||||
let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding);
|
||||
let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight);
|
||||
childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2));
|
||||
childBox.x2 = Math.min(primary.x + primary.width - rightPadding, childBox.x1 + childNaturalWidth);
|
||||
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
|
||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||
this._appSwitcher.actor.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
show : function(backward, binding, mask) {
|
||||
let windows;
|
||||
|
||||
if (!settings.get_boolean(SETTINGS_CURRENT_WORKSPACE_ONLY)) {
|
||||
// This is roughly what meta_display_get_tab_list does, except
|
||||
// that it doesn't filter on workspace
|
||||
// See in particular src/core/window-private.h for the filters
|
||||
windows = global.get_window_actors().map(function(actor) {
|
||||
return actor.meta_window;
|
||||
}).filter(function(win) {
|
||||
return !win.is_override_redirect() &&
|
||||
win.get_window_type() != Meta.WindowType.DESKTOP &&
|
||||
win.get_window_type() != Meta.WindowType.DOCK;
|
||||
}).sort(function(one, two) {
|
||||
return two.get_user_time() - one.get_user_time();
|
||||
});
|
||||
} else {
|
||||
windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL, global.screen,
|
||||
global.screen.get_active_workspace());
|
||||
}
|
||||
|
||||
if (!windows.length) {
|
||||
this.destroy();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Main.pushModal(this.actor)) {
|
||||
// Probably someone else has a pointer grab, try again with keyboard only
|
||||
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this._haveModal = true;
|
||||
this._modifierMask = AltTab.primaryModifier(mask);
|
||||
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent));
|
||||
this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent));
|
||||
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside));
|
||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
||||
|
||||
this._appSwitcher = new WindowList(windows, this._settings);
|
||||
this.actor.add_actor(this._appSwitcher.actor);
|
||||
this._appSwitcher.connect('item-activated', Lang.bind(this, this._windowActivated));
|
||||
this._appSwitcher.connect('item-entered', Lang.bind(this, this._windowEntered));
|
||||
|
||||
// make the initial selection
|
||||
this._currentWindow = 0;
|
||||
if (backward)
|
||||
this._select(this._previousWindow());
|
||||
else
|
||||
this._select(this._nextWindow());
|
||||
|
||||
this.actor.opacity = 0;
|
||||
this.actor.show();
|
||||
|
||||
// There's a race condition; if the user released Alt before
|
||||
// we got the grab, then we won't be notified. (See
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=596695 for
|
||||
// details.) So we check now. (Have to do this after updating
|
||||
// selection.)
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
if (!(mods & this._modifierMask)) {
|
||||
this._finish();
|
||||
return false;
|
||||
}
|
||||
|
||||
// We delay showing the popup so that fast Alt+Tab users aren't
|
||||
// disturbed by the popup briefly flashing.
|
||||
this._initialDelayTimeoutId = Mainloop.timeout_add(AltTab.POPUP_DELAY_TIMEOUT,
|
||||
Lang.bind(this, function () {
|
||||
this.actor.opacity = 255;
|
||||
this._initialDelayTimeoutId = 0;
|
||||
}));
|
||||
|
||||
return true
|
||||
},
|
||||
|
||||
_windowActivated : function(thumbnailList, n) {
|
||||
let win = this._appSwitcher.windows[n];
|
||||
Main.activateWindow(win);
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_finish : function() {
|
||||
let win = this._appSwitcher.windows[this._currentWindow];
|
||||
Main.activateWindow(win);
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_keyPressEvent : function(actor, event) {
|
||||
let keysym = event.get_key_symbol();
|
||||
let event_state = event.get_state();
|
||||
let backwards = event_state & Clutter.ModifierType.SHIFT_MASK;
|
||||
let action = global.display.get_keybinding_action(event.get_key_code(), event_state);
|
||||
|
||||
this._disableHover();
|
||||
|
||||
if (keysym == Clutter.Escape) {
|
||||
this.destroy();
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS ||
|
||||
action == Meta.KeyBindingAction.SWITCH_GROUP) {
|
||||
this._select(backwards ? this._previousWindow() : this._nextWindow());
|
||||
} else if (action == Meta.KeyBindingAction.SWITCH_WINDOWS_BACKWARD ||
|
||||
action == Meta.KeyBindingAction.SWITCH_GROUP_BACKWARD) {
|
||||
this._select(this._previousWindow());
|
||||
} else {
|
||||
if (keysym == Clutter.Left)
|
||||
this._select(this._previousWindow());
|
||||
else if (keysym == Clutter.Right)
|
||||
this._select(this._nextWindow());
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_keyReleaseEvent : function(actor, event) {
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
let state = mods & this._modifierMask;
|
||||
|
||||
if (state == 0)
|
||||
this._finish();
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_onScroll : function(actor, event) {
|
||||
let direction = event.get_scroll_direction();
|
||||
if (direction == Clutter.ScrollDirection.UP)
|
||||
this._select(this._previousWindow());
|
||||
else if (direction == Clutter.ScrollDirection.DOWN)
|
||||
this._select(this._nextWindow());
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_clickedOutside : function(actor, event) {
|
||||
this.destroy();
|
||||
},
|
||||
|
||||
_windowEntered : function(windowSwitcher, n) {
|
||||
if (!this._mouseActive)
|
||||
return;
|
||||
|
||||
this._select(n);
|
||||
},
|
||||
|
||||
_disableHover : function() {
|
||||
this._mouseActive = false;
|
||||
|
||||
if (this._motionTimeoutId != 0)
|
||||
Mainloop.source_remove(this._motionTimeoutId);
|
||||
|
||||
this._motionTimeoutId = Mainloop.timeout_add(AltTab.DISABLE_HOVER_TIMEOUT, Lang.bind(this, this._mouseTimedOut));
|
||||
},
|
||||
|
||||
_mouseTimedOut : function() {
|
||||
this._motionTimeoutId = 0;
|
||||
this._mouseActive = true;
|
||||
},
|
||||
|
||||
_popModal: function() {
|
||||
if (this._haveModal) {
|
||||
Main.popModal(this.actor);
|
||||
this._haveModal = false;
|
||||
}
|
||||
},
|
||||
|
||||
destroy : function() {
|
||||
this._popModal();
|
||||
if (this.actor.visible) {
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 0,
|
||||
time: AltTab.POPUP_FADE_OUT_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this,
|
||||
function() {
|
||||
this.actor.destroy();
|
||||
})
|
||||
});
|
||||
} else
|
||||
this.actor.destroy();
|
||||
},
|
||||
|
||||
_onDestroy : function() {
|
||||
this._popModal();
|
||||
|
||||
if (this._motionTimeoutId != 0)
|
||||
Mainloop.source_remove(this._motionTimeoutId);
|
||||
if (this._initialDelayTimeoutId != 0)
|
||||
Mainloop.source_remove(this._initialDelayTimeoutId);
|
||||
},
|
||||
|
||||
_select : function(window) {
|
||||
this._currentWindow = window;
|
||||
this._appSwitcher.highlight(window);
|
||||
},
|
||||
|
||||
_nextWindow: function() {
|
||||
return mod(this._currentWindow + 1, this._appSwitcher.windows.length);
|
||||
},
|
||||
|
||||
_previousWindow: function() {
|
||||
return mod(this._currentWindow - 1, this._appSwitcher.windows.length);
|
||||
},
|
||||
});
|
||||
|
||||
const WindowIcon = new Lang.Class({
|
||||
Name: 'AlternateTab.WindowIcon',
|
||||
|
||||
_init: function(window, settings) {
|
||||
this.window = window;
|
||||
this._settings = settings;
|
||||
|
||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||
vertical: true });
|
||||
this.icon = null;
|
||||
this._iconBin = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||
|
||||
this.actor.add(this._iconBin, { x_fill: false, y_fill: false } );
|
||||
this.label = new St.Label({ text: window.get_title() });
|
||||
this.actor.add(this.label, { x_fill: false });
|
||||
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
this.app = tracker.get_window_app(window);
|
||||
|
||||
let mutterWindow = this.window.get_compositor_private();
|
||||
let windowTexture = mutterWindow.get_texture();
|
||||
let [width, height] = windowTexture.get_size();
|
||||
let scale, size;
|
||||
|
||||
this._iconBin.destroy_all_children();
|
||||
|
||||
switch (this._settings.get_enum(SETTINGS_APP_ICON_MODE)) {
|
||||
case AppIconMode.THUMBNAIL_ONLY:
|
||||
scale = Math.min(1.0, 128 / width, 128 / height);
|
||||
size = 128;
|
||||
this.clone = new Clutter.Clone({ source: windowTexture,
|
||||
width: width * scale,
|
||||
height: height * scale,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
// usual hack for the usual bug in ClutterBinLayout...
|
||||
x_expand: true,
|
||||
y_expand: true });
|
||||
this._iconBin.add_actor(this.clone);
|
||||
break;
|
||||
|
||||
case AppIconMode.BOTH:
|
||||
scale = Math.min(1.0, 128 / width, 128 / height);
|
||||
size = 128;
|
||||
this.clone = new Clutter.Clone({ source: windowTexture,
|
||||
width: width * scale,
|
||||
height: height * scale,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
// usual hack for the usual bug in ClutterBinLayout...
|
||||
x_expand: true,
|
||||
y_expand: true });
|
||||
this._iconBin.add_actor(this.clone);
|
||||
|
||||
if (this.app) {
|
||||
this.appIcon = this.app.create_icon_texture(size / 2);
|
||||
this.appIcon.x_expand = this.appIcon.y_expand = true;
|
||||
this.appIcon.x_align = Clutter.ActorAlign.END;
|
||||
this.appIcon.y_align = Clutter.ActorAlign.END;
|
||||
this._iconBin.add_actor(this.appIcon);
|
||||
}
|
||||
break;
|
||||
|
||||
case AppIconMode.APP_ICON_ONLY:
|
||||
size = 96;
|
||||
if (this.app) {
|
||||
this.appIcon = this.app.create_icon_texture(size);
|
||||
this.appIcon.x_expand = this.appIcon.y_expand = true;
|
||||
} else {
|
||||
this.appIcon = new St.Icon({ icon_name: 'icon-missing',
|
||||
icon_size: size,
|
||||
x_expand: true,
|
||||
y_expand: true });
|
||||
}
|
||||
this._iconBin.add_actor(this.appIcon);
|
||||
}
|
||||
|
||||
this._iconBin.set_size(size, size);
|
||||
}
|
||||
});
|
||||
|
||||
const WindowList = new Lang.Class({
|
||||
Name: 'AlternateTab.WindowList',
|
||||
Extends: AltTab.SwitcherList,
|
||||
|
||||
_init : function(windows, settings) {
|
||||
this.parent(true);
|
||||
|
||||
this.windows = windows;
|
||||
this.icons = [];
|
||||
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
let win = windows[i];
|
||||
let icon = new WindowIcon(win, settings);
|
||||
|
||||
this.addItem(icon.actor, icon.label);
|
||||
this.icons.push(icon);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function doAltTab(display, screen, window, binding) {
|
||||
let behaviour = settings.get_string(SETTINGS_BEHAVIOUR_KEY);
|
||||
|
||||
// alt-tab having no effect is unexpected, even with wrong settings
|
||||
if (!(behaviour in MODES))
|
||||
behaviour = 'all_thumbnails';
|
||||
|
||||
if (Main.wm._workspaceSwitcherPopup)
|
||||
Main.wm._workspaceSwitcherPopup.actor.hide();
|
||||
|
||||
let modifiers = binding.get_modifiers()
|
||||
let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;
|
||||
|
||||
let constructor = MODES[behaviour];
|
||||
let popup = new constructor(settings);
|
||||
let popup = new AltTabPopup(settings);
|
||||
if (!popup.show(backwards, binding.get_name(), binding.get_mask()))
|
||||
popup.destroy();
|
||||
}
|
||||
|
||||
@@ -1,31 +1,25 @@
|
||||
<schemalist gettext-domain="gnome-shell-extensions">
|
||||
<enum id="org.gnome.shell.extensions.alternate-tab.BehaviourMode">
|
||||
<value value="1" nick="all_thumbnails"/>
|
||||
<value value="2" nick="workspace_icons"/>
|
||||
<enum id="org.gnome.shell.extensions.alternate-tab.AppIconMode">
|
||||
<value value="1" nick="thumbnail_only"/>
|
||||
<value value="2" nick="app_icon_only"/>
|
||||
<value value="3" nick="both"/>
|
||||
</enum>
|
||||
<schema id="org.gnome.shell.extensions.alternate-tab" path="/org/gnome/shell/extensions/alternate-tab/">
|
||||
<key name="behaviour" enum="org.gnome.shell.extensions.alternate-tab.BehaviourMode">
|
||||
<default>'all_thumbnails'</default>
|
||||
<_summary>The alt tab behaviour.</_summary>
|
||||
<key name="app-icon-mode" enum="org.gnome.shell.extensions.alternate-tab.AppIconMode">
|
||||
<default>'both'</default>
|
||||
<_summary>The application icon mode.</_summary>
|
||||
<_description>
|
||||
Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and workspace_icons.
|
||||
See the configuration dialogs for details.
|
||||
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'.
|
||||
</_description>
|
||||
</key>
|
||||
<key type="b" name="highlight-selected">
|
||||
<key type="b" name="current-workspace-only">
|
||||
<default>false</default>
|
||||
<summary>Bring each selected window to the front.</summary>
|
||||
<summary>Limit switcher to current workspace.</summary>
|
||||
<description>
|
||||
Bring each window to the front in turn as Alt+Tab is pressed.
|
||||
This setting applies only when the selected mode is 'workspace_icons'.
|
||||
</description>
|
||||
</key>
|
||||
<key type="b" name="show-app-icon">
|
||||
<default>true</default>
|
||||
<summary>Show small application icon.</summary>
|
||||
<description>
|
||||
If true, a small application icon is overlayed to each window thumbnail.
|
||||
This setting applies only when the selected mode is 'all_thumbnails'.
|
||||
If true, only windows from the current workspace are shown in the switcher.
|
||||
Otherwise, all windows are included.
|
||||
</description>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
@@ -19,31 +19,13 @@ const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Convenience = Me.imports.convenience;
|
||||
|
||||
const SETTINGS_BEHAVIOUR_KEY = 'behaviour';
|
||||
const SETTINGS_HIGHLIGHT_KEY = 'highlight-selected';
|
||||
const SETTINGS_SHOW_APP_ICON_KEY = 'show-app-icon';
|
||||
const SETTINGS_APP_ICON_MODE = 'app-icon-mode';
|
||||
const SETTINGS_CURRENT_WORKSPACE_ONLY = 'current-workspace-only';
|
||||
|
||||
const MODES = {
|
||||
all_thumbnails: {
|
||||
name: N_("All & Thumbnails"),
|
||||
description: N_("This mode presents all applications from all workspaces in one selection \
|
||||
list. Instead of using the application icon of every window, it uses small \
|
||||
thumbnails resembling the window itself."),
|
||||
extra_widgets: [
|
||||
{ label: N_("Show overlaid application icon"), key: SETTINGS_SHOW_APP_ICON_KEY }
|
||||
]
|
||||
},
|
||||
workspace_icons: {
|
||||
name: N_("Workspace & Icons"),
|
||||
description: N_("This mode lets you switch between the applications of your current \
|
||||
workspace and gives you additionally the option to switch to the last used \
|
||||
application of your previous workspace. This is always the last symbol in \
|
||||
the list and is separated by a separator/vertical line if available. \n\
|
||||
Every window is represented by its application icon."),
|
||||
extra_widgets: [
|
||||
{ label: N_("Move current selection to front before closing the popup"), key: SETTINGS_HIGHLIGHT_KEY }
|
||||
]
|
||||
}
|
||||
thumbnail_only: N_("Thumbnail only"),
|
||||
app_icon_only: N_("Application icon only"),
|
||||
both: N_("Thumbnail and application icon"),
|
||||
};
|
||||
|
||||
const AltTabSettingsWidget = new GObject.Class({
|
||||
@@ -53,65 +35,40 @@ const AltTabSettingsWidget = new GObject.Class({
|
||||
|
||||
_init : function(params) {
|
||||
this.parent(params);
|
||||
this.column_spacing = 10;
|
||||
this.margin = 10;
|
||||
this.orientation = Gtk.Orientation.VERTICAL;
|
||||
|
||||
this._settings = Convenience.getSettings();
|
||||
|
||||
let introLabel = _("The Alternate Tab can be used in different modes, that \
|
||||
affect the way windows are chosen and presented.");
|
||||
|
||||
this.attach(new Gtk.Label({ label: introLabel, wrap: true, sensitive: true,
|
||||
margin_bottom: 10, margin_top: 5 }),
|
||||
0, 0, 2, 1);
|
||||
let presentLabel = _("Present windows as");
|
||||
this.add(new Gtk.Label({ label: presentLabel, sensitive: true,
|
||||
margin_bottom: 10, margin_top: 5 }));
|
||||
|
||||
let top = 1;
|
||||
let radio = null;
|
||||
let currentMode = this._settings.get_string(SETTINGS_BEHAVIOUR_KEY);
|
||||
let currentMode = this._settings.get_string(SETTINGS_APP_ICON_MODE);
|
||||
for (let mode in MODES) {
|
||||
// copy the mode variable because it has function scope, not block scope
|
||||
// so cannot be used in a closure
|
||||
let modeCapture = mode;
|
||||
let obj = MODES[mode];
|
||||
let name = Gettext.gettext(obj.name);
|
||||
let description = Gettext.gettext(obj.description);
|
||||
let nextra = obj.extra_widgets.length;
|
||||
let name = Gettext.gettext(MODES[mode]);
|
||||
|
||||
radio = new Gtk.RadioButton({ group: radio, label: name, valign: Gtk.Align.START });
|
||||
radio.connect('toggled', Lang.bind(this, function(widget) {
|
||||
if (widget.active)
|
||||
this._settings.set_string(SETTINGS_BEHAVIOUR_KEY, modeCapture);
|
||||
this._updateSensitivity(widget, widget.active);
|
||||
this._settings.set_string(SETTINGS_APP_ICON_MODE, modeCapture);
|
||||
}));
|
||||
this.attach(radio, 0, top, 1, nextra + 1);
|
||||
|
||||
let descriptionLabel = new Gtk.Label({ label: description, wrap: true, sensitive: true,
|
||||
xalign: 0.0, justify: Gtk.Justification.FILL });
|
||||
this.attach(descriptionLabel, 1, top, 1, 1);
|
||||
|
||||
radio._extra = [];
|
||||
for (let i = 0; i < nextra; i++) {
|
||||
let key = obj.extra_widgets[i].key;
|
||||
let label = Gettext.gettext(obj.extra_widgets[i].label);
|
||||
|
||||
let extra = new Gtk.CheckButton({ label: label });
|
||||
this._settings.bind(key, extra, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||
|
||||
radio._extra.push(extra);
|
||||
this.attach(extra, 1, top + i + 1, 1, 1);
|
||||
}
|
||||
this.add(radio);
|
||||
|
||||
if (mode == currentMode)
|
||||
radio.active = true;
|
||||
this._updateSensitivity(radio, radio.active);
|
||||
|
||||
top += nextra + 1;
|
||||
top += 1;
|
||||
}
|
||||
},
|
||||
|
||||
_updateSensitivity: function(widget, active) {
|
||||
for (let i = 0; i < widget._extra.length; i++)
|
||||
widget._extra[i].sensitive = active;
|
||||
let check = new Gtk.CheckButton({ label: _("Show only windows in the current workspace"),
|
||||
margin_top: 12 });
|
||||
this._settings.bind(SETTINGS_CURRENT_WORKSPACE_ONLY, check, 'active', Gio.SettingsBindFlags.DEFAULT);
|
||||
this.add(check);
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -1,274 +0,0 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const AltTab = imports.ui.altTab;
|
||||
const Main = imports.ui.main;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const WindowManager = imports.ui.windowManager;
|
||||
|
||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||
const _ = Gettext.gettext;
|
||||
const N_ = function(e) { return e };
|
||||
|
||||
const SETTINGS_HIGHLIGHT_SELECTED_KEY = 'highlight-selected';
|
||||
|
||||
const AltTabPopupWorkspaceIcons = new Lang.Class({
|
||||
Name: 'AlternateTab.AltTabPopupWorkspaceIcons',
|
||||
Extends: AltTab.AltTabPopup,
|
||||
|
||||
_init: function(settings) {
|
||||
this.parent();
|
||||
|
||||
this._settings = settings;
|
||||
},
|
||||
|
||||
_windowActivated : function(thumbnailList, n) { },
|
||||
|
||||
show : function(backward, binding, mask) {
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
let apps = appSys.get_running ();
|
||||
|
||||
if (!apps.length)
|
||||
return false;
|
||||
|
||||
if (!Main.pushModal(this.actor)) {
|
||||
// Probably someone else has a pointer grab, try again with keyboard only
|
||||
if (!Main.pushModal(this.actor, global.get_current_time(), Meta.ModalOptions.POINTER_ALREADY_GRABBED)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this._haveModal = true;
|
||||
this._modifierMask = AltTab.primaryModifier(mask);
|
||||
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent));
|
||||
this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent));
|
||||
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside));
|
||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
|
||||
|
||||
this._appSwitcher = new WindowSwitcher(apps, this);
|
||||
this.actor.add_actor(this._appSwitcher.actor);
|
||||
this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated));
|
||||
this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered));
|
||||
|
||||
this._appIcons = this._appSwitcher.icons;
|
||||
|
||||
// Need to force an allocation so we can figure out whether we
|
||||
// need to scroll when selecting
|
||||
this.actor.opacity = 0;
|
||||
this.actor.show();
|
||||
this.actor.get_allocation_box();
|
||||
|
||||
this._highlight_selected = this._settings.get_boolean(SETTINGS_HIGHLIGHT_SELECTED_KEY);
|
||||
|
||||
// Make the initial selection
|
||||
if (binding == 'switch_group') {
|
||||
//see AltTab.AltTabPopup.show function
|
||||
//cached windows are always of length one, so select first app and the window
|
||||
//the direction doesn't matter, so ignore backward
|
||||
this._select(0, 0);
|
||||
} else if (binding == 'switch_group_backward') {
|
||||
this._select(0, 0);
|
||||
} else if (binding == 'switch_windows_backward') {
|
||||
this._select(this._appIcons.length - 1);
|
||||
} else if (this._appIcons.length == 1) {
|
||||
this._select(0);
|
||||
} else if (backward) {
|
||||
this._select(this._appIcons.length - 1);
|
||||
} else {
|
||||
this._select(1);
|
||||
}
|
||||
|
||||
|
||||
// There's a race condition; if the user released Alt before
|
||||
// we got the grab, then we won't be notified. (See
|
||||
// https://bugzilla.gnome.org/show_bug.cgi?id=596695 for
|
||||
// details.) So we check now. (Have to do this after updating
|
||||
// selection.)
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
if (!(mods & this._modifierMask)) {
|
||||
this._finish();
|
||||
return false;
|
||||
}
|
||||
|
||||
// We delay showing the popup so that fast Alt+Tab users aren't
|
||||
// disturbed by the popup briefly flashing.
|
||||
this._initialDelayTimeoutId = Mainloop.timeout_add(AltTab.POPUP_DELAY_TIMEOUT,
|
||||
Lang.bind(this, function () {
|
||||
this.actor.opacity = 255;
|
||||
this._initialDelayTimeoutId = 0;
|
||||
}));
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_select : function(app, window, forceAppFocus) {
|
||||
if (app != this._currentApp || window == null) {
|
||||
if (this._thumbnails)
|
||||
this._destroyThumbnails();
|
||||
}
|
||||
|
||||
if (this._thumbnailTimeoutId != 0) {
|
||||
Mainloop.source_remove(this._thumbnailTimeoutId);
|
||||
this._thumbnailTimeoutId = 0;
|
||||
}
|
||||
|
||||
this._thumbnailsFocused = (window != null) && !forceAppFocus;
|
||||
|
||||
this._currentApp = app;
|
||||
this._currentWindow = window ? window : -1;
|
||||
this._appSwitcher.highlight(app, this._thumbnailsFocused);
|
||||
|
||||
if (window != null) {
|
||||
if (!this._thumbnails)
|
||||
this._createThumbnails();
|
||||
this._currentWindow = window;
|
||||
this._thumbnails.highlight(window, forceAppFocus);
|
||||
} else if (this._appIcons[this._currentApp].cachedWindows.length > 1 &&
|
||||
!forceAppFocus) {
|
||||
this._thumbnailTimeoutId = Mainloop.timeout_add (
|
||||
AltTab.THUMBNAIL_POPUP_TIME,
|
||||
Lang.bind(this, this._timeoutPopupThumbnails));
|
||||
}
|
||||
if (this._highlight_selected) {
|
||||
let current_app = this._appIcons[this._currentApp];
|
||||
Main.activateWindow(current_app.cachedWindows[0]);
|
||||
}
|
||||
},
|
||||
|
||||
_finish : function() {
|
||||
let app = this._appIcons[this._currentApp];
|
||||
if (!app)
|
||||
return;
|
||||
|
||||
/*
|
||||
* We've to restore the original Z-depth and order of all windows.
|
||||
*
|
||||
* Gnome-shell doesn't give an option to change Z-depth without
|
||||
* messing the window's user_time.
|
||||
*
|
||||
* Pointless if the popup wasn't showed.
|
||||
*/
|
||||
if (this._highlight_selected && this.actor.opacity == 255) {
|
||||
for (let i = this._appIcons.length - 2; i >= 0; i--) {
|
||||
let app_walker = this._appIcons[i];
|
||||
Main.activateWindow(app_walker.cachedWindows[0], global.get_current_time() - i - 1);
|
||||
}
|
||||
}
|
||||
|
||||
Main.activateWindow(app.cachedWindows[0]);
|
||||
this.destroy();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
const AppIcon = new Lang.Class({
|
||||
Name: 'AlternateTab.AppIcon',
|
||||
Extends: AltTab.AppIcon,
|
||||
|
||||
_init: function(app, window) {
|
||||
this.app = app;
|
||||
|
||||
this.cachedWindows = [];
|
||||
this.cachedWindows.push(window);
|
||||
|
||||
this.actor = new St.BoxLayout({ style_class: 'alt-tab-app',
|
||||
vertical: true });
|
||||
this.icon = null;
|
||||
this._iconBin = new St.Bin({ x_fill: true, y_fill: true });
|
||||
|
||||
this.actor.add(this._iconBin, { x_fill: false, y_fill: false } );
|
||||
|
||||
let title = window.get_title();
|
||||
if (title) {
|
||||
this.label = new St.Label({ text: title });
|
||||
let bin = new St.Bin({ x_align: St.Align.MIDDLE });
|
||||
bin.add_actor(this.label);
|
||||
this.actor.add(bin);
|
||||
}
|
||||
else {
|
||||
this.label = new St.Label({ text: this.app.get_name() });
|
||||
this.actor.add(this.label, { x_fill: false });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const WindowSwitcher = new Lang.Class({
|
||||
Name: 'AlternateTab.WindowSwitcher',
|
||||
Extends: AltTab.AppSwitcher,
|
||||
|
||||
_init : function(apps, altTabPopup) {
|
||||
// Horrible HACK!
|
||||
// We inherit from AltTab.AppSwitcher, but only chain up to
|
||||
// AltTab.SwitcherList._init, to bypass AltTab.AppSwitcher._init
|
||||
AltTab.SwitcherList.prototype._init.call(this, true);
|
||||
|
||||
// Construct the AppIcons, sort by time, add to the popup
|
||||
let activeWorkspace = global.screen.get_active_workspace();
|
||||
let workspaceIcons = [];
|
||||
let otherIcons = [];
|
||||
for (let i = 0; i < apps.length; i++) {
|
||||
// Cache the window list now; we don't handle dynamic changes here,
|
||||
// and we don't want to be continually retrieving it
|
||||
let windows = apps[i].get_windows();
|
||||
|
||||
for(let j = 0; j < windows.length; j++) {
|
||||
let appIcon = new AppIcon(apps[i], windows[j]);
|
||||
if (this._isWindowOnWorkspace(windows[j], activeWorkspace)) {
|
||||
workspaceIcons.push(appIcon);
|
||||
}
|
||||
else {
|
||||
otherIcons.push(appIcon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
workspaceIcons.sort(Lang.bind(this, this._sortAppIcon));
|
||||
otherIcons.sort(Lang.bind(this, this._sortAppIcon));
|
||||
|
||||
if(otherIcons.length > 0) {
|
||||
let mostRecentOtherIcon = otherIcons[0];
|
||||
otherIcons = [];
|
||||
otherIcons.push(mostRecentOtherIcon);
|
||||
}
|
||||
|
||||
this.icons = [];
|
||||
this._arrows = [];
|
||||
for (let i = 0; i < workspaceIcons.length; i++)
|
||||
this._addIcon(workspaceIcons[i]);
|
||||
if (workspaceIcons.length > 0 && otherIcons.length > 0)
|
||||
this.addSeparator();
|
||||
for (let i = 0; i < otherIcons.length; i++)
|
||||
this._addIcon(otherIcons[i]);
|
||||
|
||||
this._curApp = -1;
|
||||
this._iconSize = 0;
|
||||
this._altTabPopup = altTabPopup;
|
||||
this._mouseTimeOutId = 0;
|
||||
},
|
||||
|
||||
|
||||
_isWindowOnWorkspace: function(w, workspace) {
|
||||
if (w.get_workspace() == workspace)
|
||||
return true;
|
||||
return false;
|
||||
},
|
||||
|
||||
_sortAppIcon : function(appIcon1, appIcon2) {
|
||||
let t1 = appIcon1.cachedWindows[0].get_user_time();
|
||||
let t2 = appIcon2.cachedWindows[0].get_user_time();
|
||||
if (t2 > t1) return 1;
|
||||
else return -1;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -48,7 +48,7 @@ function init(metadata) {
|
||||
}
|
||||
|
||||
function enable() {
|
||||
let statusMenu = Main.panel._statusArea.userMenu;
|
||||
let statusMenu = Main.panel.statusArea.userMenu;
|
||||
|
||||
settings = Convenience.getSettings();
|
||||
|
||||
@@ -96,7 +96,7 @@ function enable() {
|
||||
}
|
||||
|
||||
function disable() {
|
||||
let statusMenu = Main.panel._statusArea.userMenu;
|
||||
let statusMenu = Main.panel.statusArea.userMenu;
|
||||
|
||||
let children = statusMenu.menu._getMenuItems();
|
||||
let index = children.length;
|
||||
|
||||
@@ -38,7 +38,7 @@ const ApplicationsButton = new Lang.Class({
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
|
||||
_init: function() {
|
||||
this.parent('start-here');
|
||||
this.parent('start-here-symbolic');
|
||||
|
||||
this._appSys = Shell.AppSystem.get_default();
|
||||
this._installedChangedId = this._appSys.connect('installed-changed', Lang.bind(this, this._refresh));
|
||||
@@ -99,9 +99,7 @@ let appsMenuButton;
|
||||
|
||||
function enable() {
|
||||
appsMenuButton = new ApplicationsButton();
|
||||
Main.panel._leftBox.insert_child_at_index(appsMenuButton.actor, 1);
|
||||
Main.panel._leftBox.child_set(appsMenuButton.actor, { y_fill : true } );
|
||||
Main.panel._menus.addMenu(appsMenuButton.menu);
|
||||
Main.panel.addToStatusArea('apps-menu', appsMenuButton, 1, 'left');
|
||||
}
|
||||
|
||||
function disable() {
|
||||
|
||||
@@ -87,75 +87,76 @@ function init() {
|
||||
settings = Convenience.getSettings();
|
||||
}
|
||||
|
||||
function myCheckWorkspaces() {
|
||||
let i;
|
||||
let emptyWorkspaces = new Array(Main._workspaces.length);
|
||||
|
||||
for (i = 0; i < Main._workspaces.length; i++) {
|
||||
let lastRemoved = Main._workspaces[i]._lastRemovedWindow;
|
||||
if (lastRemoved &&
|
||||
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
|
||||
emptyWorkspaces[i] = false;
|
||||
else
|
||||
emptyWorkspaces[i] = true;
|
||||
}
|
||||
|
||||
let windows = global.get_window_actors();
|
||||
for (i = 0; i < windows.length; i++) {
|
||||
let win = windows[i];
|
||||
|
||||
if (win.get_meta_window().is_on_all_workspaces())
|
||||
continue;
|
||||
|
||||
let workspaceIndex = win.get_workspace();
|
||||
emptyWorkspaces[workspaceIndex] = false;
|
||||
}
|
||||
|
||||
// If we don't have an empty workspace at the end, add one
|
||||
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
||||
global.screen.append_new_workspace(false, global.get_current_time());
|
||||
emptyWorkspaces.push(false);
|
||||
}
|
||||
|
||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
let activeIsLast = activeWorkspaceIndex == global.screen.n_workspaces - 2;
|
||||
let removingTrailWorkspaces = (emptyWorkspaces[activeWorkspaceIndex] &&
|
||||
activeIsLast);
|
||||
// Don't enter the overview when removing multiple empty workspaces at startup
|
||||
let showOverview = (removingTrailWorkspaces &&
|
||||
!emptyWorkspaces.every(function(x) { return x; }));
|
||||
|
||||
if (removingTrailWorkspaces) {
|
||||
// "Merge" the empty workspace we are removing with the one at the end
|
||||
Main.wm.blockAnimations();
|
||||
}
|
||||
|
||||
// Delete other empty workspaces; do it from the end to avoid index changes
|
||||
for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
|
||||
if (emptyWorkspaces[i])
|
||||
global.screen.remove_workspace(Main._workspaces[i], global.get_current_time());
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if (removingTrailWorkspaces) {
|
||||
global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time());
|
||||
|
||||
Main.wm.unblockAnimations();
|
||||
|
||||
if (!Main.overview.visible && showOverview)
|
||||
Main.overview.show();
|
||||
}
|
||||
|
||||
Main._checkWorkspacesId = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
function enable() {
|
||||
prevCheckWorkspaces = Main._checkWorkspaces;
|
||||
Main._checkWorkspaces = function() {
|
||||
let i;
|
||||
let emptyWorkspaces = new Array(Main._workspaces.length);
|
||||
|
||||
for (i = 0; i < Main._workspaces.length; i++) {
|
||||
let lastRemoved = Main._workspaces[i]._lastRemovedWindow;
|
||||
if (lastRemoved &&
|
||||
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
|
||||
emptyWorkspaces[i] = false;
|
||||
else
|
||||
emptyWorkspaces[i] = true;
|
||||
}
|
||||
|
||||
|
||||
let windows = global.get_window_actors();
|
||||
for (i = 0; i < windows.length; i++) {
|
||||
let win = windows[i];
|
||||
|
||||
if (win.get_meta_window().is_on_all_workspaces())
|
||||
continue;
|
||||
|
||||
let workspaceIndex = win.get_workspace();
|
||||
emptyWorkspaces[workspaceIndex] = false;
|
||||
}
|
||||
|
||||
// If we don't have an empty workspace at the end, add one
|
||||
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
||||
global.screen.append_new_workspace(false, global.get_current_time());
|
||||
emptyWorkspaces.push(false);
|
||||
}
|
||||
|
||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
let activeIsLast = activeWorkspaceIndex == global.screen.n_workspaces - 2;
|
||||
let removingTrailWorkspaces = (emptyWorkspaces[activeWorkspaceIndex] &&
|
||||
activeIsLast);
|
||||
// Don't enter the overview when removing multiple empty workspaces at startup
|
||||
let showOverview = (removingTrailWorkspaces &&
|
||||
!emptyWorkspaces.every(function(x) { return x; }));
|
||||
|
||||
if (removingTrailWorkspaces) {
|
||||
// "Merge" the empty workspace we are removing with the one at the end
|
||||
Main.wm.blockAnimations();
|
||||
}
|
||||
|
||||
// Delete other empty workspaces; do it from the end to avoid index changes
|
||||
for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
|
||||
if (emptyWorkspaces[i])
|
||||
global.screen.remove_workspace(Main._workspaces[i], global.get_current_time());
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if (removingTrailWorkspaces) {
|
||||
global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time());
|
||||
|
||||
Main.wm.unblockAnimations();
|
||||
|
||||
if (!Main.overview.visible && showOverview)
|
||||
Main.overview.show();
|
||||
}
|
||||
|
||||
Main._checkWorkspacesId = 0;
|
||||
return false;
|
||||
|
||||
};
|
||||
if (Meta.prefs_get_dynamic_workspaces())
|
||||
Main._checkWorkspaces = myCheckWorkspaces;
|
||||
|
||||
winMover = new WindowMover();
|
||||
}
|
||||
|
||||
@@ -30,8 +30,7 @@ const DriveMenuItem = new Lang.Class({
|
||||
this.addActor(this.label);
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
let ejectIcon = new St.Icon({ icon_name: 'media-eject',
|
||||
icon_type: St.IconType.SYMBOLIC,
|
||||
let ejectIcon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||
style_class: 'popup-menu-icon ' });
|
||||
let ejectButton = new St.Button({ child: ejectIcon });
|
||||
ejectButton.connect('clicked', Lang.bind(this, this._eject));
|
||||
@@ -54,7 +53,7 @@ const DriveMenu = new Lang.Class({
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
|
||||
_init: function() {
|
||||
this.parent('media-eject', _("Removable devices"));
|
||||
this.parent('media-eject-symbolic', _("Removable devices"));
|
||||
|
||||
this._manager = new PlaceDisplay.PlacesManager();
|
||||
this._updatedId = this._manager.connect('mounts-updated', Lang.bind(this, this._update));
|
||||
|
||||
@@ -141,7 +141,6 @@ Source.prototype = {
|
||||
|
||||
if (!this._iconUri) {
|
||||
iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||
icon_type: St.IconType.FULLCOLOR,
|
||||
icon_size: iconBox._size });
|
||||
} else {
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
|
||||
@@ -301,13 +301,13 @@ function enable() {
|
||||
workspaceInjections['_calculateWindowTransformationsNatural'] = undefined;
|
||||
|
||||
/**
|
||||
* positionWindows:
|
||||
* _realPositionWindows:
|
||||
* @flags:
|
||||
* INITIAL - this is the initial positioning of the windows.
|
||||
* ANIMATE - Indicates that we need animate changing position.
|
||||
*/
|
||||
workspaceInjections['positionWindows'] = Workspace.Workspace.prototype.positionWindows;
|
||||
Workspace.Workspace.prototype.positionWindows = function(flags) {
|
||||
workspaceInjections['positionWindows'] = Workspace.Workspace.prototype._realPositionWindows;
|
||||
Workspace.Workspace.prototype._realPositionWindows = function(flags) {
|
||||
if (this._repositionWindowsId > 0) {
|
||||
Mainloop.source_remove(this._repositionWindowsId);
|
||||
this._repositionWindowsId = 0;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
@@ -19,14 +19,45 @@ const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
const Convenience = Me.imports.convenience;
|
||||
|
||||
const PLACE_ICON_SIZE = 22;
|
||||
const PLACE_ICON_SIZE = 16;
|
||||
|
||||
function iconForPlace(place) {
|
||||
let split = place.id.split(':');
|
||||
let kind = split.shift();
|
||||
let uri = split.join(':');
|
||||
|
||||
let gicon = new Gio.ThemedIcon({ name: 'folder-symbolic' });
|
||||
switch(kind) {
|
||||
case 'special':
|
||||
switch(uri) {
|
||||
case 'home':
|
||||
gicon = new Gio.ThemedIcon({ name: 'user-home-symbolic' });
|
||||
break;
|
||||
case 'desktop':
|
||||
// FIXME: There is no user-desktop-symbolic
|
||||
gicon = new Gio.ThemedIcon({ name: 'folder-symbolic' });
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'bookmark':
|
||||
let info = Gio.File.new_for_uri(uri).query_info('standard::symbolic-icon', 0, null);
|
||||
gicon = info.get_symbolic_icon(info);
|
||||
break;
|
||||
case 'mount':
|
||||
gicon = place._mount.get_symbolic_icon();
|
||||
break;
|
||||
}
|
||||
|
||||
return new St.Icon({ gicon: gicon,
|
||||
icon_size: PLACE_ICON_SIZE });
|
||||
}
|
||||
|
||||
const PlacesMenu = new Lang.Class({
|
||||
Name: 'PlacesMenu.PlacesMenu',
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
|
||||
_init: function() {
|
||||
this.parent('folder');
|
||||
this.parent('folder-symbolic');
|
||||
this.placesManager = new PlaceDisplay.PlacesManager();
|
||||
|
||||
this.defaultItems = [];
|
||||
@@ -66,7 +97,7 @@ const PlacesMenu = new Lang.Class({
|
||||
|
||||
for (let placeid = 0; placeid < this.defaultPlaces.length; placeid++) {
|
||||
this.defaultItems[placeid] = new PopupMenu.PopupMenuItem(this.defaultPlaces[placeid].name);
|
||||
let icon = this.defaultPlaces[placeid].iconFactory(PLACE_ICON_SIZE);
|
||||
let icon = iconForPlace(this.defaultPlaces[placeid]);
|
||||
this.defaultItems[placeid].addActor(icon, { align: St.Align.END, span: -1 });
|
||||
this.defaultItems[placeid].place = this.defaultPlaces[placeid];
|
||||
this.menu.addMenuItem(this.defaultItems[placeid]);
|
||||
@@ -82,7 +113,7 @@ const PlacesMenu = new Lang.Class({
|
||||
|
||||
for (let bookmarkid = 0; bookmarkid < this.bookmarks.length; bookmarkid++) {
|
||||
this.bookmarkItems[bookmarkid] = new PopupMenu.PopupMenuItem(this.bookmarks[bookmarkid].name);
|
||||
let icon = this.bookmarks[bookmarkid].iconFactory(PLACE_ICON_SIZE);
|
||||
let icon = iconForPlace(this.bookmarks[bookmarkid]);
|
||||
this.bookmarkItems[bookmarkid].addActor(icon, { align: St.Align.END, span: -1 });
|
||||
this.bookmarkItems[bookmarkid].place = this.bookmarks[bookmarkid];
|
||||
this._bookmarksSection.addMenuItem(this.bookmarkItems[bookmarkid]);
|
||||
@@ -97,7 +128,7 @@ const PlacesMenu = new Lang.Class({
|
||||
|
||||
for (let devid = 0; devid < this.devices.length; devid++) {
|
||||
this.deviceItems[devid] = new PopupMenu.PopupMenuItem(this.devices[devid].name);
|
||||
let icon = this.devices[devid].iconFactory(PLACE_ICON_SIZE);
|
||||
let icon = iconForPlace(this.devices[devid]);
|
||||
this.deviceItems[devid].addActor(icon, { align: St.Align.END, span: -1 });
|
||||
this.deviceItems[devid].place = this.devices[devid];
|
||||
this._devicesMenuItem.menu.addMenuItem(this.deviceItems[devid]);
|
||||
@@ -131,7 +162,7 @@ let _indicator;
|
||||
|
||||
function enable() {
|
||||
_indicator = new PlacesMenu;
|
||||
Main.panel.addToStatusArea('places-menu', _indicator);
|
||||
Main.panel.addToStatusArea('places-menu', _indicator, 1, 'left');
|
||||
}
|
||||
|
||||
function disable() {
|
||||
|
||||
@@ -8,13 +8,21 @@ const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
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;
|
||||
|
||||
const INDICATOR_UPDATE_INTERVAL = 500;
|
||||
const INDICATOR_NUM_GRID_LINES = 3;
|
||||
|
||||
let _cpuIndicator;
|
||||
let _memIndicator;
|
||||
let _box;
|
||||
const ITEM_LABEL_SHOW_TIME = 0.15;
|
||||
const ITEM_LABEL_HIDE_TIME = 0.1;
|
||||
const ITEM_HOVER_TIMEOUT = 300;
|
||||
|
||||
const Indicator = new Lang.Class({
|
||||
Name: 'SystemMonitor.Indicator',
|
||||
@@ -22,7 +30,6 @@ const Indicator = new Lang.Class({
|
||||
_init: function() {
|
||||
this._initValues();
|
||||
this.drawing_area = new St.DrawingArea({ reactive: true });
|
||||
this.drawing_area.width = 100; this.drawing_area.height = 100;
|
||||
this.drawing_area.connect('repaint', Lang.bind(this, this._draw));
|
||||
this.drawing_area.connect('button-press-event', function() {
|
||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
||||
@@ -30,7 +37,8 @@ const Indicator = new Lang.Class({
|
||||
});
|
||||
|
||||
this.actor = new St.Bin({ style_class: "extension-systemMonitor-indicator-area",
|
||||
reactive: true});
|
||||
reactive: true, track_hover: true,
|
||||
x_fill: true, y_fill: true });
|
||||
this.actor.add_actor(this.drawing_area);
|
||||
|
||||
this._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
|
||||
@@ -40,10 +48,63 @@ const Indicator = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
showLabel: function() {
|
||||
if (this.label == null)
|
||||
return;
|
||||
|
||||
this.label.opacity = 0;
|
||||
this.label.show();
|
||||
|
||||
let [stageX, stageY] = this.actor.get_transformed_position();
|
||||
|
||||
let itemWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
|
||||
let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
|
||||
|
||||
let labelWidth = this.label.width;
|
||||
let labelHeight = this.label.height;
|
||||
let xOffset = Math.floor((itemWidth - labelWidth) / 2)
|
||||
|
||||
let x = stageX + xOffset;
|
||||
|
||||
let node = this.label.get_theme_node();
|
||||
let yOffset = node.get_length('-y-offset');
|
||||
|
||||
let y = stageY - this.label.get_height() - yOffset;
|
||||
|
||||
this.label.set_position(x, y);
|
||||
Tweener.addTween(this.label,
|
||||
{ opacity: 255,
|
||||
time: ITEM_LABEL_SHOW_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
});
|
||||
},
|
||||
|
||||
setLabelText: function(text) {
|
||||
if (this.label == null)
|
||||
this.label = new St.Label({ style_class: 'extension-systemMonitor-indicator-label'});
|
||||
|
||||
this.label.set_text(text);
|
||||
Main.layoutManager.addChrome(this.label);
|
||||
this.label.hide();
|
||||
},
|
||||
|
||||
hideLabel: function () {
|
||||
Tweener.addTween(this.label,
|
||||
{ opacity: 0,
|
||||
time: ITEM_LABEL_HIDE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this.label.hide();
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
Mainloop.source_remove(this._timeout);
|
||||
|
||||
this.actor.destroy();
|
||||
if (this.label)
|
||||
this.label.destroy();
|
||||
},
|
||||
|
||||
_initValues: function() {
|
||||
@@ -148,6 +209,8 @@ const CpuIndicator = new Lang.Class({
|
||||
this.renderStats = this.renderStats.sort(function(a,b) {
|
||||
return renderStatOrder[a] - renderStatOrder[b];
|
||||
});
|
||||
|
||||
this.setLabelText(_("CPU"));
|
||||
},
|
||||
|
||||
_initValues: function() {
|
||||
@@ -199,6 +262,8 @@ const MemoryIndicator = new Lang.Class({
|
||||
this.renderStats = this.renderStats.sort(function(a,b) {
|
||||
return renderStatOrder[a] - renderStatOrder[b];
|
||||
});
|
||||
|
||||
this.setLabelText(_("Memory"));
|
||||
},
|
||||
|
||||
_initValues: function() {
|
||||
@@ -222,23 +287,74 @@ const MemoryIndicator = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const INDICATORS = [CpuIndicator, MemoryIndicator];
|
||||
|
||||
const Extension = new Lang.Class({
|
||||
Name: 'SystemMonitor.Extension',
|
||||
|
||||
_init: function() {
|
||||
Convenience.initTranslations();
|
||||
|
||||
this._showLabelTimeoutId = 0;
|
||||
this._resetHoverTimeoutId = 0;
|
||||
this._labelShowing = false;
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
this._box = new St.BoxLayout({ style_class: 'extension-systemMonitor-container',
|
||||
x_align: Clutter.ActorAlign.START,
|
||||
x_expand: true });
|
||||
this._indicators = [ ];
|
||||
|
||||
for (let i = 0; i < INDICATORS.length; i++) {
|
||||
let indicator = new (INDICATORS[i])();
|
||||
|
||||
indicator.actor.connect('notify::hover', Lang.bind(this, function() {
|
||||
this._onHover(indicator);
|
||||
}));
|
||||
this._box.add_actor(indicator.actor);
|
||||
this._indicators.push(indicator);
|
||||
}
|
||||
|
||||
Main.messageTray.actor.add_actor(this._box);
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
this._indicators.forEach(function(i) { i.destroy(); });
|
||||
this._box.destroy();
|
||||
},
|
||||
|
||||
_onHover: function (item) {
|
||||
if (item.actor.get_hover()) {
|
||||
if (this._showLabelTimeoutId == 0) {
|
||||
let timeout = this._labelShowing ? 0 : ITEM_HOVER_TIMEOUT;
|
||||
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
|
||||
Lang.bind(this, function() {
|
||||
this._labelShowing = true;
|
||||
item.showLabel();
|
||||
return false;
|
||||
}));
|
||||
if (this._resetHoverTimeoutId > 0) {
|
||||
Mainloop.source_remove(this._resetHoverTimeoutId);
|
||||
this._resetHoverTimeoutId = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this._showLabelTimeoutId > 0)
|
||||
Mainloop.source_remove(this._showLabelTimeoutId);
|
||||
this._showLabelTimeoutId = 0;
|
||||
item.hideLabel();
|
||||
if (this._labelShowing) {
|
||||
this._resetHoverTimeoutId = Mainloop.timeout_add(ITEM_HOVER_TIMEOUT,
|
||||
Lang.bind(this, function() {
|
||||
this._labelShowing = false;
|
||||
return false;
|
||||
}));
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
function init() {
|
||||
// nothing to do here
|
||||
}
|
||||
|
||||
function enable() {
|
||||
_cpuIndicator = new CpuIndicator();
|
||||
_memIndicator = new MemoryIndicator();
|
||||
_box = new St.BoxLayout({ style_class: 'extension-systemMonitor-container' });
|
||||
_box.add(_cpuIndicator.actor);
|
||||
_box.add(_memIndicator.actor);
|
||||
Main.messageTray.actor.add_actor(_box);
|
||||
}
|
||||
|
||||
function disable() {
|
||||
_cpuIndicator.destroy();
|
||||
_cpuIndicator = null;
|
||||
_memIndicator.destroy();
|
||||
_memIndicator = null;
|
||||
_box.destroy();
|
||||
return new Extension();
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@
|
||||
spacing: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 1px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.extension-systemMonitor-indicator-area {
|
||||
border: 1px solid #8d8d8d;
|
||||
border-radius: 3px;
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
/* message tray is 72px, so 20px padding of the container,
|
||||
2px of border, makes it 50px */
|
||||
height: 50px;
|
||||
-grid-color: #575757;
|
||||
-cpu-total-color: rgb(0,154,62);
|
||||
-cpu-user-color: rgb(69,154,0);
|
||||
@@ -21,3 +23,13 @@
|
||||
-mem-other-color: rgb(205,203,41);
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
|
||||
.extension-systemMonitor-indicator-label {
|
||||
border-radius: 7px;
|
||||
padding: 4px 12px;
|
||||
background-color: rgba(0,0,0,0.9);
|
||||
text-align: center;
|
||||
-y-offset: 8px;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ function enable() {
|
||||
workViewInjections['_onKeyRelease'] = undefined;
|
||||
|
||||
WorkspacesView.WorkspacesView.prototype._onKeyPress = function(s, o) {
|
||||
if(Main.overview._viewSelector._activeTab.id != 'windows')
|
||||
if(Main.overview._viewSelector._activePage != Main.overview._viewSelector._workspacesPage)
|
||||
return false;
|
||||
|
||||
if ((o.get_key_symbol() == Clutter.KEY_Alt_L ||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
|
||||
const DBus = imports.dbus;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Lang = imports.lang;
|
||||
@@ -33,25 +33,23 @@ let rotations = [ [ GnomeDesktop.RRRotation.ROTATION_0, N_("Normal") ],
|
||||
[ GnomeDesktop.RRRotation.ROTATION_180, N_("Upside-down") ]
|
||||
];
|
||||
|
||||
const XRandr2Iface = {
|
||||
name: 'org.gnome.SettingsDaemon.XRANDR_2',
|
||||
methods: [
|
||||
{ name: 'ApplyConfiguration', inSignature: 'xx', outSignature: '' },
|
||||
]
|
||||
};
|
||||
let XRandr2 = DBus.makeProxyClass(XRandr2Iface);
|
||||
const XRandr2Iface = <interface name='org.gnome.SettingsDaemon.XRANDR_2'>
|
||||
<method name='ApplyConfiguration'>
|
||||
<arg type='x' direction='in'/>
|
||||
<arg type='x' direction='in'/>
|
||||
</method>
|
||||
</interface>;
|
||||
|
||||
function Indicator() {
|
||||
this._init.apply(this, arguments);
|
||||
}
|
||||
const XRandr2 = Gio.DBusProxy.makeProxyWrapper(XRandr2Iface);
|
||||
|
||||
Indicator.prototype = {
|
||||
__proto__: PanelMenu.SystemStatusButton.prototype,
|
||||
const Indicator = new Lang.Class({
|
||||
Name: 'XRandRIndicator',
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
|
||||
_init: function() {
|
||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-display');
|
||||
this.parent('preferences-desktop-display-symbolic', _("Display"));
|
||||
|
||||
this._proxy = new XRandr2(DBus.session, 'org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/XRANDR');
|
||||
this._proxy = new XRandr2(Gio.DBus.session, 'org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon/XRANDR');
|
||||
|
||||
try {
|
||||
this._screen = new GnomeDesktop.RRScreen({ gdk_screen: Gdk.Screen.get_default() });
|
||||
@@ -79,9 +77,7 @@ Indicator.prototype = {
|
||||
this._addOutputItem(config, outputs[i]);
|
||||
}
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addAction(_("Configure display settings..."), function() {
|
||||
GLib.spawn_command_line_async('gnome-control-center display');
|
||||
});
|
||||
this.menu.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
|
||||
},
|
||||
|
||||
_addOutputItem: function(config, output) {
|
||||
@@ -137,8 +133,7 @@ Indicator.prototype = {
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function init(metadata) {
|
||||
Convenience.initTranslations();
|
||||
|
||||
143
po/es.po
143
po/es.po
@@ -11,74 +11,51 @@ msgstr ""
|
||||
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-06-08 12:07+0000\n"
|
||||
"shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2012-08-22 14:21+0000\n"
|
||||
"PO-Revision-Date: 2012-08-25 12:01+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 2.91.5\n"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "The alt tab behaviour."
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "The application icon mode."
|
||||
msgstr "El modo de icono de la aplicación."
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
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 ""
|
||||
"Establece el comportamiento de Alt+Tab. Los valores posibles son: "
|
||||
"«native» (nativo), «all_thumbnails» (todo y miniaturas) y "
|
||||
"«workspace_icons» (iconos de áreas de trabajo). Para obtener información más "
|
||||
msgstr ""
|
||||
"Configura cómo se muestran las ventanas en el intercambiador. Las opciones "
|
||||
"posibles son «thumbnail-only» (muestra una miniatura de la ventana, «app-"
|
||||
"icon-only» (sólo muestra el icono de la aplicación) o «both» (se muestran "
|
||||
"ambas cosas)."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:26
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Sólo miniaturas"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "All & Thumbnails"
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "Application icon only"
|
||||
msgstr "Sólo icono de la aplicación"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid ""
|
||||
"This mode presents all applications from all workspaces in one selection "
|
||||
"list. Instead of using the application icon of every window, it uses small "
|
||||
"thumbnails resembling the window itself."
|
||||
msgstr ""
|
||||
"Este modo presenta todas las aplicaciones de todas las áreas de trabajo en "
|
||||
"una lista de selección. En lugar de usar el icono de aplicación de cada "
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniatura e icono de la aplicación"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:34
|
||||
msgid "Workspace & Icons"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:43
|
||||
msgid "Present windows as"
|
||||
msgstr "Presentar ventanas como"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:35
|
||||
msgid ""
|
||||
"This mode let's you switch between the applications of your current "
|
||||
"workspace and gives you additionally the option to switch to the last used "
|
||||
"application of your previous workspace. This is always the last symbol in "
|
||||
"the list and is segregated by a separator/vertical line if available. \n"
|
||||
"Every window is represented by its application icon."
|
||||
msgstr ""
|
||||
"Este modo le permite alternar entre las aplicaciones de su área de trabajo "
|
||||
"actual y le da la opción de cambiar a la última aplicación utilizada de su "
|
||||
"área de trabajo anterior. Este siempre es el último símbolo de la lista y "
|
||||
"está separado por un separador/línea vertical si está disponible.\n"
|
||||
"Cada ventana está representada por su icono de aplicación."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:41
|
||||
msgid "Move current selection to front before closing the popup"
|
||||
msgstr ""
|
||||
"Mover la selección actual al frente antes de cerrar la ventana emergente"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:58
|
||||
msgid ""
|
||||
"The Alternate Tab can be used in different modes, that affect the way "
|
||||
"windows are chosen and presented."
|
||||
msgstr ""
|
||||
"La combinación de teclas Alt+Tab se puede usar en diferentes modos, que "
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:68
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Mostrar ventanas solamente en el área de trabajo actual"
|
||||
|
||||
#. add the new entries
|
||||
@@ -90,7 +67,6 @@ msgid "Hibernate"
|
||||
msgid "Hibernate"
|
||||
msgstr "Hibernar"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
@@ -313,6 +289,14 @@ msgstr ""
|
||||
#: ../extensions/places-menu/extension.js:39
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivos extraíbles"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:213
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:266
|
||||
msgid "Memory"
|
||||
msgstr "Memoria"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
@@ -358,6 +342,63 @@ msgstr "Hacia abajo"
|
||||
#: ../extensions/xrandr-indicator/extension.js:82
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Configurar las opciones de pantalla…"
|
||||
|
||||
#~ msgid "The alt tab behaviour."
|
||||
#~ msgstr "El comportamiento de Alt+Tab."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
#~ "workspace_icons. See the configuration dialogs for details."
|
||||
#~ msgstr ""
|
||||
#~ "Establece el comportamiento de Alt+Tab. Los valores posibles son: "
|
||||
#~ "«native» (nativo), «all_thumbnails» (todo y miniaturas) y "
|
||||
#~ "«workspace_icons» (iconos de áreas de trabajo). Para obtener información "
|
||||
#~ "más detallada, consulte la configuración de los diálogos "
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This mode presents all applications from all workspaces in one selection "
|
||||
#~ "list. Instead of using the application icon of every window, it uses "
|
||||
#~ "small thumbnails resembling the window itself."
|
||||
#~ msgstr ""
|
||||
#~ "Este modo presenta todas las aplicaciones de todas las áreas de trabajo "
|
||||
#~ "en una lista de selección. En lugar de usar el icono de aplicación de "
|
||||
#~ "cada ventana, usa pequeñas miniaturas que se asemejan a la propia ventana."
|
||||
|
||||
#~ msgid "Workspace & Icons"
|
||||
#~ msgstr "Área de trabajo e iconos"
|
||||
|
||||
#~| msgid ""
|
||||
#~| "This mode let's you switch between the applications of your current "
|
||||
#~| "workspace and gives you additionally the option to switch to the last "
|
||||
#~| "used application of your previous workspace. This is always the last "
|
||||
#~| "symbol in the list and is segregated by a separator/vertical line if "
|
||||
#~| "available. \n"
|
||||
#~| "Every window is represented by its application icon."
|
||||
#~ msgid ""
|
||||
#~ "This mode lets you switch between the applications of your current "
|
||||
#~ "workspace and gives you additionally the option to switch to the last "
|
||||
#~ "used application of your previous workspace. This is always the last "
|
||||
#~ "symbol in the list and is separated by a separator/vertical line if "
|
||||
#~ "available. \n"
|
||||
#~ "Every window is represented by its application icon."
|
||||
#~ msgstr ""
|
||||
#~ "Este modo le permite alternar entre las aplicaciones de su área de "
|
||||
#~ "trabajo actual y le da la opción de cambiar a la última aplicación "
|
||||
#~ "utilizada de su área de trabajo anterior. Este siempre es el último "
|
||||
#~ "símbolo de la lista y está separado por un separador/línea vertical si "
|
||||
#~ "está disponible.\n"
|
||||
#~ "Cada ventana está representada por su icono de aplicación."
|
||||
|
||||
#~ msgid "Move current selection to front before closing the popup"
|
||||
#~ msgstr ""
|
||||
#~ "Mover la selección actual al frente antes de cerrar la ventana emergente"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||
#~ "windows are chosen and presented."
|
||||
#~ msgstr ""
|
||||
#~ "La combinación de teclas Alt+Tab se puede usar en diferentes modos, que "
|
||||
#~ "afectan la manera en que se eligen y presentan las ventanas."
|
||||
|
||||
#~ msgid "Indicates if Alternate Tab is newly installed"
|
||||
#~ msgstr "Indica si se ha instalado Alt+Tab recientemente"
|
||||
|
||||
153
po/gl.po
153
po/gl.po
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-04-30 16:43+0200\n"
|
||||
"PO-Revision-Date: 2012-04-30 16:42+0200\n"
|
||||
"POT-Creation-Date: 2012-08-30 04:14+0200\n"
|
||||
"PO-Revision-Date: 2012-08-30 04:16+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
||||
"Language: gl\n"
|
||||
@@ -18,64 +18,41 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
"X-Generator: Gtranslator 2.91.5\n"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "The alt tab behaviour."
|
||||
msgstr "O comportamento de Alt+Tab"
|
||||
msgid "The application icon mode."
|
||||
msgstr "O modo da icona do aplicativo."
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
"workspace_icons. See the configuration dialogs for details."
|
||||
"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 ""
|
||||
"Estabelece o comportamento do Alt+Tab. Os valores posíbeis son: "
|
||||
"«native» (nativo), «all_thumbnails» (todo e miniaturas) e "
|
||||
"«worspace_icons» (iconas de áreas de traballo). Para obter información máis "
|
||||
"detallada, consulte a configuración dos diálogos."
|
||||
"Configura como se mostran as xanelas no intercambiador. As opcións posíbeis "
|
||||
"son «thumbnail-only» (mostra unha miniatura da xanela, «app-icon-only» (só "
|
||||
"mostra a icona do aplicativo) ou «both» (móstranse ambas cosas)."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:26
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Só miniaturas"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Todo e miniaturas"
|
||||
msgid "Application icon only"
|
||||
msgstr "Só icona do aplicativo"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid ""
|
||||
"This mode presents all applications from all workspaces in one selection "
|
||||
"list. Instead of using the application icon of every window, it uses small "
|
||||
"thumbnails resembling the window itself."
|
||||
msgstr ""
|
||||
"Este modo presenta todos os aplicativos de todas as áreas de traballo nunha "
|
||||
"lista de selección. No lugar de usar a icona de aplicativo de cada xanela, "
|
||||
"usa pequenas miniaturas que semellan a propia xanela."
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniatura e icona do aplicativo"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:34
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Espazos de traballo e iconas"
|
||||
#: ../extensions/alternate-tab/prefs.js:43
|
||||
msgid "Present windows as"
|
||||
msgstr "Presentar xanelas como"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:35
|
||||
msgid ""
|
||||
"This mode let's you switch between the applications of your current "
|
||||
"workspace and gives you additionally the option to switch to the last used "
|
||||
"application of your previous workspace. This is always the last symbol in "
|
||||
"the list and is segregated by a separator/vertical line if available. \n"
|
||||
"Every window is represented by its application icon."
|
||||
msgstr ""
|
||||
"Este modo permítelle alternar entre os aplicativos da súa área de traballo "
|
||||
"actual e dálle a opción de cambiar ao último aplicativo empregada da súa "
|
||||
"área de traballo anterior. Este sempre é o último símbolo da lista e está "
|
||||
"separado por un separador/liña vertical se está dispoñíbel.\n"
|
||||
"Cada xanela está representada pola súa icona de aplicativo."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:41
|
||||
msgid "Move current selection to front before closing the popup"
|
||||
msgstr "Mover a selección actual ao frente antes de pechar a xanela emerxente"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:58
|
||||
msgid ""
|
||||
"The Alternate Tab can be used in different modes, that affect the way "
|
||||
"windows are chosen and presented."
|
||||
msgstr ""
|
||||
"A combinación de teclas Alt+Tab pódese usar en diferentes modos, que afectan "
|
||||
"á maneira na que se elixen e presentan as xanelas."
|
||||
#: ../extensions/alternate-tab/prefs.js:68
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Mostrar só as xanelas na área de traballo actual"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
@@ -87,8 +64,8 @@ msgid "Hibernate"
|
||||
msgstr "Hibernar"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off..."
|
||||
msgstr "Apagar…"
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||
msgid "Enable suspending"
|
||||
@@ -139,23 +116,23 @@ msgstr "Crear regra de coincidencia nova"
|
||||
msgid "Add"
|
||||
msgstr "Engadir"
|
||||
|
||||
#: ../extensions/dock/extension.js:577
|
||||
#: ../extensions/dock/extension.js:600
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Arrastre aquí para engadir aos favoritos"
|
||||
|
||||
#: ../extensions/dock/extension.js:903
|
||||
#: ../extensions/dock/extension.js:926
|
||||
msgid "New Window"
|
||||
msgstr "Nova xanela"
|
||||
|
||||
#: ../extensions/dock/extension.js:905
|
||||
#: ../extensions/dock/extension.js:928
|
||||
msgid "Quit Application"
|
||||
msgstr "Saír do aplicativo"
|
||||
|
||||
#: ../extensions/dock/extension.js:910
|
||||
#: ../extensions/dock/extension.js:933
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Eliminar dos favoritos"
|
||||
|
||||
#: ../extensions/dock/extension.js:911
|
||||
#: ../extensions/dock/extension.js:934
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Engadir aos favoritos"
|
||||
|
||||
@@ -215,7 +192,11 @@ msgstr ""
|
||||
"Estabelece a pantalla na que mostrar o taboleiro. O valor predeterminado es "
|
||||
"(-1), que é a pantalla principal."
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:66
|
||||
#: ../extensions/drive-menu/extension.js:57
|
||||
msgid "Removable devices"
|
||||
msgstr "Dispositivos extraíbeis"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:68
|
||||
msgid "Open file manager"
|
||||
msgstr "Abrir o xestor de ficheiros"
|
||||
|
||||
@@ -298,10 +279,18 @@ msgstr ""
|
||||
"respectiva, omitindo a disposición inferior por omisión do shell. Se cambia "
|
||||
"esta configuración deberá reiniciar o shell para que se apliquen os cambios."
|
||||
|
||||
#: ../extensions/places-menu/extension.js:37
|
||||
#: ../extensions/places-menu/extension.js:39
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivos extraíbeis"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:213
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:266
|
||||
msgid "Memory"
|
||||
msgstr "Memoria"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Nome do tema"
|
||||
@@ -347,6 +336,56 @@ msgstr "Co de arriba cara abaixo"
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Configurar as preferencias de pantalla…"
|
||||
|
||||
#~ msgid "The alt tab behaviour."
|
||||
#~ msgstr "O comportamento de Alt+Tab"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
#~ "workspace_icons. See the configuration dialogs for details."
|
||||
#~ msgstr ""
|
||||
#~ "Estabelece o comportamento do Alt+Tab. Os valores posíbeis son: "
|
||||
#~ "«native» (nativo), «all_thumbnails» (todo e miniaturas) e "
|
||||
#~ "«worspace_icons» (iconas de áreas de traballo). Para obter información "
|
||||
#~ "máis detallada, consulte a configuración dos diálogos."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This mode presents all applications from all workspaces in one selection "
|
||||
#~ "list. Instead of using the application icon of every window, it uses "
|
||||
#~ "small thumbnails resembling the window itself."
|
||||
#~ msgstr ""
|
||||
#~ "Este modo presenta todos os aplicativos de todas as áreas de traballo "
|
||||
#~ "nunha lista de selección. No lugar de usar a icona de aplicativo de cada "
|
||||
#~ "xanela, usa pequenas miniaturas que semellan a propia xanela."
|
||||
|
||||
#~ msgid "Workspace & Icons"
|
||||
#~ msgstr "Espazos de traballo e iconas"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This mode let's you switch between the applications of your current "
|
||||
#~ "workspace and gives you additionally the option to switch to the last "
|
||||
#~ "used application of your previous workspace. This is always the last "
|
||||
#~ "symbol in the list and is segregated by a separator/vertical line if "
|
||||
#~ "available. \n"
|
||||
#~ "Every window is represented by its application icon."
|
||||
#~ msgstr ""
|
||||
#~ "Este modo permítelle alternar entre os aplicativos da súa área de "
|
||||
#~ "traballo actual e dálle a opción de cambiar ao último aplicativo "
|
||||
#~ "empregada da súa área de traballo anterior. Este sempre é o último "
|
||||
#~ "símbolo da lista e está separado por un separador/liña vertical se está "
|
||||
#~ "dispoñíbel.\n"
|
||||
#~ "Cada xanela está representada pola súa icona de aplicativo."
|
||||
|
||||
#~ msgid "Move current selection to front before closing the popup"
|
||||
#~ msgstr ""
|
||||
#~ "Mover a selección actual ao frente antes de pechar a xanela emerxente"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||
#~ "windows are chosen and presented."
|
||||
#~ msgstr ""
|
||||
#~ "A combinación de teclas Alt+Tab pódese usar en diferentes modos, que "
|
||||
#~ "afectan á maneira na que se elixen e presentan as xanelas."
|
||||
|
||||
#~ msgid "Notifications"
|
||||
#~ msgstr "Notificacións"
|
||||
|
||||
|
||||
252
po/it.po
252
po/it.po
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-03-01 21:11+0100\n"
|
||||
"PO-Revision-Date: 2012-03-01 21:08+0100\n"
|
||||
"POT-Creation-Date: 2012-09-05 00:20+0200\n"
|
||||
"PO-Revision-Date: 2012-09-05 00:25+0200\n"
|
||||
"Last-Translator: Giovanni Campagna <scampa.giovanni@gmail.com>\n"
|
||||
"Language-Team: none <LL@li.org>\n"
|
||||
"Language: it\n"
|
||||
@@ -16,77 +16,73 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
# ndt: che schifo...
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid ""
|
||||
"Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
"workspace_icons. See the configuration dialogs for details."
|
||||
msgstr ""
|
||||
"Imposta il comportamento di Alt-Tab. Valori possibili sono \"all_thumbnails"
|
||||
"\" e \"workspace_icons\". Per maggiori dettagli, si rimanda alla finestra di "
|
||||
"configurazione."
|
||||
msgid "The application icon mode."
|
||||
msgstr "Modalità icona applicazione"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid "The alt tab behaviour."
|
||||
msgstr "Comportamento di Alt-Tab"
|
||||
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 "Configura come le finestre sono mostrate nello scambiafinestre. Le possibilità valide sono 'thumbnails-only' (mostra una miniatura della finestra), 'app-icon-only' (mostra solo l'icona dell'applicazione) o 'both' (mostra entrambi)."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:26
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Solo la miniatura"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Tutte & Miniature"
|
||||
msgid "Application icon only"
|
||||
msgstr "Solo l'icona dell'applicazione"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid ""
|
||||
"This mode presents all applications from all workspaces in one selection "
|
||||
"list. Instead of using the application icon of every window, it uses small "
|
||||
"thumbnails resembling the window itself."
|
||||
msgstr ""
|
||||
"Questa modalità presenta tutte le applicazioni, da tutti gli spazi di lavoro "
|
||||
"in un'unica lista. Invece di usare un'icona, usa delle piccole miniature che "
|
||||
"rappresentano la finestra stessa."
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "La miniatura e l'icona dell'applicazione"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:34
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Spazio di lavoro & Icone"
|
||||
# ndt: con invece che come, perchè altrimenti l'articolo sta male
|
||||
#: ../extensions/alternate-tab/prefs.js:43
|
||||
msgid "Present windows as"
|
||||
msgstr "Mostra le finestre con"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:35
|
||||
msgid ""
|
||||
"This mode let's you switch between the applications of your current "
|
||||
"workspace and gives you additionally the option to switch to the last used "
|
||||
"application of your previous workspace. This is always the last symbol in "
|
||||
"the list and is segregated by a separator/vertical line if available. \n"
|
||||
"Every window is represented by its application icon."
|
||||
msgstr ""
|
||||
"Questa modalità ti consente di passare da un'applicazione all'altra del tuo "
|
||||
"spazio di lavoro corrente e ti da in aggiunta l'opzione di passare "
|
||||
"all'ultima applicazione dello spazio di lavoro precedente. Questa è sempre "
|
||||
"l'ultima della lista ed è separata da una linea verticale, se presente.\n"
|
||||
"Ogni finestra è rappresentata dall'icona dell'applicazione."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:41
|
||||
msgid "Move current selection to front before closing the popup"
|
||||
msgstr "Muovi la selezione corrente in avanti prima di chiudere il popup"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:58
|
||||
msgid ""
|
||||
"The Alternate Tab can be used in different modes, that affect the way "
|
||||
"windows are chosen and presented."
|
||||
msgstr ""
|
||||
"Alternate Tab può essere usato in varie modalità, che influenzano il modo "
|
||||
"con cui le finestre sono scelte e successivamente mostrate."
|
||||
#: ../extensions/alternate-tab/prefs.js:68
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Mostra solo le finestre dello spazio di lavoro corrente"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:64
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Suspend"
|
||||
msgstr "Sospendi"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:69
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Hibernate"
|
||||
msgstr "Iberna"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:74
|
||||
msgid "Power Off..."
|
||||
msgstr "Spegni..."
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||
msgid "Enable suspending"
|
||||
msgstr "Abilita sospensione"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||
msgid "Control the visibility of the Suspend menu item"
|
||||
msgstr "Controlla la visibilità del comando Sospendi"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||
msgid "Enable hibernating"
|
||||
msgstr "Abilita ibernazione"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||
msgid "Control the visibility of the Hibernate menu item"
|
||||
msgstr "Controlla la visibilità del comando Iberna"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Lista applicazioni e spazi di lavoro"
|
||||
|
||||
#: ../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"
|
||||
@@ -94,10 +90,6 @@ msgstr ""
|
||||
"Una lista di stringhe, ognuna contenente un id applicazione (nome del file ."
|
||||
"desktop), seguito da due punti e il numero dello spazio di lavoro"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:2
|
||||
msgid "Application and workspace list"
|
||||
msgstr "Lista applicazioni e spazi di lavoro"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
msgid "Application"
|
||||
msgstr "Applicazione"
|
||||
@@ -119,50 +111,54 @@ msgstr "Crea una nuova regola di corrispondenza"
|
||||
msgid "Add"
|
||||
msgstr "Aggiungi"
|
||||
|
||||
#: ../extensions/dock/extension.js:489
|
||||
#: ../extensions/dock/extension.js:600
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Trascina qui per aggiungere ai preferiti"
|
||||
|
||||
#: ../extensions/dock/extension.js:815
|
||||
#: ../extensions/dock/extension.js:926
|
||||
msgid "New Window"
|
||||
msgstr "Nuova finestra"
|
||||
|
||||
#: ../extensions/dock/extension.js:817
|
||||
#: ../extensions/dock/extension.js:928
|
||||
msgid "Quit Application"
|
||||
msgstr "Chiudi applicazione"
|
||||
|
||||
#: ../extensions/dock/extension.js:822
|
||||
#: ../extensions/dock/extension.js:933
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Rimuovi dai preferiti"
|
||||
|
||||
#: ../extensions/dock/extension.js:823
|
||||
#: ../extensions/dock/extension.js:934
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Aggiungi ai preferiti"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
|
||||
msgid "Autohide duration"
|
||||
msgstr "Durata dell'effetto di scomparsa"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
|
||||
msgid "Autohide effect"
|
||||
msgstr "Effetto di scomparsa"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||
msgid "Enable/disable autohide"
|
||||
msgstr "Abilita/disabilita scomparsa automatica"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
||||
msgid "Icon size"
|
||||
msgstr "Dimensione delle icone"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
||||
msgid "Position of the dock"
|
||||
msgstr "Posizione del dock"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||
#: ../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 ""
|
||||
"Imposta la posizione del dock sullo schermo. Valori consentiti sono \"right"
|
||||
"\" (destra) e \"left\" (sinistra)"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
|
||||
msgid "Icon size"
|
||||
msgstr "Dimensione delle icone"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
|
||||
msgid "Sets icon size of the dock."
|
||||
msgstr "Imposta la dimensione delle icone del dock."
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
|
||||
msgid "Enable/disable autohide"
|
||||
msgstr "Abilita/disabilita scomparsa automatica"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
|
||||
msgid "Autohide effect"
|
||||
msgstr "Effetto di scomparsa"
|
||||
|
||||
#: ../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 "
|
||||
@@ -173,18 +169,30 @@ msgstr ""
|
||||
"schiaccia verso il lato), \"move\" (lo muove fuori dallo schermo)"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
|
||||
msgid ""
|
||||
"Sets the position of the dock in the screen. Allowed values are 'right' or "
|
||||
"'left'"
|
||||
msgstr ""
|
||||
"Imposta la posizione del dock sullo schermo. Valori consentiti sono \"right"
|
||||
"\" (destra) e \"left\" (sinistra)"
|
||||
msgid "Autohide duration"
|
||||
msgstr "Durata dell'effetto di scomparsa"
|
||||
|
||||
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
|
||||
msgid "Sets the time duration of the autohide effect."
|
||||
msgstr "Imposta la durata in secondi dell'effetto di scomparsa"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:66
|
||||
#: ../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 ""
|
||||
"Imposta il monitor in cui mostrare la dock. Il valore di default (-1) "
|
||||
"rappresenta lo schermo principale."
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:56
|
||||
msgid "Removable devices"
|
||||
msgstr "Dispositivi rimovibili"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:67
|
||||
msgid "Open file manager"
|
||||
msgstr "Apri il gestore dei file"
|
||||
|
||||
@@ -220,41 +228,31 @@ msgstr ""
|
||||
msgid "Message:"
|
||||
msgstr "Messaggio:"
|
||||
|
||||
#: ../extensions/gajim/extension.js:227
|
||||
#: ../extensions/gajim/extension.js:226
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s è assente"
|
||||
|
||||
#: ../extensions/gajim/extension.js:230
|
||||
#: ../extensions/gajim/extension.js:229
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s è fuori rete"
|
||||
|
||||
#: ../extensions/gajim/extension.js:233
|
||||
#: ../extensions/gajim/extension.js:232
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s è disponibile"
|
||||
|
||||
#: ../extensions/gajim/extension.js:236
|
||||
#: ../extensions/gajim/extension.js:235
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s non è disponibile"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
|
||||
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 ""
|
||||
"Se vero, posiziona i titoli delle finestre in cima alle rispettive "
|
||||
"miniature, aggirando il comportamento normale della shell, che li colloca in "
|
||||
"basso. Modificare questa impostazione richiede di riavviare la shell."
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Usa più spazio per le finestre"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Posiziona i titoli delle finestre in cima"
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
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. "
|
||||
@@ -265,22 +263,40 @@ msgstr ""
|
||||
"ulteriormente per ridurre lo spazio complessivo. Questa impostazione si "
|
||||
"applica solo se l'algoritmo di posizionamento è \"natural\"."
|
||||
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
|
||||
msgid "Use more screen for windows"
|
||||
msgstr "Usa più spazio per le finestre"
|
||||
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
|
||||
msgid "Place window captions on top"
|
||||
msgstr "Posiziona i titoli delle finestre in cima"
|
||||
|
||||
#: ../extensions/places-menu/extension.js:37
|
||||
#: ../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 ""
|
||||
"Se vero, posiziona i titoli delle finestre in cima alle rispettive "
|
||||
"miniature, aggirando il comportamento normale della shell, che li colloca in "
|
||||
"basso. Modificare questa impostazione richiede di riavviare la shell."
|
||||
|
||||
#: ../extensions/places-menu/extension.js:70
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivi rimovibili"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||
msgstr "Il nome del tema, da caricare in ~/.themes/nome/gnome-shell"
|
||||
#: ../extensions/systemMonitor/extension.js:213
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
|
||||
#: ../extensions/systemMonitor/extension.js:266
|
||||
msgid "Memory"
|
||||
msgstr "Memoria"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Nome del tema"
|
||||
|
||||
#: ../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 "Il nome del tema, da caricare in ~/.themes/nome/gnome-shell"
|
||||
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "Indicatore spazi di lavoro"
|
||||
@@ -314,12 +330,16 @@ msgstr "Destra"
|
||||
msgid "Upside-down"
|
||||
msgstr "Rovesciato"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:82
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Configura impostazioni display..."
|
||||
#: ../extensions/xrandr-indicator/extension.js:50
|
||||
msgid "Display"
|
||||
msgstr "Monitor"
|
||||
|
||||
#~ msgid "Display Settings"
|
||||
#~ msgstr "Impostazioni monitor"
|
||||
#: ../extensions/xrandr-indicator/extension.js:80
|
||||
msgid "Display Settings"
|
||||
msgstr "Impostazioni monitor"
|
||||
|
||||
#~ msgid "Configure display settings..."
|
||||
#~ msgstr "Configura impostazioni display..."
|
||||
|
||||
#~ msgid "Cancel"
|
||||
#~ msgstr "Annulla"
|
||||
|
||||
153
po/pa.po
153
po/pa.po
@@ -8,78 +8,79 @@ 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-02-24 18:22+0000\n"
|
||||
"PO-Revision-Date: 2012-03-17 16:50+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"
|
||||
"Language: pa\n"
|
||||
"X-Generator: Lokalize 1.2\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
|
||||
msgid "The alt tab behaviour."
|
||||
msgstr "alt tab ਰਵੱਈਆ ਹੈ।"
|
||||
msgid "The application icon mode."
|
||||
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ ਮੋਡ"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
#| msgid ""
|
||||
#| "Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails "
|
||||
#| "and workspace_icons."
|
||||
msgid ""
|
||||
"Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
"workspace_icons. See the configuration dialogs for details."
|
||||
"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 ""
|
||||
"Alt-Tab ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ। ਸੰਭਵ ਮੁੱਲ ਹਨ: all_thumbnails ਅਤੇ workspace_icons। "
|
||||
"ਵੇਰਵੇ ਲਈ ਸੰਰਚਨਾ ਡਾਈਲਾਗ ਵੇਖੋ।"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:26
|
||||
#| msgid "All & Thumbnails"
|
||||
msgid "Thumbnail only"
|
||||
msgstr "ਕੇਵਲ ਥੰਮਨੇਲ ਹੀ"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "ਸਭ ਅਤੇ ਥੰਮਨੇਲ"
|
||||
#| msgid "Application"
|
||||
msgid "Application icon only"
|
||||
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ ਹੀ"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid ""
|
||||
"This mode presents all applications from all workspaces in one selection "
|
||||
"list. Instead of using the application icon of every window, it uses small "
|
||||
"thumbnails resembling the window itself."
|
||||
msgstr ""
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "ਥੰਮਨੇਲ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਆਈਕਾਨ"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:34
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "ਵਰਕਸਪੇਸ ਅਤੇ ਆਈਕਾਨ"
|
||||
#: ../extensions/alternate-tab/prefs.js:43
|
||||
msgid "Present windows as"
|
||||
msgstr "ਵਿੰਡੋਜ਼ ਨੂੰ ਪੇਸ਼ ਕਰੋ"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:35
|
||||
msgid ""
|
||||
"This mode let's you switch between the applications of your current "
|
||||
"workspace and gives you additionally the option to switch to the last used "
|
||||
"application of your previous workspace. This is always the last symbol in "
|
||||
"the list and is segregated by a separator/vertical line if available. \n"
|
||||
"Every window is represented by its application icon."
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:41
|
||||
msgid "Move current selection to front before closing the popup"
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:58
|
||||
msgid ""
|
||||
"The Alternate Tab can be used in different modes, that affect the way "
|
||||
"windows are chosen and presented."
|
||||
msgstr ""
|
||||
#: ../extensions/alternate-tab/prefs.js:68
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "ਮੌਜੂਦਾ ਵਰਕਸਪੇਸ ਵਿੱਚੋਂ ਹੀ ਵਿੰਡੋਜ਼ ਹੀ ਵੇਖਾਓ"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:64
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Suspend"
|
||||
msgstr "ਸਸਪੈਂਡ"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:69
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Hibernate"
|
||||
msgstr "ਹਾਈਬਰਨੇਟ"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:74
|
||||
msgid "Power Off..."
|
||||
msgstr "...ਬੰਦ ਕਰੋ"
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
#| msgid "Power Off..."
|
||||
msgid "Power Off"
|
||||
msgstr "ਬੰਦ ਕਰੋ"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||
msgid "Enable suspending"
|
||||
msgstr "ਸਸਪੈਂਡ ਕਰਨਾ ਯੋਗ"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||
msgid "Control the visibility of the Suspend menu item"
|
||||
msgstr "ਸਸਪੈਂਡ ਮੇਨੂ ਆਈਟਮ ਦੀ ਦਿੱਖ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||
msgid "Enable hibernating"
|
||||
msgstr "ਹਾਈਬਰਨੇਟ ਕਰਨਾ ਚਾਲੂ"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||
msgid "Control the visibility of the Hibernate menu item"
|
||||
msgstr "ਹਾਈਬਰਨੇਟ ਮੇਨੂ ਆਈਟਮ ਦੀ ਦਿੱਖ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||
msgid "Application and workspace list"
|
||||
@@ -95,13 +96,11 @@ msgstr ""
|
||||
"ਰੱਖਦਾ ਹੈ"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:55
|
||||
#| msgid "Quit Application"
|
||||
msgid "Application"
|
||||
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
|
||||
|
||||
#: ../extensions/auto-move-windows/prefs.js:64
|
||||
#: ../extensions/auto-move-windows/prefs.js:106
|
||||
#| msgid "Workspace & Icons"
|
||||
msgid "Workspace"
|
||||
msgstr "ਵਰਕਸਪੇਸ"
|
||||
|
||||
@@ -117,23 +116,23 @@ msgstr "ਨਵਾਂ ਮਿਲਾਉਣ ਨਿਯਮ ਬਣਾਉ"
|
||||
msgid "Add"
|
||||
msgstr "ਸ਼ਾਮਲ"
|
||||
|
||||
#: ../extensions/dock/extension.js:489
|
||||
#: ../extensions/dock/extension.js:600
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜਨ ਲਈ ਇੱਥੇ ਸੁੱਟੋ"
|
||||
|
||||
#: ../extensions/dock/extension.js:815
|
||||
#: ../extensions/dock/extension.js:926
|
||||
msgid "New Window"
|
||||
msgstr "ਨਵੀਂ ਵਿੰਡੋ"
|
||||
|
||||
#: ../extensions/dock/extension.js:817
|
||||
#: ../extensions/dock/extension.js:928
|
||||
msgid "Quit Application"
|
||||
msgstr "ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰੋ"
|
||||
|
||||
#: ../extensions/dock/extension.js:822
|
||||
#: ../extensions/dock/extension.js:933
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
|
||||
|
||||
#: ../extensions/dock/extension.js:823
|
||||
#: ../extensions/dock/extension.js:934
|
||||
msgid "Add to Favorites"
|
||||
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
|
||||
|
||||
@@ -164,8 +163,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' or 'rescale'"
|
||||
msgid ""
|
||||
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
|
||||
"'move'"
|
||||
@@ -181,7 +178,23 @@ msgstr "ਆਪੇ ਓਹਲੇ ਹੋਣ ਅੰਤਰਾਲ"
|
||||
msgid "Sets the time duration of the autohide effect."
|
||||
msgstr "ਆਪੇ-ਓਹਲੇ ਕਰਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਸਮੇਂ ਦਾ ਅੰਤਰਾਲ ਸੈੱਟ ਕਰੋ।"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:66
|
||||
#: ../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:68
|
||||
msgid "Open file manager"
|
||||
msgstr "ਫਾਇਲ ਮੈਨੇਜਰ ਖੋਲ੍ਹੋ"
|
||||
|
||||
@@ -256,7 +269,7 @@ msgid ""
|
||||
"restarting the shell to have any effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../extensions/places-menu/extension.js:37
|
||||
#: ../extensions/places-menu/extension.js:39
|
||||
msgid "Removable Devices"
|
||||
msgstr "ਹਟਾਉਣਯੋਗ ਜੰਤਰ"
|
||||
|
||||
@@ -269,23 +282,19 @@ msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
|
||||
msgstr "ਥੀਮ ਦਾ ਨਾਂ, ਜੋ ~/.themes/name/gnome-shell ਤੋਂ ਲੋਡ ਕੀਤਾ ਜਾਵੇਗਾ"
|
||||
|
||||
#: ../extensions/workspace-indicator/extension.js:30
|
||||
#| msgid "Workspace & Icons"
|
||||
msgid "Workspace Indicator"
|
||||
msgstr "ਵਰਕਸਪੇਸ ਇੰਡੀਕੇਟਰ"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:151
|
||||
#| msgid "Workspace & Icons"
|
||||
#: ../extensions/workspace-indicator/prefs.js:141
|
||||
msgid "Workspace names:"
|
||||
msgstr "ਵਰਕਸਪੇਸ ਨਾਂ:"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:162
|
||||
#| msgid "Native"
|
||||
#: ../extensions/workspace-indicator/prefs.js:152
|
||||
msgid "Name"
|
||||
msgstr "ਨਾਂ"
|
||||
|
||||
#: ../extensions/workspace-indicator/prefs.js:196
|
||||
#: ../extensions/workspace-indicator/prefs.js:186
|
||||
#, c-format
|
||||
#| msgid "Workspace & Icons"
|
||||
msgid "Workspace %d"
|
||||
msgstr "ਵਰਕਸਪੇਸ %d"
|
||||
|
||||
@@ -309,6 +318,22 @@ msgstr "ਉਤਲਾ ਹੇਠ"
|
||||
msgid "Configure display settings..."
|
||||
msgstr "ਡਿਸਪਲੇਅ ਸੈਟਿੰਗ ਸੰਰਚਨਾ..."
|
||||
|
||||
#~ msgid "The alt tab behaviour."
|
||||
#~ msgstr "alt tab ਰਵੱਈਆ ਹੈ।"
|
||||
|
||||
#~| msgid ""
|
||||
#~| "Sets the Alt-Tab behaviour. Possible values are: native, all_thumbnails "
|
||||
#~| "and workspace_icons."
|
||||
#~ msgid ""
|
||||
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
#~ "workspace_icons. See the configuration dialogs for details."
|
||||
#~ msgstr ""
|
||||
#~ "Alt-Tab ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ। ਸੰਭਵ ਮੁੱਲ ਹਨ: all_thumbnails ਅਤੇ workspace_icons। ਵੇਰਵੇ ਲਈ "
|
||||
#~ "ਸੰਰਚਨਾ ਡਾਈਲਾਗ ਵੇਖੋ।"
|
||||
|
||||
#~ msgid "Workspace & Icons"
|
||||
#~ msgstr "ਵਰਕਸਪੇਸ ਅਤੇ ਆਈਕਾਨ"
|
||||
|
||||
#~ msgid "Available"
|
||||
#~ msgstr "ਉਪਲੱਬਧ"
|
||||
|
||||
|
||||
131
po/pl.po
131
po/pl.po
@@ -4,12 +4,14 @@
|
||||
# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
|
||||
# gnomepl@aviary.pl
|
||||
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
# Piotr Drąg <piotrdrag@gmail.com>, 2011-2012.
|
||||
# Aviary.pl <gnomepl@aviary.pl>, 2011-2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-04-30 16:19+0200\n"
|
||||
"PO-Revision-Date: 2012-04-30 16:20+0200\n"
|
||||
"POT-Creation-Date: 2012-09-04 00:15+0200\n"
|
||||
"PO-Revision-Date: 2012-09-04 00:17+0200\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||
"Language: pl\n"
|
||||
@@ -22,76 +24,67 @@ msgstr ""
|
||||
"X-Poedit-Country: Poland\n"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "The alt tab behaviour."
|
||||
msgstr "Zachowanie Alt+Tab."
|
||||
msgid "The application icon mode."
|
||||
msgstr "Tryb ikon programów."
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
"workspace_icons. See the configuration dialogs for details."
|
||||
"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 ""
|
||||
"Ustawia zachowanie Alt-Tab. Możliwe wartości: all_thumbnails i "
|
||||
"workspace_icons. Proszę zobaczyć okno konfiguracji, aby uzyskać więcej "
|
||||
"informacji."
|
||||
"Konfiguruje, jak wyświetlać okna w przełączniku. Prawidłowe możliwości to "
|
||||
"\"thumbnail-only\" (wyświetla miniaturę okna), \"app-icon-only\" (wyświetla "
|
||||
"tylko ikonę programu) lub \"both\" (wyświetla oba)."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:26
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Tylko miniatury"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Wszystko i miniatury"
|
||||
msgid "Application icon only"
|
||||
msgstr "Tylko ikony programów"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid ""
|
||||
"This mode presents all applications from all workspaces in one selection "
|
||||
"list. Instead of using the application icon of every window, it uses small "
|
||||
"thumbnails resembling the window itself."
|
||||
msgstr ""
|
||||
"Ten tryb przedstawia wszystkie programy ze wszystkich obszarów roboczych i "
|
||||
"na jednej liście wyboru. Zamiast używać ikony programu każdego okna używa "
|
||||
"małych miniatur samych okien."
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Miniatura i ikona programu"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:34
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Obszar roboczy i ikony"
|
||||
#: ../extensions/alternate-tab/prefs.js:43
|
||||
msgid "Present windows as"
|
||||
msgstr "Wyświetlanie okien jako"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:35
|
||||
msgid ""
|
||||
"This mode let's you switch between the applications of your current "
|
||||
"workspace and gives you additionally the option to switch to the last used "
|
||||
"application of your previous workspace. This is always the last symbol in "
|
||||
"the list and is segregated by a separator/vertical line if available. \n"
|
||||
"Every window is represented by its application icon."
|
||||
msgstr ""
|
||||
"Ten tryb umożliwia przełączanie między programami na bieżącym obszarze "
|
||||
"roboczym i udostępnia dodatkową opcję przełączenia na ostatnio użyty program "
|
||||
"poprzedniego obszaru roboczego. Jest to zawsze ostatni symbol na liście, "
|
||||
"oddzielony pionową linią. \n"
|
||||
"Każde okno jest przedstawiane przez swoją ikonę."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:41
|
||||
msgid "Move current selection to front before closing the popup"
|
||||
msgstr ""
|
||||
"Przesuwanie bieżącego zaznaczenia na przód przed zamknięciem okna "
|
||||
"wyskakującego"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:58
|
||||
msgid ""
|
||||
"The Alternate Tab can be used in different modes, that affect the way "
|
||||
"windows are chosen and presented."
|
||||
msgstr ""
|
||||
"Alternatywna tabulacja może być używana w różnych trybach, które wpływają na "
|
||||
"sposób wybierania i przedstawiania okien."
|
||||
#: ../extensions/alternate-tab/prefs.js:68
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Wyświetlanie tylko okien w bieżącym obszarze roboczym"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:64
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
msgid "Suspend"
|
||||
msgstr "Uśpij"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:69
|
||||
#: ../extensions/alternative-status-menu/extension.js:73
|
||||
msgid "Hibernate"
|
||||
msgstr "Hibernuj"
|
||||
|
||||
#: ../extensions/alternative-status-menu/extension.js:74
|
||||
msgid "Power Off..."
|
||||
msgstr "Wyłącz komputer..."
|
||||
#: ../extensions/alternative-status-menu/extension.js:78
|
||||
msgid "Power Off"
|
||||
msgstr "Wyłącz komputer"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
|
||||
msgid "Enable suspending"
|
||||
msgstr "Włączenie usypiania"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
|
||||
msgid "Control the visibility of the Suspend menu item"
|
||||
msgstr "Kontrola widoczności pozycji \"Uśpij\" menu"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
|
||||
msgid "Enable hibernating"
|
||||
msgstr "Włączenie hibernacji"
|
||||
|
||||
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
|
||||
msgid "Control the visibility of the Hibernate menu item"
|
||||
msgstr "Kontrola widoczności pozycji \"Hibernuj\" menu"
|
||||
|
||||
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
|
||||
msgid "Application and workspace list"
|
||||
@@ -126,23 +119,23 @@ msgstr "Utwórz nową pasującą regułę"
|
||||
msgid "Add"
|
||||
msgstr "Dodaj"
|
||||
|
||||
#: ../extensions/dock/extension.js:577
|
||||
#: ../extensions/dock/extension.js:600
|
||||
msgid "Drag here to add favorites"
|
||||
msgstr "Przeciągnięcie tutaj dodaje do ulubionych"
|
||||
|
||||
#: ../extensions/dock/extension.js:903
|
||||
#: ../extensions/dock/extension.js:926
|
||||
msgid "New Window"
|
||||
msgstr "Nowe okno"
|
||||
|
||||
#: ../extensions/dock/extension.js:905
|
||||
#: ../extensions/dock/extension.js:928
|
||||
msgid "Quit Application"
|
||||
msgstr "Zakończ program"
|
||||
|
||||
#: ../extensions/dock/extension.js:910
|
||||
#: ../extensions/dock/extension.js:933
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Usuń z ulubionych"
|
||||
|
||||
#: ../extensions/dock/extension.js:911
|
||||
#: ../extensions/dock/extension.js:934
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj do ulubionych"
|
||||
|
||||
@@ -202,7 +195,11 @@ msgstr ""
|
||||
"Ustawia, na którym monitorze wyświetlać dok. Domyślna wartość (-1) oznacza "
|
||||
"główny monitor."
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:66
|
||||
#: ../extensions/drive-menu/extension.js:57
|
||||
msgid "Removable devices"
|
||||
msgstr "Urządzenia wymienne"
|
||||
|
||||
#: ../extensions/drive-menu/extension.js:68
|
||||
msgid "Open file manager"
|
||||
msgstr "Otwórz menedżer plików"
|
||||
|
||||
@@ -286,10 +283,18 @@ msgstr ""
|
||||
"powłokę. Zmiana tego ustawienia wymaga ponownego uruchomienia powłoki, aby "
|
||||
"uwzględnić zmiany."
|
||||
|
||||
#: ../extensions/places-menu/extension.js:37
|
||||
#: ../extensions/places-menu/extension.js:39
|
||||
msgid "Removable Devices"
|
||||
msgstr "Urządzenia wymienne"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:213
|
||||
msgid "CPU"
|
||||
msgstr "Procesor"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:266
|
||||
msgid "Memory"
|
||||
msgstr "Pamięć"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Nazwa motywu"
|
||||
@@ -321,11 +326,11 @@ msgstr "Normalnie"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:31
|
||||
msgid "Left"
|
||||
msgstr "W lewo"
|
||||
msgstr "Lewo"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:32
|
||||
msgid "Right"
|
||||
msgstr "W prawo"
|
||||
msgstr "Prawo"
|
||||
|
||||
#: ../extensions/xrandr-indicator/extension.js:33
|
||||
msgid "Upside-down"
|
||||
|
||||
101
po/sl.po
101
po/sl.po
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell-extensions master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
|
||||
"POT-Creation-Date: 2012-06-08 12:07+0000\n"
|
||||
"PO-Revision-Date: 2012-06-08 20:51+0100\n"
|
||||
"POT-Creation-Date: 2012-08-29 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-08-29 09:10+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: \n"
|
||||
@@ -22,40 +22,32 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
|
||||
msgid "The alt tab behaviour."
|
||||
msgstr "Obnašanje tipk Alt-Tab"
|
||||
msgid "The application icon mode."
|
||||
msgstr "Ikonski način programa."
|
||||
|
||||
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
|
||||
msgid "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and workspace_icons. See the configuration dialogs for details."
|
||||
msgstr "Določi obnašanje tipk Alt-Tab. Mogoče vrednosti so: vse_sličice in ikone_delovne_površine. Za več podrobnosti si oglejte nastavitve."
|
||||
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 "Nastavitev prikaza oken v preklopniku. Veljavne možnosti so 'le sličice', kar pokaže pomanjšano sličico okna, 'le ikono programa', kar pokaže ikono in možnost 'oboje', torej ikono in pomanjšano sličico."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:26
|
||||
msgid "Thumbnail only"
|
||||
msgstr "Le sličice"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:27
|
||||
msgid "All & Thumbnails"
|
||||
msgstr "Vse in sličice"
|
||||
msgid "Application icon only"
|
||||
msgstr "Le ikono programa"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:28
|
||||
msgid "This mode presents all applications from all workspaces in one selection list. Instead of using the application icon of every window, it uses small thumbnails resembling the window itself."
|
||||
msgstr "Ta način prikazuje vse programe na vseh delovnih površinah na enem izbirnem seznamu. Namesto uporabe ikone programa na vsakem oknu, uporablja majhne sličice, ki predstavljajo samo okno."
|
||||
msgid "Thumbnail and application icon"
|
||||
msgstr "Sličice in ikono programa"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:34
|
||||
msgid "Workspace & Icons"
|
||||
msgstr "Delovne površine in ikone"
|
||||
#: ../extensions/alternate-tab/prefs.js:43
|
||||
msgid "Present windows as"
|
||||
msgstr "Pokaži okna kot"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:35
|
||||
msgid ""
|
||||
"This mode let's you switch between the applications of your current workspace and gives you additionally the option to switch to the last used application of your previous workspace. This is always the last symbol in the list and is segregated by a separator/vertical line if available. \n"
|
||||
"Every window is represented by its application icon."
|
||||
msgstr ""
|
||||
"Ta način omogoča preklop med programi trenutne delovne površine in hkrati omogoča izbiro na zadnje uporabljenega okna predhodne delovne površine. Ta predmet je vedno zapisan kot zadnji predmet seznama in je ločen z ločilnikom ali navpično črto.\n"
|
||||
"Vsako okno je prikazano z ikono programa."
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:41
|
||||
msgid "Move current selection to front before closing the popup"
|
||||
msgstr "Premakni trenutni izbor v ospredje pred zapiranjem pojavnega okna"
|
||||
|
||||
#: ../extensions/alternate-tab/prefs.js:58
|
||||
msgid "The Alternate Tab can be used in different modes, that affect the way windows are chosen and presented."
|
||||
msgstr "Nadomestni zavihek je mogoče uporabiti pri različnih načinih dela, ki vplivajo na način izbire oken."
|
||||
#: ../extensions/alternate-tab/prefs.js:68
|
||||
msgid "Show only windows in the current workspace"
|
||||
msgstr "Pokaži le okna trenutne delovne površine"
|
||||
|
||||
#. add the new entries
|
||||
#: ../extensions/alternative-status-menu/extension.js:68
|
||||
@@ -253,6 +245,14 @@ msgstr "Izbrana možnost določi postavitev nazivov oken na vrh posamezne sliči
|
||||
msgid "Removable Devices"
|
||||
msgstr "Odstranljive naprave"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:213
|
||||
msgid "CPU"
|
||||
msgstr "CPE"
|
||||
|
||||
#: ../extensions/systemMonitor/extension.js:266
|
||||
msgid "Memory"
|
||||
msgstr "Pomnilnik"
|
||||
|
||||
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
|
||||
msgid "Theme name"
|
||||
msgstr "Ime teme"
|
||||
@@ -298,3 +298,48 @@ msgstr "Zgoraj-navzdol"
|
||||
msgid "Configure display settings..."
|
||||
msgstr "Nastavitve zaslona ..."
|
||||
|
||||
#~ msgid "The alt tab behaviour."
|
||||
#~ msgstr "Obnašanje tipk Alt-Tab"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
|
||||
#~ "workspace_icons. See the configuration dialogs for details."
|
||||
#~ msgstr ""
|
||||
#~ "Določi obnašanje tipk Alt-Tab. Mogoče vrednosti so: vse_sličice in "
|
||||
#~ "ikone_delovne_površine. Za več podrobnosti si oglejte nastavitve."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This mode presents all applications from all workspaces in one selection "
|
||||
#~ "list. Instead of using the application icon of every window, it uses "
|
||||
#~ "small thumbnails resembling the window itself."
|
||||
#~ msgstr ""
|
||||
#~ "Ta način prikazuje vse programe na vseh delovnih površinah na enem "
|
||||
#~ "izbirnem seznamu. Namesto uporabe ikone programa na vsakem oknu, "
|
||||
#~ "uporablja majhne sličice, ki predstavljajo samo okno."
|
||||
|
||||
#~ msgid "Workspace & Icons"
|
||||
#~ msgstr "Delovne površine in ikone"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This mode let's you switch between the applications of your current "
|
||||
#~ "workspace and gives you additionally the option to switch to the last "
|
||||
#~ "used application of your previous workspace. This is always the last "
|
||||
#~ "symbol in the list and is segregated by a separator/vertical line if "
|
||||
#~ "available. \n"
|
||||
#~ "Every window is represented by its application icon."
|
||||
#~ msgstr ""
|
||||
#~ "Ta način omogoča preklop med programi trenutne delovne površine in hkrati "
|
||||
#~ "omogoča izbiro na zadnje uporabljenega okna predhodne delovne površine. "
|
||||
#~ "Ta predmet je vedno zapisan kot zadnji predmet seznama in je ločen z "
|
||||
#~ "ločilnikom ali navpično črto.\n"
|
||||
#~ "Vsako okno je prikazano z ikono programa."
|
||||
|
||||
#~ msgid "Move current selection to front before closing the popup"
|
||||
#~ msgstr "Premakni trenutni izbor v ospredje pred zapiranjem pojavnega okna"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The Alternate Tab can be used in different modes, that affect the way "
|
||||
#~ "windows are chosen and presented."
|
||||
#~ msgstr ""
|
||||
#~ "Nadomestni zavihek je mogoče uporabiti pri različnih načinih dela, ki "
|
||||
#~ "vplivajo na način izbire oken."
|
||||
|
||||
Reference in New Issue
Block a user