diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3f158383..521e642f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,10 +3,13 @@ # SPDX-License-Identifier: GPL-2.0-or-later include: - - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml' - - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bc70242ffb8402243e934659ecc1a2d1c89eca2b/templates/ci-fairy.yml" - - project: 'Infrastructure/openshift-images/gnome-release-service' - file: '/ci-templates/release-module.yml' + - remote: 'https://gitlab.gnome.org/Infrastructure/freedesktop-ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml' + - remote: "https://gitlab.gnome.org/Infrastructure/freedesktop-ci-templates/-/raw/bc70242ffb8402243e934659ecc1a2d1c89eca2b/templates/ci-fairy.yml" + - component: gitlab.gnome.org/GNOME/citemplates/release-service@master + inputs: + job-stage: deploy + dist-job-name: fedora-dist-tarball + tarball-artifact-path: "$TARBALL_ARTIFACT_PATH" stages: - pre_review @@ -16,7 +19,7 @@ stages: - deploy default: - image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/40:2024-07-11.0 + image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/41:2024-10-18.0 # Cancel jobs if newer commits are pushed to the branch interruptible: true # Auto-retry jobs in case of infra failures @@ -30,7 +33,8 @@ default: variables: FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions - LINT_LOG: "eslint-report.xml" + MESON_BUILD_DIR: build + TARBALL_ARTIFACT_PATH: "${MESON_BUILD_DIR}/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz" workflow: rules: @@ -108,14 +112,16 @@ js_check: eslint: stage: review <<: *prereview_req + variables: + LINT_LOG: "eslint-report.xml" script: - export NODE_PATH=$(npm root -g) - - ./.gitlab-ci/run-eslint --output-file ${LINT_LOG} --format junit --stdout + - ./.gitlab-ci/run-eslint --output-file "$LINT_LOG" --format junit --stdout artifacts: paths: - - ${LINT_LOG} + - "$LINT_LOG" reports: - junit: ${LINT_LOG} + junit: "$LINT_LOG" potfile_js_check: stage: review @@ -141,28 +147,13 @@ fedora-build: stage: build <<: *prereview_req script: - - meson setup build --werror -Dextension_set=all -Dclassic_mode=true - - meson compile -C build - - meson test -C build - - meson install -C build + - meson setup "$MESON_BUILD_DIR" --werror -Dextension_set=all -Dclassic_mode=true + - meson compile -C "$MESON_BUILD_DIR" + - meson test -C "$MESON_BUILD_DIR" + - meson install -C "$MESON_BUILD_DIR" artifacts: paths: - - build - -fedora-distinfo: - stage: deploy - needs: - - fedora-build - script: - - .gitlab-ci/export-artifact-path build > dist.env - artifacts: - reports: - dotenv: dist.env - paths: - - build - - dist.env - rules: - - if: '$CI_COMMIT_TAG' + - "$MESON_BUILD_DIR" fedora-dist: stage: deploy @@ -171,7 +162,7 @@ fedora-dist: variables: GIT_SUBMODULE_STRATEGY: normal script: - - meson dist -C build + - meson dist -C "$MESON_BUILD_DIR" rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' changes: @@ -180,21 +171,11 @@ fedora-dist: fedora-dist-tarball: extends: fedora-dist - needs: - - fedora-distinfo artifacts: expose_as: 'Get tarball here' + name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" + when: always paths: - - $TARBALL_ARTIFACT_PATH - reports: - dotenv: dist.env - rules: - - if: '$CI_COMMIT_TAG' - -release-module: - stage: deploy - needs: - - fedora-dist-tarball - extends: .release-module + - "$TARBALL_ARTIFACT_PATH" rules: - if: '$CI_COMMIT_TAG' diff --git a/.gitlab-ci/export-artifact-path b/.gitlab-ci/export-artifact-path deleted file mode 100755 index f9a7534f..00000000 --- a/.gitlab-ci/export-artifact-path +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/gjs -m -// SPDX-FileCopyrightText: 2024 Florian Müllner -// -// SPDX-License-Identifier: GPL-2.0-or-later - -import Gio from 'gi://Gio'; -import {programArgs, programInvocationName, exit} from 'system'; - -const [buildDir] = programArgs; -if (!buildDir) { - printerr(`usage: ${programInvocationName} `); - exit(1); -} - -const subprocess = Gio.Subprocess.new( - ['meson', 'introspect', '--projectinfo', buildDir], - Gio.SubprocessFlags.STDOUT_PIPE); -const [, out] = subprocess.communicate_utf8(null, null); - -const {descriptive_name, version} = JSON.parse(out); -print(`TARBALL_ARTIFACT_PATH=${buildDir}/meson-dist/${descriptive_name}-${version}.tar.xz`); diff --git a/NEWS b/NEWS index f48d2263..64802596 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,17 @@ +47.3 +==== +* places-menu: Fix opening drives with mount operations [Florian; !361] +* window-list: Fix hiding when entering overview with gestures [Florian; !364] +* workspace-indicator: Only show previews of regular windows [Florian; !363] +* Misc. bug fixes and cleanups [Florian, Bartłomiej; !362, !365, !367, + !368, !370] + +Contributors: + Florian Müllner, Bartłomiej Piotrowski + +Translators: + Yi-Jyun Pan [zh_TW] + 47.2 ==== * places-menu: Fix a11y labelling [Florian; #542] diff --git a/extensions/places-menu/placeDisplay.js b/extensions/places-menu/placeDisplay.js index 930f92c6..1685c040 100644 --- a/extensions/places-menu/placeDisplay.js +++ b/extensions/places-menu/placeDisplay.js @@ -6,7 +6,6 @@ // // SPDX-License-Identifier: GPL-2.0-or-later -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- import Gio from 'gi://Gio'; import GLib from 'gi://GLib'; import Shell from 'gi://Shell'; @@ -61,15 +60,15 @@ class PlaceInfo extends EventEmitter { return; } - let source = { - get_icon: () => this.icon, + const source = { + get_drive: () => null, }; let op = new ShellMountOperation.ShellMountOperation(source); try { await this.file.mount_enclosing_volume(0, op.mountOp, null); if (tryMount) - this._ensureMountAndLaunch(context, false); + this._ensureMountAndLaunch(context, false).catch(logError); } catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED)) Main.notifyError(_('Failed to mount volume for “%s”').format(this.name), e.message); @@ -81,7 +80,7 @@ class PlaceInfo extends EventEmitter { launch(timestamp) { let launchContext = global.create_app_launch_context(timestamp, -1); - this._ensureMountAndLaunch(launchContext, true); + this._ensureMountAndLaunch(launchContext, true).catch(logError); } getIcon() { diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index cd0a6d98..e78021fe 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -77,7 +77,7 @@ class WindowContextMenu extends PopupMenu.PopupMenu { 'notify::minimized', this._updateMinimizeItem.bind(this), 'notify::maximized-horizontally', this._updateMaximizeItem.bind(this), 'notify::maximized-vertically', this._updateMaximizeItem.bind(this), - this); + this.actor); this._updateMinimizeItem(); this._updateMaximizeItem(); @@ -772,10 +772,11 @@ class WindowList extends St.Widget { () => this._onWorkspaceMenuSet(), this); this._onWorkspaceMenuSet(); - Main.layoutManager.addChrome(this, { + const chromeOptions = { affectsStruts: true, trackFullscreen: true, - }); + }; + Main.layoutManager.addChrome(this, chromeOptions); Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox); Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic'); @@ -812,10 +813,12 @@ class WindowList extends St.Widget { Main.overview.connectObject( 'showing', () => { + Main.layoutManager.untrackChrome(this); this.hide(); this._updateKeyboardAnchor(); }, 'hidden', () => { + Main.layoutManager.trackChrome(this); this.visible = !this._monitor.inFullscreen; this._updateKeyboardAnchor(); }, this); diff --git a/extensions/workspace-indicator/workspaceIndicator.js b/extensions/workspace-indicator/workspaceIndicator.js index 18a8d4e9..9f54acbb 100644 --- a/extensions/workspace-indicator/workspaceIndicator.js +++ b/extensions/workspace-indicator/workspaceIndicator.js @@ -43,7 +43,7 @@ class WindowPreview extends St.Button { 'size-changed', () => this._checkRelayout(), 'position-changed', () => this._checkRelayout(), 'notify::minimized', this._updateVisible.bind(this), - 'notify::window-type', this._updateVisible.bind(this), + 'notify::skip-taskbar', this._updateVisible.bind(this), this); this._updateVisible(); @@ -72,7 +72,7 @@ class WindowPreview extends St.Button { } _updateVisible() { - this.visible = this._window.window_type !== Meta.WindowType.DESKTOP && + this.visible = !this._window.skip_taskbar && this._window.showing_on_its_workspace(); } } diff --git a/meson.build b/meson.build index 873da7bd..7a64c2d8 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,7 @@ project( 'gnome-shell-extensions', - version: '47.2', + version: '47.3', meson_version: '>= 1.1.0', license: 'GPL-2.0-or-later', ) diff --git a/po/zh_TW.po b/po/zh_TW.po index a91c8bc5..ab8e9ea1 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,9 +9,9 @@ msgstr "" "Project-Id-Version: gnome-shell-extensions gnome-3-0\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "issues\n" -"POT-Creation-Date: 2024-04-29 14:28+0000\n" -"PO-Revision-Date: 2024-07-24 10:25+0000\n" -"Last-Translator: Chao-Hsiung Liao \n" +"POT-Creation-Date: 2024-11-25 15:07+0000\n" +"PO-Revision-Date: 2025-01-12 23:57+0800\n" +"Last-Translator: Yi-Jyun Pan \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_TW\n" @@ -19,7 +19,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Poedit 3.5\n" #: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" @@ -38,11 +38,11 @@ msgstr "GNOME Classic 採行 Wayland" msgid "GNOME Classic on Xorg" msgstr "GNOME Classic 採行 Xorg" -#: extensions/apps-menu/extension.js:126 +#: extensions/apps-menu/extension.js:125 msgid "Favorites" msgstr "喜愛" -#: extensions/apps-menu/extension.js:397 +#: extensions/apps-menu/extension.js:399 msgid "Apps" msgstr "程式" @@ -58,11 +58,11 @@ msgstr "" "字串的列表,每個都包含一個應用程式 id (桌面檔名稱),後面接著半形分號 \";\" 與" "工作區號碼" -#: 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 "加入規則" @@ -107,8 +107,8 @@ msgstr "" "如果為真,在對映的縮圖頂端放置視窗說明標題,凌駕 Shell 將它放置在底部的預設" "值。變更這個設定值需要重新啟動 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 "位置" @@ -223,47 +223,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:72 +#: extensions/window-list/extension.js:70 msgid "Close" msgstr "關閉" -#: extensions/window-list/extension.js:99 +#: extensions/window-list/extension.js:97 msgid "Unminimize" msgstr "取消最小化" -#: extensions/window-list/extension.js:99 +#: extensions/window-list/extension.js:97 msgid "Minimize" msgstr "最小化" -#: extensions/window-list/extension.js:106 +#: extensions/window-list/extension.js:104 msgid "Unmaximize" msgstr "取消最大化" -#: extensions/window-list/extension.js:106 +#: extensions/window-list/extension.js:104 msgid "Maximize" msgstr "最大化" -#: extensions/window-list/extension.js:471 +#: extensions/window-list/extension.js:485 msgid "Minimize all" msgstr "全部最小化" -#: extensions/window-list/extension.js:477 +#: extensions/window-list/extension.js:491 msgid "Unminimize all" msgstr "全部取消最小化" -#: extensions/window-list/extension.js:483 +#: extensions/window-list/extension.js:497 msgid "Maximize all" msgstr "全部最大化" -#: extensions/window-list/extension.js:491 +#: extensions/window-list/extension.js:505 msgid "Unmaximize all" msgstr "全部取消最大化" -#: extensions/window-list/extension.js:499 +#: extensions/window-list/extension.js:513 msgid "Close all" msgstr "全部關閉" -#: extensions/window-list/extension.js:773 +#: extensions/window-list/extension.js:780 msgid "Window List" msgstr "視窗列表" @@ -279,7 +279,7 @@ msgstr "" "決定在視窗列表中何時群組視窗。可能的數值有「never」、「auto」、「always」。" #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:26 -#: extensions/window-list/prefs.js:79 +#: extensions/window-list/prefs.js:69 msgid "Show windows from all workspaces" msgstr "顯示所有工作區的視窗" @@ -297,44 +297,59 @@ msgid "" "primary one." msgstr "是否在所有連接的螢幕顯示視窗列表或是只出現在主要螢幕上。" -#: extensions/window-list/prefs.js:35 +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:41 +msgid "Show workspace previews in window list" +msgstr "在視窗清單顯示工作區預覽" + +#: extensions/window-list/prefs.js:36 msgid "Window Grouping" msgstr "視窗群組" -#: extensions/window-list/prefs.js:40 +#: extensions/window-list/prefs.js:41 msgid "Never group windows" msgstr "永不群組視窗" -#: extensions/window-list/prefs.js:41 +#: extensions/window-list/prefs.js:42 msgid "Group windows when space is limited" msgstr "當空間受限時群組視窗" -#: extensions/window-list/prefs.js:42 +#: extensions/window-list/prefs.js:43 msgid "Always group windows" msgstr "永遠群組視窗" -#: extensions/window-list/prefs.js:66 +#: extensions/window-list/prefs.js:63 msgid "Show on all monitors" msgstr "顯示於所有螢幕" -#: extensions/window-list/workspaceIndicator.js:255 -#: extensions/workspace-indicator/extension.js:261 -msgid "Workspace Indicator" -msgstr "工作區指示器" +#: extensions/window-list/prefs.js:75 +msgid "Show workspace previews" +msgstr "顯示工作區預覽" -#: extensions/workspace-indicator/prefs.js:69 +#: extensions/workspace-indicator/prefs.js:29 +msgid "Show Previews In Top Bar" +msgstr "在頂端列顯示預覽" + +#: extensions/workspace-indicator/prefs.js:87 #, javascript-format msgid "Workspace %d" msgstr "工作區 %d" -#: extensions/workspace-indicator/prefs.js:136 +#: extensions/workspace-indicator/prefs.js:154 msgid "Workspace Names" msgstr "工作區名稱" -#: extensions/workspace-indicator/prefs.js:262 +#: extensions/workspace-indicator/prefs.js:280 msgid "Add Workspace" msgstr "新增工作區" +#: extensions/workspace-indicator/schemas/org.gnome.shell.extensions.workspace-indicator.gschema.xml:12 +msgid "Show workspace previews in top bar" +msgstr "在頂端列顯示工作區預覽" + +#: extensions/workspace-indicator/workspaceIndicator.js:430 +msgid "Workspace Indicator" +msgstr "工作區指示器" + #~ msgid "Applications" #~ msgstr "應用程式" @@ -468,8 +483,8 @@ msgstr "新增工作區" #~ msgid "" #~ "Configures how the windows are shown in the switcher. Valid possibilities " -#~ "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" -#~ "only' (shows only the application icon) or 'both'." +#~ "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " +#~ "(shows only the application icon) or 'both'." #~ msgstr "" #~ "設定視窗在切換器中顯示的方式。有效的選項為「thumbnail-only」(顯示視窗的縮" #~ "圖)、「app-icon-only」(僅顯示應用程式圖示),或「both」(兩者)"