New upstream version 47~beta

This commit is contained in:
Jeremy Bícha
2024-08-06 07:52:24 -04:00
31 changed files with 1295 additions and 1443 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ stages:
- deploy
default:
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/40:2024-02-23.0
image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/40:2024-07-11.0
# Cancel jobs if newer commits are pushed to the branch
interruptible: true
# Auto-retry jobs in case of infra failures
+21 -5
View File
@@ -1,15 +1,31 @@
46.2
====
47.beta
=======
* window-list: Modernize styling [Jakub; !330]
* Include "status-icons" extension [Florian; !194]
* Misc. bug fixes and cleanups [Florian; !328, !331, !327]
Contributors:
Florian Müllner, Jakub Steiner
Translators:
Sabri Ünal [tr], Chao-Hsiung Liao [zh_TW]
47.alpha
========
* Improve workspace previews in window-list and workspace-indicator
[Florian; !307, !316]
* apps-menu: Fix a11y of category labels [Florian; !319]
* window-list: Fix long-press support [Florian; !320]
* Misc. bug fixes and cleanups [Florian; !324]
* window-list: Animate transitions [Florian; !325]
* Misc. bug fixes and cleanups [Florian; !315, !321, !324]
Contributors:
Florian Müllner
Translators:
Hugo Carvalho [pt], Jose Riha [sk], Jordi Mas i Hernandez [ca],
Scrambled 777 [hi]
Jordi Mas i Hernandez [ca], Martin [sl], Hugo Carvalho [pt], Jose Riha [sk],
Scrambled 777 [hi], Artur S0 [ru], Милош Поповић [sr], Yosef Or Boczko [he],
Balázs Úr [hu]
46.1
====
+1 -1
View File
@@ -39,7 +39,7 @@ for f in $extensiondir/*; do
fi
cp $srcdir/NEWS $srcdir/COPYING $f
sources=(NEWS COPYING $(cd $f; ls *.js))
sources=(NEWS COPYING $(cd $f; ls *.js *.css 2>/dev/null))
[ -d $f/icons ] && sources+=(icons)
+91
View File
@@ -0,0 +1,91 @@
// SPDX-FileCopyrightText: 2018 Adel Gadllah <adel.gadllah@gmail.com>
// SPDX-FileCopyrightText: 2018 Florian Müllner <fmuellner@gnome.org>
//
// SPDX-License-Identifier: GPL-2.0-or-later
import Clutter from 'gi://Clutter';
import Shell from 'gi://Shell';
import St from 'gi://St';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import {Button as PanelButton} from 'resource:///org/gnome/shell/ui/panelMenu.js';
const PANEL_ICON_SIZE = 16;
const STANDARD_TRAY_ICON_IMPLEMENTATIONS = [
'bluetooth-applet',
'gnome-sound-applet',
'nm-applet',
'gnome-power-manager',
'keyboard',
'a11y-keyboard',
'kbd-scrolllock',
'kbd-numlock',
'kbd-capslock',
'ibus-ui-gtk',
];
export default class SysTray {
constructor() {
this._icons = new Map();
this._tray = null;
}
_onTrayIconAdded(o, icon) {
let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : '';
if (STANDARD_TRAY_ICON_IMPLEMENTATIONS.includes(wmClass))
return;
let button = new PanelButton(0.5, null, true);
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
let iconSize = PANEL_ICON_SIZE * scaleFactor;
icon.set({
width: iconSize,
height: iconSize,
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
});
let iconBin = new St.Widget({
layout_manager: new Clutter.BinLayout(),
style_class: 'system-status-icon',
});
iconBin.add_child(icon);
button.add_child(iconBin);
this._icons.set(icon, button);
button.connect('button-release-event',
(actor, event) => icon.click(event));
button.connect('key-press-event',
(actor, event) => icon.click(event));
const role = `${icon}`;
Main.panel.addToStatusArea(role, button);
}
_onTrayIconRemoved(o, icon) {
const button = this._icons.get(icon);
button?.destroy();
this._icons.delete(icon);
}
enable() {
this._tray = new Shell.TrayManager();
this._tray.connect('tray-icon-added',
this._onTrayIconAdded.bind(this));
this._tray.connect('tray-icon-removed',
this._onTrayIconRemoved.bind(this));
this._tray.manage_screen(Main.panel);
}
disable() {
this._icons.forEach(button => button.destroy());
this._icons.clear();
this._tray.unmanage_screen();
this._tray = null;
}
}
+9
View File
@@ -0,0 +1,9 @@
# SPDX-FileCopyrightText: 2018 Florian Müllner <fmuellner@gnome.org>
#
# SPDX-License-Identifier: GPL-2.0-or-later
extension_data += configure_file(
input: metadata_name + '.in',
output: metadata_name,
configuration: metadata_conf
)
+10
View File
@@ -0,0 +1,10 @@
{
"extension-id": "@extension_id@",
"uuid": "@uuid@",
"settings-schema": "@gschemaname@",
"gettext-domain": "@gettext_domain@",
"name": "Status Icons",
"description": "Show status icons in the top bar",
"shell-version": [ "@shell_current@" ],
"url": "@url@"
}
+81 -102
View File
@@ -19,15 +19,13 @@ import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/ex
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
import {DashItemContainer} from 'resource:///org/gnome/shell/ui/dash.js';
import {WorkspaceIndicator} from './workspaceIndicator.js';
const ICON_TEXTURE_SIZE = 24;
const DND_ACTIVATE_TIMEOUT = 500;
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const GroupingMode = {
NEVER: 0,
AUTO: 1,
@@ -165,14 +163,14 @@ class WindowTitle extends St.BoxLayout {
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
} else {
this._icon.child = new St.Icon({
icon_name: 'icon-missing',
icon_name: 'application-x-executable',
icon_size: ICON_TEXTURE_SIZE,
});
}
}
}
class BaseButton extends St.Button {
class BaseButton extends DashItemContainer {
static {
GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
@@ -186,12 +184,22 @@ class BaseButton extends St.Button {
}
constructor(perMonitor, monitorIndex) {
super({
super();
this._button = new St.Button({
style_class: 'window-button',
can_focus: true,
x_expand: true,
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
});
this.setChild(this._button);
this._button.connect('notify::hover', () => {
if (this._button.hover)
this.showLabel();
else
this.hideLabel();
});
this._perMonitor = perMonitor;
this._monitorIndex = monitorIndex;
@@ -199,7 +207,7 @@ class BaseButton extends St.Button {
this.connect('notify::allocation',
this._updateIconGeometry.bind(this));
this.connect('clicked', this._onClicked.bind(this));
this._button.connect('clicked', this._onClicked.bind(this));
this.connect('destroy', this._onDestroy.bind(this));
this.connect('popup-menu', this._onPopupMenu.bind(this));
@@ -216,12 +224,6 @@ class BaseButton extends St.Button {
this._windowEnteredOrLeftMonitor.bind(this),
this);
}
this._tooltip = new Tooltip(this, {
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
}
get active() {
@@ -244,6 +246,18 @@ class BaseButton extends St.Button {
this._updateVisibility();
}
showLabel() {
const [, , preferredTitleWidth] = this.label_actor.get_preferred_size();
const maxTitleWidth = this.label_actor.allocation.get_width();
const isTitleFullyShown = preferredTitleWidth <= maxTitleWidth;
const labelText = isTitleFullyShown
? '' : this.label_actor.text;
this.setLabelText(labelText);
super.showLabel();
}
_setLongPressTimeout() {
if (this._longPressTimeoutId)
return;
@@ -344,9 +358,9 @@ class BaseButton extends St.Button {
_updateStyle() {
if (this._isFocused())
this.add_style_class_name('focused');
this._button.add_style_class_name('focused');
else
this.remove_style_class_name('focused');
this._button.remove_style_class_name('focused');
}
_windowEnteredOrLeftMonitor(_metaDisplay, _monitorIndex, _metaWindow) {
@@ -382,7 +396,6 @@ class BaseButton extends St.Button {
}
_onDestroy() {
this._tooltip.destroy();
}
}
@@ -395,15 +408,17 @@ class WindowButton extends BaseButton {
super(perMonitor, monitorIndex);
this.metaWindow = metaWindow;
this._unmanaging = false;
metaWindow.connectObject(
'notify::skip-taskbar', () => this._updateVisibility(),
'workspace-changed', () => this._updateVisibility(),
'unmanaging', () => (this._unmanaging = true),
this);
this._updateVisibility();
this._windowTitle = new WindowTitle(this.metaWindow);
this.set_child(this._windowTitle);
this._button.set_child(this._windowTitle);
this.label_actor = this._windowTitle.label_actor;
this._contextMenu = new WindowContextMenu(this, this.metaWindow);
@@ -449,6 +464,9 @@ class WindowButton extends BaseButton {
}
_updateVisibility() {
if (this._unmanaging)
return;
this.visible = this._isWindowVisible(this.metaWindow);
}
@@ -532,7 +550,7 @@ class AppButton extends BaseButton {
this._updateVisibility();
let stack = new St.Widget({layout_manager: new Clutter.BinLayout()});
this.set_child(stack);
this._button.set_child(stack);
this._singleWindowTitle = new St.Bin({
x_expand: true,
@@ -729,28 +747,24 @@ class WindowList extends St.Widget {
let box = new St.BoxLayout({x_expand: true, y_expand: true});
this.add_child(box);
let layout = new Clutter.BoxLayout({homogeneous: true});
this._windowList = new St.Widget({
this._windowList = new St.BoxLayout({
style_class: 'window-list',
reactive: true,
layout_manager: layout,
x_align: Clutter.ActorAlign.START,
x_expand: true,
y_expand: true,
});
box.add_child(this._windowList);
this._windowList.connect('style-changed', () => {
let node = this._windowList.get_theme_node();
let spacing = node.get_length('spacing');
this._windowList.layout_manager.spacing = spacing;
});
this._windowList.connect('scroll-event', this._onScrollEvent.bind(this));
let indicatorsBox = new St.BoxLayout({x_align: Clutter.ActorAlign.END});
box.add_child(indicatorsBox);
this._workspaceIndicator = new WorkspaceIndicator();
this._workspaceIndicator = new BottomWorkspaceIndicator({
baseStyleClass: 'window-list-workspace-indicator',
settings,
});
indicatorsBox.add_child(this._workspaceIndicator.container);
this._mutterSettings = new Gio.Settings({schema_id: 'org.gnome.mutter'});
@@ -763,7 +777,9 @@ class WindowList extends St.Widget {
this._updateWorkspaceIndicatorVisibility();
this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menuManager.addMenu(this._workspaceIndicator.menu);
this._workspaceIndicator.connectObject('menu-set',
() => this._onWorkspaceMenuSet(), this);
this._onWorkspaceMenuSet();
Main.layoutManager.addChrome(this, {
affectsStruts: true,
@@ -822,7 +838,7 @@ class WindowList extends St.Widget {
this._windowSignals = new Map();
global.display.connectObject(
'window-created', (dsp, win) => this._addWindow(win), this);
'window-created', (dsp, win) => this._addWindow(win, true), this);
Main.xdndHandler.connectObject(
'drag-begin', () => this._monitorDrag(),
@@ -860,6 +876,11 @@ class WindowList extends St.Widget {
children[newActive].activate();
}
_onWorkspaceMenuSet() {
if (this._workspaceIndicator.menu)
this._menuManager.addMenu(this._workspaceIndicator.menu);
}
_updatePosition() {
this.set_position(
this._monitor.x,
@@ -934,14 +955,14 @@ class WindowList extends St.Widget {
w2.metaWindow.get_stable_sequence();
});
for (let i = 0; i < windows.length; i++)
this._addWindow(windows[i].metaWindow);
this._addWindow(windows[i].metaWindow, false);
} else {
let apps = this._appSystem.get_running().sort((a1, a2) => {
return _getAppStableSequence(a1) -
_getAppStableSequence(a2);
});
for (let i = 0; i < apps.length; i++)
this._addApp(apps[i]);
this._addApp(apps[i], false);
}
}
@@ -955,26 +976,26 @@ class WindowList extends St.Widget {
return;
if (app.state === Shell.AppState.RUNNING)
this._addApp(app);
this._addApp(app, true);
else if (app.state === Shell.AppState.STOPPED)
this._removeApp(app);
}
_addApp(app) {
_addApp(app, animate) {
let button = new AppButton(app, this._perMonitor, this._monitor.index);
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
button.show(animate);
}
_removeApp(app) {
let children = this._windowList.get_children();
let child = children.find(c => c.app === app);
if (child)
child.destroy();
child?.animateOutAndDestroy();
}
_addWindow(win) {
_addWindow(win, animate) {
if (!this._grouped)
this._checkGrouping();
@@ -992,6 +1013,7 @@ class WindowList extends St.Widget {
this._settings.bind('display-all-workspaces',
button, 'ignore-workspace', Gio.SettingsBindFlags.GET);
this._windowList.add_child(button);
button.show(animate);
}
_removeWindow(win) {
@@ -1008,8 +1030,7 @@ class WindowList extends St.Widget {
let children = this._windowList.get_children();
let child = children.find(c => c.metaWindow === win);
if (child)
child.destroy();
child?.animateOutAndDestroy();
}
_monitorDrag() {
@@ -1080,6 +1101,28 @@ class WindowList extends St.Widget {
}
}
class BottomWorkspaceIndicator extends WorkspaceIndicator {
static {
GObject.registerClass(this);
}
constructor(params) {
super(params);
this.remove_style_class_name('panel-button');
}
setMenu(menu) {
super.setMenu(menu);
if (!menu)
return;
this.menu.actor.updateArrowSide(St.Side.BOTTOM);
this.menu.actor.remove_style_class_name('panel-menu');
}
}
export default class WindowListExtension extends Extension {
constructor(metadata) {
super(metadata);
@@ -1131,67 +1174,3 @@ export default class WindowListExtension extends Extension {
return this._windowLists.some(list => list.contains(actor));
}
}
class Tooltip extends St.Label {
static {
GObject.registerClass(this);
}
constructor(widget, params) {
super(params);
this._widget = widget;
this._widget.connect('notify::hover', () => {
if (this._widget.hover)
this.open();
else
this.close();
});
}
open() {
const buttonTitleWidget = this._widget.label_actor;
const [, , preferredTitleWidth] = buttonTitleWidget.get_preferred_size();
const maxTitleWidth = buttonTitleWidget.allocation.get_width();
const isTitleFullyShown = preferredTitleWidth <= maxTitleWidth;
if (isTitleFullyShown)
return;
this.set({
text: this._widget.label_actor.get_text(),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this._widget.get_transformed_position();
const thumbWidth = this._widget.allocation.get_width();
const tipWidth = this.width;
const tipHeight = this.height;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY - tipHeight - TOOLTIP_OFFSET;
this.set_position(x, y);
this.ease({
opacity: 255,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this.visible = this._widget.hover),
});
}
close() {
this.ease({
opacity: 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this.visible = this._widget.hover),
});
}
}
+28 -1
View File
@@ -12,5 +12,32 @@ extension_data += files(
'stylesheet-light.css'
)
extension_sources += files('prefs.js', 'workspaceIndicator.js')
transform_stylesheet = [
'sed', '-E',
'-e', 's:^\.(workspace-indicator):.window-list-\\1:',
'-e', '/^@import/d',
'@INPUT@',
]
workspaceIndicatorSources = [
configure_file(
input: '../workspace-indicator/workspaceIndicator.js',
output: '@PLAINNAME@',
copy: true,
),
configure_file(
input: '../workspace-indicator/stylesheet-dark.css',
output: 'stylesheet-workspace-switcher-dark.css',
command: transform_stylesheet,
capture: true,
),
configure_file(
input: '../workspace-indicator/stylesheet-light.css',
output: 'stylesheet-workspace-switcher-light.css',
command: transform_stylesheet,
capture: true,
),
]
extension_sources += files('prefs.js') + workspaceIndicatorSources
extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
@@ -36,5 +36,9 @@ SPDX-License-Identifier: GPL-2.0-or-later
only on the primary one.
</description>
</key>
<key name="embed-previews" type="b">
<default>true</default>
<summary>Show workspace previews in window list</summary>
</key>
</schema>
</schemalist>
+13
View File
@@ -81,6 +81,19 @@ class WindowListPrefsWidget extends Adw.PreferencesPage {
});
row.add_suffix(toggle);
miscGroup.add(row);
toggle = new Gtk.Switch({
action_name: 'window-list.embed-previews',
valign: Gtk.Align.CENTER,
});
this._settings.bind('embed-previews',
toggle, 'active', Gio.SettingsBindFlags.DEFAULT);
row = new Adw.ActionRow({
title: _('Show workspace previews'),
activatable_widget: toggle,
});
row.add_suffix(toggle);
miscGroup.add(row);
}
}
+12 -41
View File
@@ -4,6 +4,7 @@
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
@import url("stylesheet-workspace-switcher-dark.css");
.window-list {
spacing: 2px;
@@ -33,8 +34,8 @@
}
.window-button > StWidget {
color: #bbb;
background-color: #1d1d1d;
color: #fff;
background-color: transparent;
border-radius: 4px;
padding: 3px 6px 1px;
transition: 100ms ease;
@@ -46,25 +47,25 @@
}
.window-button:hover > StWidget {
color: #fff;
background-color: #303030;
}
.window-button:active > StWidget,
.window-button:focus > StWidget {
color: #fff;
background-color: #3f3f3f;
background-color: st-lighten(#303030, 5%);
}
.window-button.focused > StWidget {
color: #fff;
background-color: #3f3f3f;
background-color: #5b5b5b;
}
.window-button.focused:active > StWidget {
color: #fff;
background-color: #3f3f3f;
}
.window-button.focused:hover > StWidget {
background-color: st-lighten(#5b5b5b, 5%);
}
.window-button.focused:active > StWidget {
background-color: st-lighten(#5b5b5b, 10%);
}
.window-button.minimized > StWidget {
color: #666;
@@ -81,36 +82,6 @@
height: 24px;
}
.window-list-workspace-indicator .status-label-bin {
background-color: rgba(200, 200, 200, 0.3);
padding: 5px;
margin: 3px;
}
.window-list-workspace-indicator .workspaces-box {
spacing: 3px;
padding: 5px;
}
.window-list-workspace-indicator .workspace {
width: 52px;
border-radius: 4px;
background-color: #1e1e1e;
}
.window-list-workspace-indicator .workspace.active {
background-color: #3f3f3f;
}
.window-list-window-preview {
background-color: #bebebe;
border-radius: 1px;
}
.window-list-window-preview.active {
background-color: #d4d4d4;
}
.notification {
font-weight: normal;
}
+34 -37
View File
@@ -6,6 +6,7 @@
*/
@import url("stylesheet-dark.css");
@import url("stylesheet-workspace-switcher-light.css");
#panel.bottom-panel {
border-top-width: 1px;
@@ -14,13 +15,10 @@
}
.bottom-panel .window-button > StWidget {
color: #2e3436;
background-color: #eee;
border-radius: 3px;
padding: 3px 6px 1px;
box-shadow: none;
text-shadow: none;
border: 1px solid rgba(0,0,0,0.2);
}
.bottom-panel .window-button > StWidget {
@@ -28,44 +26,43 @@
max-width: 18.75em;
}
.bottom-panel .window-button:hover > StWidget {
background-color: #f9f9f9;
}
.bottom-panel .window-button:active > StWidget,
.bottom-panel .window-button:focus > StWidget {
box-shadow: inset 0 1px 3px rgba(0,0,0,0.1);
}
.bottom-panel .window-button.focused > StWidget {
background-color: #ccc;
box-shadow: inset 0 1px 3px rgba(0,0,0,0.1);
}
.bottom-panel .window-button.focused:hover > StWidget {
background-color: #e9e9e9;
}
.bottom-panel .window-button.minimized > StWidget {
color: #888;
box-shadow: none;
}
/* workspace switcher */
.window-list-workspace-indicator .workspace {
border: 2px solid #f6f5f4;
background-color: #ccc;
.window-button > StWidget {
color: #000;
background-color: transparent;
}
.window-list-workspace-indicator .workspace.active {
border-color: #888;
.window-button > StWidget {
-st-natural-width: 18.75em;
max-width: 18.75em;
}
.window-list-window-preview {
background-color: #ededed;
border: 1px solid #ccc;
.window-button:hover > StWidget {
background-color: st-darken(#eee,5%);
}
.window-list-window-preview.active {
background-color: #f6f5f4;
.window-button:active > StWidget,
.window-button:focus > StWidget {
background-color: st-darken(#eee, 10%);
}
.window-button.focused > StWidget {
background-color: st-darken(#eee,15%);
}
.window-button.focused:hover > StWidget {
background-color: st-darken(#eee, 20%);
}
.window-button.focused:active > StWidget {
background-color: st-darken(#eee, 25%);
}
.window-button.minimized > StWidget {
color: #aaa;
background-color: #f9f9f9;
}
.window-button.minimized:active > StWidget {
color: #aaa;
background-color: #f9f9f9;
}
+5 -431
View File
@@ -4,443 +4,17 @@
//
// SPDX-License-Identifier: GPL-2.0-or-later
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import GObject from 'gi://GObject';
import Meta from 'gi://Meta';
import St from 'gi://St';
import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
import * as DND from 'resource:///org/gnome/shell/ui/dnd.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
class WindowPreview extends St.Button {
static {
GObject.registerClass(this);
}
constructor(window) {
super({
style_class: 'workspace-indicator-window-preview',
});
this._delegate = this;
DND.makeDraggable(this, {restoreOnSuccess: true});
this._window = window;
this._window.connectObject(
'size-changed', () => this._checkRelayout(),
'position-changed', () => this._checkRelayout(),
'notify::minimized', this._updateVisible.bind(this),
'notify::window-type', this._updateVisible.bind(this),
this);
this._updateVisible();
global.display.connectObject('notify::focus-window',
this._onFocusChanged.bind(this), this);
this._onFocusChanged();
}
// needed for DND
get metaWindow() {
return this._window;
}
_onFocusChanged() {
if (global.display.focus_window === this._window)
this.add_style_class_name('active');
else
this.remove_style_class_name('active');
}
_checkRelayout() {
const monitor = Main.layoutManager.findIndexForActor(this);
const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor);
if (this._window.get_frame_rect().overlap(workArea))
this.queue_relayout();
}
_updateVisible() {
this.visible = this._window.window_type !== Meta.WindowType.DESKTOP &&
this._window.showing_on_its_workspace();
}
}
class WorkspaceLayout extends Clutter.LayoutManager {
static {
GObject.registerClass(this);
}
vfunc_get_preferred_width() {
return [0, 0];
}
vfunc_get_preferred_height() {
return [0, 0];
}
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);
}
}
}
class WorkspaceThumbnail extends St.Button {
static {
GObject.registerClass(this);
}
constructor(index) {
super({
style_class: 'workspace',
child: new Clutter.Actor({
layout_manager: new WorkspaceLayout(),
clip_to_allocation: true,
x_expand: true,
y_expand: true,
}),
});
this._tooltip = new St.Label({
style_class: 'dash-label',
visible: false,
});
Main.uiGroup.add_child(this._tooltip);
this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
this._index = index;
this._delegate = this; // needed for DND
this._windowPreviews = new Map();
let workspaceManager = global.workspace_manager;
this._workspace = workspaceManager.get_workspace_by_index(index);
this._workspace.connectObject(
'window-added', (ws, window) => this._addWindow(window),
'window-removed', (ws, window) => this._removeWindow(window),
this);
global.display.connectObject('restacked',
this._onRestacked.bind(this), this);
this._workspace.list_windows().forEach(w => this._addWindow(w));
this._onRestacked();
}
acceptDrop(source) {
if (!source.metaWindow)
return false;
this._moveWindow(source.metaWindow);
return true;
}
handleDragOver(source) {
if (source.metaWindow)
return DND.DragMotionResult.MOVE_DROP;
else
return DND.DragMotionResult.CONTINUE;
}
_addWindow(window) {
if (this._windowPreviews.has(window))
return;
let preview = new WindowPreview(window);
preview.connect('clicked', (a, btn) => this.emit('clicked', btn));
this._windowPreviews.set(window, preview);
this.child.add_child(preview);
}
_removeWindow(window) {
let preview = this._windowPreviews.get(window);
if (!preview)
return;
this._windowPreviews.delete(window);
preview.destroy();
}
_onRestacked() {
let lastPreview = null;
let windows = global.get_window_actors().map(a => a.meta_window);
for (let i = 0; i < windows.length; i++) {
let preview = this._windowPreviews.get(windows[i]);
if (!preview)
continue;
this.child.set_child_above_sibling(preview, lastPreview);
lastPreview = preview;
}
}
_moveWindow(window) {
let monitorIndex = Main.layoutManager.findIndexForActor(this);
if (monitorIndex !== window.get_monitor())
window.move_to_monitor(monitorIndex);
window.change_workspace_by_index(this._index, false);
}
on_clicked() {
let ws = global.workspace_manager.get_workspace_by_index(this._index);
if (ws)
ws.activate(global.get_current_time());
}
_syncTooltip() {
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
visible: true,
opacity: 0,
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const thumbHeight = this.allocation.get_height();
const tipWidth = this._tooltip.width;
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY + thumbHeight + TOOLTIP_OFFSET;
this._tooltip.set_position(x, y);
}
this._tooltip.ease({
opacity: this.hover ? 255 : 0,
duration: TOOLTIP_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => (this._tooltip.visible = this.hover),
});
}
_onDestroy() {
this._tooltip.destroy();
}
}
class WorkspaceIndicator extends PanelMenu.Button {
static {
GObject.registerClass(this);
}
constructor() {
super(0.5, _('Workspace Indicator'));
let container = new St.Widget({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: true,
});
this.add_child(container);
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace_index();
this._statusLabel = new St.Label({
style_class: 'panel-workspace-indicator',
y_align: Clutter.ActorAlign.CENTER,
text: this._labelText(),
});
container.add_child(this._statusLabel);
this._thumbnailsBox = new St.BoxLayout({
style_class: 'panel-workspace-indicator-box',
y_expand: true,
reactive: true,
});
container.add_child(this._thumbnailsBox);
this._workspacesItems = [];
this._workspaceSection = new PopupMenu.PopupMenuSection();
this.menu.addMenuItem(this._workspaceSection);
workspaceManager.connectObject(
'notify::n-workspaces', this._nWorkspacesChanged.bind(this), GObject.ConnectFlags.AFTER,
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
'notify::layout-rows', this._updateThumbnailVisibility.bind(this),
this);
this.connect('scroll-event', this._onScrollEvent.bind(this));
this._thumbnailsBox.connect('scroll-event', this._onScrollEvent.bind(this));
this._createWorkspacesSection();
this._updateThumbnails();
this._updateThumbnailVisibility();
this._settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA});
this._settings.connectObject(`changed::${WORKSPACE_KEY}`,
this._updateMenuLabels.bind(this), this);
}
_onDestroy() {
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
super._onDestroy();
}
_updateThumbnailVisibility() {
const {workspaceManager} = global;
const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
this.reactive = useMenu;
this._statusLabel.visible = useMenu;
this._thumbnailsBox.visible = !useMenu;
// Disable offscreen-redirect when showing the workspace switcher
// so that clip-to-allocation works
Main.panel.set_offscreen_redirect(useMenu
? Clutter.OffscreenRedirect.ALWAYS
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
}
_onWorkspaceSwitched() {
this._currentWorkspace = global.workspace_manager.get_active_workspace_index();
this._updateMenuOrnament();
this._updateActiveThumbnail();
this._statusLabel.set_text(this._labelText());
}
_nWorkspacesChanged() {
this._createWorkspacesSection();
this._updateThumbnails();
this._updateThumbnailVisibility();
}
_updateMenuOrnament() {
for (let i = 0; i < this._workspacesItems.length; i++) {
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
}
}
_updateActiveThumbnail() {
let thumbs = this._thumbnailsBox.get_children();
for (let i = 0; i < thumbs.length; i++) {
if (i === this._currentWorkspace)
thumbs[i].add_style_class_name('active');
else
thumbs[i].remove_style_class_name('active');
}
}
_labelText(workspaceIndex) {
if (workspaceIndex === undefined) {
workspaceIndex = this._currentWorkspace;
return (workspaceIndex + 1).toString();
}
return Meta.prefs_get_workspace_name(workspaceIndex);
}
_updateMenuLabels() {
for (let i = 0; i < this._workspacesItems.length; i++)
this._workspacesItems[i].label.text = this._labelText(i);
}
_createWorkspacesSection() {
let workspaceManager = global.workspace_manager;
this._workspaceSection.removeAll();
this._workspacesItems = [];
this._currentWorkspace = workspaceManager.get_active_workspace_index();
let i = 0;
for (; i < workspaceManager.n_workspaces; i++) {
this._workspacesItems[i] = new PopupMenu.PopupMenuItem(this._labelText(i));
this._workspaceSection.addMenuItem(this._workspacesItems[i]);
this._workspacesItems[i].workspaceId = i;
this._workspacesItems[i].label_actor = this._statusLabel;
this._workspacesItems[i].connect('activate', (actor, _event) => {
this._activate(actor.workspaceId);
});
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
}
this._statusLabel.set_text(this._labelText());
}
_updateThumbnails() {
let workspaceManager = global.workspace_manager;
this._thumbnailsBox.destroy_all_children();
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
let thumb = new WorkspaceThumbnail(i);
this._thumbnailsBox.add_child(thumb);
}
this._updateActiveThumbnail();
}
_activate(index) {
let workspaceManager = global.workspace_manager;
if (index >= 0 && index < workspaceManager.n_workspaces) {
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
metaWorkspace.activate(global.get_current_time());
}
}
_onScrollEvent(actor, event) {
let direction = event.get_scroll_direction();
let diff = 0;
if (direction === Clutter.ScrollDirection.DOWN)
diff = 1;
else if (direction === Clutter.ScrollDirection.UP)
diff = -1;
else
return;
let newIndex = global.workspace_manager.get_active_workspace_index() + diff;
this._activate(newIndex);
}
}
import {WorkspaceIndicator} from './workspaceIndicator.js';
export default class WorkspaceIndicatorExtension extends Extension {
enable() {
this._indicator = new WorkspaceIndicator();
this._indicator = new WorkspaceIndicator({
settings: this.getSettings(),
});
Main.panel.addToStatusArea('workspace-indicator', this._indicator);
}
+6 -2
View File
@@ -7,6 +7,10 @@ extension_data += configure_file(
output: metadata_name,
configuration: metadata_conf
)
extension_data += files('stylesheet.css')
extension_data += files(
'stylesheet-dark.css',
'stylesheet-light.css',
)
extension_schemas += files('schemas/' + metadata_conf.get('gschemaname') + '.gschema.xml')
extension_sources += files('prefs.js')
extension_sources += files('prefs.js', 'workspaceIndicator.js')
+24 -2
View File
@@ -18,6 +18,25 @@ const N_ = e => e;
const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences';
const WORKSPACE_KEY = 'workspace-names';
class GeneralGroup extends Adw.PreferencesGroup {
static {
GObject.registerClass(this);
}
constructor(settings) {
super();
const row = new Adw.SwitchRow({
title: _('Show Previews In Top Bar'),
});
this.add(row);
settings.bind('embed-previews',
row, 'active',
Gio.SettingsBindFlags.DEFAULT);
}
}
class NewItem extends GObject.Object {}
GObject.registerClass(NewItem);
@@ -119,7 +138,7 @@ class WorkspacesList extends GObject.Object {
}
}
class WorkspaceSettingsWidget extends Adw.PreferencesGroup {
class WorkspacesGroup extends Adw.PreferencesGroup {
static {
GObject.registerClass(this);
@@ -265,6 +284,9 @@ class NewWorkspaceRow extends Adw.PreferencesRow {
export default class WorkspaceIndicatorPrefs extends ExtensionPreferences {
getPreferencesWidget() {
return new WorkspaceSettingsWidget();
const page = new Adw.PreferencesPage();
page.add(new GeneralGroup(this.getSettings()));
page.add(new WorkspacesGroup());
return page;
}
}
@@ -0,0 +1,15 @@
<!--
SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
SPDX-License-Identifier: GPL-2.0-or-later
-->
<schemalist gettext-domain="gnome-shell-extensions">
<schema id="org.gnome.shell.extensions.workspace-indicator"
path="/org/gnome/shell/extensions/workspace-indicator/">
<key name="embed-previews" type="b">
<default>true</default>
<summary>Show workspace previews in top bar</summary>
</key>
</schema>
</schemalist>
@@ -0,0 +1,76 @@
/*
* SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos <erick.red@gmail.com>
* SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
.workspace-indicator .status-label {
padding: 0 8px;
}
.workspace-indicator .workspaces-view.hfade {
-st-hfade-offset: 20px;
}
.workspace-indicator-menu .workspaces-view {
max-width: 480px;
}
.workspace-indicator .workspaces-box {
spacing: 3px;
}
.workspace-indicator-menu .workspaces-box {
padding: 5px;
spacing: 6px;
}
.workspace-indicator .workspace-box {
padding-top: 5px;
padding-bottom: 5px;
}
.workspace-indicator StButton:first-child:ltr > .workspace-box,
.workspace-indicator StButton:last-child:rtl > .workspace-box {
padding-left: 5px;
}
.workspace-indicator StButton:last-child:ltr > .workspace-box,
.workspace-indicator StButton:first-child:rtl > .workspace-box {
padding-right: 5px;
}
.workspace-indicator-menu .workspace-box {
spacing: 6px;
}
.workspace-indicator-menu .workspace,
.workspace-indicator .workspace {
border: 1px solid transparent;
border-radius: 4px;
background-color: #3f3f3f;
}
.workspace-indicator .workspace {
width: 52px;
}
.workspace-indicator-menu .workspace {
height: 80px;
width: 160px;
}
.workspace-indicator-menu .workspace.active,
.workspace-indicator .workspace.active {
border-color: #fff;
}
.workspace-indicator-window-preview {
background-color: #bebebe;
border: 1px solid #828282;
border-radius: 1px;
}
.workspace-indicator-window-preview.active {
background-color: #d4d4d4;
}
@@ -0,0 +1,25 @@
/*
* SPDX-FileCopyrightText: 2013 Florian Müllner <fmuellner@gnome.org>
* SPDX-FileCopyrightText: 2015 Jakub Steiner <jimmac@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
@import url("stylesheet-dark.css");
.workspace-indicator .workspace {
background-color: #ccc;
}
.workspace-indicator .workspace.active {
border-color: #888;
}
.workspace-indicator-window-preview {
background-color: #ededed;
border: 1px solid #ccc;
}
.workspace-indicator-window-preview.active {
background-color: #f6f5f4;
}
@@ -1,35 +0,0 @@
/*
* SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos <erick.red@gmail.com>
* SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
.panel-workspace-indicator {
padding: 0 8px;
}
.panel-workspace-indicator-box {
padding: 4px 0;
spacing: 4px;
}
.panel-workspace-indicator-box .workspace {
width: 40px;
border: 2px solid #000;
border-radius: 2px;
background-color: #595959;
}
.panel-workspace-indicator-box .workspace.active {
border-color: #fff;
}
.workspace-indicator-window-preview {
background-color: #bebebe;
border: 1px solid #828282;
}
.workspace-indicator-window-preview.active {
background-color: #d4d4d4;
}
@@ -1,4 +1,6 @@
// SPDX-FileCopyrightText: 2019 Florian Müllner <fmuellner@gnome.org>
// SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos <erick.red@gmail.com>
// SPDX-FileCopyrightText: 2011 Giovanni Campagna <gcampagna@src.gnome.org>
// SPDX-FileCopyrightText: 2017 Florian Müllner <fmuellner@gnome.org>
//
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -18,7 +20,9 @@ import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
const TOOLTIP_OFFSET = 6;
const TOOLTIP_ANIMATION_TIME = 150;
const MAX_THUMBNAILS = 6;
const SCROLL_TIME = 100;
let baseStyleClassName = '';
class WindowPreview extends St.Button {
static {
@@ -27,7 +31,7 @@ class WindowPreview extends St.Button {
constructor(window) {
super({
style_class: 'window-list-window-preview',
style_class: `${baseStyleClassName}-window-preview`,
});
this._delegate = this;
@@ -100,19 +104,39 @@ class WorkspaceLayout extends Clutter.LayoutManager {
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));
Math.round((frameRect.y - workArea.y) * vscale));
child.allocate(childBox);
}
}
}
class WorkspaceThumbnail extends St.Button {
static [GObject.properties] = {
'active': GObject.ParamSpec.boolean(
'active', '', '',
GObject.ParamFlags.READWRITE,
false),
'show-label': GObject.ParamSpec.boolean(
'show-label', '', '',
GObject.ParamFlags.READWRITE,
false),
};
static {
GObject.registerClass(this);
}
constructor(index) {
super({
super();
const box = new St.BoxLayout({
style_class: 'workspace-box',
y_expand: true,
vertical: true,
});
this.set_child(box);
this._preview = new St.Bin({
style_class: 'workspace',
child: new Clutter.Actor({
layout_manager: new WorkspaceLayout(),
@@ -120,7 +144,15 @@ class WorkspaceThumbnail extends St.Button {
x_expand: true,
y_expand: true,
}),
y_expand: true,
});
box.add_child(this._preview);
this._label = new St.Label({
x_align: Clutter.ActorAlign.CENTER,
text: Meta.prefs_get_workspace_name(index),
});
box.add_child(this._label);
this._tooltip = new St.Label({
style_class: 'dash-label',
@@ -128,9 +160,19 @@ class WorkspaceThumbnail extends St.Button {
});
Main.uiGroup.add_child(this._tooltip);
this.bind_property('show-label',
this._label, 'visible',
GObject.BindingFlags.SYNC_CREATE);
this.connect('destroy', this._onDestroy.bind(this));
this.connect('notify::hover', this._syncTooltip.bind(this));
const desktopSettings =
new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'});
desktopSettings.connectObject('changed::workspace-names', () => {
this._label.text = Meta.prefs_get_workspace_name(index);
}, this);
this._index = index;
this._delegate = this; // needed for DND
@@ -139,6 +181,10 @@ class WorkspaceThumbnail extends St.Button {
let workspaceManager = global.workspace_manager;
this._workspace = workspaceManager.get_workspace_by_index(index);
this._workspace.bind_property('active',
this, 'active',
GObject.BindingFlags.SYNC_CREATE);
this._workspace.connectObject(
'window-added', (ws, window) => this._addWindow(window),
'window-removed', (ws, window) => this._removeWindow(window),
@@ -151,6 +197,18 @@ class WorkspaceThumbnail extends St.Button {
this._onRestacked();
}
get active() {
return this._preview.has_style_class_name('active');
}
set active(active) {
if (active)
this._preview.add_style_class_name('active');
else
this._preview.remove_style_class_name('active');
this.notify('active');
}
acceptDrop(source) {
if (!source.metaWindow)
return false;
@@ -173,7 +231,7 @@ class WorkspaceThumbnail extends St.Button {
let preview = new WindowPreview(window);
preview.connect('clicked', (a, btn) => this.emit('clicked', btn));
this._windowPreviews.set(window, preview);
this.child.add_child(preview);
this._preview.child.add_child(preview);
}
_removeWindow(window) {
@@ -193,7 +251,7 @@ class WorkspaceThumbnail extends St.Button {
if (!preview)
continue;
this.child.set_child_above_sibling(preview, lastPreview);
this._preview.child.set_child_above_sibling(preview, lastPreview);
lastPreview = preview;
}
}
@@ -212,6 +270,9 @@ class WorkspaceThumbnail extends St.Button {
}
_syncTooltip() {
if (this.showLabel)
return;
if (this.hover) {
this._tooltip.set({
text: Meta.prefs_get_workspace_name(this._index),
@@ -220,16 +281,17 @@ class WorkspaceThumbnail extends St.Button {
});
const [stageX, stageY] = this.get_transformed_position();
const thumbWidth = this.allocation.get_width();
const tipWidth = this._tooltip.width;
const tipHeight = this._tooltip.height;
const [thumbWidth, thumbHeight] = this.allocation.get_size();
const [tipWidth, tipHeight] = this._tooltip.get_size();
const xOffset = Math.floor((thumbWidth - tipWidth) / 2);
const monitor = Main.layoutManager.findMonitorForActor(this);
const x = Math.clamp(
stageX + xOffset,
monitor.x,
monitor.x + monitor.width - tipWidth);
const y = stageY - tipHeight - TOOLTIP_OFFSET;
const y = stageY - monitor.y > thumbHeight + TOOLTIP_OFFSET
? stageY - tipHeight - TOOLTIP_OFFSET // show above
: stageY + thumbHeight + TOOLTIP_OFFSET; // show below
this._tooltip.set_position(x, y);
}
@@ -246,17 +308,136 @@ class WorkspaceThumbnail extends St.Button {
}
}
class WorkspacePreviews extends Clutter.Actor {
static [GObject.properties] = {
'show-labels': GObject.ParamSpec.boolean(
'show-labels', '', '',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
false),
};
static {
GObject.registerClass(this);
}
constructor(params) {
super({
...params,
layout_manager: new Clutter.BinLayout(),
reactive: true,
y_expand: true,
});
this.connect('scroll-event',
(a, event) => Main.wm.handleWorkspaceScroll(event));
const {workspaceManager} = global;
workspaceManager.connectObject(
'notify::n-workspaces', () => this._updateThumbnails(), GObject.ConnectFlags.AFTER,
'workspace-switched', () => this._updateScrollPosition(),
this);
this.connect('notify::mapped', () => {
if (this.mapped)
this._updateScrollPosition();
});
this._thumbnailsBox = new St.BoxLayout({
style_class: 'workspaces-box',
y_expand: true,
});
this._scrollView = new St.ScrollView({
style_class: 'workspaces-view hfade',
enable_mouse_scrolling: false,
hscrollbar_policy: St.PolicyType.EXTERNAL,
vscrollbar_policy: St.PolicyType.NEVER,
y_expand: true,
child: this._thumbnailsBox,
});
this.add_child(this._scrollView);
this._updateThumbnails();
}
_updateThumbnails() {
const {nWorkspaces} = global.workspace_manager;
this._thumbnailsBox.destroy_all_children();
for (let i = 0; i < nWorkspaces; i++) {
const thumb = new WorkspaceThumbnail(i);
this.bind_property('show-labels',
thumb, 'show-label',
GObject.BindingFlags.SYNC_CREATE);
this._thumbnailsBox.add_child(thumb);
}
if (this.mapped)
this._updateScrollPosition();
}
_updateScrollPosition() {
const adjustment = this._scrollView.hadjustment;
const {upper, pageSize} = adjustment;
let {value} = adjustment;
const activeWorkspace =
[...this._thumbnailsBox].find(a => a.active);
if (!activeWorkspace)
return;
let offset = 0;
const hfade = this._scrollView.get_effect('fade');
if (hfade)
offset = hfade.fade_margins.left;
let {x1, x2} = activeWorkspace.get_allocation_box();
let parent = activeWorkspace.get_parent();
while (parent !== this._scrollView) {
if (!parent)
throw new Error('actor not in scroll view');
const box = parent.get_allocation_box();
x1 += box.x1;
x2 += box.x1;
parent = parent.get_parent();
}
if (x1 < value + offset)
value = Math.max(0, x1 - offset);
else if (x2 > value + pageSize - offset)
value = Math.min(upper, x2 + offset - pageSize);
else
return;
adjustment.ease(value, {
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
duration: SCROLL_TIME,
});
}
}
export class WorkspaceIndicator extends PanelMenu.Button {
static {
GObject.registerClass(this);
}
constructor() {
constructor(params = {}) {
super(0.5, _('Workspace Indicator'), true);
this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM));
this.add_style_class_name('window-list-workspace-indicator');
this.remove_style_class_name('panel-button');
this.menu.actor.remove_style_class_name('panel-menu');
const {
baseStyleClass = 'workspace-indicator',
settings,
} = params;
this._settings = settings;
baseStyleClassName = baseStyleClass;
this.add_style_class_name(baseStyleClassName);
let container = new St.Widget({
layout_manager: new Clutter.BinLayout(),
@@ -268,163 +449,89 @@ export class WorkspaceIndicator extends PanelMenu.Button {
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace_index();
this._statusLabel = new St.Label({text: this._getStatusText()});
this._statusBin = new St.Bin({
style_class: 'status-label-bin',
x_expand: true,
y_expand: true,
child: this._statusLabel,
this._statusLabel = new St.Label({
style_class: 'status-label',
y_align: Clutter.ActorAlign.CENTER,
text: this._getStatusText(),
});
container.add_child(this._statusBin);
container.add_child(this._statusLabel);
this._thumbnailsBox = new St.BoxLayout({
style_class: 'workspaces-box',
y_expand: true,
reactive: true,
});
this._thumbnailsBox.connect('scroll-event',
this._onScrollEvent.bind(this));
container.add_child(this._thumbnailsBox);
this._thumbnails = new WorkspacePreviews();
container.add_child(this._thumbnails);
this._workspacesItems = [];
workspaceManager.connectObject(
'notify::n-workspaces', this._nWorkspacesChanged.bind(this), GObject.ConnectFlags.AFTER,
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
'notify::layout-rows', this._updateThumbnailVisibility.bind(this),
this);
this.connect('scroll-event', this._onScrollEvent.bind(this));
this._updateMenu();
this._updateThumbnails();
this._updateThumbnailVisibility();
this.connect('scroll-event',
(a, event) => Main.wm.handleWorkspaceScroll(event));
this._settings = new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'});
this._settings.connectObject('changed::workspace-names',
() => this._updateMenuLabels(), this);
this._inTopBar = false;
this.connect('notify::realized', () => {
if (!this.realized)
return;
this._inTopBar = Main.panel.contains(this);
this._updateTopBarRedirect();
});
this._settings.connect('changed::embed-previews',
() => this._updateThumbnailVisibility());
this._updateThumbnailVisibility();
}
_onDestroy() {
if (this._inTopBar)
Main.panel.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
this._inTopBar = false;
super._onDestroy();
}
_updateThumbnailVisibility() {
const {workspaceManager} = global;
const vertical = workspaceManager.layout_rows === -1;
const useMenu =
vertical || workspaceManager.n_workspaces > MAX_THUMBNAILS;
const useMenu = !this._settings.get_boolean('embed-previews');
this.reactive = useMenu;
this._statusBin.visible = useMenu;
this._thumbnailsBox.visible = !useMenu;
this._statusLabel.visible = useMenu;
this._thumbnails.visible = !useMenu;
this.setMenu(useMenu
? this._createPreviewMenu()
: null);
this._updateTopBarRedirect();
}
_updateTopBarRedirect() {
if (!this._inTopBar)
return;
// Disable offscreen-redirect when showing the workspace switcher
// so that clip-to-allocation works
Main.panel.set_offscreen_redirect(this._thumbnails.visible
? Clutter.OffscreenRedirect.ALWAYS
: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY);
}
_onWorkspaceSwitched() {
let workspaceManager = global.workspace_manager;
this._currentWorkspace = workspaceManager.get_active_workspace_index();
this._updateMenuOrnament();
this._updateActiveThumbnail();
this._currentWorkspace = global.workspace_manager.get_active_workspace_index();
this._statusLabel.set_text(this._getStatusText());
}
_nWorkspacesChanged() {
this._updateMenu();
this._updateThumbnails();
this._updateThumbnailVisibility();
}
_updateMenuOrnament() {
for (let i = 0; i < this._workspacesItems.length; i++) {
this._workspacesItems[i].setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
}
}
_updateActiveThumbnail() {
let thumbs = this._thumbnailsBox.get_children();
for (let i = 0; i < thumbs.length; i++) {
if (i === this._currentWorkspace)
thumbs[i].add_style_class_name('active');
else
thumbs[i].remove_style_class_name('active');
}
}
_getStatusText() {
let workspaceManager = global.workspace_manager;
let current = workspaceManager.get_active_workspace_index();
let total = workspaceManager.n_workspaces;
return '%d / %d'.format(current + 1, total);
const {nWorkspaces} = global.workspace_manager;
const current = this._currentWorkspace + 1;
return `${current} / ${nWorkspaces}`;
}
_updateMenuLabels() {
for (let i = 0; i < this._workspacesItems.length; i++) {
let item = this._workspacesItems[i];
let name = Meta.prefs_get_workspace_name(i);
item.label.text = name;
}
}
_createPreviewMenu() {
const menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.TOP);
_updateMenu() {
let workspaceManager = global.workspace_manager;
this.menu.removeAll();
this._workspacesItems = [];
this._currentWorkspace = workspaceManager.get_active_workspace_index();
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
let name = Meta.prefs_get_workspace_name(i);
let item = new PopupMenu.PopupMenuItem(name);
item.workspaceId = i;
item.connect('activate', () => {
this._activate(item.workspaceId);
});
item.setOrnament(i === this._currentWorkspace
? PopupMenu.Ornament.DOT
: PopupMenu.Ornament.NO_DOT);
this.menu.addMenuItem(item);
this._workspacesItems[i] = item;
}
this._statusLabel.set_text(this._getStatusText());
}
_updateThumbnails() {
let workspaceManager = global.workspace_manager;
this._thumbnailsBox.destroy_all_children();
for (let i = 0; i < workspaceManager.n_workspaces; i++) {
let thumb = new WorkspaceThumbnail(i);
this._thumbnailsBox.add_child(thumb);
}
this._updateActiveThumbnail();
}
_activate(index) {
let workspaceManager = global.workspace_manager;
if (index >= 0 && index < workspaceManager.n_workspaces) {
let metaWorkspace = workspaceManager.get_workspace_by_index(index);
metaWorkspace.activate(global.get_current_time());
}
}
_onScrollEvent(actor, event) {
let direction = event.get_scroll_direction();
let diff = 0;
if (direction === Clutter.ScrollDirection.DOWN)
diff = 1;
else if (direction === Clutter.ScrollDirection.UP)
diff = -1;
else
return;
let newIndex = this._currentWorkspace + diff;
this._activate(newIndex);
const previews = new WorkspacePreviews({show_labels: true});
menu.box.add_child(previews);
menu.actor.add_style_class_name(`${baseStyleClassName}-menu`);
return menu;
}
}
+2 -1
View File
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
project('gnome-shell-extensions',
version: '46.2',
version: '47.beta',
meson_version: '>= 0.58.0',
license: 'GPL2+'
)
@@ -42,6 +42,7 @@ default_extensions += [
'drive-menu',
'light-style',
'screenshot-window-sizer',
'status-icons',
'system-monitor',
'windowsNavigator',
'workspace-indicator'
+2 -2
View File
@@ -17,7 +17,7 @@ extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
extensions/window-list/extension.js
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
extensions/window-list/prefs.js
extensions/window-list/workspaceIndicator.js
extensions/windowsNavigator/extension.js
extensions/workspace-indicator/extension.js
extensions/workspace-indicator/prefs.js
extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml
extensions/workspace-indicator/workspaceIndicator.js
+47 -62
View File
@@ -1,22 +1,25 @@
# Catalan translation for gnome-shell-extensions.
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2011, 2024
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013, 2014.
#
msgid ""
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: 2024-05-23 16:39+0000\n"
"PO-Revision-Date: 2024-05-23 13:29+0100\n"
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-04-24 22:52+0200\n"
"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\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"
"X-DamnedLies-Scope: partial\n"
"X-Generator: Poedit 2.4.2\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -39,7 +42,7 @@ msgstr "GNOME clàssic amb Xorg"
msgid "Favorites"
msgstr "Preferides"
#: extensions/apps-menu/extension.js:400
#: extensions/apps-menu/extension.js:397
msgid "Apps"
msgstr "Aplicacions"
@@ -106,9 +109,9 @@ msgid ""
"restarting the shell to have any effect."
msgstr ""
"Si és «true» (cert), posiciona el títol de la finestra damunt de la "
"miniatura corresponent, substituint el comportament per defecte del Shell de"
" posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi "
"tingui efecte."
"miniatura corresponent, substituint el comportament per defecte del Shell de "
"posicionar-lo a baix. Cal reiniciar el Shell per tal que aquest canvi tingui "
"efecte."
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
@@ -148,7 +151,7 @@ msgstr "Mostra cíclicament cap enrere mides de captura de pantalla"
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Estadístiques de la CPU"
msgstr "Estadístiques de processador"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
@@ -156,67 +159,47 @@ msgstr "Estadístiques de memòria"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "Estadístiques de l'intercanvi"
msgstr "Estadístiques del «swap»"
#: extensions/system-monitor/extension.js:336
#: extensions/system-monitor/extension.js:327
msgid "Upload stats"
msgstr "Estadístiques de pujada"
#: extensions/system-monitor/extension.js:350
#: extensions/system-monitor/extension.js:341
msgid "Download stats"
msgstr "Estadístiques de baixada"
msgstr "Estadístiques de descàrrega"
#: extensions/system-monitor/extension.js:364
#: extensions/system-monitor/extension.js:355
msgid "System stats"
msgstr "Estadístiques del sistema"
#: extensions/system-monitor/extension.js:412
#: extensions/system-monitor/extension.js:403
msgid "Show"
msgstr "Mostra"
#: extensions/system-monitor/extension.js:414
#: extensions/system-monitor/extension.js:405
msgid "CPU"
msgstr "CPU"
msgstr "Processador"
#: extensions/system-monitor/extension.js:416
#: extensions/system-monitor/extension.js:407
msgid "Memory"
msgstr "Memòria"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:409
msgid "Swap"
msgstr "Intercanvi"
msgstr ""
#: extensions/system-monitor/extension.js:420
#: extensions/system-monitor/extension.js:411
msgid "Upload"
msgstr "Pujada"
msgstr "Pujades"
#: extensions/system-monitor/extension.js:422
#: extensions/system-monitor/extension.js:413
msgid "Download"
msgstr "Baixada"
msgstr "Descàrregues"
#: extensions/system-monitor/extension.js:427
#: extensions/system-monitor/extension.js:418
msgid "Open System Monitor"
msgstr "Obre el monitor del sistema"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Mostra l'ús de la CPU"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Mostra l'ús de la memòria"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "Mostra l'ús d'intercanvi"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "Mostra la pujada"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Mostra la baixada"
msgstr ""
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
msgid "Theme name"
@@ -226,47 +209,47 @@ msgstr "Nom del tema"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "El nom del tema que es carregarà des de ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:72
#: extensions/window-list/extension.js:71
msgid "Close"
msgstr "Tanca"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:98
msgid "Unminimize"
msgstr "Desminimitza"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:98
msgid "Minimize"
msgstr "Minimitza"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:105
msgid "Unmaximize"
msgstr "Desmaximitza"
#: extensions/window-list/extension.js:106
#: extensions/window-list/extension.js:105
msgid "Maximize"
msgstr "Maximitza"
#: extensions/window-list/extension.js:471
#: extensions/window-list/extension.js:470
msgid "Minimize all"
msgstr "Minimitza-ho tot"
#: extensions/window-list/extension.js:477
#: extensions/window-list/extension.js:476
msgid "Unminimize all"
msgstr "Desminimitza-ho tot"
#: extensions/window-list/extension.js:483
#: extensions/window-list/extension.js:482
msgid "Maximize all"
msgstr "Maximitza-ho tot"
#: extensions/window-list/extension.js:491
#: extensions/window-list/extension.js:490
msgid "Unmaximize all"
msgstr "Desmaximitza-ho tot"
#: extensions/window-list/extension.js:499
#: extensions/window-list/extension.js:498
msgid "Close all"
msgstr "Tanca-ho tot"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:772
msgid "Window List"
msgstr "Llista de finestres"
@@ -280,8 +263,8 @@ msgid ""
"Possible values are “never”, “auto” and “always”."
msgstr ""
"Decideix quan s'han d'agrupar les finestres de la mateixa aplicació a la "
"llista de finestres. Els valors possibles són: «never» (mai), «auto» "
"(automàticament) i «always» (sempre)."
"llista de finestres. Els valors possibles són: «never» (mai), "
"«auto» (automàticament) i «always» (sempre)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
@@ -326,8 +309,8 @@ msgstr "Agrupa les finestres sempre"
msgid "Show on all monitors"
msgstr "Mostra a tots els monitors"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Indicador de l'espai de treball"
@@ -344,3 +327,5 @@ msgstr "Noms dels espais de treball"
msgid "Add Workspace"
msgstr "Afegeix un espai de treball"
#~ msgid "Applications"
#~ msgstr "Aplicacions"
+49 -34
View File
@@ -9,17 +9,17 @@ 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: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-02-17 00:11+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-06-28 10:34+0300\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: Hebrew <yoseforb@gmail.com>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n>2||n==0) ? 1 : 2\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 3.4.1\n"
"X-Generator: Gtranslator 46.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -42,7 +42,7 @@ msgstr "GNOME קלסי על גבי Xorg"
msgid "Favorites"
msgstr "מועדפים"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "יישומים"
@@ -157,43 +157,43 @@ msgstr "סטטיסטיקת זיכרון"
msgid "Swap stats"
msgstr "סטטיסטיקת תחלופה"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "סטטיסטיקת העלאה"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "סטטיסטיקת הורדה"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "סטטיסטיקת מערכת"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "הצגה"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "מעבד"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "זיכרון"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "תחלופה"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "העלאה"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "הורדה"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "פתיחת צג המערכת"
@@ -225,47 +225,47 @@ msgstr "Theme name"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "סגירה"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "ביטול המזעור"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "מזעור"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "ביטול ההגדלה"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "הגדלה"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "מזעור הכל"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "ביטול מזעור הכל"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "הגדלת הכל"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "ביטול הגדלת הכל"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "סגירת הכל"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "רשימת חלונות"
@@ -302,6 +302,10 @@ msgstr ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה ברשימת החלונות"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "קיבוץ חלונות"
@@ -322,24 +326,35 @@ msgstr "תמיד לקבץ חלונות"
msgid "Show on all monitors"
msgstr "הצגה בכל הצגים"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "מחוון מרחבי עבודה"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "הצגת תצוגה מקדימה בלוח העליון"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "מרחב עבודה %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "שם מרחב העבודה"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "הוספת מרחב עבודה"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "הצגת תצוגה מקדימה של מרחבי העבודה בלוח העליון"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "מחוון מרחבי עבודה"
#~ msgid "Applications"
#~ msgstr "יישומים"
+26 -11
View File
@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-04-29 14:28+0000\n"
"PO-Revision-Date: 2024-05-14 15:40+0530\n"
"POT-Creation-Date: 2024-05-12 13:45+0000\n"
"PO-Revision-Date: 2024-05-14 15:33+0530\n"
"Last-Translator: Scrambled777 <weblate.scrambled777@simplelogin.com>\n"
"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
"Language: hi\n"
@@ -42,7 +42,7 @@ msgstr "Xorg पर GNOME क्लासिक"
msgid "Favorites"
msgstr "पसंदीदा"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "ऐप्स"
@@ -264,7 +264,7 @@ msgstr "अधिकतम खत्म करें"
msgid "Close all"
msgstr "सभी बंद करें"
#: extensions/window-list/extension.js:773
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "विंडो सूची"
@@ -300,6 +300,10 @@ msgid ""
msgstr ""
"क्या विंडो सूची को सभी जुड़े हुए मॉनिटरों पर दिखाना है या केवल प्राथमिक मॉनिटर पर।"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "विंडो सूची में कार्यस्थान पूर्वावलोकन दिखाएं"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "विंडो समूहबद्धता"
@@ -320,20 +324,31 @@ msgstr "हमेशा विंडोज समूहित करें"
msgid "Show on all monitors"
msgstr "सभी मॉनिटरों पर दिखाएं"
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
msgid "Workspace Indicator"
msgstr "कार्यस्थान सूचक"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "कार्यस्थान पूर्वावलोकन दिखाएं"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "शीर्षपट्टी में पूर्वावलोकन दिखाएं"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "कार्यस्थान %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "कार्यस्थान नाम"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "कार्यस्थान जोड़ें"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "शीर्षपट्टी में कार्यस्थान पूर्वावलोकन दिखाएं"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "कार्यस्थान सूचक"
+47 -31
View File
@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/is"
"sues\n"
"POT-Creation-Date: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-03-04 12:30+0100\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-06-28 16:24+0200\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
"Language-Team: Hungarian <openscope at fsf dot hu>\n"
"Language: hu\n"
@@ -43,7 +43,7 @@ msgstr "Klasszikus GNOME Xorgon"
msgid "Favorites"
msgstr "Kedvencek"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Alkalmazások"
@@ -159,43 +159,43 @@ msgstr "Memóriastatisztikák"
msgid "Swap stats"
msgstr "Cserehely-statisztikák"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Feltöltési statisztikák"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Letöltési statisztikák"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Rendszerstatisztikák"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Megjelenítés"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "Processzor"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Memória"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Cserehely"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Feltöltés"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Letöltés"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Rendszerfigyelő megnyitása"
@@ -227,47 +227,47 @@ msgstr "Témanév"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "A ~/.themes/név/gnome-shell alól betöltendő téma neve"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Bezárás"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Minimalizálás megszüntetése"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Minimalizálás"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Maximalizálás megszüntetése"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Maximalizálás"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Minden minimalizálása"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Minden minimalizálásának megszüntetése"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Minden maximalizálása"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Minden maximalizálásának megszüntetése"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Minden bezárása"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Ablaklista"
@@ -307,6 +307,10 @@ msgstr ""
"Megjelenjen-e az ablaklista minden csatlakoztatott monitoron vagy csak az "
"elsődlegesen."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Munkaterület-előnézetek megjelenítése az ablaklistában"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Ablakcsoportosítás"
@@ -327,20 +331,32 @@ msgstr "Mindig csoportosítsa az ablakokat"
msgid "Show on all monitors"
msgstr "Megjelenítés minden monitoron"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Munkaterület-indikátor"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Munkaterület-előnézetek megjelenítése"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Előnézetek megjelenítése a felső sávon"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "%d. munkaterület"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Munkaterületnevek"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Munkaterület hozzáadása"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Munkaterület-előnézetek megjelenítése a felső sávon"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Munkaterület-indikátor"
+48 -33
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: 2024-02-06 18:43+0000\n"
"PO-Revision-Date: 2024-02-11 18:21+0300\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-25 14:46+0300\n"
"Last-Translator: Artur So <arturios2005@mail.ru>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language: ru\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 3.4.2\n"
"X-Generator: Poedit 3.4.4\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -42,7 +42,7 @@ msgstr "Классический GNOME на Xorg"
msgid "Favorites"
msgstr "Избранное"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Приложения"
@@ -158,43 +158,43 @@ msgstr "Статистика памяти"
msgid "Swap stats"
msgstr "Статистика подкачки"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Статистика отдачи"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Статистика загрузки"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Статистика системы"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Показать"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "ЦП"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Память"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Подкачка"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Отдача"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Загрузка"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Открыть системный монитор"
@@ -226,49 +226,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:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Закрыть"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Вернуть"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Свернуть"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Восстановить"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Развернуть"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Свернуть все"
# ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize)
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Вернуть все"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Развернуть все"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Восстановить все"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Закрыть все"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Список окон"
@@ -288,7 +288,7 @@ msgstr ""
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "Отображать окна со всех рабочих столов"
msgstr "Показывать окна со всех рабочих столов"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Whether to show windows from all workspaces or only the current one."
@@ -307,6 +307,10 @@ msgstr ""
"Показывать ли список окон на всех подключенных мониторах или только на "
"основном."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Показывать предпросмотры рабочих столов в списке окон"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Группировка окон"
@@ -327,23 +331,34 @@ msgstr "Всегда группировать окна"
msgid "Show on all monitors"
msgstr "Показывать на всех мониторах"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Индикатор рабочих столов"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Показывать предпросмотры рабочих столов"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Показывать предпросмотры в верхней панели"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Рабочий стол %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Названия рабочих столов"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Добавить рабочий стол"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Показывать предпросмотры рабочих столов в верхней панели"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Индикатор рабочих столов"
#~ msgid "Applications"
#~ msgstr "Приложения"
+48 -302
View File
@@ -9,18 +9,18 @@ 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: 2024-02-15 05:28+0000\n"
"PO-Revision-Date: 2024-02-19 11:07+0100\n"
"Last-Translator: Matej Urbančič <mateju@src.gnome.org>\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-02 00:11+0200\n"
"Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl_SI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
"n%100==4 ? 3 : 0);\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Poedit 2.2.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -43,7 +43,7 @@ msgstr "Klasično namizje GNOME na sistemu Xorg"
msgid "Favorites"
msgstr "Priljubljeno"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Programi"
@@ -158,43 +158,43 @@ msgstr "Delovanje pomnilnika"
msgid "Swap stats"
msgstr "Podatki izmenjevalnega prostora"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Podatki pošiljanja"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Podatki prejema"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Podrobnosti sistema"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Pokaži"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPE"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Pomnilnik"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Izmenjevalni razdelek"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Poslano"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Prejeto"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "_Odpri nadzornika sistema"
@@ -226,47 +226,47 @@ msgstr "Ime teme"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Ime teme, ki bo naložena iz ~/.themes/name/gnome-shell"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Zapri"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Povečaj"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Skrči"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Pomanjšaj"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Razpni"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Skrči vse"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Razpni vse"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Pomanjšaj vse"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Zapri vse"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Seznam oken"
@@ -303,6 +303,10 @@ msgid ""
msgstr ""
"Ali naj bo prikazan seznam oken na vseh povezanih zasloni ali le na osnovnem."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Pokaži predoglede delovne površine na seznamu oken"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Združevanje oken"
@@ -323,289 +327,31 @@ msgstr "Okna vedno združuj"
msgid "Show on all monitors"
msgstr "Pokaži na vseh zaslonih"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Kazalnik delovnih površin"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Pokaži predoglede delovne površine"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Pokaži predoglede v zgornji vrstici"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Delovna površina %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Imena delovnih površin"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Dodaj delovno površino"
#~ msgid "Applications"
#~ msgstr "Programi"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Pokaži predoglede delovne površine v zgornji vrstici"
#~ msgid "Username or email"
#~ msgstr "Uporabniško ime ali elektronski naslov"
#~ msgid "Username"
#~ msgstr "Uporabniško ime"
#~ msgid ""
#~ "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
#~ msgstr ""
#~ "Zahtevan je vpis do 30 znakov, uporabiti pa je mogoče le črke, številke "
#~ "in znake @/./+/-/_."
#~ msgid ""
#~ "This value may contain only letters, numbers and @/./+/-/_ characters."
#~ msgstr "Vrednost lahko vsebuje le črke, številke, vezaj in znake @/./+/-/_."
#~ msgid "Email"
#~ msgstr "Elektronski naslov"
#~ msgid "You should not use email as username"
#~ msgstr "Za uporabniško ime ni priporočljivo uporabiti elektronskega naslova"
#~ msgid "Forgot your password?"
#~ msgstr "Ali ste pozabili geslo?"
#~ msgid "Log in"
#~ msgstr "Prijava"
#~ msgid "Don't have an account?"
#~ msgstr "Še nimate računa za dostop?"
#~ msgid "Register"
#~ msgstr "Vpisnik"
#~ msgid "User Login"
#~ msgstr "Prijava uporabnika"
#~ msgid "Reset your password"
#~ msgstr "Ponastavi geslo"
#~ msgid ""
#~ "The token for the password reset is incorrect. Please check your link and "
#~ "try again."
#~ msgstr ""
#~ "Žeton za ponastavitev gesla ni pravi. Preverite povezavo in poskusite "
#~ "znova."
#~ msgid "Password reset"
#~ msgstr "Ponovna nastavitev gesla"
#~ msgid ""
#~ "Forgot your password? Enter your e-mail address below, and well e-mail "
#~ "instructions for setting a new one."
#~ msgstr ""
#~ "Ali ste pozabili geslo? Vpišite elektronski naslov in poslali vam bomo "
#~ "navodila za nastavitev novega."
#~ msgid "Installed extensions"
#~ msgstr "Nameščene razširitve"
#~ msgid "About"
#~ msgstr "O programu"
#~ msgid "Extensions"
#~ msgstr "Razširitve"
#, python-format
#~ msgid ""
#~ "Unfortunately, to help prevent spam, we require that you <a "
#~ "href=\"%(login_url)s\">log in to GNOME Shell Extensions</a> in order to "
#~ "post a comment or report an error. You understand, right?"
#~ msgstr ""
#~ "Za preprečevanje neželenih objav se je treba najprej <a "
#~ "href=\"%(login_url)s\">prijaviti na spletno stran</a>. Prijava omogoča "
#~ "poročanje o napakah in objavljanje ocen in mnenj."
#~ msgid "User Reviews"
#~ msgstr "Mnenja uporabnikov"
#~ msgid "Loading reviews…"
#~ msgstr "Poteka nalaganje mnenj uporabnikov …"
#~ msgid "Your opinion"
#~ msgstr "Vaše mnenje"
#~ msgid "Leave a…"
#~ msgstr "Objavite …"
#~ msgid "Comment"
#~ msgstr "Opombo"
#~ msgid "Rating"
#~ msgstr "Oceno"
#~ msgid "Bug report"
#~ msgstr "Poročilo o hrošču"
#~ msgid "Upgrade this extension"
#~ msgstr "Posodobi razširitev"
#~ msgid "Configure this extension"
#~ msgstr "Nastavi razširitev"
#~ msgid "Uninstall this extension"
#~ msgstr "Odstrani razširitev"
#~ msgid "Extension Homepage"
#~ msgstr "Spletna stran razširitev"
#~ msgid "Shell version…"
#~ msgstr "različica lupine …"
#~ msgid "Extension version…"
#~ msgstr "Različica razširitve …"
#~ msgid ""
#~ "A reviewer will review the extension you submitted to make sure there's "
#~ "nothing too dangerous. You'll be emailed the result of the review."
#~ msgstr ""
#~ "Pregledovalec bo preveril objavljeno razširitev za morebitno neželeno "
#~ "delovanje. Odziv boste prejeli na elektronski naslov."
#~ msgid "Search for extensions…"
#~ msgstr "Poišči razširitve …"
#~ msgid "Installed Extensions"
#~ msgstr "Nameščene razširitve"
#~ msgid "Shell settings"
#~ msgstr "Nastavitve lupine"
#~ msgid "Content"
#~ msgstr "Vsebina"
#~ msgid "Metadata"
#~ msgstr "Metapodatki"
#~ msgid "Post"
#~ msgstr "Po"
#~ msgid "Preview"
#~ msgstr "Predogled"
#~ msgid "What do you think about this GNOME extension?"
#~ msgstr "Kakšno je vaše mnenje o tej razširitvi GNOME?"
#~ msgid "Please correct the error below"
#~ msgid_plural "Please correct the errors below"
#~ msgstr[0] "Razrešiti je treba spodnje napake"
#~ msgstr[1] "Razrešiti je treba spodnjo napako"
#~ msgstr[2] "Razrešiti je treba spodnji napaki"
#~ msgstr[3] "Razrešiti je treba spodnje napake"
#~ msgid "Preview your comment"
#~ msgstr "Predogled opombe"
#~ msgid "Post Comment"
#~ msgstr "Objavi mnenje"
#~ msgid "Edit your comment"
#~ msgstr "Uredi mnenje"
#~ msgid "Latest extensions in GNOME Shell Extensions"
#~ msgstr "Najnovejše razširitve Lupine GNOME"
#~ msgid "GNOME Shell Extensions"
#~ msgstr "Razširitve Lupine Gnome"
#~ msgid "User Profile"
#~ msgstr "Uporabniški profil"
#~ msgid "User Settings"
#~ msgstr "Uporabniške nastavitve"
#~ msgid "Log out"
#~ msgstr "Odjava"
#~ msgid ""
#~ "To control GNOME Shell extensions using this site you must install GNOME "
#~ "Shell integration that consists of two parts: browser extension and "
#~ "native host messaging application"
#~ msgstr ""
#~ "Za nadzor razširitev Lupine GNOME prek te spletne strani je treba "
#~ "namestiti program, ki vključuje dva dela: razširitev za brskalnik in "
#~ "gostiteljski program za sporočanje."
#~ msgid "Install GNOME Shell integration browser extension"
#~ msgstr "Namesti razširitev Lupine GNOM za spletni brskalnik"
#~ msgid "Click here to install browser extension"
#~ msgstr "Kliknite za namestitev razširitve za brskalnik"
#, javascript-format
#~ msgid ""
#~ "See %swiki page%s for native host connector installation instructions"
#~ msgstr ""
#~ "Oglejte si %sstrani Wiki%s za nastavitev povezovalnega gostiteljskega "
#~ "namiznega programa."
#~ msgid ""
#~ "We cannot detect a running copy of GNOME on this system, so some parts of "
#~ "the interface may be disabled. See <a href=\"/about/#no-detection\">our "
#~ "troubleshooting entry</a> for more information."
#~ msgstr ""
#~ "Ni mogoče zaznati zagnane različice namizja GNOME na tem sistemu, zato so "
#~ "nekateri deli vmesnika morda onemogočeni. Za več podrobnosti si oglejte "
#~ "možnosti <a href=\"/about/#no-detection\">odpravljanja napak</a>."
#~ msgid "GNOME Shell Extensions cannot list your installed extensions."
#~ msgstr "Ni mogoče izpisati nameščenih razširitev Lupine GNOME."
#~ msgid "Compatible with"
#~ msgstr "Skladno z"
#~ msgid "Name"
#~ msgstr "Ime"
#~ msgid "Recent"
#~ msgstr "Nedavno"
#~ msgid "Popularity"
#~ msgstr "Priljubljenost"
#~ msgid "Sort by"
#~ msgstr "Razvrsti po"
#~ msgid "Show more reviews"
#~ msgstr "Pokaži več ocen"
#~ msgid "There are no comments. Be the first!"
#~ msgstr "Ni še vpisane nobene opombe. Bodite prvi!"
#~ msgid "Author"
#~ msgstr "Avtor"
#~ msgid "What's wrong?"
#~ msgstr "Kaj ne narobe?"
#~ msgid ""
#~ "GNOME Shell Extensions did not detect any errors with this extension."
#~ msgstr "Ni zaznanih napak pri tej razširitvi Lupine GNOME."
#~ msgid "Version information"
#~ msgstr "Podrobnosti različice"
#~ msgid "Shell version"
#~ msgstr "Različica lupine"
#~ msgid "Extension version"
#~ msgstr "Različica razširitve"
#~ msgid "Unknown"
#~ msgstr "Neznano"
#~ msgid "What have you tried?"
#~ msgstr "Kaj ste že poskusili?"
#~ msgid "Automatically detected errors"
#~ msgstr "Samodejno zaznaj napake"
#~ msgid "You uninstalled"
#~ msgstr "Odstranili ste"
#~ msgid "Password"
#~ msgstr "Geslo"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Kazalnik delovnih površin"
+138 -69
View File
@@ -3,25 +3,25 @@
# This file is distributed under the same license as the gnome-shell-extensions package.
# Милош Поповић <gpopac@gmail.com>, 2012.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2012—2017.
# Марко М. Костић <marko.m.kostic@gmail.com>, 2020.
# Марко М. Костић <marko.m.kostic@gmail.com>, 2020-2024.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2021-11-06 14:08+0000\n"
"PO-Revision-Date: 2022-03-11 07:10+0100\n"
"POT-Creation-Date: 2024-04-29 14:28+0000\n"
"PO-Revision-Date: 2024-06-20 01:27+0200\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: Serbian <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : "
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Gtranslator 45.3\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -40,19 +40,19 @@ msgstr "Класичан Гном на Вејленду"
msgid "GNOME Classic on Xorg"
msgstr "Класичан Гном на Икс серверу"
#: extensions/apps-menu/extension.js:112
#: extensions/apps-menu/extension.js:126
msgid "Favorites"
msgstr "Омиљено"
#: extensions/apps-menu/extension.js:366
msgid "Applications"
msgstr "Програми"
#: extensions/apps-menu/extension.js:397
msgid "Apps"
msgstr "Апликације"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
msgid "Application and workspace list"
msgstr "Програм и списак радних простора"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:13
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
@@ -60,34 +60,34 @@ msgstr ""
"Списак ниски од којих свака садржи иб програма (назив датотеке „.desktop“), "
"зарез и број радног простора"
#: extensions/auto-move-windows/prefs.js:34
#: extensions/auto-move-windows/prefs.js:159
msgid "Workspace Rules"
msgstr "Правила радних простора"
#: extensions/auto-move-windows/prefs.js:236
#: extensions/auto-move-windows/prefs.js:314
msgid "Add Rule"
msgstr "Додај правило"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:133
#: extensions/places-menu/placeDisplay.js:233
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Нисам успео да избацим уређај „%s“:"
#: extensions/drive-menu/extension.js:149
#: extensions/drive-menu/extension.js:142
msgid "Removable devices"
msgstr "Уклоњиви уређаји"
#: extensions/drive-menu/extension.js:171
#: extensions/drive-menu/extension.js:164
msgid "Open Files"
msgstr "Отвори датотеке"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Use more screen for windows"
msgstr "Користи више простора за прозор"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
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. "
@@ -97,11 +97,11 @@ msgstr ""
"величине екрана. Ово подешавање важи само уколико је стратегија размештања "
"постављена на природно."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
msgid "Place window captions on top"
msgstr "Поставља натписе прозора изнад приказа"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:18
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
@@ -111,47 +111,119 @@ msgstr ""
"умањених приказа уместо испод приказа. Промена ових подешавања захтева да "
"поново покренете Гномову шкољку."
#: extensions/places-menu/extension.js:88
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
msgid "Places"
msgstr "Места"
#: extensions/places-menu/placeDisplay.js:46
#: extensions/places-menu/placeDisplay.js:60
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "Нисам успео да покренем „%s“"
#: extensions/places-menu/placeDisplay.js:61
#: extensions/places-menu/placeDisplay.js:75
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "Нисам успео да прикачим волумен за „%s“"
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:171
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "Рачунар"
#: extensions/places-menu/placeDisplay.js:359
#: extensions/places-menu/placeDisplay.js:333
msgid "Home"
msgstr "Личнo"
#: extensions/places-menu/placeDisplay.js:404
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "Разгледајте мрежу"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
msgstr "Кружи кроз величине снимака екрана"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:18
msgid "Cycle Screenshot Sizes Backward"
msgstr "Кружи уназад кроз величине снимака екрана"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "Статистика процесора"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "Статистика меморије"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "Статистика свап меморије"
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Статистика слања датотека"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "Статистика преузимања датотека"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Статистика система"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Прикажи"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "Процесор"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Меморија"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Свап"
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Слање"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "Преузимање"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Отвори монитор система"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "Прикажи коришћење процесора"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "Прикажи коришћење меморије"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "Прикажи коришћење свап меморије"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "Прикажи слање"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "Прикажи преузимање"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
msgid "Theme name"
msgstr "Назив теме"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:12
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "Назив теме који се учитава из датотеке „~/.themes/name/gnome-shell“"
@@ -159,51 +231,51 @@ msgstr "Назив теме који се учитава из датотеке
msgid "Close"
msgstr "Затвори"
#: extensions/window-list/extension.js:92
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Поништи умањење"
#: extensions/window-list/extension.js:92
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Умањи"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Поништи увећање"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "Увећај"
#: extensions/window-list/extension.js:434
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Умањи све"
#: extensions/window-list/extension.js:440
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Поништи умањење свега"
#: extensions/window-list/extension.js:446
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Увећај све"
#: extensions/window-list/extension.js:454
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Поништи увећање свега"
#: extensions/window-list/extension.js:462
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Затвори све"
#: extensions/window-list/extension.js:741
#: extensions/window-list/extension.js:773
msgid "Window List"
msgstr "Списак прозора"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
msgid "When to group windows"
msgstr "Када груписати прозоре"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:19
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
@@ -212,20 +284,20 @@ msgstr ""
"Дозвољене вредности су „never“ (никад), „auto“ (аутоматски) и "
"„always“ (увек)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:86
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "Прикажи прозоре свих радних простора"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
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
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:33
msgid "Show the window list on all monitors"
msgstr "Приказује списак прозора на свим мониторима"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:34
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
@@ -233,44 +305,47 @@ msgstr ""
"Да ли да прикаже списак прозора на свим прикљученим мониторима или само на "
"главном."
#: extensions/window-list/prefs.js:39
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Груписање прозора"
#: extensions/window-list/prefs.js:63
#: extensions/window-list/prefs.js:40
msgid "Never group windows"
msgstr "Никад не групиши прозоре"
#: extensions/window-list/prefs.js:64
#: extensions/window-list/prefs.js:41
msgid "Group windows when space is limited"
msgstr "Групиши прозоре када је простор ограничен"
#: extensions/window-list/prefs.js:65
#: extensions/window-list/prefs.js:42
msgid "Always group windows"
msgstr "Увек групиши прозоре"
#: extensions/window-list/prefs.js:81
#: extensions/window-list/prefs.js:66
msgid "Show on all monitors"
msgstr "Прикажи на свим мониторима"
#: extensions/window-list/workspaceIndicator.js:249
#: extensions/workspace-indicator/extension.js:254
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
msgid "Workspace Indicator"
msgstr "Показатељ радних простора"
#: extensions/workspace-indicator/prefs.js:33
msgid "Workspace Names"
msgstr "Називи радних простора"
#: extensions/workspace-indicator/prefs.js:66
#: extensions/workspace-indicator/prefs.js:69
#, javascript-format
msgid "Workspace %d"
msgstr "%d. радни простор"
#: extensions/workspace-indicator/prefs.js:207
#: extensions/workspace-indicator/prefs.js:136
msgid "Workspace Names"
msgstr "Називи радних простора"
#: extensions/workspace-indicator/prefs.js:262
msgid "Add Workspace"
msgstr "Додај радни простор"
#~ msgid "Applications"
#~ msgstr "Програми"
#~ msgid "Application"
#~ msgstr "Програм"
@@ -352,12 +427,6 @@ msgstr "Додај радни простор"
#~ "тако да вам не значи пуно.\n"
#~ "Ипак, можете изменити поздравну поруку помоћу овог проширења."
#~ msgid "CPU"
#~ msgstr "Процесор"
#~ msgid "Memory"
#~ msgstr "Меморија"
#~ msgid "GNOME Shell Classic"
#~ msgstr "Класична Гномова шкољка"
+47 -32
View File
@@ -14,9 +14,9 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
"POT-Creation-Date: 2024-02-13 13:35+0000\n"
"PO-Revision-Date: 2024-02-12 18:45+0300\n"
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
"POT-Creation-Date: 2024-04-29 15:27+0000\n"
"PO-Revision-Date: 2024-05-06 05:17+0300\n"
"Last-Translator: Sabri Ünal <yakushabb@gmail.com>\n"
"Language-Team: Turkish <takim@gnome.org.tr>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgstr "Xorg üstünde GNOME Klasik"
msgid "Favorites"
msgstr "Gözdeler"
#: extensions/apps-menu/extension.js:397
#: extensions/apps-menu/extension.js:400
msgid "Apps"
msgstr "Uygulamalar"
@@ -163,43 +163,43 @@ msgstr "Bellek istatistikleri"
msgid "Swap stats"
msgstr "Takas istatistikleri"
#: extensions/system-monitor/extension.js:327
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "Yükleme istatistikleri"
#: extensions/system-monitor/extension.js:341
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "İndirme istatistikleri"
#: extensions/system-monitor/extension.js:355
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "Sistem istatistikleri"
#: extensions/system-monitor/extension.js:403
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "Göster"
#: extensions/system-monitor/extension.js:405
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "İşlemci"
#: extensions/system-monitor/extension.js:407
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "Bellek"
#: extensions/system-monitor/extension.js:409
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "Takas"
#: extensions/system-monitor/extension.js:411
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "Yükle"
#: extensions/system-monitor/extension.js:413
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "İndir"
#: extensions/system-monitor/extension.js:418
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "Sistem Gözlemcisini Aç"
@@ -231,47 +231,47 @@ msgstr "Tema adı"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "~/.themes/name/gnome-shell konumundan edinilen tema adı"
#: extensions/window-list/extension.js:71
#: extensions/window-list/extension.js:72
msgid "Close"
msgstr "Kapat"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "Önceki duruma getir"
#: extensions/window-list/extension.js:98
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "Simge durumuna küçült"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "Önceki duruma getir"
#: extensions/window-list/extension.js:105
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "En büyük duruma getir"
#: extensions/window-list/extension.js:470
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "Tümünü simge durumuna küçült"
#: extensions/window-list/extension.js:476
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "Tümünü önceki duruma getir"
#: extensions/window-list/extension.js:482
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "Tümünü en büyük duruma getir"
#: extensions/window-list/extension.js:490
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "Tümünü önceki duruma getir"
#: extensions/window-list/extension.js:498
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "Tümünü kapat"
#: extensions/window-list/extension.js:772
#: extensions/window-list/extension.js:778
msgid "Window List"
msgstr "Pencere Listesi"
@@ -311,6 +311,10 @@ msgstr ""
"Pencere listesinin tüm bağlı monitörlerde mi yoksa yalnızca birincil "
"monitörde mi gösterileceğini belirtir."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41
msgid "Show workspace previews in window list"
msgstr "Pencere listesinde çalışma alanı ön izlemelerini göster"
#: extensions/window-list/prefs.js:35
msgid "Window Grouping"
msgstr "Pencere Kümeleme"
@@ -331,20 +335,31 @@ msgstr "Pencereleri her zaman kümele"
msgid "Show on all monitors"
msgstr "Tüm monitörlerde göster"
#: extensions/window-list/workspaceIndicator.js:253
#: extensions/workspace-indicator/extension.js:259
msgid "Workspace Indicator"
msgstr "Çalışma Alanı Belirteci"
#: extensions/window-list/prefs.js:92
msgid "Show workspace previews"
msgstr "Çalışma alanı ön izlemelerini göster"
#: extensions/workspace-indicator/prefs.js:69
#: extensions/workspace-indicator/prefs.js:30
msgid "Show Previews In Top Bar"
msgstr "Ön İzlemeleri Üst Çubukta Göster"
#: extensions/workspace-indicator/prefs.js:88
#, javascript-format
msgid "Workspace %d"
msgstr "Çalışma Alanı %d"
#: extensions/workspace-indicator/prefs.js:136
#: extensions/workspace-indicator/prefs.js:155
msgid "Workspace Names"
msgstr "Çalışma Alanı Adları"
#: extensions/workspace-indicator/prefs.js:262
#: extensions/workspace-indicator/prefs.js:281
msgid "Add Workspace"
msgstr "Çalışma Alanı Ekle"
#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12
msgid "Show workspace previews in top bar"
msgstr "Çalışma alanı ön izlemelerini üst çubukta göster"
#: extensions/workspace-indicator/workspaceIndicator.js:430
msgid "Workspace Indicator"
msgstr "Çalışma Alanı Belirteci"
+129 -59
View File
@@ -9,16 +9,17 @@ 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: 2022-05-06 11:44+0000\n"
"PO-Revision-Date: 2022-05-12 00:01+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese <zh-l10n@linux.org.tw>\n"
"POT-Creation-Date: 2024-04-29 14:28+0000\n"
"PO-Revision-Date: 2024-07-24 10:25+0000\n"
"Last-Translator: Chao-Hsiung Liao <pesder@mail.edu.tw>\n"
"Language-Team: Chinese (Traditional) <http://darkbear.mercusysddns.com/"
"projects/gnome-45/gnome-shell-extensions-po-ui-gnome-46-zh_tw/zh_Hant/>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Weblate 5.6.2\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -37,19 +38,19 @@ msgstr "GNOME Classic 採行 Wayland"
msgid "GNOME Classic on Xorg"
msgstr "GNOME Classic 採行 Xorg"
#: extensions/apps-menu/extension.js:118
#: extensions/apps-menu/extension.js:126
msgid "Favorites"
msgstr "喜愛"
#: extensions/apps-menu/extension.js:379
msgid "Applications"
msgstr "應用程式"
#: extensions/apps-menu/extension.js:397
msgid "Apps"
msgstr "程式"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:12
msgid "Application and workspace list"
msgstr "應用程式與工作區列表"
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7
#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:13
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
@@ -57,34 +58,34 @@ msgstr ""
"字串的列表,每個都包含一個應用程式 id (桌面檔名稱),後面接著半形分號 \";\" 與"
"工作區號碼"
#: extensions/auto-move-windows/prefs.js:152
#: extensions/auto-move-windows/prefs.js:159
msgid "Workspace Rules"
msgstr "工作區規則"
#: extensions/auto-move-windows/prefs.js:306
#: extensions/auto-move-windows/prefs.js:314
msgid "Add Rule"
msgstr "加入規則"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:126
#: extensions/places-menu/placeDisplay.js:210
#: extensions/drive-menu/extension.js:123
#: extensions/places-menu/placeDisplay.js:218
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "裝置「%s」退出失敗:"
#: extensions/drive-menu/extension.js:145
#: extensions/drive-menu/extension.js:142
msgid "Removable devices"
msgstr "可移除式裝置"
#: extensions/drive-menu/extension.js:167
#: extensions/drive-menu/extension.js:164
msgid "Open Files"
msgstr "開啟檔案"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Use more screen for windows"
msgstr "視窗使用更多螢幕空間"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
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. "
@@ -93,11 +94,11 @@ msgstr ""
"藉由適應螢幕長寬比來試著使用更多螢幕空間放置視窗縮圖,進一步聯合它們來減少邊"
"界盒。這個設定僅適用於自然放置策略。"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17
msgid "Place window captions on top"
msgstr "在頂端放置視窗說明標題"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:18
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
@@ -106,47 +107,119 @@ msgstr ""
"如果為真,在對映的縮圖頂端放置視窗說明標題,凌駕 Shell 將它放置在底部的預設"
"值。變更這個設定值需要重新啟動 Shell 來套用效果。"
#: extensions/places-menu/extension.js:91
#: extensions/places-menu/extension.js:94
#: extensions/places-menu/extension.js:97
msgid "Places"
msgstr "位置"
#: extensions/places-menu/placeDisplay.js:49
#: extensions/places-menu/placeDisplay.js:60
#, javascript-format
msgid "Failed to launch “%s”"
msgstr "無法啟動「%s」"
#: extensions/places-menu/placeDisplay.js:64
#: extensions/places-menu/placeDisplay.js:75
#, javascript-format
msgid "Failed to mount volume for “%s”"
msgstr "無法掛載儲存區「%s」"
#: extensions/places-menu/placeDisplay.js:125
#: extensions/places-menu/placeDisplay.js:148
#: extensions/places-menu/placeDisplay.js:135
#: extensions/places-menu/placeDisplay.js:158
msgid "Computer"
msgstr "電腦"
#: extensions/places-menu/placeDisplay.js:336
#: extensions/places-menu/placeDisplay.js:333
msgid "Home"
msgstr "家目錄"
#: extensions/places-menu/placeDisplay.js:381
#: extensions/places-menu/placeDisplay.js:378
msgid "Browse Network"
msgstr "瀏覽網路"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14
msgid "Cycle Screenshot Sizes"
msgstr "循環螢幕擷圖大小"
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11
#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:18
msgid "Cycle Screenshot Sizes Backward"
msgstr "往回循環螢幕擷圖大小"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5
#: extensions/system-monitor/extension.js:135
msgid "CPU stats"
msgstr "CPU 狀態"
#: extensions/system-monitor/extension.js:159
msgid "Memory stats"
msgstr "記憶體狀態"
#: extensions/system-monitor/extension.js:177
msgid "Swap stats"
msgstr "置換區狀態"
#: extensions/system-monitor/extension.js:336
msgid "Upload stats"
msgstr "上傳狀態"
#: extensions/system-monitor/extension.js:350
msgid "Download stats"
msgstr "下載狀態"
#: extensions/system-monitor/extension.js:364
msgid "System stats"
msgstr "系統狀態"
#: extensions/system-monitor/extension.js:412
msgid "Show"
msgstr "顯示"
#: extensions/system-monitor/extension.js:414
msgid "CPU"
msgstr "CPU"
#: extensions/system-monitor/extension.js:416
msgid "Memory"
msgstr "記憶體"
#: extensions/system-monitor/extension.js:418
msgid "Swap"
msgstr "置換區"
#: extensions/system-monitor/extension.js:420
msgid "Upload"
msgstr "上傳"
#: extensions/system-monitor/extension.js:422
msgid "Download"
msgstr "下載"
#: extensions/system-monitor/extension.js:427
msgid "Open System Monitor"
msgstr "開啟系統監視器"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:12
msgid "Show CPU usage"
msgstr "顯示 CPU 使用率"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:16
msgid "Show memory usage"
msgstr "顯示記憶體使用率"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:20
msgid "Show swap usage"
msgstr "顯示置換區使用率"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24
msgid "Show upload"
msgstr "顯示上傳"
#: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28
msgid "Show download"
msgstr "顯示下載"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:11
msgid "Theme name"
msgstr "主題名稱"
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6
#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:12
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "主題的名稱,要從 ~/.themes/name/gnome-shell 載入"
@@ -154,71 +227,71 @@ msgstr "主題的名稱,要從 ~/.themes/name/gnome-shell 載入"
msgid "Close"
msgstr "關閉"
#: extensions/window-list/extension.js:92
#: extensions/window-list/extension.js:99
msgid "Unminimize"
msgstr "取消最小化"
#: extensions/window-list/extension.js:92
#: extensions/window-list/extension.js:99
msgid "Minimize"
msgstr "最小化"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:106
msgid "Unmaximize"
msgstr "取消最大化"
#: extensions/window-list/extension.js:99
#: extensions/window-list/extension.js:106
msgid "Maximize"
msgstr "最大化"
#: extensions/window-list/extension.js:441
#: extensions/window-list/extension.js:471
msgid "Minimize all"
msgstr "全部最小化"
#: extensions/window-list/extension.js:447
#: extensions/window-list/extension.js:477
msgid "Unminimize all"
msgstr "全部取消最小化"
#: extensions/window-list/extension.js:453
#: extensions/window-list/extension.js:483
msgid "Maximize all"
msgstr "全部最大化"
#: extensions/window-list/extension.js:461
#: extensions/window-list/extension.js:491
msgid "Unmaximize all"
msgstr "全部取消最大化"
#: extensions/window-list/extension.js:469
#: extensions/window-list/extension.js:499
msgid "Close all"
msgstr "全部關閉"
#: extensions/window-list/extension.js:753
#: extensions/window-list/extension.js:773
msgid "Window List"
msgstr "視窗列表"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:18
msgid "When to group windows"
msgstr "何時群組視窗"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:19
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
"決定在視窗列表中何時群組視窗。可能的數值有「never」、「auto」、「always」。"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26
#: extensions/window-list/prefs.js:79
msgid "Show windows from all workspaces"
msgstr "顯示所有工作區的視窗"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
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
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:33
msgid "Show the window list on all monitors"
msgstr "在所有螢幕顯示視窗列表"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:34
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
@@ -244,24 +317,27 @@ msgstr "永遠群組視窗"
msgid "Show on all monitors"
msgstr "顯示於所有螢幕"
#: extensions/window-list/workspaceIndicator.js:261
#: extensions/workspace-indicator/extension.js:266
#: extensions/window-list/workspaceIndicator.js:255
#: extensions/workspace-indicator/extension.js:261
msgid "Workspace Indicator"
msgstr "工作區指示器"
#: extensions/workspace-indicator/prefs.js:62
#: extensions/workspace-indicator/prefs.js:69
#, javascript-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: extensions/workspace-indicator/prefs.js:129
#: extensions/workspace-indicator/prefs.js:136
msgid "Workspace Names"
msgstr "工作區名稱"
#: extensions/workspace-indicator/prefs.js:255
#: extensions/workspace-indicator/prefs.js:262
msgid "Add Workspace"
msgstr "新增工作區"
#~ msgid "Applications"
#~ msgstr "應用程式"
#~ msgid "Application"
#~ msgstr "應用程式"
@@ -342,12 +418,6 @@ msgstr "新增工作區"
#~ "功能。\n"
#~ "不過,它可以讓您自訂歡迎訊息。"
#~ msgid "CPU"
#~ msgstr "CPU"
#~ msgid "Memory"
#~ msgstr "記憶體"
#~ msgid "GNOME Shell Classic"
#~ msgstr "GNOME Shell Classic"