diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index df97d556..96d30812 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/NEWS b/NEWS index 716a8894..33162594 100644 --- a/NEWS +++ b/NEWS @@ -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 ==== diff --git a/export-zips.sh b/export-zips.sh index 57c62860..2d7383c3 100755 --- a/export-zips.sh +++ b/export-zips.sh @@ -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) diff --git a/extensions/status-icons/extension.js b/extensions/status-icons/extension.js new file mode 100644 index 00000000..c28f1386 --- /dev/null +++ b/extensions/status-icons/extension.js @@ -0,0 +1,91 @@ +// SPDX-FileCopyrightText: 2018 Adel Gadllah +// SPDX-FileCopyrightText: 2018 Florian Müllner +// +// 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; + } +} diff --git a/extensions/status-icons/meson.build b/extensions/status-icons/meson.build new file mode 100644 index 00000000..b30272ad --- /dev/null +++ b/extensions/status-icons/meson.build @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2018 Florian Müllner +# +# SPDX-License-Identifier: GPL-2.0-or-later + +extension_data += configure_file( + input: metadata_name + '.in', + output: metadata_name, + configuration: metadata_conf +) diff --git a/extensions/status-icons/metadata.json.in b/extensions/status-icons/metadata.json.in new file mode 100644 index 00000000..57c77e4c --- /dev/null +++ b/extensions/status-icons/metadata.json.in @@ -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@" +} diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index bd955d11..3edbf8bf 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -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), - }); - } -} diff --git a/extensions/window-list/meson.build b/extensions/window-list/meson.build index 718cdf7a..6fd17007 100644 --- a/extensions/window-list/meson.build +++ b/extensions/window-list/meson.build @@ -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') diff --git a/extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml b/extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml index 2ed680a5..46ff25cb 100644 --- a/extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml +++ b/extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml @@ -36,5 +36,9 @@ SPDX-License-Identifier: GPL-2.0-or-later only on the primary one. + + true + Show workspace previews in window list + diff --git a/extensions/window-list/prefs.js b/extensions/window-list/prefs.js index 6b2d5958..194d1f9d 100644 --- a/extensions/window-list/prefs.js +++ b/extensions/window-list/prefs.js @@ -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); } } diff --git a/extensions/window-list/stylesheet-dark.css b/extensions/window-list/stylesheet-dark.css index b4c0a3b4..b9087971 100644 --- a/extensions/window-list/stylesheet-dark.css +++ b/extensions/window-list/stylesheet-dark.css @@ -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; } diff --git a/extensions/window-list/stylesheet-light.css b/extensions/window-list/stylesheet-light.css index e4d3a36c..375fd1bf 100644 --- a/extensions/window-list/stylesheet-light.css +++ b/extensions/window-list/stylesheet-light.css @@ -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; } diff --git a/extensions/workspace-indicator/extension.js b/extensions/workspace-indicator/extension.js index f9c7dd9a..ef24a750 100644 --- a/extensions/workspace-indicator/extension.js +++ b/extensions/workspace-indicator/extension.js @@ -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); } diff --git a/extensions/workspace-indicator/meson.build b/extensions/workspace-indicator/meson.build index 36daa535..9388085c 100644 --- a/extensions/workspace-indicator/meson.build +++ b/extensions/workspace-indicator/meson.build @@ -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') diff --git a/extensions/workspace-indicator/prefs.js b/extensions/workspace-indicator/prefs.js index ea0546bf..b828ab8f 100644 --- a/extensions/workspace-indicator/prefs.js +++ b/extensions/workspace-indicator/prefs.js @@ -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; } } diff --git a/extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml b/extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml new file mode 100644 index 00000000..c7c634ca --- /dev/null +++ b/extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml @@ -0,0 +1,15 @@ + + + + + + true + Show workspace previews in top bar + + + diff --git a/extensions/workspace-indicator/stylesheet-dark.css b/extensions/workspace-indicator/stylesheet-dark.css new file mode 100644 index 00000000..e70352f8 --- /dev/null +++ b/extensions/workspace-indicator/stylesheet-dark.css @@ -0,0 +1,76 @@ +/* + * SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos + * SPDX-FileCopyrightText: 2019 Florian Müllner + * + * 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; +} diff --git a/extensions/workspace-indicator/stylesheet-light.css b/extensions/workspace-indicator/stylesheet-light.css new file mode 100644 index 00000000..049b6a38 --- /dev/null +++ b/extensions/workspace-indicator/stylesheet-light.css @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2013 Florian Müllner + * SPDX-FileCopyrightText: 2015 Jakub Steiner + * + * 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; +} diff --git a/extensions/workspace-indicator/stylesheet.css b/extensions/workspace-indicator/stylesheet.css deleted file mode 100644 index 7b53a46f..00000000 --- a/extensions/workspace-indicator/stylesheet.css +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos - * SPDX-FileCopyrightText: 2019 Florian Müllner - * - * 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; -} diff --git a/extensions/window-list/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js similarity index 52% rename from extensions/window-list/workspaceIndicator.js rename to extensions/workspace-indicator/workspaceIndicator.js index 62ebffbd..20d4caa2 100644 --- a/extensions/window-list/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -1,4 +1,6 @@ -// SPDX-FileCopyrightText: 2019 Florian Müllner +// SPDX-FileCopyrightText: 2011 Erick Pérez Castellanos +// SPDX-FileCopyrightText: 2011 Giovanni Campagna +// SPDX-FileCopyrightText: 2017 Florian Müllner // // 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; } } diff --git a/meson.build b/meson.build index f514d3f2..9574fd3b 100644 --- a/meson.build +++ b/meson.build @@ -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' diff --git a/po/POTFILES.in b/po/POTFILES.in index 4abfcfca..447465a1 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -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 diff --git a/po/ca.po b/po/ca.po index 45507336..e967d608 100644 --- a/po/ca.po +++ b/po/ca.po @@ -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 , 2011, 2024 +# Jordi Mas i Hernandez , 2011. # Gil Forcada , 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 \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 \n" "Language-Team: Catalan \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" diff --git a/po/he.po b/po/he.po index 721e1917..007d74a1 100644 --- a/po/he.po +++ b/po/he.po @@ -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 \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 \n" "Language-Team: Hebrew \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 "יישומים" diff --git a/po/hi.po b/po/hi.po index 17149a4e..bfc62330 100644 --- a/po/hi.po +++ b/po/hi.po @@ -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 \n" "Language-Team: Hindi \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 "कार्यस्थान सूचक" diff --git a/po/hu.po b/po/hu.po index fb49bd81..3d1ae726 100644 --- a/po/hu.po +++ b/po/hu.po @@ -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 \n" "Language-Team: Hungarian \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" + diff --git a/po/ru.po b/po/ru.po index 1e933d09..b676367e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -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 \n" "Language-Team: Русский \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 "Приложения" diff --git a/po/sl.po b/po/sl.po index 718a0791..43097073 100644 --- a/po/sl.po +++ b/po/sl.po @@ -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č \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 \n" "Language-Team: Slovenian GNOME Translation Team \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 we’ll 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 log in to GNOME Shell Extensions in order to " -#~ "post a comment or report an error. You understand, right?" -#~ msgstr "" -#~ "Za preprečevanje neželenih objav se je treba najprej prijaviti na spletno stran. 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 our " -#~ "troubleshooting entry 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 odpravljanja napak." - -#~ 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" diff --git a/po/sr.po b/po/sr.po index f38d14d8..cc7007cb 100644 --- a/po/sr.po +++ b/po/sr.po @@ -3,25 +3,25 @@ # This file is distributed under the same license as the gnome-shell-extensions package. # Милош Поповић , 2012. # Мирослав Николић , 2012—2017. -# Марко М. Костић , 2020. +# Марко М. Костић , 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: Марко М. Костић \n" "Language-Team: Serbian \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 "Класична Гномова шкољка" diff --git a/po/tr.po b/po/tr.po index d0a3acff..d53bf452 100644 --- a/po/tr.po +++ b/po/tr.po @@ -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 \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 \n" "Language-Team: Turkish \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" diff --git a/po/zh_TW.po b/po/zh_TW.po index f5f0d58a..a91c8bc5 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -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 \n" -"Language-Team: Chinese \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 \n" +"Language-Team: Chinese (Traditional) \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"