Compare commits

...

21 Commits

Author SHA1 Message Date
Florian Müllner
fb66afbf71 Bump version to 3.38.2
Update NEWS.
2020-12-03 00:14:49 +01:00
Florian Müllner
365fa6abc9 Update sass submodule 2020-12-03 00:14:49 +01:00
Florian Müllner
d7a824f35f workspace-indicator: Use overlap to determine preview visibility
In order to better reflect the actual workspace, show any preview
that is at least partially located on the monitor, not only those
that have the major part on that monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 50d3ee5703)
2020-12-03 00:09:21 +01:00
Florian Müllner
0d8e412220 window-list: Use overlap to determine preview visibility
In order to better reflect the actual workspace, show any preview
that is at least partially located on the monitor, not only those
that have the major part on that monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 08dfb78815)
2020-12-03 00:09:19 +01:00
Florian Müllner
991f6ef508 workspace-indicator: Account for monitor offset in window previews
Windows' frame rects are in screen coordinates, while the workspace
thumbnails are based on the monitor work area. Unless we account
for the difference, previews end up mispositioned in multi-monitor
setups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 6949a5d075)
2020-12-03 00:09:16 +01:00
Florian Müllner
37f03f5e2e window-list: Account for monitor offset in window previews
Windows' frame rects are in screen coordinates, while the workspace
thumbnails are based on the monitor work area. Unless we account
for the difference, previews end up mispositioned in multi-monitor
setups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit 893d3b0473)
2020-12-03 00:09:12 +01:00
Florian Müllner
b4a4ff0a06 workspace-indicator: Round calculated preview sizes
While not strictly necessary, there's no reason to differ from the
copy in the window-list extension ...

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/142>

(cherry picked from commit f5128e13f2)
2020-12-03 00:09:09 +01:00
Ray Strode
de8876bd5e window-list: Stop monitoring drag operation if window list is destroyed
If a user is in the middle of a drag in the window list and the
window list associated with the drag gets destroyed, the drag
monitor gets leaked.

Later when the drag motion is processed, spew goes to the log:

clutter_actor_contains: assertion 'CLUTTER_IS_ACTOR (self)' failed

Examples of triggers for this bug:

- The monitor topology changes
- The screen gets locked during the drag

This commit fixes the spew and the leak by ensuring any pending
drag monitoring is disabled when the window lists are destroyed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/145>

(cherry picked from commit 8318ea919f)
2020-12-03 00:08:57 +01:00
Thun Pin
5ad272e628 window-navigator: Adjust to 3.38 overview changes
gnome-shell's overview code changed significantly in 3.38,
adjust the extension to work without the separate overlay.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/259

(cherry picked from commit 737c897624)
2020-12-03 00:08:30 +01:00
Florian Müllner
3b22582752 auto-move-windows: Exclude sticky windows from empty-check
We modify gnome-shell's workspace tracker to only remove empty
workspaces from the end. However we currently don't take into
account that sticky windows appear on all workspaces, so those
are preventing any workspace from getting removed at the moment.

Exclude them when determining whether a workspace is empty to
get the expected behavior.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/135

(cherry picked from commit 61cf679b8c)
2020-12-03 00:08:07 +01:00
Florian Müllner
e734fcbd21 window-list: Adjust to overview changes
Window DND in the overview is now based on the metaWindow,
not the window actor (misnamed as "real window").

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/133
2020-11-19 04:54:07 +01:00
Florian Müllner
435879c121 workspace-indicator: Adjust to overview changes
Window DND in the overview is now based on the metaWindow,
not the window actor (misnamed as "real window").

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/133
2020-11-19 04:54:07 +01:00
Florian Müllner
ed81650f55 window-list: Use custom layout manager for thumbnails
The current code positions window previews explicitly using a fixed
layout manager. For that it relies on a valid parent allocation,
which is error-prone and frequently results in warnings.

Address this by moving the positioning code into a custom layout
manager, and only update the visibility from the window preview.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/260
2020-10-21 13:44:44 +02:00
Florian Müllner
1276a880de workspace-indicator: Use custom layout manager for thumbnails
The current code positions window previews explicitly using a fixed
layout manager. For that it relies on a valid parent allocation,
which is error-prone and frequently results in warnings.

Address this by moving the positioning code into a custom layout
manager, and only update the visibility from the window preview.

https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/260
2020-10-21 13:44:44 +02:00
Sergio Costas
584016c291 window-list: Honor changes in skip-taskbar property
Although window-list checks the 'skip-taskbar' property when a
window is added to the desktop to decide wether it should be
shown in the bar or not, it doesn't honor that when the property
is changed after a window has already been added. Since the new
WaylandClient API allows to change this property for already
mapped windows, supporting this is a good idea.

This patch fixes this.

Fix https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/130


(cherry picked from commit b65f362f0d)
2020-10-08 21:50:07 +00:00
Florian Müllner
9e976f06b4 Bump version to 3.38.1
Update NEWS.
2020-10-05 20:43:21 +02:00
Florian Müllner
369801dbeb Update sass submodule 2020-10-05 20:42:16 +02:00
Yosef Or Boczko
2c3c7e8a73 Update Hebrew translation 2020-09-28 19:05:19 +00:00
Stas Solovey
bb8f34de83 Update Russian translation 2020-09-22 19:52:00 +00:00
Cheng-Chia Tseng
6c98658fe1 Update Chinese (Taiwan) translation 2020-09-22 15:07:44 +00:00
Yacine Bouklif
3f06c2bc04 Add Kabyle translation 2020-09-19 11:51:36 +00:00
13 changed files with 670 additions and 423 deletions

23
NEWS
View File

@@ -1,3 +1,26 @@
3.38.2
======
* window-list: Honor changes in skip-taskbar property [Sergio; !130]
* window-list, workspace-indicator: Improve previews in workspace thumbs
[Florian; #260, !142]
* window-list, workspace-indicator: Adjust to 3.38 changes [Florian; !133]
* auto-move: Improve behavior on multi-monitor setups [Florian; !135]
* windowNavigator: Adjust to 3.38 changes [Thun; #259]
* Misc. bug fixes [Ray; !145]
Contributors:
Sergio Costas, Florian Müllner, Thun Pin, Ray Strode
3.38.1
======
Contributors:
Yacine Bouklif, Florian Müllner
Translators:
Yacine Bouklif [kab], Cheng-Chia Tseng [zh_TW], Stas Solovey [ru],
Yosef Or Boczko [he]
3.38.0
======

View File

@@ -116,10 +116,12 @@ function myCheckWorkspaces() {
let keepAliveWorkspaces = [];
let foundNonEmpty = false;
for (let i = this._workspaces.length - 1; i >= 0; i--) {
if (!foundNonEmpty)
foundNonEmpty = this._workspaces[i].list_windows().length > 0;
else if (!this._workspaces[i]._keepAliveId)
if (!foundNonEmpty) {
foundNonEmpty = this._workspaces[i].list_windows().some(
w => !w.is_on_all_workspaces());
} else if (!this._workspaces[i]._keepAliveId) {
keepAliveWorkspaces.push(this._workspaces[i]);
}
}
// make sure the original method only removes empty workspaces at the end

View File

@@ -352,6 +352,9 @@ class WindowButton extends BaseButton {
super._init(perMonitor, monitorIndex);
this.metaWindow = metaWindow;
this._skipTaskbarId = metaWindow.connect('notify::skip-taskbar', () => {
this._updateVisibility();
});
this._updateVisibility();
this._windowTitle = new WindowTitle(this.metaWindow);
@@ -412,6 +415,7 @@ class WindowButton extends BaseButton {
_onDestroy() {
super._onDestroy();
this.metaWindow.disconnect(this._skipTaskbarId);
this.metaWindow.disconnect(this._workspaceChangedId);
global.display.disconnect(this._notifyFocusId);
this._contextMenu.destroy();
@@ -783,9 +787,9 @@ class WindowList extends St.Widget {
});
this._dragBeginId = Main.xdndHandler.connect('drag-begin',
this._onDragBegin.bind(this));
this._monitorDrag.bind(this));
this._dragEndId = Main.xdndHandler.connect('drag-end',
this._onDragEnd.bind(this));
this._stopMonitoringDrag.bind(this));
this._dragMonitor = {
dragMotion: this._onDragMotion.bind(this),
};
@@ -948,9 +952,6 @@ class WindowList extends St.Widget {
}
_onWindowAdded(ws, win) {
if (win.skip_taskbar)
return;
if (!this._grouped)
this._checkGrouping();
@@ -1016,11 +1017,11 @@ class WindowList extends St.Widget {
}
}
_onDragBegin() {
_monitorDrag() {
DND.addDragMonitor(this._dragMonitor);
}
_onDragEnd() {
_stopMonitoringDrag() {
DND.removeDragMonitor(this._dragMonitor);
this._removeActivateTimeout();
}
@@ -1094,6 +1095,7 @@ class WindowList extends St.Widget {
global.display.disconnect(this._fullscreenChangedId);
this._stopMonitoringDrag();
Main.xdndHandler.disconnect(this._dragBeginId);
Main.xdndHandler.disconnect(this._dragEndId);

View File

@@ -24,27 +24,14 @@ class WindowPreview extends St.Button {
this.connect('destroy', this._onDestroy.bind(this));
this._sizeChangedId = this._window.connect('size-changed',
this._relayout.bind(this));
() => this.queue_relayout());
this._positionChangedId = this._window.connect('position-changed',
this._relayout.bind(this));
this._minimizedChangedId = this._window.connect('notify::minimized',
this._relayout.bind(this));
this._monitorEnteredId = global.display.connect('window-entered-monitor',
this._relayout.bind(this));
this._monitorLeftId = global.display.connect('window-left-monitor',
this._relayout.bind(this));
// Do initial layout when we get a parent
let id = this.connect('parent-set', () => {
this.disconnect(id);
if (!this.get_parent())
return;
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._laterId = 0;
this._relayout();
return false;
() => {
this._updateVisible();
this.queue_relayout();
});
});
this._minimizedChangedId = this._window.connect('notify::minimized',
this._updateVisible.bind(this));
this._focusChangedId = global.display.connect('notify::focus-window',
this._onFocusChanged.bind(this));
@@ -52,19 +39,15 @@ class WindowPreview extends St.Button {
}
// needed for DND
get realWindow() {
return this._window.get_compositor_private();
get metaWindow() {
return this._window;
}
_onDestroy() {
this._window.disconnect(this._sizeChangedId);
this._window.disconnect(this._positionChangedId);
this._window.disconnect(this._minimizedChangedId);
global.display.disconnect(this._monitorEnteredId);
global.display.disconnect(this._monitorLeftId);
global.display.disconnect(this._focusChangedId);
if (this._laterId)
Meta.later_remove(this._laterId);
}
_onFocusChanged() {
@@ -74,26 +57,42 @@ class WindowPreview extends St.Button {
this.remove_style_class_name('active');
}
_relayout() {
let monitor = Main.layoutManager.findIndexForActor(this);
this.visible = monitor === this._window.get_monitor() &&
_updateVisible() {
const monitor = Main.layoutManager.findIndexForActor(this);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
this.visible = this._window.get_frame_rect().overlap(workArea) &&
this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace();
}
});
if (!this.visible)
return;
let WorkspaceLayout = GObject.registerClass(
class WorkspaceLayout extends Clutter.LayoutManager {
vfunc_get_preferred_width() {
return [0, 0];
}
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
let hscale = this.get_parent().allocation.get_width() / workArea.width;
let vscale = this.get_parent().allocation.get_height() / workArea.height;
vfunc_get_preferred_height() {
return [0, 0];
}
let frameRect = this._window.get_frame_rect();
this.set_size(
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
this.set_position(
Math.round(frameRect.x * hscale),
Math.round(frameRect.y * vscale));
vfunc_allocate(container, box) {
const monitor = Main.layoutManager.findIndexForActor(container);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
const hscale = box.get_width() / workArea.width;
const vscale = box.get_height() / workArea.height;
for (const child of container) {
const childBox = new Clutter.ActorBox();
const frameRect = child.metaWindow.get_frame_rect();
childBox.set_size(
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
childBox.set_origin(
Math.round((frameRect.x - workArea.x) * hscale),
Math.round((frameRect.y - workArea.y) * vscale));
child.allocate(childBox);
}
}
});
@@ -103,7 +102,7 @@ class WorkspaceThumbnail extends St.Button {
super._init({
style_class: 'workspace',
child: new Clutter.Actor({
layout_manager: new Clutter.BinLayout(),
layout_manager: new WorkspaceLayout(),
clip_to_allocation: true,
}),
});
@@ -134,16 +133,15 @@ class WorkspaceThumbnail extends St.Button {
}
acceptDrop(source) {
if (!source.realWindow)
if (!source.metaWindow)
return false;
let window = source.realWindow.get_meta_window();
this._moveWindow(window);
this._moveWindow(source.metaWindow);
return true;
}
handleDragOver(source) {
if (source.realWindow)
if (source.metaWindow)
return DND.DragMotionResult.MOVE_DROP;
else
return DND.DragMotionResult.CONTINUE;

View File

@@ -1,45 +1,12 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
/* exported init */
const { Clutter, GObject, St } = imports.gi;
const { Clutter, Graphene, GObject, St } = imports.gi;
const Main = imports.ui.main;
const Workspace = imports.ui.workspace;
const WorkspacesView = imports.ui.workspacesView;
class MyWindowOverlay extends Workspace.WindowOverlay {
constructor(windowClone, parentActor) {
super(windowClone, parentActor);
this._id = null;
this._text = new St.Label({
style_class: 'extension-windowsNavigator-window-tooltip',
visible: false,
});
parentActor.add_actor(this._text);
}
showTooltip() {
this._parentActor.set_child_below_sibling(this._text, null);
this._text.show();
this._text.text = (this._windowClone.slotId + 1).toString();
}
hideTooltip() {
if (this._text && this._text.visible)
this._text.hide();
}
relayout(animate) {
super.relayout(animate);
let [cloneX, cloneY, cloneWidth_, cloneHeight_] = this._windowClone.slot;
let textX = cloneX - 2;
let textY = cloneY - 2;
this._text.set_position(Math.floor(textX) + 5, Math.floor(textY) + 5);
this._parentActor.set_child_below_sibling(this._text, null);
}
}
const WINDOW_SLOT = 4;
var MyWorkspace = GObject.registerClass(
class MyWorkspace extends Workspace.Workspace {
@@ -61,57 +28,89 @@ class MyWorkspace extends Workspace.Workspace {
}
}
vfunc_allocate(box) {
super.vfunc_allocate(box);
if (this._tip)
this._tip.allocate_preferred_size(0, 0);
}
showTooltip() {
if (!this._tip || !this._actualGeometry)
if (!this._tip)
return;
this._tip.text = (this.metaWorkspace.index() + 1).toString();
// Hand code this instead of using _getSpacingAndPadding
// because that fails on empty workspaces
let node = this.get_theme_node();
let padding = {
left: node.get_padding(St.Side.LEFT),
top: node.get_padding(St.Side.TOP),
bottom: node.get_padding(St.Side.BOTTOM),
right: node.get_padding(St.Side.RIGHT),
};
let area = Workspace.padArea(this._actualGeometry, padding);
this._tip.x = area.x;
this._tip.y = area.y;
this._tip.show();
this.set_child_below_sibling(this._tip, null);
}
hideTooltip() {
if (!this._tip)
return;
if (!this._tip.get_parent())
return;
this._tip.hide();
if (this._tip)
this._tip.hide();
}
getWindowWithTooltip(id) {
for (let i = 0; i < this._windows.length; i++) {
if (this._windows[i].slotId + 1 === id)
return this._windows[i].metaWindow;
}
return null;
const slot = this.layout_manager._windowSlots[id - 1];
return slot ? slot[WINDOW_SLOT].metaWindow : null;
}
showWindowsTooltips() {
for (let i in this._windowOverlays) {
if (this._windowOverlays[i])
this._windowOverlays[i].showTooltip();
for (let i = 0; i < this.layout_manager._windowSlots.length; i++) {
if (this.layout_manager._windowSlots[i])
this.layout_manager._windowSlots[i][WINDOW_SLOT].showTooltip(`${i + 1}`);
}
}
hideWindowsTooltips() {
for (let i in this._windowOverlays) {
if (this._windowOverlays[i])
this._windowOverlays[i].hideTooltip();
for (let i in this.layout_manager._windowSlots) {
if (this.layout_manager._windowSlots[i])
this.layout_manager._windowSlots[i][WINDOW_SLOT].hideTooltip();
}
}
// overriding _addWindowClone to apply the tooltip patch on the cloned
// windowPreview
_addWindowClone(metaWindow) {
const clone = super._addWindowClone(metaWindow);
// appling the tooltip patch
(function patchPreview() {
this._text = new St.Label({
style_class: 'extension-windowsNavigator-window-tooltip',
visible: false,
});
this._text.add_constraint(new Clutter.BindConstraint({
source: this._borderCenter,
coordinate: Clutter.BindCoordinate.POSITION,
}));
this._text.add_constraint(new Clutter.AlignConstraint({
source: this._borderCenter,
align_axis: Clutter.AlignAxis.X_AXIS,
pivot_point: new Graphene.Point({ x: 0.5, y: -1 }),
factor: this._closeButtonSide === St.Side.LEFT ? 1 : 0,
}));
this._text.add_constraint(new Clutter.AlignConstraint({
source: this._borderCenter,
align_axis: Clutter.AlignAxis.Y_AXIS,
pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
factor: 0,
}));
this.add_child(this._text);
}).call(clone);
clone.showTooltip = function (text) {
this._text.set({ text });
this._text.show();
};
clone.hideTooltip = function () {
if (this._text && this._text.visible)
this._text.hide();
};
return clone;
}
});
var MyWorkspacesView = GObject.registerClass(
@@ -244,19 +243,16 @@ class MyWorkspacesView extends WorkspacesView.WorkspacesView {
class Extension {
constructor() {
this._origWindowOverlay = Workspace.WindowOverlay;
this._origWorkspace = Workspace.Workspace;
this._origWorkspacesView = WorkspacesView.WorkspacesView;
}
enable() {
Workspace.WindowOverlay = MyWindowOverlay;
Workspace.Workspace = MyWorkspace;
WorkspacesView.WorkspacesView = MyWorkspacesView;
}
disable() {
Workspace.WindowOverlay = this._origWindowOverlay;
Workspace.Workspace = this._origWorkspace;
WorkspacesView.WorkspacesView = this._origWorkspacesView;
}

View File

@@ -30,27 +30,14 @@ class WindowPreview extends St.Button {
this.connect('destroy', this._onDestroy.bind(this));
this._sizeChangedId = this._window.connect('size-changed',
this._relayout.bind(this));
() => this.queue_relayout());
this._positionChangedId = this._window.connect('position-changed',
this._relayout.bind(this));
this._minimizedChangedId = this._window.connect('notify::minimized',
this._relayout.bind(this));
this._monitorEnteredId = global.display.connect('window-entered-monitor',
this._relayout.bind(this));
this._monitorLeftId = global.display.connect('window-left-monitor',
this._relayout.bind(this));
// Do initial layout when we get a parent
let id = this.connect('parent-set', () => {
this.disconnect(id);
if (!this.get_parent())
return;
this._laterId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._laterId = 0;
this._relayout();
return false;
() => {
this._updateVisible();
this.queue_relayout();
});
});
this._minimizedChangedId = this._window.connect('notify::minimized',
this._updateVisible.bind(this));
this._focusChangedId = global.display.connect('notify::focus-window',
this._onFocusChanged.bind(this));
@@ -58,19 +45,15 @@ class WindowPreview extends St.Button {
}
// needed for DND
get realWindow() {
return this._window.get_compositor_private();
get metaWindow() {
return this._window;
}
_onDestroy() {
this._window.disconnect(this._sizeChangedId);
this._window.disconnect(this._positionChangedId);
this._window.disconnect(this._minimizedChangedId);
global.display.disconnect(this._monitorEnteredId);
global.display.disconnect(this._monitorLeftId);
global.display.disconnect(this._focusChangedId);
if (this._laterId)
Meta.later_remove(this._laterId);
}
_onFocusChanged() {
@@ -80,26 +63,42 @@ class WindowPreview extends St.Button {
this.remove_style_class_name('active');
}
_relayout() {
let monitor = Main.layoutManager.findIndexForActor(this);
this.visible = monitor === this._window.get_monitor() &&
_updateVisible() {
const monitor = Main.layoutManager.findIndexForActor(this);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
this.visible = this._window.get_frame_rect().overlap(workArea) &&
this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace();
}
});
if (!this.visible)
return;
let WorkspaceLayout = GObject.registerClass(
class WorkspaceLayout extends Clutter.LayoutManager {
vfunc_get_preferred_width() {
return [0, 0];
}
let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
let hscale = this.get_parent().allocation.get_width() / workArea.width;
let vscale = this.get_parent().allocation.get_height() / workArea.height;
vfunc_get_preferred_height() {
return [0, 0];
}
let frameRect = this._window.get_frame_rect();
this.set_size(
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
this.set_position(
Math.round(frameRect.x * hscale),
Math.round(frameRect.y * vscale));
vfunc_allocate(container, box) {
const monitor = Main.layoutManager.findIndexForActor(container);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
const hscale = box.get_width() / workArea.width;
const vscale = box.get_height() / workArea.height;
for (const child of container) {
const childBox = new Clutter.ActorBox();
const frameRect = child.metaWindow.get_frame_rect();
childBox.set_size(
Math.round(Math.min(frameRect.width, workArea.width) * hscale),
Math.round(Math.min(frameRect.height, workArea.height) * vscale));
childBox.set_origin(
Math.round((frameRect.x - workArea.x) * hscale),
Math.round((frameRect.y - workArea.y) * vscale));
child.allocate(childBox);
}
}
});
@@ -109,7 +108,7 @@ class WorkspaceThumbnail extends St.Button {
super._init({
style_class: 'workspace',
child: new Clutter.Actor({
layout_manager: new Clutter.BinLayout(),
layout_manager: new WorkspaceLayout(),
clip_to_allocation: true,
}),
});
@@ -140,16 +139,15 @@ class WorkspaceThumbnail extends St.Button {
}
acceptDrop(source) {
if (!source.realWindow)
if (!source.metaWindow)
return false;
let window = source.realWindow.get_meta_window();
this._moveWindow(window);
this._moveWindow(source.metaWindow);
return true;
}
handleDragOver(source) {
if (source.realWindow)
if (source.metaWindow)
return DND.DragMotionResult.MOVE_DROP;
else
return DND.DragMotionResult.CONTINUE;

View File

@@ -1,5 +1,5 @@
project('gnome-shell-extensions',
version: '3.38.0',
version: '3.38.2',
meson_version: '>= 0.44.0',
license: 'GPL2+'
)

View File

@@ -32,6 +32,7 @@ id
is
it
ja
kab
kk
km
kn

100
po/he.po
View File

@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-03-31 07:16+0000\n"
"PO-Revision-Date: 2020-04-01 18:20+0300\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-09-28 22:04+0300\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: Hebrew <yoseforb@gmail.com>\n"
"Language: he\n"
@@ -49,41 +49,27 @@ msgstr ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
#: extensions/auto-move-windows/prefs.js:59
msgid "Application"
msgstr "יישום"
#: extensions/auto-move-windows/prefs.js:35
#| msgid "Workspace Names"
msgid "Workspace Rules"
msgstr "כללי מרחב העבודה"
#: extensions/auto-move-windows/prefs.js:70
#: extensions/auto-move-windows/prefs.js:133
msgid "Workspace"
msgstr "מרחב עבודה"
#: extensions/auto-move-windows/prefs.js:88
#: extensions/auto-move-windows/prefs.js:243
msgid "Add Rule"
msgstr "הוספת כלל"
#: extensions/auto-move-windows/prefs.js:110
msgid "Create new matching rule"
msgstr "יצירת כלל חדש תואם"
#: extensions/auto-move-windows/prefs.js:116
msgid "Add"
msgstr "הוספה"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:103
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
#| msgid "Ejecting drive '%s' failed:"
msgid "Ejecting drive “%s” failed:"
msgstr "שליפת הכונן „%s” נכשלה:"
#: extensions/drive-menu/extension.js:119
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
msgstr "התקנים נתיקים"
#: extensions/drive-menu/extension.js:146
#| msgid "Open File"
#: extensions/drive-menu/extension.js:155
msgid "Open Files"
msgstr "פתיחת קבצים"
@@ -115,14 +101,13 @@ msgstr ""
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
#: extensions/places-menu/extension.js:80
#: extensions/places-menu/extension.js:84
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
msgid "Places"
msgstr "מיקומים"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
#| msgid "Failed to launch \"%s\""
msgid "Failed to launch “%s”"
msgstr "שיגור „%s” נכשל"
@@ -149,7 +134,6 @@ msgid "Cycle Screenshot Sizes"
msgstr "Cycle Screenshot Sizes"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#| msgid "Cycle Screenshot Sizes"
msgid "Cycle Screenshot Sizes Backward"
msgstr "Cycle Screenshot Sizes Backward"
@@ -181,27 +165,27 @@ msgstr "ביטול ההגדלה"
msgid "Maximize"
msgstr "הגדלה"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "מזעור הכל"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "ביטול מזעור הכל"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "הגדלת הכל"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "ביטול הגדלת הכל"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "סגירת הכל"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "רשימת חלונות"
@@ -210,9 +194,6 @@ msgid "When to group windows"
msgstr "מתי לקבץ חלונות"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#| msgid ""
#| "Decides when to group windows from the same application on the window "
#| "list. Possible values are \"never\", \"auto\" and \"always\"."
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
@@ -221,15 +202,11 @@ msgstr ""
"Possible values are “never”, “auto” and “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:82
#| msgid "Show only windows in the current workspace"
#: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces"
msgstr "הצגת חלונות מכל מרחבי העבודה"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#| msgid ""
#| "Whether to show the window list on all connected monitors or only on the "
#| "primary one."
msgid "Whether to show windows from all workspaces or only the current one."
msgstr "Whether to show windows from all workspaces or only the current one."
@@ -245,44 +222,57 @@ msgstr ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
#: extensions/window-list/prefs.js:25
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
msgstr "קיבוץ חלונות"
#: extensions/window-list/prefs.js:47
#: extensions/window-list/prefs.js:58
msgid "Never group windows"
msgstr "לעולם לא לקבץ חלונות"
#: extensions/window-list/prefs.js:48
#: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited"
msgstr "קיבוץ חלונות כאשר המקום מוגבל"
#: extensions/window-list/prefs.js:49
#: extensions/window-list/prefs.js:60
msgid "Always group windows"
msgstr "תמיד לקבץ חלונות"
#: extensions/window-list/prefs.js:75
#: extensions/window-list/prefs.js:94
msgid "Show on all monitors"
msgstr "הצגה בכל הצגים"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "מחוון מרחבי עבודה"
#: extensions/workspace-indicator/prefs.js:129
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names"
msgstr "שם מרחב העבודה"
#: extensions/workspace-indicator/prefs.js:149
msgid "Name"
msgstr "שם"
#: extensions/workspace-indicator/prefs.js:189
#: extensions/workspace-indicator/prefs.js:67
#, javascript-format
msgid "Workspace %d"
msgstr "מרחב עבודה %d"
#: extensions/workspace-indicator/prefs.js:218
#| msgid "Workspace"
msgid "Add Workspace"
msgstr "הוספת מרחב עבודה"
#~ msgid "Application"
#~ msgstr "יישום"
#~ msgid "Create new matching rule"
#~ msgstr "יצירת כלל חדש תואם"
#~ msgid "Add"
#~ msgstr "הוספה"
#~ msgid "Name"
#~ msgstr "שם"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Attach modal dialog to the parent window"

254
po/kab.po Normal file
View File

@@ -0,0 +1,254 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-09-14 20:54+0000\n"
"PO-Revision-Date: 2020-09-19 12:50+0100\n"
"Language: kab_DZ\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"
"Last-Translator: Yacine Bouklif <yacinebouklif@gmail.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME aklasiki"
#: data/gnome-classic.desktop.in:4
msgid "This session logs you into GNOME Classic"
msgstr "Tiɣimit-agi ak-teqqen ɣer GNOME aklasiki"
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "Inurifen"
#: extensions/apps-menu/extension.js:369
msgid "Applications"
msgstr "Isnasen"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
msgid "Application and workspace list"
msgstr "Tabdart n yisnasen akked tallunt n umahil"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr ""
"Tabdart n yiɣewwaren, yal yiwet tesɛa id n usnas (isem n ufaylu n desktop), "
"ad ḍefrent snat n tenqiḍin akked wuḍḍun n tallunt n umahil"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Ilugan n tallunt n umahil"
#: extensions/auto-move-windows/prefs.js:243
msgid "Add Rule"
msgstr "Rnu alugen"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Aḍeqqer n uḍebsi “%s” ur yeddi ara:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
msgstr "Ibenkan izirazen"
#: extensions/drive-menu/extension.js:155
msgid "Open Files"
msgstr "Ldi ifuyla"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "Seqdec ugar n yigdilen i yisfuyla"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
msgstr "Sers tawaṭṭfa n usfaylu uksawen"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
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 ""
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
msgid "Places"
msgstr "Imeḍqan"
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Asekker n “%s” ur yeddi ara"
#: extensions/places-menu/placeDisplay.js:61
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Aserkeb n ubleɣ “%s” ur yeddi ara"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
msgid "Computer"
msgstr "Aselkim"
#: extensions/places-menu/placeDisplay.js:359
msgid "Home"
msgstr "Asebter agejdan"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
msgstr "Snirem azeḍḍa"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
msgid "Cycle Screenshot Sizes"
msgstr ""
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
msgid "Cycle Screenshot Sizes Backward"
msgstr ""
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
msgid "Theme name"
msgstr "Isem n usentel"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Isem n usentel ara yettusidren si ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:98
msgid "Close"
msgstr "Mdel"
#: extensions/window-list/extension.js:118
msgid "Unminimize"
msgstr ""
#: extensions/window-list/extension.js:118
msgid "Minimize"
msgstr "Semẓi"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
msgstr ""
#: extensions/window-list/extension.js:125
msgid "Maximize"
msgstr ""
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "Semẓi akk"
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr ""
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "Semɣer akk"
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr ""
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "Mdel akk"
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Tabdart n yisfuyla"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
msgid "When to group windows"
msgstr "Melmi ara ttusgerwen yisfuyla"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Ad iwali ma ad isegrew isfuyla seg yiwen n usnas di tebdart n yisfuyla. "
"Azalen yellan: “never”, “auto” akked “always”."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces"
msgstr "Sken isfuyla si meṛṛa tallunin n umahil"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
msgstr ""
"Ma yella ad ttwaseknen yisfuyla si meṛṛa tallunin n umahil neɣ ala seg win "
"iremden."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Sken tabdart n yisfuyla ɣef yigdilen meṛṛa"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
msgstr ""
"Ma yella ad ttwaseknen yisfuyla si meṛṛa tallunin n umahil neɣ ala ɣef "
"uzwaran."
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
msgstr "Asegrew n yisfuyla"
#: extensions/window-list/prefs.js:58
msgid "Never group windows"
msgstr "Werǧin ad tesgerweḍ isfuyla"
#: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited"
msgstr "Segrew isfuyla ticki tallunt txuṣ"
#: extensions/window-list/prefs.js:60
msgid "Always group windows"
msgstr "Yalas ssegraw isfuyla"
#: extensions/window-list/prefs.js:94
msgid "Show on all monitors"
msgstr "Sken ɣef yigdilen meṛṛa"
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr ""
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names"
msgstr "Ismawen n tallunin n umahil"
#: extensions/workspace-indicator/prefs.js:67
#, javascript-format
msgid "Workspace %d"
msgstr "Tallunt n umahil %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Rnu tallunt n umahil"

308
po/ru.po
View File

@@ -7,11 +7,11 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2017-08-11 01:33+0000\n"
"PO-Revision-Date: 2017-09-20 11:37+0300\n"
"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-09-21 16:55+0300\n"
"Last-Translator: Alexey Rubtsov <rushills@gmail.com>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.0.3\n"
"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -29,73 +29,11 @@ msgstr "Классический GNOME"
msgid "This session logs you into GNOME Classic"
msgstr "Данный сеанс использует классический рабочий стол GNOME"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7
msgid "Attach modal dialog to the parent window"
msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
"Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
msgid "Arrangement of buttons on the titlebar"
msgstr "Расположение кнопок в заголовке"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17
msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
"Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при запуске "
"GNOME Shell."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Автоматически изменять размеры окна при перемещении окна к краям экрана"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32
msgid "Workspaces only on primary monitor"
msgstr "Рабочие места только на основном мониторе"
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
#: extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "Только миниатюры"
#: extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "Только значок приложения"
#: extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "Миниатюра и значок приложения"
#: extensions/alternate-tab/prefs.js:38
msgid "Present windows as"
msgstr "Отображать окна как"
#: extensions/alternate-tab/prefs.js:69
msgid "Show only windows in the current workspace"
msgstr "Отображать окна только текущей рабочей области"
#: extensions/apps-menu/extension.js:41
msgid "Activities Overview"
msgstr "Обзор"
#: extensions/apps-menu/extension.js:141
#: extensions/apps-menu/extension.js:113
msgid "Favorites"
msgstr "Избранное"
#: extensions/apps-menu/extension.js:436
#: extensions/apps-menu/extension.js:369
msgid "Applications"
msgstr "Приложения"
@@ -111,73 +49,29 @@ msgstr ""
"Список строк, содержащих идентификатор приложения (имя desktop-файла), за "
"которым следует двоеточие и номер рабочего места"
#: extensions/auto-move-windows/prefs.js:60
msgid "Application"
msgstr "Приложение"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "Правила для рабочей области"
#: extensions/auto-move-windows/prefs.js:69
#: extensions/auto-move-windows/prefs.js:127
msgid "Workspace"
msgstr "Рабочая область"
#: extensions/auto-move-windows/prefs.js:85
#: extensions/auto-move-windows/prefs.js:243
msgid "Add Rule"
msgstr "Добавить правило"
#: extensions/auto-move-windows/prefs.js:106
msgid "Create new matching rule"
msgstr "Создать новое правило соответствия"
#: extensions/auto-move-windows/prefs.js:111
msgid "Add"
msgstr "Добавить"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:107
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Не удалось извлечь диск «%s»:"
#: extensions/drive-menu/extension.js:125
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
msgstr "Съёмные устройства"
#: extensions/drive-menu/extension.js:150
#: extensions/drive-menu/extension.js:155
msgid "Open Files"
msgstr "Открыть файлы"
#: extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Привет, мир!"
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5
msgid "Alternative greeting text."
msgstr "Альтернативный текст приветствия."
#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr ""
"Если строка не пуста, то содержащийся в ней текст будет показан при нажатии "
"на панель."
#: extensions/example/prefs.js:30
msgid "Message"
msgstr "Сообщение"
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
#: extensions/example/prefs.js:43
msgid ""
"Example aims to show how to build well behaved extensions for the Shell and "
"as such it has little functionality on its own.\n"
"Nevertheless its possible to customize the greeting message."
msgstr ""
"Цель расширения Example — показать, как создавать расширения для Shell, само "
"по себе оно имеет малую функциональность.\n"
"Тем не менее, можно настроить приветственное сообщение."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
msgid "Use more screen for windows"
msgstr "Использовать дополнительную область экрана для окон"
@@ -207,31 +101,31 @@ msgstr ""
"умолчанию заголовки располагаются снизу). При изменении этого параметра, "
"чтобы оно вступило в силу, необходимо перезапустить Shell."
#: extensions/places-menu/extension.js:78
#: extensions/places-menu/extension.js:81
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
msgid "Places"
msgstr "Места"
#: extensions/places-menu/placeDisplay.js:65
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не удалось смонтировать том для «%s»"
#: extensions/places-menu/placeDisplay.js:78
#: extensions/places-menu/placeDisplay.js:46
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Не удалось запустить «%s»"
#: extensions/places-menu/placeDisplay.js:137
#: extensions/places-menu/placeDisplay.js:160
#: extensions/places-menu/placeDisplay.js:61
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Не удалось смонтировать том для «%s»"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
msgid "Computer"
msgstr "Компьютер"
#: extensions/places-menu/placeDisplay.js:303
#: extensions/places-menu/placeDisplay.js:359
msgid "Home"
msgstr "Домашняя папка"
#: extensions/places-menu/placeDisplay.js:347
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
msgstr "Обзор сети"
@@ -251,54 +145,49 @@ msgstr "Название темы"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Название темы, загружаемой из ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:110
#: extensions/window-list/extension.js:98
msgid "Close"
msgstr "Закрыть"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:129
#: extensions/window-list/extension.js:118
msgid "Unminimize"
msgstr "Вернуть"
#: extensions/window-list/extension.js:130
#: extensions/window-list/extension.js:118
msgid "Minimize"
msgstr "Свернуть"
#: extensions/window-list/extension.js:136
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
msgstr "Восстановить"
#: extensions/window-list/extension.js:137
#: extensions/window-list/extension.js:125
msgid "Maximize"
msgstr "Развернуть"
#: extensions/window-list/extension.js:420
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "Свернуть все"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:428
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "Вернуть все"
#: extensions/window-list/extension.js:436
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "Развернуть все"
#: extensions/window-list/extension.js:445
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "Восстановить все"
#: extensions/window-list/extension.js:454
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "Закрыть все"
#: extensions/window-list/extension.js:678
#: extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Индикатор рабочей области"
#: extensions/window-list/extension.js:842
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "Список окон"
@@ -316,10 +205,20 @@ msgstr ""
"«always» — всегда."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces"
msgstr "Отображать окна со всех рабочих областей"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
msgstr ""
"Показывать ли список окон со всех рабочих областей или только с текущей."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
msgstr "Показывать список окон на всех мониторах"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
@@ -327,39 +226,124 @@ msgstr ""
"Показывать ли список окон на всех подключенных мониторах или только на "
"основном."
#: extensions/window-list/prefs.js:32
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
msgstr "Группировка окон"
#: extensions/window-list/prefs.js:50
#: extensions/window-list/prefs.js:58
msgid "Never group windows"
msgstr "Никогда не группировать окна"
#: extensions/window-list/prefs.js:51
#: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited"
msgstr "Группировать окна, если место ограничено"
#: extensions/window-list/prefs.js:52
#: extensions/window-list/prefs.js:60
msgid "Always group windows"
msgstr "Всегда группировать окна"
#: extensions/window-list/prefs.js:75
#: extensions/window-list/prefs.js:94
msgid "Show on all monitors"
msgstr "Показывать на всех мониторах"
#: extensions/workspace-indicator/prefs.js:141
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "Индикатор рабочей области"
#: extensions/workspace-indicator/prefs.js:34
msgid "Workspace Names"
msgstr "Названия рабочих областей"
#: extensions/workspace-indicator/prefs.js:157
msgid "Name"
msgstr "Название"
#: extensions/workspace-indicator/prefs.js:198
#: extensions/workspace-indicator/prefs.js:67
#, javascript-format
msgid "Workspace %d"
msgstr "Рабочая область %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Добавить рабочую область"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
#~ msgid ""
#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell."
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Расположение кнопок в заголовке"
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при "
#~ "запуске GNOME Shell."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr ""
#~ "Автоматически изменять размеры окна при перемещении окна к краям экрана"
#~ msgid "Workspaces only on primary monitor"
#~ msgstr "Рабочие места только на основном мониторе"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя"
#~ msgid "Thumbnail only"
#~ msgstr "Только миниатюры"
#~ msgid "Application icon only"
#~ msgstr "Только значок приложения"
#~ msgid "Thumbnail and application icon"
#~ msgstr "Миниатюра и значок приложения"
#~ msgid "Present windows as"
#~ msgstr "Отображать окна как"
#~ msgid "Activities Overview"
#~ msgstr "Обзор"
#~ msgid "Application"
#~ msgstr "Приложение"
#~ msgid "Create new matching rule"
#~ msgstr "Создать новое правило соответствия"
#~ msgid "Add"
#~ msgstr "Добавить"
#~ msgid "Hello, world!"
#~ msgstr "Привет, мир!"
#~ msgid "Alternative greeting text."
#~ msgstr "Альтернативный текст приветствия."
#~ msgid ""
#~ "If not empty, it contains the text that will be shown when clicking on "
#~ "the panel."
#~ msgstr ""
#~ "Если строка не пуста, то содержащийся в ней текст будет показан при "
#~ "нажатии на панель."
#~ msgid "Message"
#~ msgstr "Сообщение"
#~ msgid ""
#~ "Example aims to show how to build well behaved extensions for the Shell "
#~ "and as such it has little functionality on its own.\n"
#~ "Nevertheless its possible to customize the greeting message."
#~ msgstr ""
#~ "Цель расширения Example — показать, как создавать расширения для Shell, "
#~ "само по себе оно имеет малую функциональность.\n"
#~ "Тем не менее, можно настроить приветственное сообщение."
#~ msgid "Name"
#~ msgstr "Название"
#~ msgid "CPU"
#~ msgstr "ЦП"

View File

@@ -9,18 +9,18 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions gnome-3-0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2020-04-17 16:03+0000\n"
"PO-Revision-Date: 2020-05-02 16:06+0800\n"
"POT-Creation-Date: 2020-08-12 23:03+0000\n"
"PO-Revision-Date: 2020-09-22 23:06+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese <zh-l10n@linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.4.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
msgstr "GNOME Classic"
@@ -48,27 +48,14 @@ msgstr ""
"字串的列表,每個都包含一個應用程式 id (桌面檔名稱),後面接著半形分號 \";\" 與"
"工作區號碼"
#: extensions/auto-move-windows/prefs.js:59
msgid "Application"
msgstr "應用程式"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
msgstr "工作區規則"
#: extensions/auto-move-windows/prefs.js:70
#: extensions/auto-move-windows/prefs.js:133
msgid "Workspace"
msgstr "工作區"
#: extensions/auto-move-windows/prefs.js:88
#: extensions/auto-move-windows/prefs.js:243
msgid "Add Rule"
msgstr "加入規則"
#: extensions/auto-move-windows/prefs.js:110
msgid "Create new matching rule"
msgstr "建立新的比對規則"
#: extensions/auto-move-windows/prefs.js:116
msgid "Add"
msgstr "加入"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
#: extensions/places-menu/placeDisplay.js:233
@@ -174,27 +161,27 @@ msgstr "取消最大化"
msgid "Maximize"
msgstr "最大化"
#: extensions/window-list/extension.js:429
#: extensions/window-list/extension.js:428
msgid "Minimize all"
msgstr "全部最小化"
#: extensions/window-list/extension.js:435
#: extensions/window-list/extension.js:434
msgid "Unminimize all"
msgstr "全部取消最小化"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:440
msgid "Maximize all"
msgstr "全部最大化"
#: extensions/window-list/extension.js:449
#: extensions/window-list/extension.js:448
msgid "Unmaximize all"
msgstr "全部取消最大化"
#: extensions/window-list/extension.js:457
#: extensions/window-list/extension.js:456
msgid "Close all"
msgstr "全部關閉"
#: extensions/window-list/extension.js:737
#: extensions/window-list/extension.js:734
msgid "Window List"
msgstr "視窗列表"
@@ -210,7 +197,7 @@ msgstr ""
"決定在視窗列表中何時群組視窗。可能的數值有「never」、「auto」、「always」。"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:89
#: extensions/window-list/prefs.js:100
msgid "Show windows from all workspaces"
msgstr "顯示所有工作區的視窗"
@@ -228,28 +215,28 @@ msgid ""
"primary one."
msgstr "是否在所有連接的螢幕顯示視窗列表或是只出現在主要螢幕上。"
#: extensions/window-list/prefs.js:25
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
msgstr "視窗群組"
#: extensions/window-list/prefs.js:47
#: extensions/window-list/prefs.js:58
msgid "Never group windows"
msgstr "永不群組視窗"
#: extensions/window-list/prefs.js:48
#: extensions/window-list/prefs.js:59
msgid "Group windows when space is limited"
msgstr "當空間受限時群組視窗"
#: extensions/window-list/prefs.js:49
#: extensions/window-list/prefs.js:60
msgid "Always group windows"
msgstr "永遠群組視窗"
#: extensions/window-list/prefs.js:82
#: extensions/window-list/prefs.js:94
msgid "Show on all monitors"
msgstr "顯示於所有螢幕"
#: extensions/window-list/workspaceIndicator.js:209
#: extensions/workspace-indicator/extension.js:215
#: extensions/window-list/workspaceIndicator.js:207
#: extensions/workspace-indicator/extension.js:213
msgid "Workspace Indicator"
msgstr "工作區指示器"
@@ -266,6 +253,18 @@ msgstr "工作區 %d"
msgid "Add Workspace"
msgstr "新增工作區"
#~ msgid "Application"
#~ msgstr "應用程式"
#~ msgid "Workspace"
#~ msgstr "工作區"
#~ msgid "Create new matching rule"
#~ msgstr "建立新的比對規則"
#~ msgid "Add"
#~ msgstr "加入"
#~ msgid "Name"
#~ msgstr "名稱"