From e06b1e8236d2af4f989bef57e43754a480baa97e Mon Sep 17 00:00:00 2001 From: Daniel Buch Hansen Date: Sun, 13 Apr 2025 21:02:14 +0200 Subject: [PATCH 01/38] windowsNavigator: Adjust to get_key_focus() changes in Clutter Clutter.Stage.get_key_focus() now always returns the value of the Clutter.Stage.keyFocus property, whereas previously it would return the stage itself when no explicit focus was set. Adjust the code accordingly. Closes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/561 Part-of: --- extensions/windowsNavigator/extension.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/windowsNavigator/extension.js b/extensions/windowsNavigator/extension.js index 49dce1e8..600aae79 100644 --- a/extensions/windowsNavigator/extension.js +++ b/extensions/windowsNavigator/extension.js @@ -173,7 +173,7 @@ export default class Extension { this._injectionManager.overrideMethod(viewProto, '_hideTooltips', () => { /* eslint-disable no-invalid-this */ return function () { - if (global.stage.get_key_focus() === global.stage) + if (global.stage.get_key_focus() === null) global.stage.set_key_focus(this._prevFocusActor); this._pickWindow = false; for (let i = 0; i < this._workspaces.length; i++) @@ -235,7 +235,7 @@ export default class Extension { return true; } - if (global.stage.get_key_focus() !== global.stage) + if (global.stage.get_key_focus() !== null) return false; // ignore shift presses, they're required to get numerals in azerty keyboards From b05eb4eb6d89a42c224d783183854c4d01e9d3ac Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Thu, 24 Apr 2025 09:40:01 -0400 Subject: [PATCH 02/38] build: Allow disabling the X11 session This is consistent with gnome-session and the rest of the GNOME session stack. Part-of: --- data/meson.build | 7 ++++++- meson.options | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/data/meson.build b/data/meson.build index 35f00e72..e7df7aee 100644 --- a/data/meson.build +++ b/data/meson.build @@ -2,14 +2,19 @@ # # SPDX-License-Identifier: GPL-2.0-or-later +have_x11 = get_option('x11') + session_desktop_base = 'gnome-classic' session_desktops = [ session_desktop_base, - session_desktop_base + '-xorg', session_desktop_base + '-wayland', ] +if have_x11 + session_desktops += [session_desktop_base + '-xorg'] +endif + foreach name : session_desktops session_desktop = name + '.desktop' if name.endswith('-xorg') diff --git a/meson.options b/meson.options index ddf62fa1..1e3efb2e 100644 --- a/meson.options +++ b/meson.options @@ -20,3 +20,9 @@ option('classic_mode', value: false, description: 'Enable installing data files for classic mode.' ) + +option('x11', + type: 'boolean', + value: true, + description: 'Enable X11 session support.' +) From 30f4beb3e1963b8fd376c535224bac64253cfde0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 7 May 2025 13:16:34 +0200 Subject: [PATCH 03/38] window-list: Adapt to maximization changes Mutter now exposes the is_maximized() method for checking for full maximization, and the plain (un)maximize() methods no longer cover partial maximization. Part-of: --- extensions/window-list/extension.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index a768d735..2f1c2340 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -85,10 +85,10 @@ class WindowContextMenu extends PopupMenu.PopupMenu { this._maximizeItem = new PopupMenu.PopupMenuItem(''); this._maximizeItem.connect('activate', () => { - if (this._metaWindow.get_maximized() === Meta.MaximizeFlags.BOTH) - this._metaWindow.unmaximize(Meta.MaximizeFlags.BOTH); + if (this._metaWindow.is_maximized()) + this._metaWindow.unmaximize(); else - this._metaWindow.maximize(Meta.MaximizeFlags.BOTH); + this._metaWindow.maximize(); }); this.addMenuItem(this._maximizeItem); @@ -123,9 +123,7 @@ class WindowContextMenu extends PopupMenu.PopupMenu { } _updateMaximizeItem() { - let maximized = this._metaWindow.maximized_vertically && - this._metaWindow.maximized_horizontally; - this._maximizeItem.label.text = maximized + this._maximizeItem.label.text = this._metaWindow.is_maximized() ? _('Unmaximize') : _('Maximize'); } } @@ -733,7 +731,7 @@ class AppContextMenu extends PopupMenu.PopupMenu { this._maximizeItem = new PopupMenu.PopupMenuItem(_('Maximize all')); this._maximizeItem.connect('activate', () => { this._appButton.getWindowList().forEach(w => { - w.maximize(Meta.MaximizeFlags.BOTH); + w.maximize(); }); }); this.addMenuItem(this._maximizeItem); @@ -741,7 +739,7 @@ class AppContextMenu extends PopupMenu.PopupMenu { this._unmaximizeItem = new PopupMenu.PopupMenuItem(_('Unmaximize all')); this._unmaximizeItem.connect('activate', () => { this._appButton.getWindowList().forEach(w => { - w.unmaximize(Meta.MaximizeFlags.BOTH); + w.unmaximize(); }); }); this.addMenuItem(this._unmaximizeItem); @@ -760,10 +758,10 @@ class AppContextMenu extends PopupMenu.PopupMenu { this._minimizeItem.visible = windows.some(w => !w.minimized); this._unminimizeItem.visible = windows.some(w => w.minimized); this._maximizeItem.visible = windows.some(w => { - return w.get_maximized() !== Meta.MaximizeFlags.BOTH; + return !w.is_maximized(); }); this._unmaximizeItem.visible = windows.some(w => { - return w.get_maximized() === Meta.MaximizeFlags.BOTH; + return w.is_maximized(); }); super.open(animate); From b0b0f527be2e7ad1eed254e9d6f2df451685fa94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 7 May 2025 13:17:56 +0200 Subject: [PATCH 04/38] screenshot-window-sizer: Adapt to maximization changes Mutter now exposes the is_maximized() method for checking for full maximization, and the plain (un)maximize() methods no longer cover partial maximization. Part-of: --- extensions/screenshot-window-sizer/extension.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/screenshot-window-sizer/extension.js b/extensions/screenshot-window-sizer/extension.js index f1ea3d57..b3a3d116 100644 --- a/extensions/screenshot-window-sizer/extension.js +++ b/extensions/screenshot-window-sizer/extension.js @@ -70,8 +70,8 @@ export default class ScreenshotWindowSizerExtension extends Extension { const backwards = binding.is_reversed(); // Unmaximize first - if (window.get_maximized() !== 0) - window.unmaximize(Meta.MaximizeFlags.BOTH); + if (window.is_maximized()) + window.unmaximize(); let workArea = window.get_work_area_current_monitor(); let outerRect = window.get_frame_rect(); From d6b605e801ec0e66540141c774e6701791a83912 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Sun, 11 May 2025 16:18:47 +0300 Subject: [PATCH 05/38] meson: Switch the x11 default value to false We might remove it completely this cycle, but till then we certainly want to disable it by default regardless Mirror change of gnome-session [1] [1] https://gitlab.gnome.org/GNOME/gnome-session/-/commit/21f10a9edac66a8e03419b03032ad7895b577d32 Part-of: --- meson.options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.options b/meson.options index 1e3efb2e..61eb21c6 100644 --- a/meson.options +++ b/meson.options @@ -23,6 +23,6 @@ option('classic_mode', option('x11', type: 'boolean', - value: true, + value: false, description: 'Enable X11 session support.' ) From 2552c92fe1200b792ce20b39299efff3eee9fe86 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Mon, 12 May 2025 16:48:53 -0400 Subject: [PATCH 06/38] build: Do not install anything in xsessions when X11 is disabled Fixes: b05eb4eb6d ("build: Allow disabling the X11 session") Part-of: --- data/meson.build | 2 +- meson.build | 12 ++++++++---- meson/session-post-install.py | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/data/meson.build b/data/meson.build index e7df7aee..4c8696be 100644 --- a/data/meson.build +++ b/data/meson.build @@ -26,7 +26,7 @@ foreach name : session_desktops # There is a workaround in meson/session-post-install.py until proper # solution arises: # https://github.com/mesonbuild/meson/issues/2416 - session_instdir = xsessiondir + session_instdir = wlsessiondir #session_instdir = [ xesssiondir, wlsessiondir ] endif i18n.merge_file( diff --git a/meson.build b/meson.build index 396b5e23..cb4c3a03 100644 --- a/meson.build +++ b/meson.build @@ -31,6 +31,8 @@ shell_version = ver_arr[0] uuid_suffix = '@gnome-shell-extensions.gcampax.github.com' +have_x11 = get_option('x11') + classic_extensions = [ 'apps-menu', 'places-menu', @@ -86,10 +88,12 @@ endforeach if classic_mode_enabled subdir('data') - meson.add_install_script( - 'meson/session-post-install.py', - join_paths(get_option('prefix'), datadir), - ) + if have_x11 + meson.add_install_script( + 'meson/session-post-install.py', + join_paths(get_option('prefix'), datadir), + ) + endif endif subdir('extensions') diff --git a/meson/session-post-install.py b/meson/session-post-install.py index f1d6ae32..cfc55c2a 100755 --- a/meson/session-post-install.py +++ b/meson/session-post-install.py @@ -15,10 +15,10 @@ else: # FIXME: Meson is unable to copy a generated target file: # https://groups.google.com/forum/#!topic/mesonbuild/3iIoYPrN4P0 -dst_dir = os.path.join(install_root, 'wayland-sessions') +dst_dir = os.path.join(install_root, 'xsessions') if not os.path.exists(dst_dir): os.makedirs(dst_dir) -src = os.path.join(install_root, 'xsessions', 'gnome-classic.desktop') +src = os.path.join(install_root, 'wayland-sessions', 'gnome-classic.desktop') dst = os.path.join(dst_dir, 'gnome-classic.desktop') shutil.copyfile(src, dst) From 7c6c4f0ef9a9a6e4df62be424786dd431e2b20bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Sep=C3=BAlveda?= Date: Tue, 27 May 2025 00:22:06 +0000 Subject: [PATCH 07/38] Update Interlingua translation --- po/ia.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/po/ia.po b/po/ia.po index f60c6486..e2550c7d 100644 --- a/po/ia.po +++ b/po/ia.po @@ -9,10 +9,10 @@ msgstr "" "Project-Id-Version: gnome-shell-extensions main\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "issues\n" -"POT-Creation-Date: 2025-02-13 00:15+0000\n" -"PO-Revision-Date: 2025-02-14 10:36-0300\n" +"POT-Creation-Date: 2025-05-15 14:23+0000\n" +"PO-Revision-Date: 2025-05-26 20:20-0400\n" "Last-Translator: Emilio Sepúlveda \n" -"Language-Team: Interlingua\n" +"Language-Team: Interlingua \n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +23,7 @@ msgstr "" "X-DL-Domain: po\n" "X-DL-State: Translating\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Gtranslator 47.1\n" +"X-Generator: Gtranslator 48.0\n" #: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" @@ -42,11 +42,11 @@ msgstr "GNOME Classic sur Wayland" msgid "GNOME Classic on Xorg" msgstr "GNOME Classic sur Xorg" -#: extensions/apps-menu/extension.js:125 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Favoritos" -#: extensions/apps-menu/extension.js:399 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Applicationes" @@ -172,7 +172,7 @@ msgstr "Statos del intercambio" #: extensions/system-monitor/extension.js:336 msgid "Upload stats" -msgstr "Statisticas de carga" +msgstr "Statisticas de incarga" #: extensions/system-monitor/extension.js:350 msgid "Download stats" @@ -200,7 +200,7 @@ msgstr "Intercambio" #: extensions/system-monitor/extension.js:420 msgid "Upload" -msgstr "Carga" +msgstr "Incarga" #: extensions/system-monitor/extension.js:422 msgid "Download" @@ -224,7 +224,7 @@ msgstr "Monstrar usage del intercambio" #: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:24 msgid "Show upload" -msgstr "Monstrar carga" +msgstr "Monstrar incarga" #: extensions/system-monitor/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml:28 msgid "Show download" @@ -236,7 +236,7 @@ msgstr "Nomine de thema" #: 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 "Le nomine del thema a cargar desde ~/.themes/nomine/gnome-shell" +msgstr "Le nomine del thema a cargar ab ~/.themes/nomine/gnome-shell" #: extensions/window-list/extension.js:95 msgid "Close" @@ -250,35 +250,35 @@ msgstr "Disminimisar" msgid "Minimize" msgstr "Minimisar" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:127 msgid "Unmaximize" msgstr "Dismaximisar" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:127 msgid "Maximize" msgstr "Maximisar" -#: extensions/window-list/extension.js:721 +#: extensions/window-list/extension.js:719 msgid "Minimize all" msgstr "Minimisar toto" -#: extensions/window-list/extension.js:727 +#: extensions/window-list/extension.js:725 msgid "Unminimize all" msgstr "Disminimisar toto" -#: extensions/window-list/extension.js:733 +#: extensions/window-list/extension.js:731 msgid "Maximize all" msgstr "Maximisar toto" -#: extensions/window-list/extension.js:741 +#: extensions/window-list/extension.js:739 msgid "Unmaximize all" msgstr "Dismaximisar toto" -#: extensions/window-list/extension.js:749 +#: extensions/window-list/extension.js:747 msgid "Close all" msgstr "Clauder toto" -#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23 +#: extensions/window-list/extension.js:990 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Lista de fenestras" From 59e6aefd5edff6694f85eda0dac8f203dfa07369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 8 Jun 2025 13:22:39 +0200 Subject: [PATCH 08/38] build: Use build-aux for auxiliary build scripts This is the name most projects have settled on, so let's use that as well. Part-of: --- {meson => build-aux}/check-version.py | 0 {meson => build-aux}/session-post-install.py | 0 data/meson.build | 2 +- meson.build | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) rename {meson => build-aux}/check-version.py (100%) rename {meson => build-aux}/session-post-install.py (100%) diff --git a/meson/check-version.py b/build-aux/check-version.py similarity index 100% rename from meson/check-version.py rename to build-aux/check-version.py diff --git a/meson/session-post-install.py b/build-aux/session-post-install.py similarity index 100% rename from meson/session-post-install.py rename to build-aux/session-post-install.py diff --git a/data/meson.build b/data/meson.build index 4c8696be..ea846e94 100644 --- a/data/meson.build +++ b/data/meson.build @@ -23,7 +23,7 @@ foreach name : session_desktops session_instdir = wlsessiondir else # FIXME: The same target can not be copied into two directories. - # There is a workaround in meson/session-post-install.py until proper + # There is a workaround in build-aux/session-post-install.py until proper # solution arises: # https://github.com/mesonbuild/meson/issues/2416 session_instdir = wlsessiondir diff --git a/meson.build b/meson.build index cb4c3a03..4505377c 100644 --- a/meson.build +++ b/meson.build @@ -90,7 +90,7 @@ if classic_mode_enabled subdir('data') if have_x11 meson.add_install_script( - 'meson/session-post-install.py', + 'build-aux/session-post-install.py', join_paths(get_option('prefix'), datadir), ) endif @@ -101,7 +101,7 @@ subdir('po') gnome.post_install(glib_compile_schemas: true) -meson.add_dist_script('meson/check-version.py', meson.project_version(), 'NEWS') +meson.add_dist_script('build-aux/check-version.py', meson.project_version(), 'NEWS') summary_options = { 'extensions': enabled_extensions, From 8819ed01c83ef70a4c2069e49f6a587fff8b5ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 8 Jun 2025 13:27:53 +0200 Subject: [PATCH 09/38] Bump version to 49.alpha.0 Update NEWS. --- NEWS | 13 +++++++++++++ meson.build | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 34600c1b..8bcde1e0 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,16 @@ +49.alpha.0 +========== +* windowsNavigator: Fix handling keyboard shortcuts [Daniel; !395] +* build: Allow disabling the X11 session [Neal; !396, !400] +* Disable X11 session by default [Jordan; !399] +* Misc. bug fixes and cleanups [Florian; !398, !406] + +Contributors: + Daniel Buch Hansen, Neal Gompa, Florian Müllner, Jordan Petridis + +Translators: + Emilio Sepúlveda [ia] + 48.1 ==== diff --git a/meson.build b/meson.build index 4505377c..a7b6a548 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,7 @@ project( 'gnome-shell-extensions', - version: '48.1', + version: '49.alpha.0', meson_version: '>= 1.1.0', license: 'GPL-2.0-or-later', ) From a3ff3c79b20caa285670d50e998ca007ce04375a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 16 Jun 2025 23:34:07 +0200 Subject: [PATCH 10/38] Revert "window-list: Fix initial visibility" Since we no longer track fullscreen state in the overview, the workaround is no longer necessary. This reverts commit 6ee4205f1e60858b20a1f9492b34800265841a5c. Part-of: --- extensions/window-list/extension.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 2f1c2340..9e16b262 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -1033,9 +1033,6 @@ class WindowList extends St.Widget { }, this); global.display.connectObject('in-fullscreen-changed', () => { - // Work-around for initial change from unknown to !fullscreen - if (Main.overview.visible) - this.hide(); this._updateKeyboardAnchor(); }, this); From 0ad959de1eb4a707ba7b5e4c24864dbec6f398c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 16 Jun 2025 20:21:32 +0200 Subject: [PATCH 11/38] window-list: Only remove fullscreen tracking in overview Since commit 981e8e42e2, we untrack chrome in the overview to avoid fullscreen tracking interfering with hiding the window list in the overview. However this also means that we no longer contribute to the struts while in the overview, which can lead to unwanted window resizes around the transition. So instead of fully untracking the actor, retrack without fullscreen tracking. Part-of: --- extensions/window-list/extension.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 9e16b262..08d2c28b 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -981,11 +981,20 @@ class WindowList extends St.Widget { () => this._onWorkspaceMenuSet(), this); this._onWorkspaceMenuSet(); - const chromeOptions = { + const inOverview = Main.overview.visible || + (Main.layoutManager._startingUp && Main.sessionMode.hasOverview); + + const overviewChromeOptions = { affectsStruts: true, + }; + const chromeOptions = { + ...overviewChromeOptions, trackFullscreen: true, }; - Main.layoutManager.addChrome(this, chromeOptions); + Main.layoutManager.addChrome(this, inOverview + ? overviewChromeOptions + : chromeOptions); + Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox); Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic'); @@ -1022,12 +1031,12 @@ class WindowList extends St.Widget { Main.overview.connectObject( 'showing', () => { - Main.layoutManager.untrackChrome(this); + this._retrackChrome(overviewChromeOptions); this.hide(); this._updateKeyboardAnchor(); }, 'hidden', () => { - Main.layoutManager.trackChrome(this, chromeOptions); + this._retrackChrome(chromeOptions); this.visible = !this._monitor.inFullscreen; this._updateKeyboardAnchor(); }, this); @@ -1098,6 +1107,11 @@ class WindowList extends St.Widget { this._monitor.y + this._monitor.height - this.height); } + _retrackChrome(options) { + Main.layoutManager.untrackChrome(this); + Main.layoutManager.trackChrome(this, options); + } + _updateWorkspaceIndicatorVisibility() { let workspaceManager = global.workspace_manager; let hasWorkspaces = this._mutterSettings.get_boolean('dynamic-workspaces') || From 301017904b74122e5d4f8181a2eda1dae0efad2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 17 Jun 2025 15:59:58 +0200 Subject: [PATCH 12/38] lint: Require dangling comma in multi-line imports This keeps the config in line with gjs, which added the option in gjs@f7d3b5d4c8. Part-of: --- lint/eslintrc-gjs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/lint/eslintrc-gjs.yml b/lint/eslintrc-gjs.yml index b1d73946..bb9ba38e 100644 --- a/lint/eslintrc-gjs.yml +++ b/lint/eslintrc-gjs.yml @@ -30,6 +30,7 @@ rules: - error - arrays: always-multiline objects: always-multiline + imports: always-multiline functions: never comma-spacing: - error From 53ba3ce620a445bcb00454d5e772c68e5dd05c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 16:31:57 +0200 Subject: [PATCH 13/38] workspace-indicator: Remove left-over variable Part-of: --- extensions/workspace-indicator/workspaceIndicator.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 0e92fd74..e8b0fdbd 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -459,8 +459,6 @@ export class WorkspaceIndicator extends PanelMenu.Button { this._thumbnails = new WorkspacePreviews(); container.add_child(this._thumbnails); - this._workspacesItems = []; - workspaceManager.connectObject( 'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER, this); From c9678e89d2cc3c2a1ee087d9ce815ab942b47486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 16:27:57 +0200 Subject: [PATCH 14/38] workspace-indicator: Split out WorkspacesMenu The menu currently only contains the previews without any logic on its own. This is about to change, so split the menu into a separate class. Part-of: --- .../workspace-indicator/workspaceIndicator.js | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index e8b0fdbd..a1601d90 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -421,6 +421,16 @@ class WorkspacePreviews extends Clutter.Actor { } } +class WorkspacesMenu extends PopupMenu.PopupMenu { + constructor(sourceActor) { + super(sourceActor, 0.5, St.Side.TOP); + + const previews = new WorkspacePreviews({show_labels: true}); + this.box.add_child(previews); + this.actor.add_style_class_name(`${baseStyleClassName}-menu`); + } +} + export class WorkspaceIndicator extends PanelMenu.Button { static { GObject.registerClass(this); @@ -496,7 +506,7 @@ export class WorkspaceIndicator extends PanelMenu.Button { this._thumbnails.visible = !useMenu; this.setMenu(useMenu - ? this._createPreviewMenu() + ? new WorkspacesMenu(this) : null); this._updateTopBarRedirect(); @@ -523,13 +533,4 @@ export class WorkspaceIndicator extends PanelMenu.Button { const current = this._currentWorkspace + 1; return `${current} / ${nWorkspaces}`; } - - _createPreviewMenu() { - const menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.TOP); - - const previews = new WorkspacePreviews({show_labels: true}); - menu.box.add_child(previews); - menu.actor.add_style_class_name(`${baseStyleClassName}-menu`); - return menu; - } } From 990e340366621fa3ca167869b35f3664023bf6e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 18:53:20 +0200 Subject: [PATCH 15/38] workspace-indicator: Add back plain workspaces menu Unlike in the top bar, the previews in the menu were not too successful. Change back to a regular menu with a list of workspace names. Part-of: --- .../workspace-indicator/stylesheet-dark.css | 20 ------ .../workspace-indicator/workspaceIndicator.js | 65 ++++++++++++++++++- 2 files changed, 62 insertions(+), 23 deletions(-) diff --git a/extensions/workspace-indicator/stylesheet-dark.css b/extensions/workspace-indicator/stylesheet-dark.css index e70352f8..3440174e 100644 --- a/extensions/workspace-indicator/stylesheet-dark.css +++ b/extensions/workspace-indicator/stylesheet-dark.css @@ -13,19 +13,10 @@ -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; @@ -40,11 +31,6 @@ padding-right: 5px; } -.workspace-indicator-menu .workspace-box { - spacing: 6px; -} - -.workspace-indicator-menu .workspace, .workspace-indicator .workspace { border: 1px solid transparent; border-radius: 4px; @@ -55,12 +41,6 @@ width: 52px; } -.workspace-indicator-menu .workspace { - height: 80px; - width: 160px; -} - -.workspace-indicator-menu .workspace.active, .workspace-indicator .workspace.active { border-color: #fff; } diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index a1601d90..d68adee4 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -10,7 +10,7 @@ import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; import St from 'gi://St'; -import {gettext as _} 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'; @@ -425,9 +425,68 @@ class WorkspacesMenu extends PopupMenu.PopupMenu { constructor(sourceActor) { super(sourceActor, 0.5, St.Side.TOP); - const previews = new WorkspacePreviews({show_labels: true}); - this.box.add_child(previews); this.actor.add_style_class_name(`${baseStyleClassName}-menu`); + + this._workspacesSection = new PopupMenu.PopupMenuSection(); + this.addMenuItem(this._workspacesSection); + + this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); + + this.addAction(_('Settings'), () => { + const extension = Extension.lookupByURL(import.meta.url); + extension.openPreferences(); + }); + + this._desktopSettings = + new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'}); + this._desktopSettings.connectObject('changed::workspace-names', + () => this._updateWorkspaceLabels(), this); + + const {workspaceManager} = global; + workspaceManager.connectObject( + 'notify::n-workspaces', () => this._updateWorkspaceItems(), + 'workspace-switched', () => this._updateActiveIndicator(), + this.actor); + this._updateWorkspaceItems(); + } + + _updateWorkspaceItems() { + const {workspaceManager} = global; + const {nWorkspaces} = workspaceManager; + + const section = this._workspacesSection.actor; + while (section.get_n_children() < nWorkspaces) { + const item = new PopupMenu.PopupMenuItem(''); + item.connect('activate', (o, event) => { + const index = [...section].indexOf(item); + const workspace = workspaceManager.get_workspace_by_index(index); + workspace?.activate(event.get_time()); + }); + this._workspacesSection.addMenuItem(item); + } + + [...section].splice(nWorkspaces).forEach(item => item.destroy()); + + this._updateWorkspaceLabels(); + this._updateActiveIndicator(); + } + + _updateWorkspaceLabels() { + const items = [...this._workspacesSection.actor]; + items.forEach( + (item, i) => (item.label.text = Meta.prefs_get_workspace_name(i))); + } + + _updateActiveIndicator() { + const {workspaceManager} = global; + const active = workspaceManager.get_active_workspace_index(); + + const items = [...this._workspacesSection.actor]; + items.forEach((item, i) => { + item.setOrnament(i === active + ? PopupMenu.Ornament.CHECK + : PopupMenu.Ornament.NONE); + }); } } From 2840a6b3642e0963a5f921e3b6fa497f1206bd3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 19:00:23 +0200 Subject: [PATCH 16/38] workspace-indicator: Remove preview labels Previews are no longer used in the menu, so they are never shown with labels. Part-of: --- .../workspace-indicator/workspaceIndicator.js | 39 +------------------ 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index d68adee4..205b8e66 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -116,10 +116,6 @@ class WorkspaceThumbnail extends St.Button { 'active', null, null, GObject.ParamFlags.READWRITE, false), - 'show-label': GObject.ParamSpec.boolean( - 'show-label', null, null, - GObject.ParamFlags.READWRITE, - false), }; static { @@ -148,31 +144,15 @@ class WorkspaceThumbnail extends St.Button { }); 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', visible: false, }); 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 @@ -270,9 +250,6 @@ class WorkspaceThumbnail extends St.Button { } _syncTooltip() { - if (this.showLabel) - return; - if (this.hover) { this._tooltip.set({ text: Meta.prefs_get_workspace_name(this._index), @@ -309,13 +286,6 @@ class WorkspaceThumbnail extends St.Button { } class WorkspacePreviews extends Clutter.Actor { - static [GObject.properties] = { - 'show-labels': GObject.ParamSpec.boolean( - 'show-labels', null, null, - GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, - false), - }; - static { GObject.registerClass(this); } @@ -367,13 +337,8 @@ class WorkspacePreviews extends Clutter.Actor { 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); - } + for (let i = 0; i < nWorkspaces; i++) + this._thumbnailsBox.add_child(new WorkspaceThumbnail(i)); if (this.mapped) this._updateScrollPosition(); From 1186b2a7a0551bcfbd99a362476e11939fc425c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 28 May 2025 02:16:33 +0200 Subject: [PATCH 17/38] workspace-indicator: Include menu with previews The menu is currently only used when previews are disabled. But as we are going to use the menu for changing workspace names, it should be always available. So add it unconditionally, and show it on right-click when using previews. Part-of: --- .../workspace-indicator/stylesheet-dark.css | 5 ++++ .../workspace-indicator/workspaceIndicator.js | 25 +++++++++++++------ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/extensions/workspace-indicator/stylesheet-dark.css b/extensions/workspace-indicator/stylesheet-dark.css index 3440174e..19ef6ba1 100644 --- a/extensions/workspace-indicator/stylesheet-dark.css +++ b/extensions/workspace-indicator/stylesheet-dark.css @@ -5,6 +5,11 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ +.workspace-indicator.previews:active { + background-color: none !important; + box-shadow: none !important; +} + .workspace-indicator .status-label { padding: 0 8px; } diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 205b8e66..10975ede 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -473,6 +473,8 @@ export class WorkspaceIndicator extends PanelMenu.Button { baseStyleClassName = baseStyleClass; this.add_style_class_name(baseStyleClassName); + this.setMenu(new WorkspacesMenu(this)); + let container = new St.Widget({ layout_manager: new Clutter.BinLayout(), x_expand: true, @@ -493,6 +495,14 @@ export class WorkspaceIndicator extends PanelMenu.Button { this._thumbnails = new WorkspacePreviews(); container.add_child(this._thumbnails); + this._thumbnails.connect('button-press-event', (a, event) => { + if (event.get_button() !== Clutter.BUTTON_SECONDARY) + return Clutter.EVENT_PROPAGATE; + + this.menu.toggle(); + return Clutter.EVENT_STOP; + }); + workspaceManager.connectObject( 'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER, this); @@ -523,15 +533,16 @@ export class WorkspaceIndicator extends PanelMenu.Button { } _updateThumbnailVisibility() { - const useMenu = !this._settings.get_boolean('embed-previews'); - this.reactive = useMenu; + const usePreviews = this._settings.get_boolean('embed-previews'); + this.reactive = !usePreviews; - this._statusLabel.visible = useMenu; - this._thumbnails.visible = !useMenu; + this._thumbnails.visible = usePreviews; + this._statusLabel.visible = !usePreviews; - this.setMenu(useMenu - ? new WorkspacesMenu(this) - : null); + if (usePreviews) + this.add_style_class_name('previews'); + else + this.remove_style_class_name('previews'); this._updateTopBarRedirect(); } From 01d8d4871e80e86f87aeac281513c19c0a69e962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 29 May 2025 14:53:37 +0200 Subject: [PATCH 18/38] workspace-indicator: Expose active workspace name on menu When not using previews, we currently use a numerical presentation like "1 / 4" for the top bar button. We will change that to use the active workspace name instead. As the menu already has to track workspace switches and name changes, expose the active workspace name there, so that the button doesn't have to duplicate the tracking. Part-of: --- .../workspace-indicator/workspaceIndicator.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 10975ede..d24310de 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -404,8 +404,10 @@ class WorkspacesMenu extends PopupMenu.PopupMenu { this._desktopSettings = new Gio.Settings({schema_id: 'org.gnome.desktop.wm.preferences'}); - this._desktopSettings.connectObject('changed::workspace-names', - () => this._updateWorkspaceLabels(), this); + this._desktopSettings.connectObject('changed::workspace-names', () => { + this._updateWorkspaceLabels(); + this.emit('active-name-changed'); + }, this); const {workspaceManager} = global; workspaceManager.connectObject( @@ -415,6 +417,12 @@ class WorkspacesMenu extends PopupMenu.PopupMenu { this._updateWorkspaceItems(); } + get activeName() { + const {workspaceManager} = global; + const active = workspaceManager.get_active_workspace_index(); + return Meta.prefs_get_workspace_name(active); + } + _updateWorkspaceItems() { const {workspaceManager} = global; const {nWorkspaces} = workspaceManager; @@ -452,6 +460,7 @@ class WorkspacesMenu extends PopupMenu.PopupMenu { ? PopupMenu.Ornament.CHECK : PopupMenu.Ornament.NONE); }); + this.emit('active-name-changed'); } } From ee2c76de1d6a10f2b663d26b372eb2421f442633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 20:59:58 +0200 Subject: [PATCH 19/38] workspace-indicator: Show full name when using menu With workspace names becoming a more prominent feature, it makes sense to expose them without opening the menu. Part-of: --- .../workspace-indicator/stylesheet-dark.css | 8 +++++ .../workspace-indicator/workspaceIndicator.js | 33 ++++++++----------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/extensions/workspace-indicator/stylesheet-dark.css b/extensions/workspace-indicator/stylesheet-dark.css index 19ef6ba1..5c502d93 100644 --- a/extensions/workspace-indicator/stylesheet-dark.css +++ b/extensions/workspace-indicator/stylesheet-dark.css @@ -11,8 +11,16 @@ } .workspace-indicator .status-label { + width: 8em; padding: 0 8px; } +.workspace-indicator .status-label:ltr { padding-right: 4px; } +.workspace-indicator .status-label:rtl { padding-left: 4px; } + +.workspace-indicator .system-status-icon { + padding: 0 !important; + margin: 0 !important; +} .workspace-indicator .workspaces-view.hfade { -st-hfade-offset: 20px; diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index d24310de..6ef2c21d 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -491,15 +491,23 @@ export class WorkspaceIndicator extends PanelMenu.Button { }); this.add_child(container); - let workspaceManager = global.workspace_manager; + this._statusBox = new St.BoxLayout(); + container.add_child(this._statusBox); - this._currentWorkspace = workspaceManager.get_active_workspace_index(); this._statusLabel = new St.Label({ style_class: 'status-label', + x_expand: true, y_align: Clutter.ActorAlign.CENTER, - text: this._getStatusText(), + text: this.menu.activeName, }); - container.add_child(this._statusLabel); + this._statusBox.add_child(this._statusLabel); + this._statusBox.add_child(new St.Icon({ + icon_name: 'pan-down-symbolic', + style_class: 'system-status-icon', + })); + + this.menu.connect('active-name-changed', + () => this._statusLabel.set_text(this.menu.activeName)); this._thumbnails = new WorkspacePreviews(); container.add_child(this._thumbnails); @@ -512,10 +520,6 @@ export class WorkspaceIndicator extends PanelMenu.Button { return Clutter.EVENT_STOP; }); - workspaceManager.connectObject( - 'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER, - this); - this.connect('scroll-event', (a, event) => Main.wm.handleWorkspaceScroll(event)); @@ -546,7 +550,7 @@ export class WorkspaceIndicator extends PanelMenu.Button { this.reactive = !usePreviews; this._thumbnails.visible = usePreviews; - this._statusLabel.visible = !usePreviews; + this._statusBox.visible = !usePreviews; if (usePreviews) this.add_style_class_name('previews'); @@ -566,15 +570,4 @@ export class WorkspaceIndicator extends PanelMenu.Button { ? Clutter.OffscreenRedirect.ALWAYS : Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY); } - - _onWorkspaceSwitched() { - this._currentWorkspace = global.workspace_manager.get_active_workspace_index(); - this._statusLabel.set_text(this._getStatusText()); - } - - _getStatusText() { - const {nWorkspaces} = global.workspace_manager; - const current = this._currentWorkspace + 1; - return `${current} / ${nWorkspaces}`; - } } From 17b37ff577758ac36e0e6ac502a1c501c442a803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 9 Jun 2025 18:10:14 +0200 Subject: [PATCH 20/38] workspace-indicator: Add background when using name label Panel buttons are flat, so the name+arrow are not immediately recognizable as a single control. Address this by adding a background to the button when using the name label. Part-of: --- extensions/workspace-indicator/stylesheet-dark.css | 14 ++++++++++++++ .../workspace-indicator/stylesheet-light.css | 14 ++++++++++++++ .../workspace-indicator/workspaceIndicator.js | 7 +++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/extensions/workspace-indicator/stylesheet-dark.css b/extensions/workspace-indicator/stylesheet-dark.css index 5c502d93..95262671 100644 --- a/extensions/workspace-indicator/stylesheet-dark.css +++ b/extensions/workspace-indicator/stylesheet-dark.css @@ -10,6 +10,20 @@ box-shadow: none !important; } +.workspace-indicator.name-label { + box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.17) !important; +} +.workspace-indicator.name-label:hover, +.workspace-indicator.name-label:focus { + box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.28) !important; +} +.workspace-indicator.name-label:active { + box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.32) !important; +} +.workspace-indicator.name-label:active:hover { + box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.36) !important; +} + .workspace-indicator .status-label { width: 8em; padding: 0 8px; diff --git a/extensions/workspace-indicator/stylesheet-light.css b/extensions/workspace-indicator/stylesheet-light.css index 049b6a38..5191923c 100644 --- a/extensions/workspace-indicator/stylesheet-light.css +++ b/extensions/workspace-indicator/stylesheet-light.css @@ -7,6 +7,20 @@ @import url("stylesheet-dark.css"); +.workspace-indicator.name-label { + box-shadow: inset 0 0 0 100px rgba(34, 34, 38, 0.17) !important; +} +.workspace-indicator.name-label:hover, +.workspace-indicator.name-label:focus { + box-shadow: inset 0 0 0 100px rgba(34, 34, 38, 0.28) !important; +} +.workspace-indicator.name-label:active { + box-shadow: inset 0 0 0 100px rgba(34, 34, 38, 0.32) !important; +} +.workspace-indicator.name-label:active:hover { + box-shadow: inset 0 0 0 100px rgba(34, 34, 38, 0.36) !important; +} + .workspace-indicator .workspace { background-color: #ccc; } diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 6ef2c21d..994bc287 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -552,10 +552,13 @@ export class WorkspaceIndicator extends PanelMenu.Button { this._thumbnails.visible = usePreviews; this._statusBox.visible = !usePreviews; - if (usePreviews) + if (usePreviews) { this.add_style_class_name('previews'); - else + this.remove_style_class_name('name-label'); + } else { this.remove_style_class_name('previews'); + this.add_style_class_name('name-label'); + } this._updateTopBarRedirect(); } From 83d7ae031bfec2310e1fdda95431334289ec6138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 21:07:08 +0200 Subject: [PATCH 21/38] workspace-indicator: Refine preview settings Add a group title, and change the single switch row to radio rows to explicitly choose between "Previews" and "Workspace Name". Part-of: --- .../workspace-indicator/workspacePrefs.js | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/extensions/workspace-indicator/workspacePrefs.js b/extensions/workspace-indicator/workspacePrefs.js index 339a1a5a..1e89e990 100644 --- a/extensions/workspace-indicator/workspacePrefs.js +++ b/extensions/workspace-indicator/workspacePrefs.js @@ -22,15 +22,35 @@ class GeneralGroup extends Adw.PreferencesGroup { } constructor(settings) { - super(); - - const row = new Adw.SwitchRow({ - title: _('Show Previews'), + super({ + title: _('Indicator'), }); - this.add(row); + + const previewCheck = new Gtk.CheckButton(); + const previewRow = new Adw.ActionRow({ + title: _('Previews'), + activatable_widget: previewCheck, + }); + previewRow.add_prefix(previewCheck); + this.add(previewRow); + + const nameCheck = new Gtk.CheckButton({ + group: previewCheck, + }); + const nameRow = new Adw.ActionRow({ + title: _('Workspace Name'), + activatable_widget: nameCheck, + }); + nameRow.add_prefix(nameCheck); + this.add(nameRow); + + if (settings.get_boolean('embed-previews')) + previewCheck.active = true; + else + nameCheck.active = true; settings.bind('embed-previews', - row, 'active', + previewCheck, 'active', Gio.SettingsBindFlags.DEFAULT); } } From b5ac041c1a6f250a92ba970cf14c09ad19491673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 May 2025 16:20:05 +0200 Subject: [PATCH 22/38] workspace-indicator: Include workspace settings While the "Multitasking" panel in Settings already exposes workspace settings, it makes sense to expose them in our prefs dialog as well where they are more in context. Part-of: --- .../workspace-indicator/workspacePrefs.js | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/extensions/workspace-indicator/workspacePrefs.js b/extensions/workspace-indicator/workspacePrefs.js index 1e89e990..d3eb9eca 100644 --- a/extensions/workspace-indicator/workspacePrefs.js +++ b/extensions/workspace-indicator/workspacePrefs.js @@ -55,6 +55,75 @@ class GeneralGroup extends Adw.PreferencesGroup { } } +class BehaviorGroup extends Adw.PreferencesGroup { + static { + GObject.registerClass(this); + } + + constructor() { + super({ + title: _('Behavior'), + }); + + const dynamicCheck = new Gtk.CheckButton(); + const dynamicRow = new Adw.ActionRow({ + title: _('Dynamic'), + subtitle: _('Automatically removes empty workspaces.'), + activatable_widget: dynamicCheck, + }); + dynamicRow.add_prefix(dynamicCheck); + this.add(dynamicRow); + + const fixedCheck = new Gtk.CheckButton({ + group: dynamicCheck, + }); + const fixedRow = new Adw.ActionRow({ + title: _('Fixed Number'), + subtitle: _('Specify a number of permanent workspaces.'), + activatable_widget: fixedCheck, + }); + fixedRow.add_prefix(fixedCheck); + this.add(fixedRow); + + const adjustment = new Gtk.Adjustment({ + lower: 1, + step_increment: 1, + value: 4, + upper: 36, // hard limit in mutter + }); + const numRow = new Adw.SpinRow({ + title: _('Number of Workspaces'), + adjustment, + }); + this.add(numRow); + + const mutterSettings = new Gio.Settings({ + schema_id: 'org.gnome.mutter', + }); + + if (mutterSettings.get_boolean('dynamic-workspaces')) + dynamicCheck.active = true; + else + fixedCheck.active = true; + + mutterSettings.bind('dynamic-workspaces', + dynamicCheck, 'active', + Gio.SettingsBindFlags.DEFAULT); + + const desktopSettings = new Gio.Settings({ + schema_id: 'org.gnome.desktop.wm.preferences', + }); + + desktopSettings.bind('num-workspaces', + numRow, 'value', + Gio.SettingsBindFlags.DEFAULT); + + fixedCheck.bind_property('active', + numRow, 'sensitive', + GObject.BindingFlags.SYNC_CREATE); + } +} + class NewItem extends GObject.Object {} GObject.registerClass(NewItem); @@ -247,6 +316,7 @@ export class WorkspacesPage extends Adw.PreferencesPage { }); this.add(new GeneralGroup(settings)); + this.add(new BehaviorGroup()); this.add(new WorkspacesGroup()); } } From 762903618dbdc1f717705ba9541e6deb193c46d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 28 May 2025 21:01:08 +0200 Subject: [PATCH 23/38] workspace-indicator: Allow changing workspace names from menu Instead of requiring the user to open the prefs dialog to change workspace names, make the menu items themselves editable. Part-of: --- .../workspace-indicator/stylesheet-dark.css | 47 +++++++ .../workspace-indicator/stylesheet-light.css | 16 +++ .../workspace-indicator/workspaceIndicator.js | 121 +++++++++++++++++- 3 files changed, 183 insertions(+), 1 deletion(-) diff --git a/extensions/workspace-indicator/stylesheet-dark.css b/extensions/workspace-indicator/stylesheet-dark.css index 95262671..0453cb0f 100644 --- a/extensions/workspace-indicator/stylesheet-dark.css +++ b/extensions/workspace-indicator/stylesheet-dark.css @@ -81,3 +81,50 @@ .workspace-indicator-window-preview.active { background-color: #d4d4d4; } + +.workspace-indicator-menu { + min-width: 17em; +} + +.workspace-indicator-menu .editable-menu-item.popup-menu-item { + padding: 3px 12px; +} + +.workspace-indicator-menu .editable-menu-item .icon-button { + padding: 6px; +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat { + background-color: transparent; +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:hover { + background-color: st-transparentize(white, 90%); +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:active { + background-color: st-transparentize(white, 85%); +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:checked { + color: -st-accent-fg-color; + background-color: -st-accent-color; +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:checked:hover { + background-color: st-lighten(-st-accent-color, 10%); +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:checked:active { + background-color: st-lighten(-st-accent-color, 15%); +} + +.workspace-indicator-menu .editable-menu-item StLabel { + padding: 0 11px; + width: 6.5em; +} + +.workspace-indicator-menu .editable-menu-item StEntry { + padding: 9px 9px; + width: 6.5em; +} diff --git a/extensions/workspace-indicator/stylesheet-light.css b/extensions/workspace-indicator/stylesheet-light.css index 5191923c..491add2a 100644 --- a/extensions/workspace-indicator/stylesheet-light.css +++ b/extensions/workspace-indicator/stylesheet-light.css @@ -37,3 +37,19 @@ .workspace-indicator-window-preview.active { background-color: #f6f5f4; } + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:hover { + background-color: st-transparentize(black, 90%); +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:active { + background-color: st-transparentize(black, 85%); +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:checked:hover { + background-color: st-darken(-st-accent-color, 10%); +} + +.workspace-indicator-menu .editable-menu-item .icon-button.flat:checked:active { + background-color: st-darken(-st-accent-color, 15%); +} diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 994bc287..80c46e39 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -8,6 +8,7 @@ import Clutter from 'gi://Clutter'; import Gio from 'gi://Gio'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; +import Shell from 'gi://Shell'; import St from 'gi://St'; import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js'; @@ -386,6 +387,117 @@ class WorkspacePreviews extends Clutter.Actor { } } +class EditableMenuItem extends PopupMenu.PopupBaseMenuItem { + static [GObject.signals] = { + 'edited': {}, + }; + + static { + GObject.registerClass(this); + } + + constructor() { + super({ + style_class: 'editable-menu-item', + }); + this.get_accessible()?.set_description( + _('Press %s to edit').format('e')); + + const stack = new Shell.Stack({ + x_expand: true, + x_align: Clutter.ActorAlign.START, + }); + this.add_child(stack); + + this.label = new St.Label({ + y_align: Clutter.ActorAlign.CENTER, + }); + stack.add_child(this.label); + this.label_actor = this.label; + + this._entry = new St.Entry({ + opacity: 0, + reactive: false, + }); + stack.add_child(this._entry); + + this.label.bind_property('text', + this._entry, 'text', + GObject.BindingFlags.DEFAULT); + + this._entry.clutter_text.connect('activate', + () => this._stopEditing()); + + this._editButton = new St.Button({ + style_class: 'icon-button flat', + icon_name: 'document-edit-symbolic', + button_mask: St.ButtonMask.ONE, + toggle_mode: true, + x_align: Clutter.ActorAlign.END, + y_align: Clutter.ActorAlign.CENTER, + }); + this.add_child(this._editButton); + + this._editButton.connect('notify::checked', () => { + if (this._editButton.checked) { + this._editButton.icon_name = 'ornament-check-symbolic'; + this._startEditing(); + } else { + this._editButton.icon_name = 'document-edit-symbolic'; + this._stopEditing(); + } + }); + this.connect('key-release-event', (o, event) => { + if (event.get_key_symbol() === Clutter.KEY_e) + this._editButton.checked = true; + }); + + global.stage.connectObject('notify::key-focus', () => { + const {keyFocus} = global.stage; + if (!keyFocus || !this.contains(keyFocus)) + this._stopEditing(); + }, this); + } + + _switchActor(from, to) { + to.reactive = true; + to.ease({ + opacity: 255, + duration: 300, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + }); + + from.ease({ + opacity: 0, + duration: 300, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + onComplete: () => { + from.reactive = false; + }, + }); + } + + _startEditing() { + this._switchActor(this.label, this._entry); + + this._entry.clutter_text.set_selection(0, -1); + this._entry.clutter_text.grab_key_focus(); + } + + _stopEditing() { + if (this.label.text !== this._entry.text) { + this.label.text = this._entry.text; + this.emit('edited'); + } + + if (this._editButton.checked) + this._editButton.checked = false; + + this._switchActor(this._entry, this.label); + this.navigate_focus(this, St.DirectionType.TAB_FORWARD, false); + } +} + class WorkspacesMenu extends PopupMenu.PopupMenu { constructor(sourceActor) { super(sourceActor, 0.5, St.Side.TOP); @@ -429,12 +541,19 @@ class WorkspacesMenu extends PopupMenu.PopupMenu { const section = this._workspacesSection.actor; while (section.get_n_children() < nWorkspaces) { - const item = new PopupMenu.PopupMenuItem(''); + const item = new EditableMenuItem(); item.connect('activate', (o, event) => { const index = [...section].indexOf(item); const workspace = workspaceManager.get_workspace_by_index(index); workspace?.activate(event.get_time()); }); + item.connect('edited', () => { + const nLabels = section.get_n_children(); + const oldNames = this._desktopSettings.get_strv('workspace-names'); + const newNames = [...section].map(c => c.label.text); + this._desktopSettings.set_strv('workspace-names', + [...newNames, ...oldNames.slice(nLabels)]); + }); this._workspacesSection.addMenuItem(item); } From 1899d502a970dfefe1c8c0f0c4767224c9f390a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 28 May 2025 21:04:36 +0200 Subject: [PATCH 24/38] workspace-indicator: Remove workspace names from prefs Now that names can be changed from the extension itself, we no longer need to expose them in the prefs dialog. Part-of: --- .../workspace-indicator/workspacePrefs.js | 187 ------------------ 1 file changed, 187 deletions(-) diff --git a/extensions/workspace-indicator/workspacePrefs.js b/extensions/workspace-indicator/workspacePrefs.js index d3eb9eca..2a6de82c 100644 --- a/extensions/workspace-indicator/workspacePrefs.js +++ b/extensions/workspace-indicator/workspacePrefs.js @@ -5,17 +5,11 @@ import Adw from 'gi://Adw'; import Gio from 'gi://Gio'; -import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Gtk from 'gi://Gtk'; import {gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; -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); @@ -124,186 +118,6 @@ class BehaviorGroup extends Adw.PreferencesGroup { } } -class NewItem extends GObject.Object {} -GObject.registerClass(NewItem); - -class NewItemModel extends GObject.Object { - static [GObject.interfaces] = [Gio.ListModel]; - static { - GObject.registerClass(this); - } - - #item = new NewItem(); - - vfunc_get_item_type() { - return NewItem; - } - - vfunc_get_n_items() { - return 1; - } - - vfunc_get_item(_pos) { - return this.#item; - } -} - -class WorkspacesList extends GObject.Object { - static [GObject.interfaces] = [Gio.ListModel]; - static { - GObject.registerClass(this); - } - - #settings = new Gio.Settings({schema_id: WORKSPACE_SCHEMA}); - #names = this.#settings.get_strv(WORKSPACE_KEY); - #items = Gtk.StringList.new(this.#names); - #changedId; - - constructor() { - super(); - - this.#changedId = - this.#settings.connect(`changed::${WORKSPACE_KEY}`, () => { - const removed = this.#names.length; - this.#names = this.#settings.get_strv(WORKSPACE_KEY); - this.#items.splice(0, removed, this.#names); - this.items_changed(0, removed, this.#names.length); - }); - } - - append() { - const name = _('Workspace %d').format(this.#names.length + 1); - - this.#names.push(name); - this.#settings.block_signal_handler(this.#changedId); - this.#settings.set_strv(WORKSPACE_KEY, this.#names); - this.#settings.unblock_signal_handler(this.#changedId); - - const pos = this.#items.get_n_items(); - this.#items.append(name); - this.items_changed(pos, 0, 1); - } - - remove(name) { - const pos = this.#names.indexOf(name); - if (pos < 0) - return; - - this.#names.splice(pos, 1); - - this.#settings.block_signal_handler(this.#changedId); - this.#settings.set_strv(WORKSPACE_KEY, this.#names); - this.#settings.unblock_signal_handler(this.#changedId); - - this.#items.remove(pos); - this.items_changed(pos, 1, 0); - } - - rename(oldName, newName) { - const pos = this.#names.indexOf(oldName); - if (pos < 0) - return; - - this.#names.splice(pos, 1, newName); - this.#items.splice(pos, 1, [newName]); - - this.#settings.block_signal_handler(this.#changedId); - this.#settings.set_strv(WORKSPACE_KEY, this.#names); - this.#settings.unblock_signal_handler(this.#changedId); - } - - vfunc_get_item_type() { - return Gtk.StringObject; - } - - vfunc_get_n_items() { - return this.#items.get_n_items(); - } - - vfunc_get_item(pos) { - return this.#items.get_item(pos); - } -} - -class WorkspacesGroup extends Adw.PreferencesGroup { - static { - GObject.registerClass(this); - - this.install_action('workspaces.add', null, - self => self._workspaces.append()); - this.install_action('workspaces.remove', 's', - (self, name, param) => self._workspaces.remove(param.unpack())); - this.install_action('workspaces.rename', '(ss)', - (self, name, param) => self._workspaces.rename(...param.deepUnpack())); - } - - constructor() { - super({ - title: _('Workspace Names'), - }); - - this._workspaces = new WorkspacesList(); - - const store = new Gio.ListStore({item_type: Gio.ListModel}); - const listModel = new Gtk.FlattenListModel({model: store}); - store.append(this._workspaces); - store.append(new NewItemModel()); - - this._list = new Gtk.ListBox({ - selection_mode: Gtk.SelectionMode.NONE, - css_classes: ['boxed-list'], - }); - this.add(this._list); - - const newRowProps = { - title: _('Add Workspace'), - action_name: 'workspaces.add', - start_icon_name: 'list-add-symbolic', - }; - - this._list.bind_model(listModel, item => { - return item instanceof NewItem - ? new Adw.ButtonRow({...newRowProps}) - : new WorkspaceRow(item.string); - }); - } -} - -class WorkspaceRow extends Adw.EntryRow { - static { - GObject.registerClass(this); - } - - constructor(name) { - super({ - name, - text: name, - }); - - const button = new Gtk.Button({ - tooltip_text: _('Remove'), - action_name: 'workspaces.remove', - icon_name: 'edit-delete-symbolic', - has_frame: false, - halign: Gtk.Align.CENTER, - valign: Gtk.Align.CENTER, - }); - this.add_suffix(button); - - this.bind_property_full('name', - button, 'action-target', - GObject.BindingFlags.SYNC_CREATE, - (bind, target) => [true, new GLib.Variant('s', target)], - null); - - this.connect('changed', () => { - this.activate_action('workspaces.rename', - new GLib.Variant('(ss)', [this.name, this.text])); - this.name = this.text; - }); - } -} - export class WorkspacesPage extends Adw.PreferencesPage { static { GObject.registerClass(this); @@ -317,6 +131,5 @@ export class WorkspacesPage extends Adw.PreferencesPage { this.add(new GeneralGroup(settings)); this.add(new BehaviorGroup()); - this.add(new WorkspacesGroup()); } } From 76514e8b231b88f9f864db4d402d527a0e7dbde6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 30 May 2025 16:39:22 +0200 Subject: [PATCH 25/38] window-list: Adjust to workspace-indicator changes Keep the `.panel-button` class to get the expected hover/focus/active styling when using a regular menu button, but remove the horizontal padding when using previews for fittsability. Part-of: --- extensions/window-list/extension.js | 6 ------ extensions/window-list/stylesheet-dark.css | 5 +++++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 08d2c28b..8ed5a8bd 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -1472,12 +1472,6 @@ class BottomWorkspaceIndicator extends WorkspaceIndicator { GObject.registerClass(this); } - constructor(params) { - super(params); - - this.remove_style_class_name('panel-button'); - } - setMenu(menu) { super.setMenu(menu); diff --git a/extensions/window-list/stylesheet-dark.css b/extensions/window-list/stylesheet-dark.css index af332686..388bbc9b 100644 --- a/extensions/window-list/stylesheet-dark.css +++ b/extensions/window-list/stylesheet-dark.css @@ -6,6 +6,11 @@ */ @import url("stylesheet-workspace-switcher-dark.css"); +.window-list-workspace-indicator.previews { + -natural-hpadding: 0 !important; + -minimum-hpadding: 0 !important; +} + .window-list { spacing: 2px; font-size: 10pt; From 7d48bcc845166c41a07450d02aacb92404b5e8b3 Mon Sep 17 00:00:00 2001 From: Martin Date: Tue, 17 Jun 2025 15:10:34 +0000 Subject: [PATCH 26/38] Update Slovenian translation --- po/sl.po | 126 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 75 insertions(+), 51 deletions(-) diff --git a/po/sl.po b/po/sl.po index 7ea8265f..5a5e357b 100644 --- a/po/sl.po +++ b/po/sl.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-10-16 14:41+0000\n" -"PO-Revision-Date: 2024-10-16 23:41+0200\n" +"POT-Creation-Date: 2025-06-17 15:04+0000\n" +"PO-Revision-Date: 2025-06-17 17:09+0200\n" "Last-Translator: Martin Srebotnjak \n" "Language-Team: Slovenian GNOME Translation Team \n" "Language: sl_SI\n" @@ -39,11 +39,11 @@ msgstr "Klasično namizje GNOME na sistemu Wayland" msgid "GNOME Classic on Xorg" msgstr "Klasično namizje GNOME na sistemu Xorg" -#: extensions/apps-menu/extension.js:126 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Priljubljeno" -#: extensions/apps-menu/extension.js:400 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Programi" @@ -59,17 +59,17 @@ msgstr "" "Seznam nizov z določilom ID programa (ime programa), ki mu sledi dvopičje in " "nato številka delovne površine." -#: extensions/auto-move-windows/prefs.js:159 +#: extensions/auto-move-windows/prefs.js:156 msgid "Workspace Rules" msgstr "Pravila delovnih površin" -#: extensions/auto-move-windows/prefs.js:314 +#: extensions/auto-move-windows/prefs.js:311 msgid "Add Rule" msgstr "Dodaj pravilo" #. TRANSLATORS: %s is the filesystem name #: extensions/drive-menu/extension.js:123 -#: extensions/places-menu/placeDisplay.js:187 +#: extensions/places-menu/placeDisplay.js:186 #, javascript-format msgid "Ejecting drive “%s” failed:" msgstr "Izmetavanje pogona »%s« je spodletelo:" @@ -110,38 +110,38 @@ msgstr "" "tem prepiše privzeti izpis pod sličico. Za uveljavitev sprememb je treba " "lupino ponovno zagnati." -#: extensions/places-menu/extension.js:91 -#: extensions/places-menu/extension.js:94 +#: extensions/places-menu/extension.js:75 +#: extensions/places-menu/extension.js:78 msgid "Places" msgstr "Mesta" -#: extensions/places-menu/placeDisplay.js:53 +#: extensions/places-menu/placeDisplay.js:52 #, javascript-format msgid "Failed to launch “%s”" msgstr "Zaganjanje »%s« je spodletelo." -#: extensions/places-menu/placeDisplay.js:68 +#: extensions/places-menu/placeDisplay.js:67 #, javascript-format msgid "Failed to mount volume for “%s”" msgstr "Priklapljanje nosilca za »%s« je spodletelo" -#: extensions/places-menu/placeDisplay.js:316 +#: extensions/places-menu/placeDisplay.js:315 msgid "Home" msgstr "Osebna mapa" -#: extensions/places-menu/placeDisplay.js:322 +#: extensions/places-menu/placeDisplay.js:321 msgid "Recent" msgstr "Nedavno" -#: extensions/places-menu/placeDisplay.js:328 +#: extensions/places-menu/placeDisplay.js:327 msgid "Starred" msgstr "Z zvezdico" -#: extensions/places-menu/placeDisplay.js:348 +#: extensions/places-menu/placeDisplay.js:347 msgid "Network" msgstr "Omrežje" -#: extensions/places-menu/placeDisplay.js:355 +#: extensions/places-menu/placeDisplay.js:354 msgid "Trash" msgstr "Koš" @@ -233,47 +233,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:92 +#: extensions/window-list/extension.js:95 msgid "Close" msgstr "Zapri" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:122 msgid "Unminimize" msgstr "Povečaj" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:122 msgid "Minimize" msgstr "Skrči" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:127 msgid "Unmaximize" msgstr "Pomanjšaj" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:127 msgid "Maximize" msgstr "Razpni" -#: extensions/window-list/extension.js:641 +#: extensions/window-list/extension.js:719 msgid "Minimize all" msgstr "Skrči vse" -#: extensions/window-list/extension.js:647 +#: extensions/window-list/extension.js:725 msgid "Unminimize all" msgstr "Pomanjšaj vse" -#: extensions/window-list/extension.js:653 +#: extensions/window-list/extension.js:731 msgid "Maximize all" msgstr "Razpni vse" -#: extensions/window-list/extension.js:661 +#: extensions/window-list/extension.js:739 msgid "Unmaximize all" msgstr "Pomanjšaj vse" -#: extensions/window-list/extension.js:669 +#: extensions/window-list/extension.js:747 msgid "Close all" msgstr "Zapri vse" -#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24 +#: extensions/window-list/extension.js:999 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Seznam oken" @@ -290,7 +290,7 @@ msgstr "" "Veljavne vrednosti so »nikoli«, »samodejno« in »vedno«." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26 -#: extensions/window-list/prefs.js:75 +#: extensions/window-list/prefs.js:74 msgid "Show windows from all workspaces" msgstr "Pokaži okna vseh delovnih površin" @@ -314,23 +314,23 @@ msgstr "" msgid "Show workspace previews in window list" msgstr "Pokaži predoglede delovne površine na seznamu oken" -#: extensions/window-list/prefs.js:42 +#: extensions/window-list/prefs.js:41 msgid "Window Grouping" msgstr "Združevanje oken" -#: extensions/window-list/prefs.js:47 +#: extensions/window-list/prefs.js:46 msgid "Never group windows" msgstr "Nikoli ne združuj oken" -#: extensions/window-list/prefs.js:48 +#: extensions/window-list/prefs.js:47 msgid "Group windows when space is limited" msgstr "Združi okna, ko je prostor omejen" -#: extensions/window-list/prefs.js:49 +#: extensions/window-list/prefs.js:48 msgid "Always group windows" msgstr "Okna vedno združuj" -#: extensions/window-list/prefs.js:69 +#: extensions/window-list/prefs.js:68 msgid "Show on all monitors" msgstr "Pokaži na vseh zaslonih" @@ -338,31 +338,55 @@ msgstr "Pokaži na vseh zaslonih" msgid "Show workspace previews in top bar" msgstr "Pokaži predoglede delovne površine v zgornji vrstici" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "Pritisnite %s za urejanje" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "Nastavitve" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "Kazalnik delovnih površin" -#: extensions/workspace-indicator/workspacePrefs.js:29 -msgid "Show Previews" -msgstr "Pokaži predoglede" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "Pokazatelj" -#: extensions/workspace-indicator/workspacePrefs.js:87 -#, javascript-format -msgid "Workspace %d" -msgstr "Delovna površina %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "Predogledi" -#: extensions/workspace-indicator/workspacePrefs.js:154 -msgid "Workspace Names" -msgstr "Imena delovnih površin" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" +msgstr "Ime delovne površine" -#: extensions/workspace-indicator/workspacePrefs.js:171 -msgid "Add Workspace" -msgstr "Dodaj delovno površino" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "Vedenje" -#: extensions/workspace-indicator/workspacePrefs.js:196 -msgid "Remove" -msgstr "Odstrani" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "Dinamično" -#: extensions/workspace-indicator/workspacePrefs.js:226 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "Samodejno odstrani prazne delovne površine" + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "Fiksno število" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "Določite število prikazanih delovnih površin" + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "Število delovnih površin" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "Delovne površine" From c59d6cdad8b888ba8f20fea24032afb982cdd491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20Tufan=20=C3=87etin?= Date: Tue, 17 Jun 2025 15:17:08 +0000 Subject: [PATCH 27/38] Update Turkish translation --- po/tr.po | 114 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 45 deletions(-) diff --git a/po/tr.po b/po/tr.po index d4e1a4e4..e5f26f72 100644 --- a/po/tr.po +++ b/po/tr.po @@ -7,16 +7,16 @@ # Muhammet Kara , 2013-2015. # Furkan Tokaç , 2017. # Sabri Ünal , 2014, 2019, 2022-2024. -# Emin Tufan Çetin , 2017, 2019, 2020, 2022, 2024. +# Emin Tufan Çetin , 2017, 2019, 2020, 2022, 2024, 2025. # 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: 2024-11-25 08:47+0000\n" -"PO-Revision-Date: 2024-11-30 23:58+0300\n" -"Last-Translator: Sabri Ünal \n" +"POT-Creation-Date: 2025-06-17 15:04+0000\n" +"PO-Revision-Date: 2025-06-17 08:00+0300\n" +"Last-Translator: Emin Tufan Çetin \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" @@ -42,11 +42,11 @@ msgstr "Wayland üstünde GNOME Klasik" msgid "GNOME Classic on Xorg" msgstr "Xorg üstünde GNOME Klasik" -#: extensions/apps-menu/extension.js:125 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Gözdeler" -#: extensions/apps-menu/extension.js:399 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Uygulamalar" @@ -72,7 +72,7 @@ msgstr "Kural Ekle" #. TRANSLATORS: %s is the filesystem name #: extensions/drive-menu/extension.js:123 -#: extensions/places-menu/placeDisplay.js:187 +#: extensions/places-menu/placeDisplay.js:186 #, javascript-format msgid "Ejecting drive “%s” failed:" msgstr "“%s” sürücüsü çıkarılamadı:" @@ -120,33 +120,33 @@ msgstr "" msgid "Places" msgstr "Yerler" -#: extensions/places-menu/placeDisplay.js:53 +#: extensions/places-menu/placeDisplay.js:52 #, javascript-format msgid "Failed to launch “%s”" msgstr "“%s” başlatılamadı" -#: extensions/places-menu/placeDisplay.js:68 +#: extensions/places-menu/placeDisplay.js:67 #, javascript-format msgid "Failed to mount volume for “%s”" msgstr "“%s” için birim bağlanamadı" -#: extensions/places-menu/placeDisplay.js:316 +#: extensions/places-menu/placeDisplay.js:315 msgid "Home" msgstr "Ev" -#: extensions/places-menu/placeDisplay.js:322 +#: extensions/places-menu/placeDisplay.js:321 msgid "Recent" msgstr "Son" -#: extensions/places-menu/placeDisplay.js:328 +#: extensions/places-menu/placeDisplay.js:327 msgid "Starred" msgstr "Yıldızlı" -#: extensions/places-menu/placeDisplay.js:348 +#: extensions/places-menu/placeDisplay.js:347 msgid "Network" msgstr "Ağ" -#: extensions/places-menu/placeDisplay.js:355 +#: extensions/places-menu/placeDisplay.js:354 msgid "Trash" msgstr "Çöp" @@ -238,47 +238,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:92 +#: extensions/window-list/extension.js:95 msgid "Close" msgstr "Kapat" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:122 msgid "Unminimize" msgstr "Önceki duruma getir" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:122 msgid "Minimize" msgstr "Simge durumuna küçült" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:127 msgid "Unmaximize" msgstr "Önceki duruma getir" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:127 msgid "Maximize" msgstr "En büyük duruma getir" -#: extensions/window-list/extension.js:641 +#: extensions/window-list/extension.js:719 msgid "Minimize all" msgstr "Tümünü simge durumuna küçült" -#: extensions/window-list/extension.js:647 +#: extensions/window-list/extension.js:725 msgid "Unminimize all" msgstr "Tümünü önceki duruma getir" -#: extensions/window-list/extension.js:653 +#: extensions/window-list/extension.js:731 msgid "Maximize all" msgstr "Tümünü en büyük duruma getir" -#: extensions/window-list/extension.js:661 +#: extensions/window-list/extension.js:739 msgid "Unmaximize all" msgstr "Tümünü önceki duruma getir" -#: extensions/window-list/extension.js:669 +#: extensions/window-list/extension.js:747 msgid "Close all" msgstr "Tümünü kapat" -#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:23 +#: extensions/window-list/extension.js:999 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Pencere Listesi" @@ -292,8 +292,8 @@ msgid "" "Possible values are “never”, “auto” and “always”." msgstr "" "Pencere listesinde aynı uygulamaların ne zaman kümeleneceğine karar verir. " -"Olası değerler: “never” (hiçbir zaman), “auto” (kendiliğinden) ve " -"“always” (her zaman)." +"Olası değerler: “never” (hiçbir zaman), “auto” (kendiliğinden) ve “always” " +"(her zaman)." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26 #: extensions/window-list/prefs.js:74 @@ -346,31 +346,55 @@ msgstr "Tüm monitörlerde göster" msgid "Show workspace previews in top bar" msgstr "Çalışma alanı ön izlemelerini üst çubukta göster" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "Düzenlemek için şuna bas: %s" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "Ayarlar" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "Çalışma Alanı Belirteci" -#: extensions/workspace-indicator/workspacePrefs.js:28 -msgid "Show Previews" -msgstr "Ön İzlemeleri Göster" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "Belirteç" -#: extensions/workspace-indicator/workspacePrefs.js:86 -#, javascript-format -msgid "Workspace %d" -msgstr "Çalışma Alanı %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "Ön İzlemeler" -#: extensions/workspace-indicator/workspacePrefs.js:153 -msgid "Workspace Names" -msgstr "Çalışma Alanı Adları" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" +msgstr "Çalışma Alanı Adı" -#: extensions/workspace-indicator/workspacePrefs.js:170 -msgid "Add Workspace" -msgstr "Çalışma Alanı Ekle" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "Davranış" -#: extensions/workspace-indicator/workspacePrefs.js:195 -msgid "Remove" -msgstr "Kaldır" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "Devimsel" -#: extensions/workspace-indicator/workspacePrefs.js:225 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "Boş çalışma alanlarını kendiliğinden kaldırır." + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "Ayarlı Sayı" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "Kalıcı çalışma alanı sayısı belirle." + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "Çalışma Alanı Sayısı" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "Çalışma Alanları" From 0081bd0d996516341ebec8a4655ce3a6f7956b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 12 Jun 2025 21:18:35 +0200 Subject: [PATCH 28/38] window-list: Animate transitions to/from overview Instead of abruptly hiding/showing the window list, slide it out/in when transitioning to/from the overview. Closes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/568 Part-of: --- extensions/window-list/extension.js | 37 +++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 8ed5a8bd..497db5a9 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -20,6 +20,9 @@ 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 { + ANIMATION_TIME as SLIDE_ANIMATION_TIME, +} from 'resource:///org/gnome/shell/ui/overview.js'; import {WorkspaceIndicator} from './workspaceIndicator.js'; @@ -998,6 +1001,8 @@ class WindowList extends St.Widget { Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox); Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic'); + this.visible = !inOverview; + this.width = this._monitor.width; this.connect('notify::height', this._updatePosition.bind(this)); this._updatePosition(); @@ -1032,12 +1037,15 @@ class WindowList extends St.Widget { Main.overview.connectObject( 'showing', () => { this._retrackChrome(overviewChromeOptions); - this.hide(); + this._slideOut(); this._updateKeyboardAnchor(); }, + 'hiding', () => { + if (!this._monitor.inFullscreen) + this._slideIn(); + }, 'hidden', () => { this._retrackChrome(chromeOptions); - this.visible = !this._monitor.inFullscreen; this._updateKeyboardAnchor(); }, this); @@ -1079,6 +1087,13 @@ class WindowList extends St.Widget { this._groupingModeChanged(); } + get_transformed_position() { + // HACK: Remove translation we use for animations + // to keep struts stable + const [x, y] = super.get_transformed_position(); + return [x, y - this.translation_y]; + } + _onScrollEvent(actor, event) { let direction = event.get_scroll_direction(); let diff = 0; @@ -1112,6 +1127,24 @@ class WindowList extends St.Widget { Main.layoutManager.trackChrome(this, options); } + _slideIn() { + this.show(); + this.ease({ + translation_y: 0, + duration: SLIDE_ANIMATION_TIME, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + }); + } + + _slideOut() { + this.ease({ + translation_y: this.height, + duration: SLIDE_ANIMATION_TIME, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + onComplete: () => this.hide(), + }); + } + _updateWorkspaceIndicatorVisibility() { let workspaceManager = global.workspace_manager; let hasWorkspaces = this._mutterSettings.get_boolean('dynamic-workspaces') || From a3d27dd674dffc9d29242fd417302637c86da93b Mon Sep 17 00:00:00 2001 From: Yuri Chornoivan Date: Tue, 17 Jun 2025 16:14:35 +0000 Subject: [PATCH 29/38] Update Ukrainian translation --- po/uk.po | 111 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 39 deletions(-) diff --git a/po/uk.po b/po/uk.po index b4dfb0f5..89599e9c 100644 --- a/po/uk.po +++ b/po/uk.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/i" "ssues\n" -"POT-Creation-Date: 2025-02-13 00:15+0000\n" -"PO-Revision-Date: 2025-02-23 22:16+0200\n" +"POT-Creation-Date: 2025-06-17 15:45+0000\n" +"PO-Revision-Date: 2025-06-17 19:14+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -40,11 +40,11 @@ msgstr "Класичний GNOME на Wayland" msgid "GNOME Classic on Xorg" msgstr "Класичний GNOME на Xorg" -#: extensions/apps-menu/extension.js:125 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Улюблене" -#: extensions/apps-menu/extension.js:399 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Програми" @@ -140,7 +140,6 @@ msgid "Starred" msgstr "З зірочками" #: extensions/places-menu/placeDisplay.js:347 -#| msgid "Browse Network" msgid "Network" msgstr "Мережа" @@ -236,47 +235,47 @@ 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:95 +#: extensions/window-list/extension.js:98 msgid "Close" msgstr "Закрити" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Unminimize" msgstr "Відновити згорнуте" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Minimize" msgstr "Згорнути" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Unmaximize" msgstr "Відновити розгорнуте" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Maximize" msgstr "Розгорнути" -#: extensions/window-list/extension.js:721 +#: extensions/window-list/extension.js:722 msgid "Minimize all" msgstr "Згорнути все" -#: extensions/window-list/extension.js:727 +#: extensions/window-list/extension.js:728 msgid "Unminimize all" msgstr "Відновити все згорнуте" -#: extensions/window-list/extension.js:733 +#: extensions/window-list/extension.js:734 msgid "Maximize all" msgstr "Розгорнути все" -#: extensions/window-list/extension.js:741 +#: extensions/window-list/extension.js:742 msgid "Unmaximize all" msgstr "Відновити все розгорнуте" -#: extensions/window-list/extension.js:749 +#: extensions/window-list/extension.js:750 msgid "Close all" msgstr "Закрити все" -#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23 +#: extensions/window-list/extension.js:1002 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Перелік вікон" @@ -341,37 +340,74 @@ msgstr "Показувати на всіх моніторах" msgid "Show workspace previews in top bar" msgstr "Показувати мініатюри робочого простору на верхній панелі" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "Натисніть %s для редагування" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "Параметри" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "Покажчик робочого простору" -#: extensions/workspace-indicator/workspacePrefs.js:28 -#| msgid "Show Previews In Top Bar" -msgid "Show Previews" -msgstr "Показувати мініатюри" +#: extensions/workspace-indicator/workspacePrefs.js:20 +#| msgid "Workspace Indicator" +msgid "Indicator" +msgstr "Індикатор" -#: extensions/workspace-indicator/workspacePrefs.js:86 -#, javascript-format -msgid "Workspace %d" -msgstr "Робочий простір %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +#| msgid "Show Previews" +msgid "Previews" +msgstr "Попередній перегляд" -#: extensions/workspace-indicator/workspacePrefs.js:153 -msgid "Workspace Names" -msgstr "Назви робочих просторів" +#: extensions/workspace-indicator/workspacePrefs.js:35 +#| msgid "Workspace Names" +msgid "Workspace Name" +msgstr "Назва робочої області" -#: extensions/workspace-indicator/workspacePrefs.js:170 -msgid "Add Workspace" -msgstr "Додати робочий простір" +#: extensions/workspace-indicator/workspacePrefs.js:59 +#| msgid "Alt Tab Behaviour" +msgid "Behavior" +msgstr "Поведінка" -#: extensions/workspace-indicator/workspacePrefs.js:195 -msgid "Remove" -msgstr "Вилучити" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "Динамічний" -#: extensions/workspace-indicator/workspacePrefs.js:225 -#| msgid "Workspace" +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "Автоматично вилучає порожні робочі простори." + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "Фіксована кількість" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "Вкажіть кількість сталих робочих просторів." + +#: extensions/workspace-indicator/workspacePrefs.js:89 +#| msgid "Workspaces" +msgid "Number of Workspaces" +msgstr "Кількість робочих просторів" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "Робочі простори" +#, javascript-format +#~ msgid "Workspace %d" +#~ msgstr "Робочий простір %d" + +#~ msgid "Add Workspace" +#~ msgstr "Додати робочий простір" + +#~ msgid "Remove" +#~ msgstr "Вилучити" + #~ msgid "Computer" #~ msgstr "Комп'ютер" @@ -539,9 +575,6 @@ msgstr "Робочі простори" #~ "просто\n" #~ "вимкнути розширення з extensions.gnome.org або в додаткових параметрах ." -#~ msgid "Alt Tab Behaviour" -#~ msgstr "Режим Alt Tab" - #~ msgid "Cancel" #~ msgstr "Скасувати" From 01f7a6e32c3c8e972613a92c7399a34e513df1b7 Mon Sep 17 00:00:00 2001 From: Luming Zh Date: Wed, 18 Jun 2025 00:43:48 +0000 Subject: [PATCH 30/38] Update Chinese (China) translation --- po/zh_CN.po | 106 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 39 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 7c0f2b66..7b4139b9 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -14,8 +14,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: 2025-02-13 00:15+0000\n" -"PO-Revision-Date: 2025-03-02 14:19+0800\n" +"POT-Creation-Date: 2025-06-17 15:45+0000\n" +"PO-Revision-Date: 2025-06-18 08:42+0800\n" "Last-Translator: lumingzh \n" "Language-Team: Chinese (China) \n" "Language: zh_CN\n" @@ -23,7 +23,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Gtranslator 47.1\n" +"X-Generator: Gtranslator 48.0\n" #: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" @@ -42,11 +42,11 @@ msgstr "GNOME Wayland 经典模式" msgid "GNOME Classic on Xorg" msgstr "GNOME Xorg 经典模式" -#: extensions/apps-menu/extension.js:125 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "收藏" -#: extensions/apps-menu/extension.js:399 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "应用" @@ -233,47 +233,47 @@ 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:95 +#: extensions/window-list/extension.js:98 msgid "Close" msgstr "关闭" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Unminimize" msgstr "取消最小化" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Minimize" msgstr "最小化" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Unmaximize" msgstr "取消最大化" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Maximize" msgstr "最大化" -#: extensions/window-list/extension.js:721 +#: extensions/window-list/extension.js:722 msgid "Minimize all" msgstr "全部最小化" -#: extensions/window-list/extension.js:727 +#: extensions/window-list/extension.js:728 msgid "Unminimize all" msgstr "全部取消最小化" -#: extensions/window-list/extension.js:733 +#: extensions/window-list/extension.js:734 msgid "Maximize all" msgstr "全部最大化" -#: extensions/window-list/extension.js:741 +#: extensions/window-list/extension.js:742 msgid "Unmaximize all" msgstr "全部取消最大化" -#: extensions/window-list/extension.js:749 +#: extensions/window-list/extension.js:750 msgid "Close all" msgstr "全部关闭" -#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23 +#: extensions/window-list/extension.js:1002 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "窗口列表" @@ -336,35 +336,69 @@ msgstr "在所有显示器上显示" msgid "Show workspace previews in top bar" msgstr "在顶栏显示工作区预览" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "按 %s 以编辑" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "设置" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "工作区指示器" -#: extensions/workspace-indicator/workspacePrefs.js:28 -msgid "Show Previews" -msgstr "显示预览" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "指示器" -#: extensions/workspace-indicator/workspacePrefs.js:86 -#, javascript-format -msgid "Workspace %d" -msgstr "工作区 %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "预览" -#: extensions/workspace-indicator/workspacePrefs.js:153 -msgid "Workspace Names" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" msgstr "工作区名称" -#: extensions/workspace-indicator/workspacePrefs.js:170 -msgid "Add Workspace" -msgstr "添加工作区" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "行为" -#: extensions/workspace-indicator/workspacePrefs.js:195 -msgid "Remove" -msgstr "移除" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "动态" -#: extensions/workspace-indicator/workspacePrefs.js:225 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "自动移除空的工作空间。" + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "固定数量" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "指定永久存在的工作空间的数量。" + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "工作区数量" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "工作区" +#, javascript-format +#~ msgid "Workspace %d" +#~ msgstr "工作区 %d" + +#~ msgid "Add Workspace" +#~ msgstr "添加工作区" + +#~ msgid "Remove" +#~ msgstr "移除" + #~ msgid "Computer" #~ msgstr "计算机" @@ -493,9 +527,6 @@ msgstr "工作区" #~ msgid "Display" #~ msgstr "显示" -#~ msgid "Display Settings" -#~ msgstr "显示设置" - #~ msgid "The application icon mode." #~ msgstr "应用程序图标模式。" @@ -642,9 +673,6 @@ msgstr "工作区" #~ msgid "Log Out..." #~ msgstr "注销..." -#~ msgid "Alt Tab Behaviour" -#~ msgstr "Alt Tab 行为" - #~ msgid "Cancel" #~ msgstr "取消" From 5a84fe00517a3628fa7fe03ce6070ea682661ff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yago=20Ra=C3=B1a?= Date: Wed, 18 Jun 2025 18:11:24 +0000 Subject: [PATCH 31/38] Update Galician translation --- po/gl.po | 143 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 64 deletions(-) diff --git a/po/gl.po b/po/gl.po index c122714c..42dccb54 100644 --- a/po/gl.po +++ b/po/gl.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 15:27+0000\n" -"PO-Revision-Date: 2024-09-02 20:15+0200\n" +"POT-Creation-Date: 2025-04-11 01:52+0000\n" +"PO-Revision-Date: 2025-04-15 21:11+0200\n" "Last-Translator: Fran Dieguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -44,11 +44,11 @@ msgstr "GNOME clásico en Wayland" msgid "GNOME Classic on Xorg" msgstr "GNOME clásico en Xorg" -#: extensions/apps-menu/extension.js:126 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Favoritos" -#: extensions/apps-menu/extension.js:400 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Aplicacións" @@ -64,17 +64,17 @@ msgstr "" "Unha lista de cadeas, cada unha das cales contén un id de aplicación (nome " "de ficheiro desktop), seguido por unha coma e o número do espazo de traballo" -#: extensions/auto-move-windows/prefs.js:159 +#: extensions/auto-move-windows/prefs.js:156 msgid "Workspace Rules" msgstr "Regras da área de traballo" -#: extensions/auto-move-windows/prefs.js:314 +#: extensions/auto-move-windows/prefs.js:311 msgid "Add Rule" msgstr "Engadir regra" #. TRANSLATORS: %s is the filesystem name #: extensions/drive-menu/extension.js:123 -#: extensions/places-menu/placeDisplay.js:218 +#: extensions/places-menu/placeDisplay.js:186 #, javascript-format msgid "Ejecting drive “%s” failed:" msgstr "Fallo ao extraer a unidade «%s»:" @@ -97,10 +97,9 @@ msgid "" "aspect ratio, and consolidating them further to reduce the bounding box. " "This setting applies only with the natural placement strategy." msgstr "" -"Tente usar mais pantalla para dispor as miniaturas das xanelas adaptándose " -"á taxa de aspecto da pantalla e consolidalas para reducir a caixa " -"envolvente. Esta configuración aplícase só para a estratexia de disposición " -"natural." +"Tente usar mais pantalla para dispor as miniaturas das xanelas adaptándose á " +"taxa de aspecto da pantalla e consolidalas para reducir a caixa envolvente. " +"Esta configuración aplícase só para a estratexia de disposición natural." #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:17 msgid "Place window captions on top" @@ -116,33 +115,40 @@ msgstr "" "respectiva, omitindo a disposición inferior por omisión do shell. Se cambia " "esta configuración deberá reiniciar o shell para que se apliquen os cambios." -#: extensions/places-menu/extension.js:91 -#: extensions/places-menu/extension.js:94 +#: extensions/places-menu/extension.js:75 +#: extensions/places-menu/extension.js:78 msgid "Places" msgstr "Lugares" -#: extensions/places-menu/placeDisplay.js:60 +#: extensions/places-menu/placeDisplay.js:52 #, javascript-format msgid "Failed to launch “%s”" msgstr "Produciuse un fallo ao iniciar «%s»" -#: extensions/places-menu/placeDisplay.js:75 +#: extensions/places-menu/placeDisplay.js:67 #, javascript-format msgid "Failed to mount volume for “%s”" msgstr "Produciuse un fallo ao montar o volume para «%s»" -#: extensions/places-menu/placeDisplay.js:135 -#: extensions/places-menu/placeDisplay.js:158 -msgid "Computer" -msgstr "Computador" - -#: extensions/places-menu/placeDisplay.js:333 +#: extensions/places-menu/placeDisplay.js:315 msgid "Home" msgstr "Cartafol persoal" -#: extensions/places-menu/placeDisplay.js:378 -msgid "Browse Network" -msgstr "Explorar a rede" +#: extensions/places-menu/placeDisplay.js:321 +msgid "Recent" +msgstr "Recente" + +#: extensions/places-menu/placeDisplay.js:327 +msgid "Starred" +msgstr "" + +#: extensions/places-menu/placeDisplay.js:347 +msgid "Network" +msgstr "Rede" + +#: extensions/places-menu/placeDisplay.js:354 +msgid "Trash" +msgstr "Lixo" #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:14 msgid "Cycle Screenshot Sizes" @@ -232,47 +238,47 @@ msgstr "Nome do tema" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgstr "O nome do tema, a cargar desde ~/.themes/name/gnome-shell" -#: extensions/window-list/extension.js:72 +#: extensions/window-list/extension.js:95 msgid "Close" msgstr "Pechar" -#: extensions/window-list/extension.js:99 +#: extensions/window-list/extension.js:122 msgid "Unminimize" msgstr "Restabelecer" -#: extensions/window-list/extension.js:99 +#: extensions/window-list/extension.js:122 msgid "Minimize" msgstr "Minimizar" -#: extensions/window-list/extension.js:106 +#: extensions/window-list/extension.js:129 msgid "Unmaximize" msgstr "Restaurar" -#: extensions/window-list/extension.js:106 +#: extensions/window-list/extension.js:129 msgid "Maximize" msgstr "Maximizar" -#: extensions/window-list/extension.js:471 +#: extensions/window-list/extension.js:721 msgid "Minimize all" msgstr "Minimizar todo" -#: extensions/window-list/extension.js:477 +#: extensions/window-list/extension.js:727 msgid "Unminimize all" msgstr "Restaurar todo" -#: extensions/window-list/extension.js:483 +#: extensions/window-list/extension.js:733 msgid "Maximize all" msgstr "Maximizar todo" -#: extensions/window-list/extension.js:491 +#: extensions/window-list/extension.js:741 msgid "Unmaximize all" msgstr "Restaurar todo" -#: extensions/window-list/extension.js:499 +#: extensions/window-list/extension.js:749 msgid "Close all" msgstr "Pechar todo" -#: extensions/window-list/extension.js:778 +#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Lista de xanelas" @@ -290,15 +296,14 @@ msgstr "" "(sempre)." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26 -#: extensions/window-list/prefs.js:79 +#: extensions/window-list/prefs.js:74 msgid "Show windows from all workspaces" msgstr "Mostrar as xanelas de todos os espazos de traballo" #: 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 "" -"Indica se mostrar as xanelas de todos os espazos de traballo ou só no " -"actual." +"Indica se mostrar as xanelas de todos os espazos de traballo ou só no actual." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:33 msgid "Show the window list on all monitors" @@ -316,47 +321,26 @@ msgstr "" msgid "Show workspace previews in window list" msgstr "Mostras as vistas previas do espazo de traballo na lista de xanelas" -#: extensions/window-list/prefs.js:35 +#: extensions/window-list/prefs.js:41 msgid "Window Grouping" msgstr "Agrupación de xanelas" -#: extensions/window-list/prefs.js:40 +#: extensions/window-list/prefs.js:46 msgid "Never group windows" msgstr "Non agrupar nunca as xanelas" -#: extensions/window-list/prefs.js:41 +#: extensions/window-list/prefs.js:47 msgid "Group windows when space is limited" msgstr "Agrupar as xanelas cando o espazo é limitado" -#: extensions/window-list/prefs.js:42 +#: extensions/window-list/prefs.js:48 msgid "Always group windows" msgstr "Agrupar sempre as xanelas" -#: extensions/window-list/prefs.js:66 +#: extensions/window-list/prefs.js:68 msgid "Show on all monitors" msgstr "Mostrar en todos os monitores" -#: extensions/window-list/prefs.js:92 -msgid "Show workspace previews" -msgstr "Mostrar a vista previa dos espazo de traballo" - -#: extensions/workspace-indicator/prefs.js:30 -msgid "Show Previews In Top Bar" -msgstr "Mostrar as vistas previas na barra superior" - -#: extensions/workspace-indicator/prefs.js:88 -#, javascript-format -msgid "Workspace %d" -msgstr "Espazos de traballo %d" - -#: extensions/workspace-indicator/prefs.js:155 -msgid "Workspace Names" -msgstr "Nomes dos espazos de traballo" - -#: extensions/workspace-indicator/prefs.js:281 -msgid "Add Workspace" -msgstr "Engadir área de traballo" - #: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12 msgid "Show workspace previews in top bar" msgstr "Mostrar as vistas previas do espazo de traballo na barra superior" @@ -365,6 +349,37 @@ msgstr "Mostrar as vistas previas do espazo de traballo na barra superior" msgid "Workspace Indicator" msgstr "Indicador de espazo de traballo" +#: extensions/workspace-indicator/workspacePrefs.js:28 +msgid "Show Previews" +msgstr "Mostrar vistas previas" + +#: extensions/workspace-indicator/workspacePrefs.js:86 +#, javascript-format +msgid "Workspace %d" +msgstr "Espazos de traballo %d" + +#: extensions/workspace-indicator/workspacePrefs.js:153 +msgid "Workspace Names" +msgstr "Nomes dos espazos de traballo" + +#: extensions/workspace-indicator/workspacePrefs.js:170 +msgid "Add Workspace" +msgstr "Engadir área de traballo" + +#: extensions/workspace-indicator/workspacePrefs.js:195 +msgid "Remove" +msgstr "Eliminar" + +#: extensions/workspace-indicator/workspacePrefs.js:225 +msgid "Workspaces" +msgstr "Espazos de traballo" + +#~ msgid "Computer" +#~ msgstr "Computador" + +#~ msgid "Show workspace previews" +#~ msgstr "Mostrar a vista previa dos espazo de traballo" + #~ msgid "Applications" #~ msgstr "Aplicacións" From 3a76b9eec4291d42e1401054b91890036770a5d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 19 Jun 2025 01:23:24 +0200 Subject: [PATCH 32/38] cleanup: Remove unused catch bindings Optional catch bindings have been supported for quite a while now, so we can treat unused error bindings in catch statements like any other unused variable. Part-of: --- extensions/apps-menu/extension.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index c6084418..7258fe33 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -488,7 +488,7 @@ class ApplicationsButton extends PanelMenu.Button { let id; try { id = entry.get_desktop_file_id(); // catch non-UTF8 filenames - } catch (e) { + } catch { continue; } let app = appSys.lookup_app(id); From 9e11ec9940263e217d575454c92686f2065eeefd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 19 Jun 2025 01:25:00 +0200 Subject: [PATCH 33/38] cleanup: Remove unused eslint-disable directives The 'camelcase' rule only applies to variables and properties, not to function names are getter/setter. Part-of: --- extensions/window-list/extension.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 497db5a9..b2eba4c9 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -433,12 +433,10 @@ class BaseButton extends DashItemContainer { return this._button.has_style_class_name('focused'); } - // eslint-disable-next-line camelcase get ignore_workspace() { return this._ignoreWorkspace; } - // eslint-disable-next-line camelcase set ignore_workspace(ignore) { if (this._ignoreWorkspace === ignore) return; From 8797f13694d8dd3cd98d50aaa2dd36cd3c7cffb9 Mon Sep 17 00:00:00 2001 From: Ekaterine Papava Date: Sat, 21 Jun 2025 04:44:06 +0000 Subject: [PATCH 34/38] Update Georgian translation --- po/ka.po | 102 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 68 insertions(+), 34 deletions(-) diff --git a/po/ka.po b/po/ka.po index 583404f3..7c9f7bba 100644 --- a/po/ka.po +++ b/po/ka.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "issues\n" -"POT-Creation-Date: 2025-02-13 00:15+0000\n" -"PO-Revision-Date: 2025-02-23 06:57+0100\n" +"POT-Creation-Date: 2025-06-18 23:32+0000\n" +"PO-Revision-Date: 2025-06-21 06:43+0200\n" "Last-Translator: Ekaterine Papava \n" "Language-Team: \n" "Language: ka\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.6\n" #: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" @@ -36,11 +36,11 @@ msgstr "GNOME CLassic Wayland-ზე" msgid "GNOME Classic on Xorg" msgstr "GNOME Classic Xorg" -#: extensions/apps-menu/extension.js:125 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "რჩეულები" -#: extensions/apps-menu/extension.js:399 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "აპები" @@ -231,47 +231,47 @@ 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:95 +#: extensions/window-list/extension.js:98 msgid "Close" msgstr "დახურვა" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Unminimize" msgstr "ამოკეცვა" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Minimize" msgstr "ჩაკეცვა" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Unmaximize" msgstr "საწყის ზომაზე დაბრუნება" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Maximize" msgstr "მთელ ეკრანზე გაშლა" -#: extensions/window-list/extension.js:721 +#: extensions/window-list/extension.js:720 msgid "Minimize all" msgstr "ყველას ჩაკეცვა" -#: extensions/window-list/extension.js:727 +#: extensions/window-list/extension.js:726 msgid "Unminimize all" msgstr "ყველას ამოკეცვა" -#: extensions/window-list/extension.js:733 +#: extensions/window-list/extension.js:732 msgid "Maximize all" msgstr "ყველას მთელ ეკრანზე გაშლა" -#: extensions/window-list/extension.js:741 +#: extensions/window-list/extension.js:740 msgid "Unmaximize all" msgstr "ყველას საწყის ზომაზე დაბრუნება" -#: extensions/window-list/extension.js:749 +#: extensions/window-list/extension.js:748 msgid "Close all" msgstr "ყველას დახურვა" -#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23 +#: extensions/window-list/extension.js:1000 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "ფანჯრების სია" @@ -334,35 +334,69 @@ msgstr "ყველა ეკრანზე ჩვენება" msgid "Show workspace previews in top bar" msgstr "სამუშაო სივრცის მინიატურების ჩვენება ზედა პანელზე" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "ჩასწორებისთვის დააჭირეთ ღილაკს %s" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "მორგება" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "სამუშაო სივრცის ინდიკატორი" -#: extensions/workspace-indicator/workspacePrefs.js:28 -msgid "Show Previews" -msgstr "მინიატურების ჩვენება" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "მაჩვენებელი" -#: extensions/workspace-indicator/workspacePrefs.js:86 -#, javascript-format -msgid "Workspace %d" -msgstr "სამუშაო სივრცე %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "მინიატურები" -#: extensions/workspace-indicator/workspacePrefs.js:153 -msgid "Workspace Names" -msgstr "სამუშაო სივრცის სახელები" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" +msgstr "სამუშაო სივრცის სახელი" -#: extensions/workspace-indicator/workspacePrefs.js:170 -msgid "Add Workspace" -msgstr "სამუშაო სივრცის დამატება" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "ქცევა" -#: extensions/workspace-indicator/workspacePrefs.js:195 -msgid "Remove" -msgstr "წაშლა" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "დინამიკური" -#: extensions/workspace-indicator/workspacePrefs.js:225 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "ცარიელი სამუშაო სივრცეების ავტომატური წაშლა." + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "ფიქსირებული ნომერი" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "მიუთითეთ სამუშაო სივრცეების ფიქსირებული რაოდენობა." + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "სამუშაო სივრცეების რაოდენობა" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "სამუშაო სივრცეები" +#, javascript-format +#~ msgid "Workspace %d" +#~ msgstr "სამუშაო სივრცე %d" + +#~ msgid "Add Workspace" +#~ msgstr "სამუშაო სივრცის დამატება" + +#~ msgid "Remove" +#~ msgstr "წაშლა" + #~ msgid "Computer" #~ msgstr "კომპიუტერი" From 0f4121ee718fe54b36a6c8f9ca355f6db3ea6f7c Mon Sep 17 00:00:00 2001 From: Vasil Pupkin <3abac@3a.by> Date: Sat, 21 Jun 2025 12:53:28 +0000 Subject: [PATCH 35/38] Update Belarusian translation --- po/be.po | 136 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 51 deletions(-) diff --git a/po/be.po b/po/be.po index a10a7ae9..b72e0eab 100644 --- a/po/be.po +++ b/po/be.po @@ -8,8 +8,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-10-16 14:41+0000\n" -"PO-Revision-Date: 2024-10-22 16:27+0300\n" +"POT-Creation-Date: 2025-06-18 23:32+0000\n" +"PO-Revision-Date: 2025-06-21 15:51+0300\n" "Last-Translator: Yuras Shumovich \n" "Language-Team: Belarusian \n" "Language: be\n" @@ -37,11 +37,11 @@ msgstr "Класічны GNOME на Wayland" msgid "GNOME Classic on Xorg" msgstr "Класічны GNOME на Xorg" -#: extensions/apps-menu/extension.js:126 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Абраныя" -#: extensions/apps-menu/extension.js:400 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Праграмы" @@ -57,17 +57,17 @@ msgstr "" "Спіс радкоў, кожны з якіх змяшчае ідэнтыфікатар праграмы (імя файла *." "desktop), затым двукроп'е і нумар працоўнай прасторы" -#: extensions/auto-move-windows/prefs.js:159 +#: extensions/auto-move-windows/prefs.js:156 msgid "Workspace Rules" msgstr "Правілы для працоўнай прасторы" -#: extensions/auto-move-windows/prefs.js:314 +#: extensions/auto-move-windows/prefs.js:311 msgid "Add Rule" msgstr "Дадаць правіла" #. TRANSLATORS: %s is the filesystem name #: extensions/drive-menu/extension.js:123 -#: extensions/places-menu/placeDisplay.js:187 +#: extensions/places-menu/placeDisplay.js:186 #, javascript-format msgid "Ejecting drive “%s” failed:" msgstr "Не ўдалося выняць дыск «%s»:" @@ -109,38 +109,38 @@ msgstr "" "перадвызначана). Каб змена налады ўступіла ў сілу, трэба перазапусціць " "абалонку." -#: extensions/places-menu/extension.js:91 -#: extensions/places-menu/extension.js:94 +#: extensions/places-menu/extension.js:75 +#: extensions/places-menu/extension.js:78 msgid "Places" msgstr "Месцы" -#: extensions/places-menu/placeDisplay.js:53 +#: extensions/places-menu/placeDisplay.js:52 #, javascript-format msgid "Failed to launch “%s”" msgstr "Не ўдалося запусціць «%s»" -#: extensions/places-menu/placeDisplay.js:68 +#: extensions/places-menu/placeDisplay.js:67 #, javascript-format msgid "Failed to mount volume for “%s”" msgstr "Не ўдалося прымацаваць том для «%s»." -#: extensions/places-menu/placeDisplay.js:316 +#: extensions/places-menu/placeDisplay.js:315 msgid "Home" msgstr "Хатняя папка" -#: extensions/places-menu/placeDisplay.js:322 +#: extensions/places-menu/placeDisplay.js:321 msgid "Recent" msgstr "Нядаўнія" -#: extensions/places-menu/placeDisplay.js:328 +#: extensions/places-menu/placeDisplay.js:327 msgid "Starred" msgstr "Абраныя" -#: extensions/places-menu/placeDisplay.js:348 +#: extensions/places-menu/placeDisplay.js:347 msgid "Network" msgstr "Сетка" -#: extensions/places-menu/placeDisplay.js:355 +#: extensions/places-menu/placeDisplay.js:354 msgid "Trash" msgstr "Сметніца" @@ -232,47 +232,47 @@ 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:92 +#: extensions/window-list/extension.js:98 msgid "Close" msgstr "Закрыць" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:125 msgid "Unminimize" msgstr "Скасаваць згортванне" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:125 msgid "Minimize" msgstr "Згарнуць" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:130 msgid "Unmaximize" msgstr "Скасаваць разгортванне" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:130 msgid "Maximize" msgstr "Разгарнуць" -#: extensions/window-list/extension.js:641 +#: extensions/window-list/extension.js:720 msgid "Minimize all" msgstr "Згарнуць усе" -#: extensions/window-list/extension.js:647 +#: extensions/window-list/extension.js:726 msgid "Unminimize all" msgstr "Скасаваць згортванне для ўсіх" -#: extensions/window-list/extension.js:653 +#: extensions/window-list/extension.js:732 msgid "Maximize all" msgstr "Разгарнуць усе" -#: extensions/window-list/extension.js:661 +#: extensions/window-list/extension.js:740 msgid "Unmaximize all" msgstr "Скасаваць разгортванне для ўсіх" -#: extensions/window-list/extension.js:669 +#: extensions/window-list/extension.js:748 msgid "Close all" msgstr "Закрыць усе" -#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24 +#: extensions/window-list/extension.js:1000 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Спіс вокнаў" @@ -289,7 +289,7 @@ msgstr "" "значэнні: «never» (ніколі), «auto» (аўтаматычна), «always» (заўсёды)." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26 -#: extensions/window-list/prefs.js:75 +#: extensions/window-list/prefs.js:74 msgid "Show windows from all workspaces" msgstr "Паказваць вокны з усіх працоўных прастор" @@ -312,23 +312,23 @@ msgstr "" msgid "Show workspace previews in window list" msgstr "Паказваць папярэдні прагляд працоўных прастор у спісе акон" -#: extensions/window-list/prefs.js:42 +#: extensions/window-list/prefs.js:41 msgid "Window Grouping" msgstr "Групаванне вокнаў" -#: extensions/window-list/prefs.js:47 +#: extensions/window-list/prefs.js:46 msgid "Never group windows" msgstr "Ніколі не групаваць вокны" -#: extensions/window-list/prefs.js:48 +#: extensions/window-list/prefs.js:47 msgid "Group windows when space is limited" msgstr "Групаваць вокны калі не хапае месца" -#: extensions/window-list/prefs.js:49 +#: extensions/window-list/prefs.js:48 msgid "Always group windows" msgstr "Заўсёды групаваць вокны" -#: extensions/window-list/prefs.js:69 +#: extensions/window-list/prefs.js:68 msgid "Show on all monitors" msgstr "Паказваць на ўсіх маніторах" @@ -336,35 +336,69 @@ msgstr "Паказваць на ўсіх маніторах" msgid "Show workspace previews in top bar" msgstr "Паказваць папярэдні прагляд працоўных прастор у верхняй панэлі" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "Націсніце %s, каб змяніць" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "Налады" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "Індыкатар працоўнай прасторы" -#: extensions/workspace-indicator/workspacePrefs.js:29 -msgid "Show Previews" -msgstr "Паказваць папярэдні прагляд" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "Індыкатар" -#: extensions/workspace-indicator/workspacePrefs.js:87 -#, javascript-format -msgid "Workspace %d" -msgstr "Працоўная прастора %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "Перадпрагляд" -#: extensions/workspace-indicator/workspacePrefs.js:154 -msgid "Workspace Names" -msgstr "Назвы працоўных прастор" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" +msgstr "Назва працоўнай прасторы" -#: extensions/workspace-indicator/workspacePrefs.js:171 -msgid "Add Workspace" -msgstr "Дадаць працоўную прастору" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "Паводзіны" -#: extensions/workspace-indicator/workspacePrefs.js:196 -msgid "Remove" -msgstr "Выдаліць" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "Дынамічная" -#: extensions/workspace-indicator/workspacePrefs.js:226 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "Пустыя працоўныя прасторы выдаляюцца аўтаматычна." + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "Фіксаваная колькасць'" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "Вызначыце колькасць пастаянных працоўных прастор." + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "Колькасць працоўных прастор" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "Працоўныя прасторы" +#, javascript-format +#~ msgid "Workspace %d" +#~ msgstr "Працоўная прастора %d" + +#~ msgid "Add Workspace" +#~ msgstr "Дадаць працоўную прастору" + +#~ msgid "Remove" +#~ msgstr "Выдаліць" + #~ msgid "Computer" #~ msgstr "Камп'ютар" From 6f7dabe3f0b4b3845ad09c14b445121fb420d02e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Burns?= Date: Tue, 24 Jun 2025 14:53:46 +0000 Subject: [PATCH 36/38] Update Brazilian Portuguese translation --- po/pt_BR.po | 115 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 72 insertions(+), 43 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index 3c756ccf..b2ed48f4 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -10,22 +10,23 @@ # Enrico Nicoletto , 2013, 2014. # Matheus Polkorny , 2024. # Rafael Fontenelle , 2013-2025. +# Álvaro Burns <>, 2025. # 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: 2025-01-13 16:23+0000\n" -"PO-Revision-Date: 2025-01-19 21:11-0300\n" -"Last-Translator: Rafael Fontenelle \n" -"Language-Team: Brazilian Portuguese \n" +"POT-Creation-Date: 2025-06-18 23:32+0000\n" +"PO-Revision-Date: 2025-06-24 11:27-0300\n" +"Last-Translator: Álvaro Burns <>\n" +"Language-Team: Brazilian Portuguese \n" "Language: pt_BR\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-Generator: Gtranslator 47.1\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Gtranslator 48.0\n" "X-Project-Style: gnome\n" #: data/gnome-classic.desktop.in:3 @@ -45,11 +46,11 @@ msgstr "GNOME Clássico no Wayland" msgid "GNOME Classic on Xorg" msgstr "GNOME Clássico no Xorg" -#: extensions/apps-menu/extension.js:125 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Favoritos" -#: extensions/apps-menu/extension.js:399 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Aplicativos" @@ -240,47 +241,47 @@ msgstr "Nome do tema" msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" msgstr "O nome do tema, para ser carregado de ~/.themes/nome/gnome-shell" -#: extensions/window-list/extension.js:95 +#: extensions/window-list/extension.js:98 msgid "Close" msgstr "Fechar" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Unminimize" msgstr "Desfazer janelas minimizadas" -#: extensions/window-list/extension.js:122 +#: extensions/window-list/extension.js:125 msgid "Minimize" msgstr "Minimizar" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Unmaximize" msgstr "Desfazer janelas maximizadas" -#: extensions/window-list/extension.js:129 +#: extensions/window-list/extension.js:130 msgid "Maximize" msgstr "Maximizar" -#: extensions/window-list/extension.js:721 +#: extensions/window-list/extension.js:720 msgid "Minimize all" msgstr "Minimizar todas" -#: extensions/window-list/extension.js:727 +#: extensions/window-list/extension.js:726 msgid "Unminimize all" msgstr "Desfazer todas as janelas minimizadas" -#: extensions/window-list/extension.js:733 +#: extensions/window-list/extension.js:732 msgid "Maximize all" msgstr "Maximizar todas" -#: extensions/window-list/extension.js:741 +#: extensions/window-list/extension.js:740 msgid "Unmaximize all" msgstr "Desfazer todas as janelas maximizadas" -#: extensions/window-list/extension.js:749 +#: extensions/window-list/extension.js:748 msgid "Close all" msgstr "Fechar todas" -#: extensions/window-list/extension.js:992 extensions/window-list/prefs.js:23 +#: extensions/window-list/extension.js:1000 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Lista de janelas" @@ -347,35 +348,69 @@ msgstr "Mostrar em todos os monitores" msgid "Show workspace previews in top bar" msgstr "Mostra prévias do espaço de trabalho na barra superior" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "Clique em %s para editar" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "Configurações" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "Indicador de espaços de trabalho" -#: extensions/workspace-indicator/workspacePrefs.js:28 -msgid "Show Previews" -msgstr "Mostrar prévias" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "Indicador" -#: extensions/workspace-indicator/workspacePrefs.js:86 -#, javascript-format -msgid "Workspace %d" -msgstr "Espaço de trabalho %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "Prévias" -#: extensions/workspace-indicator/workspacePrefs.js:153 -msgid "Workspace Names" -msgstr "Nomes de espaços de trabalho" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" +msgstr "Nome do espaço de trabalho" -#: extensions/workspace-indicator/workspacePrefs.js:170 -msgid "Add Workspace" -msgstr "Adicionar espaço de trabalho" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "Comportamento" -#: extensions/workspace-indicator/workspacePrefs.js:195 -msgid "Remove" -msgstr "Remove" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "Dinâmica" -#: extensions/workspace-indicator/workspacePrefs.js:225 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "Remover espaços de trabalho automaticamente." + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "Número fixo" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "Especifique um número permanente de espaços de trabalho." + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "Número de espaços de trabalho" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "Espaços de trabalho" +#, javascript-format +#~ msgid "Workspace %d" +#~ msgstr "Espaço de trabalho %d" + +#~ msgid "Add Workspace" +#~ msgstr "Adicionar espaço de trabalho" + +#~ msgid "Remove" +#~ msgstr "Remove" + #~ msgid "Computer" #~ msgstr "Computador" @@ -513,9 +548,6 @@ msgstr "Espaços de trabalho" #~ msgid "Display" #~ msgstr "Tela" -#~ msgid "Display Settings" -#~ msgstr "Configurações de tela" - #~ msgid "The application icon mode." #~ msgstr "O modo de ícone do aplicativo." @@ -706,9 +738,6 @@ msgstr "Espaços de trabalho" #~ "alternador de Alt-Tab, apenas desative a extensão de extensions.gnome.org " #~ "ou nas configurações avançadas do aplicativo." -#~ msgid "Alt Tab Behaviour" -#~ msgstr "Comportamento do Alt Tab" - #~ msgid "Cancel" #~ msgstr "Cancelar" From 7466de0f2062fadf232b9bd0cb8c2cb9fcf00534 Mon Sep 17 00:00:00 2001 From: "Sergej A." Date: Sat, 28 Jun 2025 16:37:22 +0000 Subject: [PATCH 37/38] Update Russian translation --- po/ru.po | 148 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 91 insertions(+), 57 deletions(-) diff --git a/po/ru.po b/po/ru.po index e328557a..32bb97d3 100644 --- a/po/ru.po +++ b/po/ru.po @@ -9,9 +9,9 @@ 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-10-16 14:41+0000\n" -"PO-Revision-Date: 2024-10-27 14:01+0300\n" -"Last-Translator: Artur So \n" +"POT-Creation-Date: 2025-06-18 23:32+0000\n" +"PO-Revision-Date: 2025-06-20 09:30+1000\n" +"Last-Translator: Ser82-png \n" "Language-Team: Русский \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -19,7 +19,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.0.1\n" #: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" @@ -38,11 +38,11 @@ msgstr "Классический GNOME на Wayland" msgid "GNOME Classic on Xorg" msgstr "Классический GNOME на Xorg" -#: extensions/apps-menu/extension.js:126 +#: extensions/apps-menu/extension.js:118 msgid "Favorites" msgstr "Избранное" -#: extensions/apps-menu/extension.js:400 +#: extensions/apps-menu/extension.js:392 msgid "Apps" msgstr "Приложения" @@ -55,20 +55,20 @@ msgid "" "A list of strings, each containing an application id (desktop file name), " "followed by a colon and the workspace number" msgstr "" -"Список строк, содержащих идентификатор приложения (имя desktop-файла), за " -"которым следует двоеточие и номер рабочего стола" +"Список строк, содержащих идентификатор приложения (название desktop-файла), " +"за которым следует двоеточие и номер рабочего стола" -#: extensions/auto-move-windows/prefs.js:159 +#: extensions/auto-move-windows/prefs.js:156 msgid "Workspace Rules" msgstr "Правила для рабочих столов" -#: extensions/auto-move-windows/prefs.js:314 +#: extensions/auto-move-windows/prefs.js:311 msgid "Add Rule" msgstr "Добавить правило" #. TRANSLATORS: %s is the filesystem name #: extensions/drive-menu/extension.js:123 -#: extensions/places-menu/placeDisplay.js:187 +#: extensions/places-menu/placeDisplay.js:186 #, javascript-format msgid "Ejecting drive “%s” failed:" msgstr "Не удалось извлечь диск «%s»:" @@ -110,38 +110,38 @@ msgstr "" "умолчанию заголовки располагаются снизу). При изменении этого параметра, " "чтобы оно вступило в силу, необходимо перезапустить Shell." -#: extensions/places-menu/extension.js:91 -#: extensions/places-menu/extension.js:94 +#: extensions/places-menu/extension.js:75 +#: extensions/places-menu/extension.js:78 msgid "Places" msgstr "Места" -#: extensions/places-menu/placeDisplay.js:53 +#: extensions/places-menu/placeDisplay.js:52 #, javascript-format msgid "Failed to launch “%s”" msgstr "Не удалось запустить «%s»" -#: extensions/places-menu/placeDisplay.js:68 +#: extensions/places-menu/placeDisplay.js:67 #, javascript-format msgid "Failed to mount volume for “%s”" msgstr "Не удалось смонтировать том для «%s»" -#: extensions/places-menu/placeDisplay.js:316 +#: extensions/places-menu/placeDisplay.js:315 msgid "Home" msgstr "Домашняя папка" -#: extensions/places-menu/placeDisplay.js:322 +#: extensions/places-menu/placeDisplay.js:321 msgid "Recent" msgstr "Недавние" -#: extensions/places-menu/placeDisplay.js:328 +#: extensions/places-menu/placeDisplay.js:327 msgid "Starred" msgstr "Избранные" -#: extensions/places-menu/placeDisplay.js:348 +#: extensions/places-menu/placeDisplay.js:347 msgid "Network" msgstr "Сеть" -#: extensions/places-menu/placeDisplay.js:355 +#: extensions/places-menu/placeDisplay.js:354 msgid "Trash" msgstr "Корзина" @@ -233,49 +233,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:92 +#: extensions/window-list/extension.js:98 msgid "Close" msgstr "Закрыть" # ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize) -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:125 msgid "Unminimize" msgstr "Вернуть" -#: extensions/window-list/extension.js:119 +#: extensions/window-list/extension.js:125 msgid "Minimize" msgstr "Свернуть" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:130 msgid "Unmaximize" msgstr "Восстановить" -#: extensions/window-list/extension.js:126 +#: extensions/window-list/extension.js:130 msgid "Maximize" msgstr "Развернуть" -#: extensions/window-list/extension.js:641 +#: extensions/window-list/extension.js:720 msgid "Minimize all" msgstr "Свернуть все" # ну или "восстановить", правда тогда появляется неоднозначный повтор (unmaximize) -#: extensions/window-list/extension.js:647 +#: extensions/window-list/extension.js:726 msgid "Unminimize all" msgstr "Вернуть все" -#: extensions/window-list/extension.js:653 +#: extensions/window-list/extension.js:732 msgid "Maximize all" msgstr "Развернуть все" -#: extensions/window-list/extension.js:661 +#: extensions/window-list/extension.js:740 msgid "Unmaximize all" msgstr "Восстановить все" -#: extensions/window-list/extension.js:669 +#: extensions/window-list/extension.js:748 msgid "Close all" msgstr "Закрыть все" -#: extensions/window-list/extension.js:911 extensions/window-list/prefs.js:24 +#: extensions/window-list/extension.js:1000 extensions/window-list/prefs.js:23 msgid "Window List" msgstr "Список окон" @@ -293,7 +293,7 @@ msgstr "" "«always» — всегда." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26 -#: extensions/window-list/prefs.js:75 +#: extensions/window-list/prefs.js:74 msgid "Show windows from all workspaces" msgstr "Показывать окна со всех рабочих столов" @@ -316,61 +316,95 @@ msgstr "" #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41 msgid "Show workspace previews in window list" -msgstr "Показывать предпросмотры рабочих столов в списке окон" +msgstr "Показывать предварительный просмотр рабочих столов в списке окон" -#: extensions/window-list/prefs.js:42 +#: extensions/window-list/prefs.js:41 msgid "Window Grouping" msgstr "Группировка окон" -#: extensions/window-list/prefs.js:47 +#: extensions/window-list/prefs.js:46 msgid "Never group windows" msgstr "Никогда не группировать окна" -#: extensions/window-list/prefs.js:48 +#: extensions/window-list/prefs.js:47 msgid "Group windows when space is limited" msgstr "Группировать окна, если место ограничено" -#: extensions/window-list/prefs.js:49 +#: extensions/window-list/prefs.js:48 msgid "Always group windows" msgstr "Всегда группировать окна" -#: extensions/window-list/prefs.js:69 +#: extensions/window-list/prefs.js:68 msgid "Show on all monitors" msgstr "Показывать на всех мониторах" #: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12 msgid "Show workspace previews in top bar" -msgstr "Показывать предпросмотры рабочих столов в верхней панели" +msgstr "Показывать предварительный просмотр рабочих столов в верхней панели" -#: extensions/workspace-indicator/workspaceIndicator.js:430 +#: extensions/workspace-indicator/workspaceIndicator.js:404 +#, javascript-format +msgid "Press %s to edit" +msgstr "Нажмите %s для редактирования" + +#: extensions/workspace-indicator/workspaceIndicator.js:512 +msgid "Settings" +msgstr "Настройки" + +#: extensions/workspace-indicator/workspaceIndicator.js:592 msgid "Workspace Indicator" msgstr "Индикатор рабочих столов" -#: extensions/workspace-indicator/workspacePrefs.js:29 -msgid "Show Previews" -msgstr "Показывать предпросмотры" +#: extensions/workspace-indicator/workspacePrefs.js:20 +msgid "Indicator" +msgstr "Индикатор" -#: extensions/workspace-indicator/workspacePrefs.js:87 -#, javascript-format -msgid "Workspace %d" -msgstr "Рабочий стол %d" +#: extensions/workspace-indicator/workspacePrefs.js:25 +msgid "Previews" +msgstr "Предварительный просмотр" -#: extensions/workspace-indicator/workspacePrefs.js:154 -msgid "Workspace Names" -msgstr "Названия рабочих столов" +#: extensions/workspace-indicator/workspacePrefs.js:35 +msgid "Workspace Name" +msgstr "Название рабочего стола" -#: extensions/workspace-indicator/workspacePrefs.js:171 -msgid "Add Workspace" -msgstr "Добавить рабочий стол" +#: extensions/workspace-indicator/workspacePrefs.js:59 +msgid "Behavior" +msgstr "Поведение" -#: extensions/workspace-indicator/workspacePrefs.js:196 -msgid "Remove" -msgstr "Удалить" +#: extensions/workspace-indicator/workspacePrefs.js:64 +msgid "Dynamic" +msgstr "Динамичный" -#: extensions/workspace-indicator/workspacePrefs.js:226 +#: extensions/workspace-indicator/workspacePrefs.js:65 +msgid "Automatically removes empty workspaces." +msgstr "Автоматически удалять пустые рабочие столы." + +#: extensions/workspace-indicator/workspacePrefs.js:75 +msgid "Fixed Number" +msgstr "Фиксированное количество" + +#: extensions/workspace-indicator/workspacePrefs.js:76 +msgid "Specify a number of permanent workspaces." +msgstr "Укажите количество постоянных рабочих столов." + +#: extensions/workspace-indicator/workspacePrefs.js:89 +msgid "Number of Workspaces" +msgstr "Количество рабочих столов" + +#: extensions/workspace-indicator/workspacePrefs.js:128 msgid "Workspaces" msgstr "Рабочие столы" +#, javascript-format +#~ msgid "Workspace %d" +#~ msgstr "Рабочий стол %d" + +#~ msgid "Add Workspace" +#~ msgstr "Добавить рабочий стол" + +#~ msgid "Remove" +#~ msgstr "Удалить" + #~ msgid "Computer" #~ msgstr "Компьютер" From 9fd7f7a9395f2c55213662092a6d299966e894a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 28 Jun 2025 18:34:11 +0200 Subject: [PATCH 38/38] Bump version to 49.alpha.1 Update NEWS. --- NEWS | 15 +++++++++++++++ meson.build | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 8bcde1e0..38242b89 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,18 @@ +49.alpha.1 +========== +* workspaces-indicator, window-list: Better expose workspace names + [Florian; !405] +* window-list: Animate transition to/from overview [Florian; !412] +* Misc. bug fixes and cleanups [Florian; !409, !411, !413] + +Contributors: + Florian Müllner + +Translators: + Martin [sl], Emin Tufan Çetin [tr], Yuri Chornoivan [uk], Luming Zh [zh_CN], + Yago Raña [gl], Ekaterine Papava [ka], Vasil Pupkin [be], + Álvaro Burns [pt_BR], Sergej A. [ru] + 49.alpha.0 ========== * windowsNavigator: Fix handling keyboard shortcuts [Daniel; !395] diff --git a/meson.build b/meson.build index a7b6a548..1a6c0e7b 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,7 @@ project( 'gnome-shell-extensions', - version: '49.alpha.0', + version: '49.alpha.1', meson_version: '>= 1.1.0', license: 'GPL-2.0-or-later', )