From bf86b84d6ca681ab4c02e07fe99bb5a74c6778f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 14 May 2021 17:01:12 +0200 Subject: [PATCH 01/42] Post-release version bump --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 91cb683c..3ae60e80 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gnome-shell-extensions', - version: '40.1', + version: '41.alpha', meson_version: '>= 0.44.0', license: 'GPL2+' ) From 861e5c0be69839fa227a7a3f77a3bf349ad3482e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 20 May 2021 19:05:16 +0200 Subject: [PATCH 02/42] build: Only use major version in shell-versions The website changed its version handling again, and now takes "40.0" to mean "40.0, and only 40.0". Not complaining though, as "40" is more correct in my opinion anyway ... Part-of: --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 3ae60e80..60c6664d 100644 --- a/meson.build +++ b/meson.build @@ -22,7 +22,7 @@ sessiondir = join_paths(datadir, 'gnome-session', 'sessions') xsessiondir = join_paths(datadir, 'xsessions') ver_arr = meson.project_version().split('.') -shell_version = '@0@.0'.format(ver_arr[0]) +shell_version = ver_arr[0] uuid_suffix = '@gnome-shell-extensions.gcampax.github.com' From d6648b0b5c2a27c5ffaf2dcd353afacf3e8dd538 Mon Sep 17 00:00:00 2001 From: Adam Goode Date: Sat, 8 May 2021 11:49:56 -0400 Subject: [PATCH 03/42] window-list: Don't use panel-button class for the workspace indicator The panel-button introduces some horizontal padding which is insensitive to scroll events. Without this change, there is a small dead zone in the corner that cannot be used to switch workspaces with the mouse wheel. For useMenu mode, this has the effect of removing all of the horizontal space to the edge of the screen, so I add some back with the status-label-bin margin. This a is similar change to 8bad8a3b63d8719163dd0fb7fc9b2fd67969931c. Fixes #315. Part-of: --- extensions/window-list/stylesheet.css | 2 +- extensions/window-list/workspaceIndicator.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/window-list/stylesheet.css b/extensions/window-list/stylesheet.css index 38ea9d86..87813a42 100644 --- a/extensions/window-list/stylesheet.css +++ b/extensions/window-list/stylesheet.css @@ -82,7 +82,7 @@ background-color: rgba(200, 200, 200, .3); border: 1px solid #cccccc; padding: 0 3px; - margin: 3px 0; + margin: 3px; } .window-list-workspace-indicator .workspaces-box { diff --git a/extensions/window-list/workspaceIndicator.js b/extensions/window-list/workspaceIndicator.js index 41eedf63..c35e37a7 100644 --- a/extensions/window-list/workspaceIndicator.js +++ b/extensions/window-list/workspaceIndicator.js @@ -249,6 +249,7 @@ class WorkspaceIndicator extends PanelMenu.Button { super._init(0.0, _('Workspace Indicator'), true); this.setMenu(new PopupMenu.PopupMenu(this, 0.0, St.Side.BOTTOM)); this.add_style_class_name('window-list-workspace-indicator'); + this.remove_style_class_name('panel-button'); this.menu.actor.remove_style_class_name('panel-menu'); let container = new St.Widget({ From 4403b54fbc8f8f83759b1be71241ce9a1e837a9b Mon Sep 17 00:00:00 2001 From: Hugo Carvalho Date: Wed, 2 Jun 2021 16:09:54 +0000 Subject: [PATCH 04/42] Update Portuguese translation (cherry picked from commit 08d382faccd9cf806522586ab904a9e47b5b2c74) --- po/pt.po | 66 +++++++++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 39 deletions(-) diff --git a/po/pt.po b/po/pt.po index c1e8ad94..a6546fbf 100644 --- a/po/pt.po +++ b/po/pt.po @@ -6,38 +6,39 @@ # António Lima , 2013. # Pedro Albuquerque , 2014. # Bruno Ramalhete , 2015. -# José Vieira , 2020. +# José Vieira , 2020-2021. +# Hugo Carvalho , 2021. # msgid "" msgstr "" "Project-Id-Version: 3.14\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "issues\n" -"POT-Creation-Date: 2020-05-28 00:55+0000\n" -"PO-Revision-Date: 2020-09-05 00:47+0100\n" -"Last-Translator: José Vieira \n" -"Language-Team: Portuguese <>\n" +"POT-Creation-Date: 2021-05-14 16:21+0000\n" +"PO-Revision-Date: 2021-06-02 17:07+0100\n" +"Last-Translator: Hugo Carvalho \n" +"Language-Team: Português <@>\n" "Language: pt\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 3.36.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.3\n" "X-Project-Style: gnome\n" -#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 +#: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" msgstr "GNOME clássico" #: data/gnome-classic.desktop.in:4 msgid "This session logs you into GNOME Classic" -msgstr "Esta sessão entra no GNOME clássico" +msgstr "Esta sessão vai usar o GNOME clássico" #: extensions/apps-menu/extension.js:113 msgid "Favorites" msgstr "Favoritos" -#: extensions/apps-menu/extension.js:369 +#: extensions/apps-menu/extension.js:367 msgid "Applications" msgstr "Aplicações" @@ -54,11 +55,10 @@ msgstr "" "ficheiro desktop), seguido de dois pontos e o número da área de trabalho" #: extensions/auto-move-windows/prefs.js:35 -#| msgid "Workspace Names" msgid "Workspace Rules" msgstr "Regras das áreas de trabalho" -#: extensions/auto-move-windows/prefs.js:243 +#: extensions/auto-move-windows/prefs.js:237 msgid "Add Rule" msgstr "Adicionar regra" @@ -66,7 +66,6 @@ msgstr "Adicionar regra" #: extensions/drive-menu/extension.js:112 #: extensions/places-menu/placeDisplay.js:233 #, javascript-format -#| msgid "Ejecting drive '%s' failed:" msgid "Ejecting drive “%s” failed:" msgstr "Falha ao ejetar a unidade '%s':" @@ -74,8 +73,7 @@ msgstr "Falha ao ejetar a unidade '%s':" msgid "Removable devices" msgstr "Dispositivos removíveis" -#: extensions/drive-menu/extension.js:155 -#| msgid "Open File" +#: extensions/drive-menu/extension.js:152 msgid "Open Files" msgstr "Ficheiros abertos" @@ -96,7 +94,7 @@ msgstr "" #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 msgid "Place window captions on top" -msgstr "Colocar título de janelas em cima" +msgstr "Colocar título de janela em cima" #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 msgid "" @@ -104,18 +102,17 @@ msgid "" "shell default of placing it at the bottom. Changing this setting requires " "restarting the shell to have any effect." msgstr "" -"Se verdadeiro, coloca títulos de janelas em cima da respectiva miniatura, " +"Se verdadeiro, coloca títulos de janelas em cima das respectivas miniaturas, " "substituindo a predefinição, que as coloca no fundo. Alterar esta " "configuração requer reinicializar a interface para ter efeito." #: extensions/places-menu/extension.js:89 -#: extensions/places-menu/extension.js:93 +#: extensions/places-menu/extension.js:92 msgid "Places" msgstr "Locais" #: extensions/places-menu/placeDisplay.js:46 #, javascript-format -#| msgid "Failed to launch \"%s\"" msgid "Failed to launch “%s”" msgstr "Falha ao iniciar \"%s\"" @@ -142,7 +139,6 @@ msgid "Cycle Screenshot Sizes" msgstr "Percorrer os tamanhos de captura de ecrã" #: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 -#| msgid "Cycle Screenshot Sizes" msgid "Cycle Screenshot Sizes Backward" msgstr "Percorrer para trás os tamanhos de captura de ecrã" @@ -174,27 +170,27 @@ msgstr "Desmaximizar" msgid "Maximize" msgstr "Maximizar" -#: extensions/window-list/extension.js:428 +#: extensions/window-list/extension.js:432 msgid "Minimize all" msgstr "Minimizar todas" -#: extensions/window-list/extension.js:434 +#: extensions/window-list/extension.js:438 msgid "Unminimize all" msgstr "Desminimizar todas" -#: extensions/window-list/extension.js:440 +#: extensions/window-list/extension.js:444 msgid "Maximize all" msgstr "Maximizar todas" -#: extensions/window-list/extension.js:448 +#: extensions/window-list/extension.js:452 msgid "Unmaximize all" msgstr "Desmaximizar todas" -#: extensions/window-list/extension.js:456 +#: extensions/window-list/extension.js:460 msgid "Close all" msgstr "Fechar todas" -#: extensions/window-list/extension.js:734 +#: extensions/window-list/extension.js:737 msgid "Window List" msgstr "Lista de janelas" @@ -203,26 +199,19 @@ msgid "When to group windows" msgstr "Quando agrupar janelas" #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 -#| msgid "" -#| "Decides when to group windows from the same application on the window " -#| "list. Possible values are \"never\", \"auto\" and \"always\"." msgid "" "Decides when to group windows from the same application on the window list. " "Possible values are “never”, “auto” and “always”." msgstr "" -"Decide quando agrupar janelas da mesma aplicação na lista de janelas. " -"Valores válidos são \"nunca\", \"auto\" e \"sempre\"." +"Decide quando agrupar janelas da mesma aplicação na lista de janelas. Os " +"valores válidos são \"nunca\", \"auto\" e \"sempre\"." #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 #: extensions/window-list/prefs.js:100 -#| msgid "Show only windows in the current workspace" msgid "Show windows from all workspaces" msgstr "Mostrar janelas de todas as área de trabalho" #: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 -#| msgid "" -#| "Whether to show the window list on all connected monitors or only on the " -#| "primary one." msgid "Whether to show windows from all workspaces or only the current one." msgstr "" "Se deve mostrar janelas de todas as áreas de trabalho ou apenas da atual." @@ -259,8 +248,8 @@ msgstr "Agrupar sempre as janelas" msgid "Show on all monitors" msgstr "Mostrar em todos os monitores" -#: extensions/window-list/workspaceIndicator.js:207 -#: extensions/workspace-indicator/extension.js:213 +#: extensions/window-list/workspaceIndicator.js:249 +#: extensions/workspace-indicator/extension.js:255 msgid "Workspace Indicator" msgstr "Indicador de área de trabalho" @@ -273,8 +262,7 @@ msgstr "Nomes das áreas de trabalho" msgid "Workspace %d" msgstr "Área de trabalho %d" -#: extensions/workspace-indicator/prefs.js:218 -#| msgid "Workspace" +#: extensions/workspace-indicator/prefs.js:208 msgid "Add Workspace" msgstr "Adicionar área de trabalho" From 50bd597baad19d9c759d8f8169db39d102553d24 Mon Sep 17 00:00:00 2001 From: Juliano de Souza Camargo Date: Mon, 7 Jun 2021 10:22:02 +0000 Subject: [PATCH 05/42] Update Portuguese translation (cherry picked from commit 12eedcf6f729684100c1158670b404cf6ed7659c) --- po/pt.po | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/po/pt.po b/po/pt.po index a6546fbf..87270e01 100644 --- a/po/pt.po +++ b/po/pt.po @@ -8,23 +8,29 @@ # Bruno Ramalhete , 2015. # José Vieira , 2020-2021. # Hugo Carvalho , 2021. +# Juliano de Souza Camargo , 2021. # msgid "" msgstr "" "Project-Id-Version: 3.14\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" "issues\n" -"POT-Creation-Date: 2021-05-14 16:21+0000\n" -"PO-Revision-Date: 2021-06-02 17:07+0100\n" -"Last-Translator: Hugo Carvalho \n" -"Language-Team: Português <@>\n" +"POT-Creation-Date: 2021-06-02 16:10+0000\n" +"PO-Revision-Date: 2021-06-07 07:21-0300\n" +"Last-Translator: Juliano de Souza Camargo \n" +"Language-Team: Portuguese < >\n" "Language: pt\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: Poedit 2.4.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 40.0\n" "X-Project-Style: gnome\n" +"X-DL-Team: pt\n" +"X-DL-Module: gnome-shell-extensions\n" +"X-DL-Branch: gnome-40\n" +"X-DL-Domain: po\n" +"X-DL-State: Translating\n" #: data/gnome-classic.desktop.in:3 msgid "GNOME Classic" @@ -75,7 +81,7 @@ msgstr "Dispositivos removíveis" #: extensions/drive-menu/extension.js:152 msgid "Open Files" -msgstr "Ficheiros abertos" +msgstr "Abrir ficheiros" #: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 msgid "Use more screen for windows" From 7d6670ce3c1716bdaf2cba7e7fa942cceff4cc31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 5 Feb 2018 22:16:09 +0100 Subject: [PATCH 06/42] drive-menu: Don't assume mounts without volume are local The intention of the code is to only expose actually plugged in devices rather than network mounts, but the existing heuristics are based on GVolume and simply assume a local mount where there's no associated volume. Fill that gap by querying the ::remote filesystem attribute in that case. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/53 Part-of: --- extensions/drive-menu/extension.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index 5bd91522..59603c80 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -62,13 +62,21 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem { let volume = this.mount.get_volume(); - if (!volume) { - // probably a GDaemonMount, could be network or - // local, but we can't tell; assume it's local for now - return true; + if (volume) + return volume.get_identifier('class') !== 'network'; + + const root = this.mount.get_root(); + + try { + const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE; + const info = root.query_filesystem_info(attr, null); + return !info.get_attribute_boolean(attr); + } catch (e) { + log(`Failed to query filesystem: ${e.message}`); } - return volume.get_identifier('class') !== 'network'; + // Hack, fall back to looking at GType + return Gio._LocalFilePrototype.isPrototypeOf(root); } _syncVisibility() { From 519269be9d849551631b36564e3fb83ae5129099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 23 Jun 2021 17:58:39 +0200 Subject: [PATCH 07/42] drive-menu: Avoid blocking I/O when querying filesystem The last commit improved the heuristics for detecting network mounts, but at the price of potentially blocking the shell. Avoid that drawback by making the code in question async. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/53 Part-of: --- extensions/drive-menu/extension.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index 59603c80..3fac2360 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -54,7 +54,21 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem { super.destroy(); } - _isInteresting() { + _fsIsRemote(root) { + return new Promise((resolve, reject) => { + const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE; + root.query_filesystem_info_async(attr, null, (o, res) => { + try { + const info = root.query_filesystem_info_finish(res); + resolve(!info.get_attribute_boolean(attr)); + } catch (e) { + reject(e); + } + }); + }); + } + + async _isInteresting() { if (!this.mount.can_eject() && !this.mount.can_unmount()) return false; if (this.mount.is_shadowed()) @@ -68,9 +82,7 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem { const root = this.mount.get_root(); try { - const attr = Gio.FILE_ATTRIBUTE_FILESYSTEM_REMOTE; - const info = root.query_filesystem_info(attr, null); - return !info.get_attribute_boolean(attr); + return await this._fsIsRemote(root); } catch (e) { log(`Failed to query filesystem: ${e.message}`); } @@ -79,8 +91,8 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem { return Gio._LocalFilePrototype.isPrototypeOf(root); } - _syncVisibility() { - this.visible = this._isInteresting(); + async _syncVisibility() { + this.visible = await this._isInteresting(); } _eject() { From 1e04622eb482cf142cf51eed7a2ea3cb17f7271f Mon Sep 17 00:00:00 2001 From: Alexander Shopov Date: Sun, 11 Jul 2021 08:21:24 +0000 Subject: [PATCH 08/42] Update Bulgarian translation --- po/bg.po | 622 +++++++++++++++++++++++-------------------------------- 1 file changed, 263 insertions(+), 359 deletions(-) diff --git a/po/bg.po b/po/bg.po index 7dd9f5ca..3f15896a 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,359 +1,263 @@ -# Bulgarian translation for gnome-shell-extensions po-file. -# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc. -# This file is distributed under the same license as the gnome-shell-extensions package. -# Ivaylo Valkov , 2014. -# Alexander Shopov , 2014, 2015. -# Lyubomir Vasilev , 2017. -msgid "" -msgstr "" -"Project-Id-Version: gnome-shell-extensions master\n" -"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"shell&keywords=I18N+L10N&component=extensions\n" -"POT-Creation-Date: 2017-09-09 15:20+0000\n" -"PO-Revision-Date: 2017-09-08 08:47+0300\n" -"Last-Translator: Lyubomir Vasilev \n" -"Language-Team: Bulgarian \n" -"Language: bg\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" - -#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 -msgid "GNOME Classic" -msgstr "Класически GNOME" - -#: data/gnome-classic.desktop.in:4 -msgid "This session logs you into GNOME Classic" -msgstr "Работната среда изглежда като класическия GNOME (2.x)" - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:7 -msgid "Attach modal dialog to the parent window" -msgstr "Прикрепяне на модалните прозорци към родителските им прозорци" - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:8 -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:25 -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:33 -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:41 -msgid "" -"This key overrides the key in org.gnome.mutter when running GNOME Shell." -msgstr "" -"Този ключ при е с по-голям приоритет от „org.gnome.mutter“ при изпълнението " -"на обвивката на GNOME." - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16 -msgid "Arrangement of buttons on the titlebar" -msgstr "Подредба на бутоните на заглавната лента" - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:17 -msgid "" -"This key overrides the key in org.gnome.desktop.wm.preferences when running " -"GNOME Shell." -msgstr "" -"Този ключ при е с по-голям приоритет от „org.gnome.desktop.wm.preferences“ " -"при изпълнението на обвивката на GNOME." - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24 -msgid "Enable edge tiling when dropping windows on screen edges" -msgstr "" -"Включване на специална подредба при приближаване на прозорец до ръбовете на " -"екрана" - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:32 -msgid "Workspaces only on primary monitor" -msgstr "Работни плотове само на основния екран" - -#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:40 -msgid "Delay focus changes in mouse mode until the pointer stops moving" -msgstr "Забавяне на смяната на фокуса до спирането на движението на показалеца" - -#: extensions/alternate-tab/prefs.js:20 -msgid "Thumbnail only" -msgstr "Само миниатюри" - -#: extensions/alternate-tab/prefs.js:21 -msgid "Application icon only" -msgstr "Само икони на приложенията" - -#: extensions/alternate-tab/prefs.js:22 -msgid "Thumbnail and application icon" -msgstr "Миниатюри и икони на приложенията" - -#: extensions/alternate-tab/prefs.js:38 -msgid "Present windows as" -msgstr "Показване на прозорците като" - -#: extensions/alternate-tab/prefs.js:69 -msgid "Show only windows in the current workspace" -msgstr "Да се показват само прозорците на текущия работен плот" - -#: extensions/apps-menu/extension.js:41 -msgid "Activities Overview" -msgstr "Показване на програмите" - -#: extensions/apps-menu/extension.js:141 -msgid "Favorites" -msgstr "Любими" - -#: extensions/apps-menu/extension.js:436 -msgid "Applications" -msgstr "Програми" - -#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6 -msgid "Application and workspace list" -msgstr "Списък с програмите и работните плотове" - -#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 -msgid "" -"A list of strings, each containing an application id (desktop file name), " -"followed by a colon and the workspace number" -msgstr "" -"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „." -"desktop“ file name), следван от знака „:“ и номер на работен плот" - -#: extensions/auto-move-windows/prefs.js:60 -msgid "Application" -msgstr "Програма" - -#: extensions/auto-move-windows/prefs.js:69 -#: extensions/auto-move-windows/prefs.js:127 -msgid "Workspace" -msgstr "Работен плот" - -#: extensions/auto-move-windows/prefs.js:85 -msgid "Add Rule" -msgstr "Добавяне на правило" - -#: extensions/auto-move-windows/prefs.js:106 -msgid "Create new matching rule" -msgstr "Създаване на правило за съвпадение" - -#: extensions/auto-move-windows/prefs.js:111 -msgid "Add" -msgstr "Добавяне" - -#. TRANSLATORS: %s is the filesystem name -#: extensions/drive-menu/extension.js:107 -#, javascript-format -msgid "Ejecting drive “%s” failed:" -msgstr "Неуспешно изваждане на устройство „%s“:" - -#: extensions/drive-menu/extension.js:125 -msgid "Removable devices" -msgstr "Преносими медии" - -#: extensions/drive-menu/extension.js:150 -msgid "Open Files" -msgstr "Отваряне на файлове" - -#: extensions/example/extension.js:17 -msgid "Hello, world!" -msgstr "Здравей, свят!" - -#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:5 -msgid "Alternative greeting text." -msgstr "Друго приветстващо съобщение." - -#: extensions/example/org.gnome.shell.extensions.example.gschema.xml:6 -msgid "" -"If not empty, it contains the text that will be shown when clicking on the " -"panel." -msgstr "" -"Ако ключът не е празен, съдържанието му се извежда при натискането на панела." - -#: extensions/example/prefs.js:30 -msgid "Message" -msgstr "Съобщение" - -#. TRANSLATORS: Example is the name of the extension, should not be -#. translated -#: extensions/example/prefs.js:43 -msgid "" -"Example aims to show how to build well behaved extensions for the Shell and " -"as such it has little functionality on its own.\n" -"Nevertheless it’s possible to customize the greeting message." -msgstr "" -"Това е пример за добре работещо разширение на обвивката на GNOME и има " -"минимална функционалност.\n" -"С него можете да промените приветстващото съобщение на панела." - -#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 -msgid "Use more screen for windows" -msgstr "Повече пространство за прозорците" - -#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6 -msgid "" -"Try to use more screen for placing window thumbnails by adapting to screen " -"aspect ratio, and consolidating them further to reduce the bounding box. " -"This setting applies only with the natural placement strategy." -msgstr "" -"Използване на по-голяма част от екрана за поставянето на мини изображения " -"чрез промяна на съотношението на страните и допълнително обединяване за " -"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при " -"естествената стратегия за поставяне на прозорците." - -#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 -msgid "Place window captions on top" -msgstr "Заглавия на прозорците отгоре" - -#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 -msgid "" -"If true, place window captions on top the respective thumbnail, overriding " -"shell default of placing it at the bottom. Changing this setting requires " -"restarting the shell to have any effect." -msgstr "" -"Ако е истина, заглавията на прозорците се поставят над мини изображенията " -"им, а не както е стандартно — отдолу. За прилагане на промяната на " -"настройката трябва да рестартирате обвивката на GNOME." - -#: extensions/places-menu/extension.js:78 -#: extensions/places-menu/extension.js:81 -msgid "Places" -msgstr "Места" - -#: extensions/places-menu/placeDisplay.js:65 -#, javascript-format -msgid "Failed to mount volume for “%s”" -msgstr "Неуспешно монтиране на тома „%s“" - -#: extensions/places-menu/placeDisplay.js:78 -#, javascript-format -msgid "Failed to launch “%s”" -msgstr "Неуспешно стартиране на „%s“" - -#: extensions/places-menu/placeDisplay.js:137 -#: extensions/places-menu/placeDisplay.js:160 -msgid "Computer" -msgstr "Компютър" - -#: extensions/places-menu/placeDisplay.js:303 -msgid "Home" -msgstr "Домашна папка" - -#: extensions/places-menu/placeDisplay.js:347 -msgid "Browse Network" -msgstr "Мрежа" - -#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 -msgid "Cycle Screenshot Sizes" -msgstr "Смяна на размерите на снимката на екрана" - -#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 -msgid "Cycle Screenshot Sizes Backward" -msgstr "Смяна на размерите на снимката на екрана наобратно" - -#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 -msgid "Theme name" -msgstr "Име на темата" - -#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6 -msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" -msgstr "" -"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“" - -#: extensions/window-list/extension.js:110 -msgid "Close" -msgstr "Затваряне" - -#: extensions/window-list/extension.js:129 -msgid "Unminimize" -msgstr "Деминимизиране" - -#: extensions/window-list/extension.js:130 -msgid "Minimize" -msgstr "Минимизиране" - -#: extensions/window-list/extension.js:136 -msgid "Unmaximize" -msgstr "Демаксимизиране" - -#: extensions/window-list/extension.js:137 -msgid "Maximize" -msgstr "Максимизиране" - -#: extensions/window-list/extension.js:420 -msgid "Minimize all" -msgstr "Минимизиране на всички" - -#: extensions/window-list/extension.js:428 -msgid "Unminimize all" -msgstr "Деминимизиране на всички" - -#: extensions/window-list/extension.js:436 -msgid "Maximize all" -msgstr "Максимизиране на всички" - -#: extensions/window-list/extension.js:445 -msgid "Unmaximize all" -msgstr "Демаксимизиране на всички" - -#: extensions/window-list/extension.js:454 -msgid "Close all" -msgstr "Затваряне на всички" - -#: extensions/window-list/extension.js:678 -#: extensions/workspace-indicator/extension.js:30 -msgid "Workspace Indicator" -msgstr "Индикатор на работните плотове" - -#: extensions/window-list/extension.js:842 -msgid "Window List" -msgstr "Списък на прозорците" - -#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12 -msgid "When to group windows" -msgstr "Кога да се групират прозорците" - -#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 -msgid "" -"Decides when to group windows from the same application on the window list. " -"Possible values are “never”, “auto” and “always”." -msgstr "" -"Кога да се групират прозорците на една програма в списъка с прозорците. " -"Възможните стойности са „never“ (никога), „auto“ (автоматично) и " -"„always“ (винаги)." - -#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 -msgid "Show the window list on all monitors" -msgstr "Извеждане на списъка с прозорци на всички монитори" - -#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 -msgid "" -"Whether to show the window list on all connected monitors or only on the " -"primary one." -msgstr "" -"Дали списъкът с прозорци да се извежда на всички монитори или само на " -"основния" - -#: extensions/window-list/prefs.js:32 -msgid "Window Grouping" -msgstr "Групиране на прозорци" - -#: extensions/window-list/prefs.js:50 -msgid "Never group windows" -msgstr "Никога да не се групират" - -#: extensions/window-list/prefs.js:51 -msgid "Group windows when space is limited" -msgstr "Групиране при ограничено място" - -#: extensions/window-list/prefs.js:52 -msgid "Always group windows" -msgstr "Винаги да се групират" - -#: extensions/window-list/prefs.js:75 -msgid "Show on all monitors" -msgstr "На всички монитори" - -#: extensions/workspace-indicator/prefs.js:141 -msgid "Workspace Names" -msgstr "Имена на работните плотове" - -#: extensions/workspace-indicator/prefs.js:157 -msgid "Name" -msgstr "Име" - -#: extensions/workspace-indicator/prefs.js:198 -#, javascript-format -msgid "Workspace %d" -msgstr "Работен плот %d" +# Bulgarian translation for gnome-shell-extensions po-file. +# Copyright (C) 2014, 2015, 2017 Free Software Foundation, Inc. +# Copyright (C) 2021 Alexander Shopov . +# This file is distributed under the same license as the gnome-shell-extensions package. +# Ivaylo Valkov , 2014. +# Alexander Shopov , 2014, 2015, 2021. +# Lyubomir Vasilev , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-shell-extensions master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" +"issues\n" +"POT-Creation-Date: 2021-07-05 17:13+0000\n" +"PO-Revision-Date: 2021-07-11 10:19+0200\n" +"Last-Translator: Alexander Shopov \n" +"Language-Team: Bulgarian \n" +"Language: bg\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" + +#: data/gnome-classic.desktop.in:3 +msgid "GNOME Classic" +msgstr "Класически GNOME" + +#: data/gnome-classic.desktop.in:4 +msgid "This session logs you into GNOME Classic" +msgstr "Работната среда изглежда като класическия GNOME (2.x)" + +#: extensions/apps-menu/extension.js:113 +msgid "Favorites" +msgstr "Любими" + +#: extensions/apps-menu/extension.js:367 +msgid "Applications" +msgstr "Програми" + +#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:6 +msgid "Application and workspace list" +msgstr "Списък с програмите и работните плотове" + +#: extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml:7 +msgid "" +"A list of strings, each containing an application id (desktop file name), " +"followed by a colon and the workspace number" +msgstr "" +"Списък от низове. Всеки съдържа идентификатор на програма (име на файл „." +"desktop“), следван от знака „:“ и номер на работен плот" + +#: extensions/auto-move-windows/prefs.js:35 +msgid "Workspace Rules" +msgstr "Правила за работните плотове" + +#: extensions/auto-move-windows/prefs.js:237 +msgid "Add Rule" +msgstr "Добавяне на правило" + +#. TRANSLATORS: %s is the filesystem name +#: extensions/drive-menu/extension.js:132 +#: extensions/places-menu/placeDisplay.js:233 +#, javascript-format +msgid "Ejecting drive “%s” failed:" +msgstr "Неуспешно изваждане на устройство „%s“:" + +#: extensions/drive-menu/extension.js:148 +msgid "Removable devices" +msgstr "Преносими медии" + +#: extensions/drive-menu/extension.js:172 +msgid "Open Files" +msgstr "Отваряне на файлове" + +#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:5 +msgid "Use more screen for windows" +msgstr "Повече пространство за прозорците" + +#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6 +msgid "" +"Try to use more screen for placing window thumbnails by adapting to screen " +"aspect ratio, and consolidating them further to reduce the bounding box. " +"This setting applies only with the natural placement strategy." +msgstr "" +"Използване на по-голяма част от екрана за поставянето на мини изображения " +"чрез промяна на съотношението на страните и допълнително обединяване за " +"смаляване на обхващащия ги правоъгълник. Тази настройка се прилага само при " +"естествената стратегия за поставяне на прозорците." + +#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11 +msgid "Place window captions on top" +msgstr "Заглавия на прозорците отгоре" + +#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12 +msgid "" +"If true, place window captions on top the respective thumbnail, overriding " +"shell default of placing it at the bottom. Changing this setting requires " +"restarting the shell to have any effect." +msgstr "" +"Ако е истина, заглавията на прозорците се поставят над мини изображенията " +"им, а не както е стандартно — отдолу. За прилагане на промяната на " +"настройката трябва да рестартирате обвивката на GNOME." + +#: extensions/places-menu/extension.js:89 +#: extensions/places-menu/extension.js:92 +msgid "Places" +msgstr "Места" + +#: extensions/places-menu/placeDisplay.js:46 +#, javascript-format +msgid "Failed to launch “%s”" +msgstr "Неуспешно стартиране на „%s“" + +#: extensions/places-menu/placeDisplay.js:61 +#, javascript-format +msgid "Failed to mount volume for “%s”" +msgstr "Неуспешно монтиране на тома „%s“" + +#: extensions/places-menu/placeDisplay.js:148 +#: extensions/places-menu/placeDisplay.js:171 +msgid "Computer" +msgstr "Компютър" + +#: extensions/places-menu/placeDisplay.js:359 +msgid "Home" +msgstr "Домашна папка" + +#: extensions/places-menu/placeDisplay.js:404 +msgid "Browse Network" +msgstr "Мрежа" + +#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:7 +msgid "Cycle Screenshot Sizes" +msgstr "Смяна на размерите на снимката на екрана" + +#: extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml:11 +msgid "Cycle Screenshot Sizes Backward" +msgstr "Смяна на размерите на снимката на екрана наобратно" + +#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:5 +msgid "Theme name" +msgstr "Име на темата" + +#: extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml:6 +msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell" +msgstr "" +"Името на темата, която да бъде заредена от „~/.themes/name/gnome-shell“" + +#: extensions/window-list/extension.js:98 +msgid "Close" +msgstr "Затваряне" + +#: extensions/window-list/extension.js:118 +msgid "Unminimize" +msgstr "Деминимизиране" + +#: extensions/window-list/extension.js:118 +msgid "Minimize" +msgstr "Минимизиране" + +#: extensions/window-list/extension.js:125 +msgid "Unmaximize" +msgstr "Демаксимизиране" + +#: extensions/window-list/extension.js:125 +msgid "Maximize" +msgstr "Максимизиране" + +#: extensions/window-list/extension.js:432 +msgid "Minimize all" +msgstr "Минимизиране на всички" + +#: extensions/window-list/extension.js:438 +msgid "Unminimize all" +msgstr "Деминимизиране на всички" + +#: extensions/window-list/extension.js:444 +msgid "Maximize all" +msgstr "Максимизиране на всички" + +#: extensions/window-list/extension.js:452 +msgid "Unmaximize all" +msgstr "Демаксимизиране на всички" + +#: extensions/window-list/extension.js:460 +msgid "Close all" +msgstr "Затваряне на всички" + +#: extensions/window-list/extension.js:737 +msgid "Window List" +msgstr "Списък на прозорците" + +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:12 +msgid "When to group windows" +msgstr "Кога прозорците да се групират" + +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:13 +msgid "" +"Decides when to group windows from the same application on the window list. " +"Possible values are “never”, “auto” and “always”." +msgstr "" +"Кога прозорците на една програма да се групират в списъка с прозорците. " +"Възможните стойности са „never“ (никога), „auto“ (автоматично) и " +"„always“ (винаги)." + +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20 +#: extensions/window-list/prefs.js:100 +msgid "Show windows from all workspaces" +msgstr "Да се показват прозорците от всички работни плотове" + +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21 +msgid "Whether to show windows from all workspaces or only the current one." +msgstr "" +"Дали да се показват прозорците от всички работни плотове или само от текущия." + +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27 +msgid "Show the window list on all monitors" +msgstr "Извеждане на списъка с прозорци на всички монитори" + +#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28 +msgid "" +"Whether to show the window list on all connected monitors or only on the " +"primary one." +msgstr "" +"Дали списъкът с прозорци да се извежда на всички монитори или само на " +"основния" + +#: extensions/window-list/prefs.js:29 +msgid "Window Grouping" +msgstr "Групиране на прозорци" + +#: extensions/window-list/prefs.js:58 +msgid "Never group windows" +msgstr "Никога да не се групират" + +#: extensions/window-list/prefs.js:59 +msgid "Group windows when space is limited" +msgstr "Групиране при ограничено място" + +#: extensions/window-list/prefs.js:60 +msgid "Always group windows" +msgstr "Винаги да се групират" + +#: extensions/window-list/prefs.js:94 +msgid "Show on all monitors" +msgstr "На всички монитори" + +#: extensions/window-list/workspaceIndicator.js:249 +#: extensions/workspace-indicator/extension.js:255 +msgid "Workspace Indicator" +msgstr "Индикатор на работните плотове" + +#: extensions/workspace-indicator/prefs.js:34 +msgid "Workspace Names" +msgstr "Имена на работните плотове" + +#: extensions/workspace-indicator/prefs.js:67 +#, javascript-format +msgid "Workspace %d" +msgstr "Работен плот %d" + +#: extensions/workspace-indicator/prefs.js:208 +msgid "Add Workspace" +msgstr "Добавяне на работен плот" From 94b907f46d309fd9bf84990d9c1f877253dc255a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 28 Jun 2021 17:57:57 +0200 Subject: [PATCH 09/42] window-list: Init translations Whoops, we are missing the bindtextdomain() call, which means translations won't work when no other extension that shares the same domain is used (like in GNOME Classic for instance). https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/340 Part-of: --- extensions/window-list/extension.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index acb5c639..4802f9e9 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -1105,6 +1105,8 @@ class WindowList extends St.Widget { class Extension { constructor() { + ExtensionUtils.initTranslations(); + this._windowLists = null; this._hideOverviewOrig = Main.overview.hide; } From 3539ce113907ffda813e1a990891b0911c9702ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 13 Jul 2021 11:40:31 +0200 Subject: [PATCH 10/42] drive-menu: Fix indicator visibility Commit 519269be9d made the check for network mounts non-blocking, and we now update the indicator's visibility before a newly-added network mount is hidden. Address this by monitoring the item itself for visibility changes. Part-of: --- extensions/drive-menu/extension.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index 3fac2360..6c6fd763 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -189,6 +189,8 @@ class DriveMenu extends PanelMenu.Button { let item = new MountMenuItem(mount); this._mounts.unshift(item); this.menu.addMenuItem(item, 0); + + item.connect('notify::visible', () => this._updateMenuVisibility()); } _removeMount(mount) { From d421bbfa609426032f07f27934eefb214d59012f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 13 Jul 2021 11:54:21 +0200 Subject: [PATCH 11/42] drive-menu: Hide items initially Now that the check for network mounts is non-blocking, the initial sync doesn't take effect immediately. We don't want hidden items to briefly flash the indicator, so create them initially hidden. Part-of: --- extensions/drive-menu/extension.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index 6c6fd763..f60dab75 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -41,6 +41,8 @@ class MountMenuItem extends PopupMenu.PopupBaseMenuItem { ejectButton.connect('clicked', this._eject.bind(this)); this.add(ejectButton); + this.hide(); + this._changedId = mount.connect('changed', this._syncVisibility.bind(this)); this._syncVisibility(); } @@ -155,10 +157,8 @@ class DriveMenu extends PanelMenu.Button { this.add_child(icon); this._monitor = Gio.VolumeMonitor.get(); - this._addedId = this._monitor.connect('mount-added', (monitor, mount) => { - this._addMount(mount); - this._updateMenuVisibility(); - }); + this._addedId = this._monitor.connect('mount-added', + (monitor, mount) => this._addMount(mount)); this._removedId = this._monitor.connect('mount-removed', (monitor, mount) => { this._removeMount(mount); this._updateMenuVisibility(); From a642c439ce8d6a3627895f5e250cf9f44fa0ff80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 14 Jul 2021 20:37:15 +0200 Subject: [PATCH 12/42] docs: Use HEAD in external URLs That way the link will keep working when the other project changes its default branch name. Part-of: --- HACKING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HACKING.md b/HACKING.md index f8786287..6d87c52c 100644 --- a/HACKING.md +++ b/HACKING.md @@ -28,4 +28,4 @@ imports (like imports.lang or imports.dbus) and introspection, the other for Shell API. Within the same group, put everything in alphabetic order. -[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/master/doc/Style_Guide.md +[coding-style]: https://gitlab.gnome.org/GNOME/gjs/blob/HEAD/doc/Style_Guide.md From 7ba9b87064a37761ed819a33147aae1e5ab8f300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 14 Jul 2021 21:11:59 +0200 Subject: [PATCH 13/42] docs: Add README section for default branch We are about to change it, so briefly outline how to update local checkouts. (Copied from glib) Part-of: --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 3b84cb18..fb8be6bd 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,19 @@ GSettings key. Adds a simple workspace switcher to the top bar. +## Default branch + +The default development branch is `main`. If you still have a local +checkout under the old name, use: +```sh +git checkout matser +git branch -m master main +git fetch +git branch --unset-upstream +git branch -u origin/master +git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main +``` + ## License GNOME Shell Extensions are distributed under the terms of the GNU General From 2bced47762965c3531ac130884de64e31ea5585f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 12 Mar 2021 00:29:06 +0100 Subject: [PATCH 14/42] classic: Remove padding from app menu It is now inconsistent with other top bar items, so drop it. Part-of: --- data/gnome-classic.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/gnome-classic.scss b/data/gnome-classic.scss index 750a9f51..51eb2fa8 100644 --- a/data/gnome-classic.scss +++ b/data/gnome-classic.scss @@ -84,8 +84,8 @@ $variant: 'light'; } #appMenu { - padding: 0 8px 0 8px; spinner-image: url("classic-process-working.svg"); + .panel-status-menu-box { padding: 0; } } .tile-preview-left.on-primary, .tile-preview-right.on-primary, From f3b1f10f6c4400282312ee3bf75241481a235435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 19 Jul 2021 17:23:44 +0200 Subject: [PATCH 15/42] ci: Set FDO_UPSTREAM_REPO ci-fairy uses the variable to set the upstream remote that is used to build the commit range to check. Part-of: --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a1d62d33..fc613082 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,7 @@ default: - 'api_failure' variables: + FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions LINT_LOG: "eslint-report.xml" JS_LOG: "js-report.txt" From 8de89a44a43aba85df15a4bdd3bca04b3f5e3872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 21 Jul 2021 19:50:34 +0200 Subject: [PATCH 16/42] README: Fix typo on instructions to move to main branch --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb8be6bd..4759ce60 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ GSettings key. The default development branch is `main`. If you still have a local checkout under the old name, use: ```sh -git checkout matser +git checkout master git branch -m master main git fetch git branch --unset-upstream From 0d06cc685e3d57b08f9bd90919247512ae8ca1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 6 Aug 2021 04:17:46 +0200 Subject: [PATCH 17/42] extensions: Pick up gettext domain from metadata Since commit a6ee142f211, the extension archives that are uploaded to extensions.gnome.org only contain strings that are relevant for the extension, not all translations from all extensions. Unfortunately all extensions still share a common gettext domain, so the extension with the last bind_textdomain() call wins and leaves the others without translations. We'll address this by using distinct domains when not installed system-wide. That becomes easier if there is a canonical place for the text domain, with the existing metadata key being the natural choice. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/335 Part-of: --- extensions/.lock | 0 extensions/apps-menu/extension.js | 3 ++- extensions/auto-move-windows/prefs.js | 7 ++++--- extensions/drive-menu/extension.js | 7 ++++--- extensions/places-menu/extension.js | 5 +++-- extensions/places-menu/placeDisplay.js | 5 ++++- extensions/window-list/extension.js | 2 +- extensions/window-list/prefs.js | 7 ++++--- extensions/window-list/workspaceIndicator.js | 5 ++++- extensions/workspace-indicator/extension.js | 4 +++- extensions/workspace-indicator/prefs.js | 7 ++++--- 11 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 extensions/.lock diff --git a/extensions/.lock b/extensions/.lock new file mode 100644 index 00000000..e69de29b diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index 6376b524..e36b0fe6 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -12,7 +12,8 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const Me = ExtensionUtils.getCurrentExtension(); +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const appSys = Shell.AppSystem.get_default(); diff --git a/extensions/auto-move-windows/prefs.js b/extensions/auto-move-windows/prefs.js index c5504584..2c529067 100644 --- a/extensions/auto-move-windows/prefs.js +++ b/extensions/auto-move-windows/prefs.js @@ -4,10 +4,11 @@ const { Gio, GLib, GObject, Gtk, Pango } = imports.gi; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); -const _ = Gettext.gettext; - const ExtensionUtils = imports.misc.extensionUtils; +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); +const _ = Gettext.gettext; const SETTINGS_KEY = 'application-list'; diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index f60dab75..fd3a9214 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -2,15 +2,16 @@ // Drive menu extension const { Clutter, Gio, GObject, Shell, St } = imports.gi; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); -const _ = Gettext.gettext; - const ExtensionUtils = imports.misc.extensionUtils; const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; const ShellMountOperation = imports.ui.shellMountOperation; +const Me = ExtensionUtils.getCurrentExtension(); +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); +const _ = Gettext.gettext; + var MountMenuItem = GObject.registerClass( class MountMenuItem extends PopupMenu.PopupBaseMenuItem { _init(mount) { diff --git a/extensions/places-menu/extension.js b/extensions/places-menu/extension.js index 53663fc7..e3b04d6d 100644 --- a/extensions/places-menu/extension.js +++ b/extensions/places-menu/extension.js @@ -8,11 +8,12 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const N_ = x => x; -const Me = ExtensionUtils.getCurrentExtension(); const PlaceDisplay = Me.imports.placeDisplay; const PLACE_ICON_SIZE = 16; diff --git a/extensions/places-menu/placeDisplay.js b/extensions/places-menu/placeDisplay.js index bb78d5ec..d2afc1ea 100644 --- a/extensions/places-menu/placeDisplay.js +++ b/extensions/places-menu/placeDisplay.js @@ -3,10 +3,13 @@ const { Gio, GLib, Shell } = imports.gi; const Signals = imports.signals; +const ExtensionUtils = imports.misc.extensionUtils; const Main = imports.ui.main; const ShellMountOperation = imports.ui.shellMountOperation; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const N_ = x => x; diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 4802f9e9..f7ecd190 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -11,7 +11,7 @@ const Me = ExtensionUtils.getCurrentExtension(); const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker; const { WorkspaceIndicator } = Me.imports.workspaceIndicator; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const ICON_TEXTURE_SIZE = 24; diff --git a/extensions/window-list/prefs.js b/extensions/window-list/prefs.js index 217c2224..aec8cc9d 100644 --- a/extensions/window-list/prefs.js +++ b/extensions/window-list/prefs.js @@ -3,10 +3,11 @@ const { Gio, GObject, Gtk } = imports.gi; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); -const _ = Gettext.gettext; - const ExtensionUtils = imports.misc.extensionUtils; +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); +const _ = Gettext.gettext; function init() { diff --git a/extensions/window-list/workspaceIndicator.js b/extensions/window-list/workspaceIndicator.js index c35e37a7..cdfe5b61 100644 --- a/extensions/window-list/workspaceIndicator.js +++ b/extensions/window-list/workspaceIndicator.js @@ -2,11 +2,14 @@ const { Clutter, Gio, GObject, Meta, St } = imports.gi; const DND = imports.ui.dnd; +const ExtensionUtils = imports.misc.extensionUtils; const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const TOOLTIP_OFFSET = 6; diff --git a/extensions/workspace-indicator/extension.js b/extensions/workspace-indicator/extension.js index b79af930..6974062b 100644 --- a/extensions/workspace-indicator/extension.js +++ b/extensions/workspace-indicator/extension.js @@ -9,7 +9,9 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; diff --git a/extensions/workspace-indicator/prefs.js b/extensions/workspace-indicator/prefs.js index d45d1e81..567f3e99 100644 --- a/extensions/workspace-indicator/prefs.js +++ b/extensions/workspace-indicator/prefs.js @@ -3,12 +3,13 @@ const { Gio, GLib, GObject, Gtk, Pango } = imports.gi; -const Gettext = imports.gettext.domain('gnome-shell-extensions'); +const ExtensionUtils = imports.misc.extensionUtils; +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; const N_ = e => e; -const ExtensionUtils = imports.misc.extensionUtils; - const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; const WORKSPACE_KEY = 'workspace-names'; From d6633397b70d8619057ce2cab383d75306954706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 6 Aug 2021 04:20:47 +0200 Subject: [PATCH 18/42] build: Remove unused variable https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/335 Part-of: --- export-zips.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/export-zips.sh b/export-zips.sh index 6fa3b441..25680195 100755 --- a/export-zips.sh +++ b/export-zips.sh @@ -14,7 +14,6 @@ mkdir $srcdir/zip-files extensiondir=$installdir/share/gnome-shell/extensions schemadir=$installdir/share/glib-2.0/schemas -localedir=$installdir/share/locale for f in $extensiondir/*; do name=`basename ${f%%@*}` From 8a211f98fd9ef0adffc00fcca9e053707ed3c34f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 6 Aug 2021 04:22:47 +0200 Subject: [PATCH 19/42] build: Rewrite gettext domain when exporting zips Now that every extension picks up its gettext domain from its metadata, we can easily change it when exporting the zips. That ensures that every extension only binds its own domain instead of messing up other extension's translations. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/issues/335 Part-of: --- export-zips.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/export-zips.sh b/export-zips.sh index 25680195..30991449 100755 --- a/export-zips.sh +++ b/export-zips.sh @@ -20,6 +20,10 @@ for f in $extensiondir/*; do uuid=$name@gnome-shell-extensions.gcampax.github.com schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml + olddomain=gnome-shell-extensions + newdomain=gnome-shell-extension-$name + sed -i "/gettext-domain/ s:$olddomain:$newdomain:" $f/metadata.json + xgettext --from-code=UTF-8 --output-dir=$builddir --output=$name.pot $f/*.js if [ -f $builddir/$name.pot ]; then From 6284b0c4899e072e14ae2a37b2fa469bbe595e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 13 Aug 2021 02:20:28 +0200 Subject: [PATCH 20/42] window-list: Move functions into base class The helper functions date back to a time when AppButton and WindowButton were unconnected classes. But nowadays they share a common base class, so we have a better place for them than external helper functions. Part-of: --- extensions/window-list/extension.js | 78 +++++++++++++++-------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index f7ecd190..18dee1c5 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -23,34 +23,6 @@ const GroupingMode = { ALWAYS: 2, }; - -function _minimizeOrActivateWindow(window) { - let focusWindow = global.display.focus_window; - if (focusWindow === window || - focusWindow && focusWindow.get_transient_for() === window) - window.minimize(); - else - window.activate(global.get_current_time()); -} - -function _openMenu(menu) { - menu.open(); - - let event = Clutter.get_current_event(); - if (event && event.type() === Clutter.EventType.KEY_RELEASE) - menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); -} - -function _onMenuStateChanged(menu, isOpen) { - if (isOpen) - return; - - let [x, y] = global.get_pointer(); - let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); - if (Me.stateObj.someWindowListContains(actor)) - actor.sync_hover(); -} - function _getAppStableSequence(app) { let windows = app.get_windows().filter(w => !w.skip_taskbar); return windows.reduce((prev, cur) => { @@ -282,10 +254,37 @@ const BaseButton = GObject.registerClass({ return true; } + _openMenu(menu) { + menu.open(); + + let event = Clutter.get_current_event(); + if (event && event.type() === Clutter.EventType.KEY_RELEASE) + menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + } + + _minimizeOrActivateWindow(window) { + let focusWindow = global.display.focus_window; + if (focusWindow === window || + focusWindow && focusWindow.get_transient_for() === window) + window.minimize(); + else + window.activate(global.get_current_time()); + } + + _onMenuStateChanged(menu, isOpen) { + if (isOpen) + return; + + let [x, y] = global.get_pointer(); + let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); + if (Me.stateObj.someWindowListContains(actor)) + actor.sync_hover(); + } + _onPopupMenu(_actor) { if (!this._canOpenPopupMenu() || this._contextMenu.isOpen) return; - _openMenu(this._contextMenu); + this._openMenu(this._contextMenu); } _isFocused() { @@ -362,7 +361,8 @@ class WindowButton extends BaseButton { this.label_actor = this._windowTitle.label_actor; this._contextMenu = new WindowContextMenu(this, this.metaWindow); - this._contextMenu.connect('open-state-changed', _onMenuStateChanged); + this._contextMenu.connect('open-state-changed', + this._onMenuStateChanged.bind(this)); this._contextMenu.actor.hide(); this._contextMenuManager.addMenu(this._contextMenu); Main.uiGroup.add_actor(this._contextMenu.actor); @@ -382,9 +382,9 @@ class WindowButton extends BaseButton { } if (button === 1) - _minimizeOrActivateWindow(this.metaWindow); + this._minimizeOrActivateWindow(this.metaWindow); else - _openMenu(this._contextMenu); + this._openMenu(this._contextMenu); } _isFocused() { @@ -518,14 +518,16 @@ class AppButton extends BaseButton { this._menuManager = new PopupMenu.PopupMenuManager(this); this._menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.BOTTOM); - this._menu.connect('open-state-changed', _onMenuStateChanged); + this._menu.connect('open-state-changed', + this._onMenuStateChanged.bind(this)); this._menu.actor.hide(); this._menu.connect('activate', this._onMenuActivate.bind(this)); this._menuManager.addMenu(this._menu); Main.uiGroup.add_actor(this._menu.actor); this._appContextMenu = new AppContextMenu(this); - this._appContextMenu.connect('open-state-changed', _onMenuStateChanged); + this._appContextMenu.connect('open-state-changed', + this._onMenuStateChanged.bind(this)); this._appContextMenu.actor.hide(); Main.uiGroup.add_actor(this._appContextMenu.actor); @@ -592,7 +594,7 @@ class AppButton extends BaseButton { this._singleWindowTitle.child = this._windowTitle; this._windowContextMenu = new WindowContextMenu(this, this.metaWindow); this._windowContextMenu.connect( - 'open-state-changed', _onMenuStateChanged); + 'open-state-changed', this._onMenuStateChanged.bind(this)); Main.uiGroup.add_actor(this._windowContextMenu.actor); this._windowContextMenu.actor.hide(); this._contextMenuManager.addMenu(this._windowContextMenu); @@ -631,7 +633,7 @@ class AppButton extends BaseButton { if (windows.length === 1) { if (contextMenuWasOpen) return; - _minimizeOrActivateWindow(windows[0]); + this._minimizeOrActivateWindow(windows[0]); } else { this._menu.removeAll(); @@ -642,12 +644,12 @@ class AppButton extends BaseButton { item._window = windows[i]; this._menu.addMenuItem(item); } - _openMenu(this._menu); + this._openMenu(this._menu); } } else { if (contextMenuWasOpen) return; - _openMenu(this._contextMenu); + this._openMenu(this._contextMenu); } } From d0b9c9b54ad412f6e35e604fb9682ce961a17cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 13 Aug 2021 02:21:10 +0200 Subject: [PATCH 21/42] cleanup: Document functions gjs now enforces this in its eslint configuration. Adding type information generally is a good idea, so add appropriate comments to public functions before picking up that configuration change. Part-of: --- extensions/apps-menu/extension.js | 3 +++ extensions/auto-move-windows/extension.js | 6 ++++++ extensions/auto-move-windows/prefs.js | 4 ++++ extensions/drive-menu/extension.js | 3 +++ extensions/launch-new-instance/extension.js | 2 ++ extensions/native-window-placement/extension.js | 8 ++++++++ extensions/places-menu/extension.js | 3 +++ extensions/screenshot-window-sizer/extension.js | 11 +++++++++++ extensions/user-theme/extension.js | 3 +++ extensions/user-theme/prefs.js | 4 ++++ extensions/user-theme/util.js | 6 ++++++ extensions/window-list/extension.js | 8 +++++++- extensions/window-list/prefs.js | 5 ++++- extensions/windowsNavigator/extension.js | 3 +++ extensions/workspace-indicator/extension.js | 3 +++ extensions/workspace-indicator/prefs.js | 4 ++++ 16 files changed, 74 insertions(+), 2 deletions(-) diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index e36b0fe6..431328dc 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -674,17 +674,20 @@ class ApplicationsButton extends PanelMenu.Button { let appsMenuButton; +/** */ function enable() { appsMenuButton = new ApplicationsButton(); let index = Main.sessionMode.panel.left.indexOf('activities') + 1; Main.panel.addToStatusArea('apps-menu', appsMenuButton, index, 'left'); } +/** */ function disable() { Main.panel.menuManager.removeMenu(appsMenuButton.menu); appsMenuButton.destroy(); } +/** */ function init() { ExtensionUtils.initTranslations(); } diff --git a/extensions/auto-move-windows/extension.js b/extensions/auto-move-windows/extension.js index 3859809b..72fed2ec 100644 --- a/extensions/auto-move-windows/extension.js +++ b/extensions/auto-move-windows/extension.js @@ -108,10 +108,14 @@ class WindowMover { let prevCheckWorkspaces; let winMover; +/** */ function init() { ExtensionUtils.initTranslations(); } +/** + * @returns {bool} - false (used as MetaLater handler) + */ function myCheckWorkspaces() { let keepAliveWorkspaces = []; let foundNonEmpty = false; @@ -132,6 +136,7 @@ function myCheckWorkspaces() { return false; } +/** */ function enable() { prevCheckWorkspaces = Main.wm._workspaceTracker._checkWorkspaces; Main.wm._workspaceTracker._checkWorkspaces = myCheckWorkspaces; @@ -139,6 +144,7 @@ function enable() { winMover = new WindowMover(); } +/** */ function disable() { Main.wm._workspaceTracker._checkWorkspaces = prevCheckWorkspaces; winMover.destroy(); diff --git a/extensions/auto-move-windows/prefs.js b/extensions/auto-move-windows/prefs.js index 2c529067..869cdb14 100644 --- a/extensions/auto-move-windows/prefs.js +++ b/extensions/auto-move-windows/prefs.js @@ -267,10 +267,14 @@ class NewRuleDialog extends Gtk.AppChooserDialog { } }); +/** */ function init() { ExtensionUtils.initTranslations(); } +/** + * @returns {Gtk.Widget} - the prefs widget + */ function buildPrefsWidget() { return new AutoMoveSettingsWidget(); } diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index fd3a9214..6cc91b25 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -218,17 +218,20 @@ class DriveMenu extends PanelMenu.Button { } }); +/** */ function init() { ExtensionUtils.initTranslations(); } let _indicator; +/** */ function enable() { _indicator = new DriveMenu(); Main.panel.addToStatusArea('drive-menu', _indicator); } +/** */ function disable() { _indicator.destroy(); } diff --git a/extensions/launch-new-instance/extension.js b/extensions/launch-new-instance/extension.js index 12a8df28..a249cd48 100644 --- a/extensions/launch-new-instance/extension.js +++ b/extensions/launch-new-instance/extension.js @@ -3,6 +3,7 @@ const AppDisplay = imports.ui.appDisplay; let _activateOriginal = null; +/** */ function enable() { _activateOriginal = AppDisplay.AppIcon.prototype.activate; AppDisplay.AppIcon.prototype.activate = function () { @@ -10,6 +11,7 @@ function enable() { }; } +/** */ function disable() { AppDisplay.AppIcon.prototype.activate = _activateOriginal; } diff --git a/extensions/native-window-placement/extension.js b/extensions/native-window-placement/extension.js index 018a7421..35c31a41 100644 --- a/extensions/native-window-placement/extension.js +++ b/extensions/native-window-placement/extension.js @@ -238,11 +238,13 @@ class NaturalLayoutStrategy extends Workspace.LayoutStrategy { let winInjections, workspaceInjections; +/** */ function resetState() { winInjections = { }; workspaceInjections = { }; } +/** */ function enable() { resetState(); @@ -282,6 +284,11 @@ function enable() { }; } +/** + * @param {Object} object - object that was modified + * @param {Object} injection - the map of previous injections + * @param {string} name - the @injection key that should be removed + */ function removeInjection(object, injection, name) { if (injection[name] === undefined) delete object[name]; @@ -289,6 +296,7 @@ function removeInjection(object, injection, name) { object[name] = injection[name]; } +/** */ function disable() { var i; diff --git a/extensions/places-menu/extension.js b/extensions/places-menu/extension.js index e3b04d6d..07a83f4b 100644 --- a/extensions/places-menu/extension.js +++ b/extensions/places-menu/extension.js @@ -134,12 +134,14 @@ class PlacesMenu extends PanelMenu.Button { } }); +/** */ function init() { ExtensionUtils.initTranslations(); } let _indicator; +/** */ function enable() { _indicator = new PlacesMenu(); @@ -149,6 +151,7 @@ function enable() { Main.panel.addToStatusArea('places-menu', _indicator, pos, 'left'); } +/** */ function disable() { _indicator.destroy(); } diff --git a/extensions/screenshot-window-sizer/extension.js b/extensions/screenshot-window-sizer/extension.js index 1a7634cd..997bb700 100644 --- a/extensions/screenshot-window-sizer/extension.js +++ b/extensions/screenshot-window-sizer/extension.js @@ -28,11 +28,15 @@ const MESSAGE_FADE_TIME = 2000; let text; +/** */ function hideMessage() { text.destroy(); text = null; } +/** + * @param {string} message - the message to flash + */ function flashMessage(message) { if (!text) { text = new St.Label({ style_class: 'screenshot-sizer-message' }); @@ -67,6 +71,11 @@ let SIZES = [ [720, 360], // Phone landscape fullscreen ]; +/** + * @param {Meta.Display} display - the display + * @param {Meta.Window=} window - for per-window bindings, the window + * @param {Meta.KeyBinding} binding - the key binding + */ function cycleScreenshotSizes(display, window, binding) { // Probably this isn't useful with 5 sizes, but you can decrease instead // of increase by holding down shift. @@ -133,6 +142,7 @@ function cycleScreenshotSizes(display, window, binding) { flashMessage(message); } +/** */ function enable() { Main.wm.addKeybinding( 'cycle-screenshot-sizes', @@ -148,6 +158,7 @@ function enable() { cycleScreenshotSizes); } +/** */ function disable() { Main.wm.removeKeybinding('cycle-screenshot-sizes'); Main.wm.removeKeybinding('cycle-screenshot-sizes-backward'); diff --git a/extensions/user-theme/extension.js b/extensions/user-theme/extension.js index 99866268..f54f7571 100644 --- a/extensions/user-theme/extension.js +++ b/extensions/user-theme/extension.js @@ -58,6 +58,9 @@ class ThemeManager { } } +/** + * @returns {ThemeManager} - the extension state object + */ function init() { return new ThemeManager(); } diff --git a/extensions/user-theme/prefs.js b/extensions/user-theme/prefs.js index b9c12fa0..214da4a6 100644 --- a/extensions/user-theme/prefs.js +++ b/extensions/user-theme/prefs.js @@ -174,9 +174,13 @@ class ThemeRow extends Gtk.ListBoxRow { } }); +/** */ function init() { } +/** + * @returns {Gtk.Widget} - the prefs widget + */ function buildPrefsWidget() { return new UserThemePrefsWidget(); } diff --git a/extensions/user-theme/util.js b/extensions/user-theme/util.js index e57a99f0..cb000a76 100644 --- a/extensions/user-theme/util.js +++ b/extensions/user-theme/util.js @@ -3,6 +3,9 @@ const { GLib } = imports.gi; const fn = (...args) => GLib.build_filenamev(args); +/** + * @returns {string[]} - an ordered list of theme directories + */ function getThemeDirs() { return [ fn(GLib.get_home_dir(), '.themes'), @@ -11,6 +14,9 @@ function getThemeDirs() { ]; } +/** + * @returns {string[]} - an ordered list of mode theme directories + */ function getModeThemeDirs() { return GLib.get_system_data_dirs() .map(dir => fn(dir, 'gnome-shell', 'theme')); diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 18dee1c5..fe0cb217 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -23,6 +23,10 @@ const GroupingMode = { ALWAYS: 2, }; +/** + * @param {Shell.App} app - an app + * @returns {number} - the smallest stable sequence of the app's windows + */ function _getAppStableSequence(app) { let windows = app.get_windows().filter(w => !w.skip_taskbar); return windows.reduce((prev, cur) => { @@ -30,7 +34,6 @@ function _getAppStableSequence(app) { }, Infinity); } - class WindowContextMenu extends PopupMenu.PopupMenu { constructor(source, metaWindow) { super(source, 0.5, St.Side.BOTTOM); @@ -1172,6 +1175,9 @@ class Extension { } } +/** + * @returns {Extension} - the extension's state object + */ function init() { return new Extension(); } diff --git a/extensions/window-list/prefs.js b/extensions/window-list/prefs.js index aec8cc9d..bdf834fc 100644 --- a/extensions/window-list/prefs.js +++ b/extensions/window-list/prefs.js @@ -9,7 +9,7 @@ const Me = ExtensionUtils.getCurrentExtension(); const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); const _ = Gettext.gettext; - +/** */ function init() { ExtensionUtils.initTranslations(); } @@ -105,6 +105,9 @@ class WindowListPrefsWidget extends Gtk.Box { } }); +/** + * @returns {Gtk.Widget} - the prefs widget + */ function buildPrefsWidget() { return new WindowListPrefsWidget(); } diff --git a/extensions/windowsNavigator/extension.js b/extensions/windowsNavigator/extension.js index bb72d7bb..a2cab423 100644 --- a/extensions/windowsNavigator/extension.js +++ b/extensions/windowsNavigator/extension.js @@ -262,6 +262,9 @@ class Extension { } } +/** + * @returns {Extension} - the extension's state object + */ function init() { return new Extension(); } diff --git a/extensions/workspace-indicator/extension.js b/extensions/workspace-indicator/extension.js index 6974062b..d8463daf 100644 --- a/extensions/workspace-indicator/extension.js +++ b/extensions/workspace-indicator/extension.js @@ -445,17 +445,20 @@ class WorkspaceIndicator extends PanelMenu.Button { } }); +/** */ function init() { ExtensionUtils.initTranslations(); } let _indicator; +/** */ function enable() { _indicator = new WorkspaceIndicator(); Main.panel.addToStatusArea('workspace-indicator', _indicator); } +/** */ function disable() { _indicator.destroy(); } diff --git a/extensions/workspace-indicator/prefs.js b/extensions/workspace-indicator/prefs.js index 567f3e99..e5c5500d 100644 --- a/extensions/workspace-indicator/prefs.js +++ b/extensions/workspace-indicator/prefs.js @@ -210,10 +210,14 @@ class NewWorkspaceRow extends Gtk.ListBoxRow { } }); +/** */ function init() { ExtensionUtils.initTranslations(); } +/** + * @returns {Gtk.Widget} - the prefs widget + */ function buildPrefsWidget() { return new WorkspaceSettingsWidget(); } From 8f362d57fe6c257cf42ef5502d8dc6ded5be4d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 13 Aug 2021 02:21:32 +0200 Subject: [PATCH 22/42] lint: Synchronize configuration with gjs Part-of: --- .gitlab-ci.yml | 4 ++-- lint/eslintrc-gjs.yml | 32 +++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fc613082..61b07cb8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ include: - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml" -image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/33:2020-11-17.0 +image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/34:2021-08-12.0 stages: - pre_review @@ -90,7 +90,7 @@ js_check: eslint: stage: review script: - - eslint -o $LINT_LOG -f junit extensions + - eslint -o $LINT_LOG -f junit --resolve-plugins-relative-to $(npm root -g) extensions artifacts: paths: - ${LINT_LOG} diff --git a/lint/eslintrc-gjs.yml b/lint/eslintrc-gjs.yml index 13114fa7..dadf40bd 100644 --- a/lint/eslintrc-gjs.yml +++ b/lint/eslintrc-gjs.yml @@ -1,8 +1,12 @@ --- # SPDX-License-Identifier: MIT OR LGPL-2.0-or-later +# SPDX-FileCopyrightText: 2018 Claudio André env: es6: true + es2020: true extends: 'eslint:recommended' +plugins: + - jsdoc rules: array-bracket-newline: - error @@ -60,6 +64,17 @@ rules: - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' # Allow dedenting chained member expressions MemberExpression: 'off' + jsdoc/check-alignment: error + jsdoc/check-param-names: error + jsdoc/check-tag-names: error + jsdoc/check-types: error + jsdoc/implements-on-classes: error + jsdoc/newline-after-description: error + jsdoc/require-jsdoc: error + jsdoc/require-param: error + jsdoc/require-param-description: error + jsdoc/require-param-name: error + jsdoc/require-param-type: error key-spacing: - error - beforeColon: false @@ -107,8 +122,15 @@ rules: no-octal-escape: error no-proto: error no-prototype-builtins: 'off' + no-restricted-globals: [error, window] no-restricted-properties: - error + - object: imports + property: format + message: Use template strings + - object: pkg + property: initFormat + message: Use template strings - object: Lang property: copyProperties message: Use Object.assign() @@ -167,6 +189,7 @@ rules: object-curly-newline: - error - consistent: true + multiline: true object-curly-spacing: error object-shorthand: error operator-assignment: error @@ -214,14 +237,14 @@ rules: template-curly-spacing: error template-tag-spacing: error unicode-bom: error - valid-jsdoc: - - error - - requireReturn: false wrap-iife: - error - inside yield-star-spacing: error yoda: error +settings: + jsdoc: + mode: typescript globals: ARGV: readonly Debugger: readonly @@ -233,5 +256,8 @@ globals: logError: readonly print: readonly printerr: readonly + window: readonly + TextEncoder: readonly + TextDecoder: readonly parserOptions: ecmaVersion: 2020 From 1340b209f956eec2e820330d45d1699c24c49e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 2 May 2020 03:38:04 +0200 Subject: [PATCH 23/42] window-list: Simplify radio handling Instead of handling the active state manually and updating settings on changes, we can use GActions to leave the nitty-gritty to GTK. Part-of: --- extensions/window-list/prefs.js | 76 ++++++++++++++------------------- 1 file changed, 31 insertions(+), 45 deletions(-) diff --git a/extensions/window-list/prefs.js b/extensions/window-list/prefs.js index bdf834fc..5f5079c1 100644 --- a/extensions/window-list/prefs.js +++ b/extensions/window-list/prefs.js @@ -1,7 +1,7 @@ // -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- /* exported init buildPrefsWidget */ -const { Gio, GObject, Gtk } = imports.gi; +const { Gio, GLib, GObject, Gtk } = imports.gi; const ExtensionUtils = imports.misc.extensionUtils; const Me = ExtensionUtils.getCurrentExtension(); @@ -27,6 +27,17 @@ class WindowListPrefsWidget extends Gtk.Box { halign: Gtk.Align.CENTER, }); + this._actionGroup = new Gio.SimpleActionGroup(); + this.insert_action_group('window-list', this._actionGroup); + + this._settings = ExtensionUtils.getSettings(); + this._actionGroup.add_action( + this._settings.create_action('grouping-mode')); + this._actionGroup.add_action( + this._settings.create_action('show-on-all-monitors')); + this._actionGroup.add_action( + this._settings.create_action('display-all-workspaces')); + let groupingLabel = '%s'.format(_('Window Grouping')); this.append(new Gtk.Label({ label: groupingLabel, use_markup: true, @@ -50,58 +61,33 @@ class WindowListPrefsWidget extends Gtk.Box { context.add_class('frame'); context.add_class('view'); - this._settings = ExtensionUtils.getSettings(); - let currentMode = this._settings.get_string('grouping-mode'); - let range = this._settings.get_range('grouping-mode'); - let modes = range.deep_unpack()[1].deep_unpack(); - - let modeLabels = { - 'never': _('Never group windows'), - 'auto': _('Group windows when space is limited'), - 'always': _('Always group windows'), - }; - - let radio = null; - let currentRadio = null; - for (let i = 0; i < modes.length; i++) { - let mode = modes[i]; - let label = modeLabels[mode]; - if (!label) { - log('Unhandled option "%s" for grouping-mode'.format(mode)); - continue; - } - - radio = new Gtk.CheckButton({ - active: !i, + const modes = [ + { mode: 'never', label: _('Never group windows') }, + { mode: 'auto', label: _('Group windows when space is limited') }, + { mode: 'always', label: _('Always group windows') }, + ]; + let group = null; + for (const { mode, label } of modes) { + const check = new Gtk.CheckButton({ + action_name: 'window-list.grouping-mode', + action_target: new GLib.Variant('s', mode), label, - group: radio, + group, margin_end: 12, }); - box.append(radio); - - if (currentMode === mode) - currentRadio = radio; - - radio.connect('toggled', button => { - if (button.active) - this._settings.set_string('grouping-mode', mode); - }); + group = check; + box.append(check); } - if (currentRadio) - currentRadio.active = true; - - let check = new Gtk.CheckButton({ + this.append(new Gtk.CheckButton({ label: _('Show on all monitors'), - }); - this._settings.bind('show-on-all-monitors', check, 'active', Gio.SettingsBindFlags.DEFAULT); - this.append(check); + action_name: 'window-list.show-on-all-monitors', + })); - check = new Gtk.CheckButton({ + this.append(new Gtk.CheckButton({ label: _('Show windows from all workspaces'), - }); - this._settings.bind('display-all-workspaces', check, 'active', Gio.SettingsBindFlags.DEFAULT); - this.append(check); + action_name: 'window-list.display-all-workspaces', + })); } }); From 757bcee4e21b205ec89179e4c1ee39c5329819de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 6 Aug 2021 03:29:51 +0200 Subject: [PATCH 24/42] build: Use backend-agnostic meson commands for export There's no alternative backend in sight for us, but it's nice to only deal with a single build tool. Part-of: --- export-zips.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export-zips.sh b/export-zips.sh index 30991449..1c3cc0d7 100755 --- a/export-zips.sh +++ b/export-zips.sh @@ -7,7 +7,7 @@ builddir=`mktemp -p $srcdir -d _build.XXXXXX` || exit 1 installdir=`mktemp -p $srcdir -d _install.XXXXXX` || exit 1 meson setup --prefix=$installdir -Dextension_set=all $srcdir $builddir -ninja -C$builddir install +meson install -C $builddir rm -rf $srcdir/zip-files mkdir $srcdir/zip-files From cc45bd63ab7dd01241438e2144eec2794583cd5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 12 Apr 2020 02:53:08 +0200 Subject: [PATCH 25/42] cleanup: Use new gettext() convenience gnome-shell now includes convenience helpers for gettext functions that use an extension's text domain (as initialized by initTranslations()). Part-of: --- extensions/apps-menu/extension.js | 4 +--- extensions/auto-move-windows/prefs.js | 4 +--- extensions/drive-menu/extension.js | 4 +--- extensions/places-menu/extension.js | 8 +++----- extensions/places-menu/placeDisplay.js | 5 +---- extensions/window-list/extension.js | 3 +-- extensions/window-list/prefs.js | 4 +--- extensions/window-list/workspaceIndicator.js | 5 +---- extensions/workspace-indicator/extension.js | 5 +---- extensions/workspace-indicator/prefs.js | 4 +--- 10 files changed, 12 insertions(+), 34 deletions(-) diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index 431328dc..fe9d5a28 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -12,9 +12,7 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Me = ExtensionUtils.getCurrentExtension(); -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const appSys = Shell.AppSystem.get_default(); diff --git a/extensions/auto-move-windows/prefs.js b/extensions/auto-move-windows/prefs.js index 869cdb14..9e303dad 100644 --- a/extensions/auto-move-windows/prefs.js +++ b/extensions/auto-move-windows/prefs.js @@ -5,10 +5,8 @@ const { Gio, GLib, GObject, Gtk, Pango } = imports.gi; const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const SETTINGS_KEY = 'application-list'; diff --git a/extensions/drive-menu/extension.js b/extensions/drive-menu/extension.js index 6cc91b25..cc31e777 100644 --- a/extensions/drive-menu/extension.js +++ b/extensions/drive-menu/extension.js @@ -8,9 +8,7 @@ const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; const ShellMountOperation = imports.ui.shellMountOperation; -const Me = ExtensionUtils.getCurrentExtension(); -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; var MountMenuItem = GObject.registerClass( class MountMenuItem extends PopupMenu.PopupBaseMenuItem { diff --git a/extensions/places-menu/extension.js b/extensions/places-menu/extension.js index 07a83f4b..3fe9d9fe 100644 --- a/extensions/places-menu/extension.js +++ b/extensions/places-menu/extension.js @@ -9,13 +9,11 @@ const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; const Me = ExtensionUtils.getCurrentExtension(); - -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; -const N_ = x => x; - const PlaceDisplay = Me.imports.placeDisplay; +const _ = ExtensionUtils.gettext; +const N_ = x => x; + const PLACE_ICON_SIZE = 16; var PlaceMenuItem = GObject.registerClass( diff --git a/extensions/places-menu/placeDisplay.js b/extensions/places-menu/placeDisplay.js index d2afc1ea..05b22804 100644 --- a/extensions/places-menu/placeDisplay.js +++ b/extensions/places-menu/placeDisplay.js @@ -7,10 +7,7 @@ const ExtensionUtils = imports.misc.extensionUtils; const Main = imports.ui.main; const ShellMountOperation = imports.ui.shellMountOperation; -const Me = ExtensionUtils.getCurrentExtension(); - -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const N_ = x => x; const BACKGROUND_SCHEMA = 'org.gnome.desktop.background'; diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index fe0cb217..56bb8296 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -11,8 +11,7 @@ const Me = ExtensionUtils.getCurrentExtension(); const { WindowPicker, WindowPickerToggle } = Me.imports.windowPicker; const { WorkspaceIndicator } = Me.imports.workspaceIndicator; -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const ICON_TEXTURE_SIZE = 24; const DND_ACTIVATE_TIMEOUT = 500; diff --git a/extensions/window-list/prefs.js b/extensions/window-list/prefs.js index 5f5079c1..0dbf7a6c 100644 --- a/extensions/window-list/prefs.js +++ b/extensions/window-list/prefs.js @@ -4,10 +4,8 @@ const { Gio, GLib, GObject, Gtk } = imports.gi; const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; /** */ function init() { diff --git a/extensions/window-list/workspaceIndicator.js b/extensions/window-list/workspaceIndicator.js index cdfe5b61..06646cc9 100644 --- a/extensions/window-list/workspaceIndicator.js +++ b/extensions/window-list/workspaceIndicator.js @@ -7,10 +7,7 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Me = ExtensionUtils.getCurrentExtension(); - -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const TOOLTIP_OFFSET = 6; const TOOLTIP_ANIMATION_TIME = 150; diff --git a/extensions/workspace-indicator/extension.js b/extensions/workspace-indicator/extension.js index d8463daf..a2c95b6a 100644 --- a/extensions/workspace-indicator/extension.js +++ b/extensions/workspace-indicator/extension.js @@ -9,10 +9,7 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; -const Me = ExtensionUtils.getCurrentExtension(); - -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; const WORKSPACE_KEY = 'workspace-names'; diff --git a/extensions/workspace-indicator/prefs.js b/extensions/workspace-indicator/prefs.js index e5c5500d..807ab7bb 100644 --- a/extensions/workspace-indicator/prefs.js +++ b/extensions/workspace-indicator/prefs.js @@ -4,10 +4,8 @@ const { Gio, GLib, GObject, Gtk, Pango } = imports.gi; const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +const _ = ExtensionUtils.gettext; const N_ = e => e; const WORKSPACE_SCHEMA = 'org.gnome.desktop.wm.preferences'; From 4becaa28ceddaed5946a930d32c28c60b926dbb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 18 Aug 2021 01:50:08 +0200 Subject: [PATCH 26/42] Update sass submodule --- data/gnome-shell-sass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/gnome-shell-sass b/data/gnome-shell-sass index 9d66f7dd..b267200d 160000 --- a/data/gnome-shell-sass +++ b/data/gnome-shell-sass @@ -1 +1 @@ -Subproject commit 9d66f7dd54ef69e81b0454f9bbc29ec37074f81b +Subproject commit b267200d75be0d0d4b9aa625b63e31cb068c059d From 2307e2cabec3026c0f51935d52640c41c2202358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 18 Aug 2021 00:26:19 +0200 Subject: [PATCH 27/42] Bump version to 41.beta Update NEWS. --- NEWS | 14 ++++++++++++++ meson.build | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index e7420445..54ec5e06 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,17 @@ +41.beta +======= +* window-list: Extend reactive area of minimap to screen edges [Adam; !171] +* drive-menu: Improve detection of network mounts [Florian; !27, !176] +* Use distinct gettext domain for e.g.o uploads [Florian; #335] +* Misc. bug fixes and cleanups [Florian; !172, !174, !177, !167, !178, !180, + !181, !182, !183] + +Contributors: + Marco Trevisan (Treviño), Adam Goode, Florian Müllner + +Translators: + Hugo Carvalho [pt], Juliano de Souza Camargo [pt], Alexander Shopov [bg] + 40.1 ==== * Disable welcome dialog in classic session [Florian; !169] diff --git a/meson.build b/meson.build index 60c6664d..6573b7d8 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gnome-shell-extensions', - version: '41.alpha', + version: '41.beta', meson_version: '>= 0.44.0', license: 'GPL2+' ) From 6ee4205f1e60858b20a1f9492b34800265841a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 26 Aug 2021 23:26:36 +0200 Subject: [PATCH 28/42] window-list: Fix initial visibility Mutter uses an undefined initial in-fullscreen state, so it will always emit the `in-fullscreen-changed` signal when it determines the actual initial state. This didn't use to be an issue when the shell started in the session, but now results in the window list ending up visible in the overview on startup. Work around this by hiding ourselves again when the in-fullscreen state changes in the overview. Part-of: --- extensions/window-list/extension.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 56bb8296..599b64b3 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -785,6 +785,9 @@ class WindowList extends St.Widget { this._fullscreenChangedId = global.display.connect('in-fullscreen-changed', () => { + // Work-around for initial change from unknown to !fullscreen + if (Main.overview.visible) + this.hide(); this._updateKeyboardAnchor(); }); From 201339345df4021936488c3c13345a456f13e2ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 26 Aug 2021 23:27:39 +0200 Subject: [PATCH 29/42] window-list: Only show at the end of the overview transition gnome-shell now considers the work area in the overview, so popping up at the beginning of the overview transition is now more jarring than at the end. Part-of: --- extensions/window-list/extension.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/window-list/extension.js b/extensions/window-list/extension.js index 599b64b3..b97a2820 100644 --- a/extensions/window-list/extension.js +++ b/extensions/window-list/extension.js @@ -778,7 +778,7 @@ class WindowList extends St.Widget { this._updateKeyboardAnchor(); }); - this._overviewHidingId = Main.overview.connect('hiding', () => { + this._overviewHidingId = Main.overview.connect('hidden', () => { this.visible = !Main.layoutManager.primaryMonitor.inFullscreen; this._updateKeyboardAnchor(); }); From 7ba0e5b42c43edd7bdc0051ca7c101453e5d9525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 3 Jun 2021 21:03:39 +0200 Subject: [PATCH 30/42] apps-menu: Stop using panel-main-menu shortcut It's an old GNOME 2 shortcut that's no longer worth supporting in the regular session. Instead, set up a new shortcut backed by our own schema. https://discourse.gnome.org/t/difference-between-show-the-overview-and-show-the-activities-overview-keyboard-shortcuts/6572 Part-of: --- extensions/apps-menu/extension.js | 21 +++++++------------ extensions/apps-menu/meson.build | 1 + extensions/apps-menu/metadata.json.in | 1 + ...ome.shell.extensions.apps-menu.gschema.xml | 12 +++++++++++ 4 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 extensions/apps-menu/org.gnome.shell.extensions.apps-menu.gschema.xml diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index fe9d5a28..2cbb7548 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -378,9 +378,12 @@ class ApplicationsButton extends PanelMenu.Button { this._hidingId = Main.overview.connect('hiding', () => { this.remove_accessible_state(Atk.StateType.CHECKED); }); - Main.layoutManager.connect('startup-complete', - this._setKeybinding.bind(this)); - this._setKeybinding(); + Main.wm.addKeybinding( + 'apps-menu-toggle-menu', + ExtensionUtils.getSettings(), + Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, + Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, + () => this.menu.toggle()); this._desktopTarget = new DesktopTarget(); this._desktopTarget.connect('app-dropped', () => { @@ -431,11 +434,7 @@ class ApplicationsButton extends PanelMenu.Button { this._tree.disconnect(this._treeChangedId); this._tree = null; - Main.wm.setCustomKeybindingHandler('panel-main-menu', - Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, - Main.sessionMode.hasOverview - ? Main.overview.toggle.bind(Main.overview) - : null); + Main.wm.removeKeybinding('apps-menu-toggle-menu'); this._desktopTarget.destroy(); } @@ -477,12 +476,6 @@ class ApplicationsButton extends PanelMenu.Button { super._onOpenStateChanged(menu, open); } - _setKeybinding() { - Main.wm.setCustomKeybindingHandler('panel-main-menu', - Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW, - () => this.menu.toggle()); - } - _redisplay() { this.applicationsBox.destroy_all_children(); this.categoriesBox.destroy_all_children(); diff --git a/extensions/apps-menu/meson.build b/extensions/apps-menu/meson.build index 48504f63..164b95ea 100644 --- a/extensions/apps-menu/meson.build +++ b/extensions/apps-menu/meson.build @@ -3,3 +3,4 @@ extension_data += configure_file( output: metadata_name, configuration: metadata_conf ) +extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml') diff --git a/extensions/apps-menu/metadata.json.in b/extensions/apps-menu/metadata.json.in index f57a47f3..b00cd3b3 100644 --- a/extensions/apps-menu/metadata.json.in +++ b/extensions/apps-menu/metadata.json.in @@ -1,6 +1,7 @@ { "extension-id": "@extension_id@", "uuid": "@uuid@", +"settings-schema": "@gschemaname@", "gettext-domain": "@gettext_domain@", "name": "Applications Menu", "description": "Add a category-based menu for applications.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.", diff --git a/extensions/apps-menu/org.gnome.shell.extensions.apps-menu.gschema.xml b/extensions/apps-menu/org.gnome.shell.extensions.apps-menu.gschema.xml new file mode 100644 index 00000000..b0cdb862 --- /dev/null +++ b/extensions/apps-menu/org.gnome.shell.extensions.apps-menu.gschema.xml @@ -0,0 +1,12 @@ + + + + ["<Alt>F1"] + Keybinding to open the applications menu + + Keybinding to open the applications menu. + + + + From 769ad859e628554c139c175d1780cb4a6932b4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 31 Aug 2021 10:27:05 +0200 Subject: [PATCH 31/42] build: Check NEWS for version I don't think this ever happened to me, but it can't hurt enforcing that every release has a corresponding NEWS entry. (The script has been copied from Polari, thus the metainfo support) Part-of: --- meson.build | 3 +++ meson/check-version.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 meson/check-version.py diff --git a/meson.build b/meson.build index 6573b7d8..1b145b82 100644 --- a/meson.build +++ b/meson.build @@ -89,3 +89,6 @@ subdir('extensions') subdir('po') meson.add_dist_script('meson/generate-stylesheets.py') +meson.add_dist_script('meson/check-version.py', + meson.project_version(), + 'NEWS') diff --git a/meson/check-version.py b/meson/check-version.py new file mode 100755 index 00000000..81750c99 --- /dev/null +++ b/meson/check-version.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +import os, sys +from pathlib import Path +import argparse, subprocess + +def check_version(version, file, type='news'): + if type == 'news': + line = file.open().readline() + ok = line.startswith(version) + print("{}: {}".format(file, "OK" if ok else "FAILED")) + if not ok: + raise Exception("{} does not start with {}".format(file, version)) + elif type == 'metainfo': + subprocess.run(['appstream-util', 'validate-version', file, version], + check=True) + else: + raise Exception('Not implemented') + +parser = argparse.ArgumentParser(description='Check release version information.') +parser.add_argument('--type', choices=['metainfo','news'], default='news') +parser.add_argument('version', help='the version to check for') +parser.add_argument('files', nargs='+', help='files to check') +args = parser.parse_args() + +distroot = os.environ.get('MESON_DIST_ROOT', './') + +try: + for file in args.files: + check_version(args.version, Path(distroot, file), args.type) +except: + sys.exit(1) From d25cc847f3c6f6c1fe66f663cc1e9e4a95145c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 31 Aug 2021 10:52:55 +0200 Subject: [PATCH 32/42] ci: Reindent yaml configuration The file currently uses a mix of 4 and 2 space indentation (with the occasional 1 space thrown in). It looks like most GNOME projects have settled on 2-space indentation, so use that. Part-of: --- .gitlab-ci.yml | 122 ++++++++++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 61b07cb8..e1faeab2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,81 +1,81 @@ include: - - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml" + - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml" image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/34:2021-08-12.0 stages: - - pre_review - - review - - build + - pre_review + - review + - build default: - # Cancel jobs if newer commits are pushed to the branch - interruptible: true - # Auto-retry jobs in case of infra failures - retry: - max: 1 - when: - - 'runner_system_failure' - - 'stuck_or_timeout_failure' - - 'scheduler_failure' - - 'api_failure' + # Cancel jobs if newer commits are pushed to the branch + interruptible: true + # Auto-retry jobs in case of infra failures + retry: + max: 1 + when: + - 'runner_system_failure' + - 'stuck_or_timeout_failure' + - 'scheduler_failure' + - 'api_failure' variables: - FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions - LINT_LOG: "eslint-report.xml" - JS_LOG: "js-report.txt" + FDO_UPSTREAM_REPO: GNOME/gnome-shell-extensions + LINT_LOG: "eslint-report.xml" + JS_LOG: "js-report.txt" workflow: - rules: - - if: '$CI_MERGE_REQUEST_IID' - - if: '$CI_COMMIT_TAG' - - if: '$CI_COMMIT_BRANCH' + rules: + - if: '$CI_MERGE_REQUEST_IID' + - if: '$CI_COMMIT_TAG' + - if: '$CI_COMMIT_BRANCH' .pipeline_guard: &pipeline_guard - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_TAG' - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' - - if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/' - - when: 'manual' + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_COMMIT_TAG' + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + - if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/' + - when: 'manual' check_commit_log: - extends: - - .fdo.ci-fairy - stage: pre_review - script: - - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; - then - ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ; - else - echo "Not a merge request" ; - fi - <<: *pipeline_guard - artifacts: - expire_in: 1 week - paths: - - commit-message-junit-report.xml - reports: - junit: commit-message-junit-report.xml + extends: + - .fdo.ci-fairy + stage: pre_review + script: + - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; + then + ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ; + else + echo "Not a merge request" ; + fi + <<: *pipeline_guard + artifacts: + expire_in: 1 week + paths: + - commit-message-junit-report.xml + reports: + junit: commit-message-junit-report.xml check-merge-request: - extends: - - .fdo.ci-fairy - stage: pre_review - script: - - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; - then - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ; - else - echo "Not a merge request" ; - fi - <<: *pipeline_guard - artifacts: - expire_in: 1 week - paths: - - check-merge-request-report.xml - reports: - junit: check-merge-request-report.xml + extends: + - .fdo.ci-fairy + stage: pre_review + script: + - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; + then + ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request-report.xml ; + else + echo "Not a merge request" ; + fi + <<: *pipeline_guard + artifacts: + expire_in: 1 week + paths: + - check-merge-request-report.xml + reports: + junit: check-merge-request-report.xml js_check: stage: review From 2f2619403a8f509da67ccf8ae4cd477f1d083445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 31 Aug 2021 10:51:01 +0200 Subject: [PATCH 33/42] ci: Build custom image The gnome-shell image we are using is well-suited for the jobs we are running, but the lack of sassc means that we don't cover classic mode. Part-of: --- .gitlab-ci.yml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e1faeab2..064dc497 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,12 @@ include: + - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/bbe5232986c9b98eb1efe62484e07216f7d1a4df/templates/fedora.yml' - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml" image: registry.gitlab.gnome.org/gnome/gnome-shell/fedora/34:2021-08-12.0 stages: - pre_review + - prepare - review - build @@ -39,6 +41,18 @@ workflow: - if: '$CI_COMMIT_BRANCH =~ /^gnome-[0-9-]+$/' - when: 'manual' +.gnome-shell-extensions.fedora:34: + variables: + FDO_DISTRIBUTION_VERSION: 34 + FDO_DISTRIBUTION_TAG: '2021-08-31.0' + FDO_DISTRIBUTION_PACKAGES: > + meson git gettext sassc + +.prereview_req: &prereview_req + needs: + - check_commit_log + - check-merge-request + check_commit_log: extends: - .fdo.ci-fairy @@ -77,8 +91,16 @@ check-merge-request: reports: junit: check-merge-request-report.xml +build-fedora-container: + extends: + - .fdo.container-build@fedora@x86_64 + - .gnome-shell-extensions.fedora:34 + stage: prepare + <<: *prereview_req + js_check: stage: review + <<: *prereview_req script: - find extensions -name '*.js' -exec js78 -c '{}' ';' 2>&1 | tee $JS_LOG - (! grep -q . $JS_LOG) @@ -89,6 +111,7 @@ js_check: eslint: stage: review + <<: *prereview_req script: - eslint -o $LINT_LOG -f junit --resolve-plugins-relative-to $(npm root -g) extensions artifacts: @@ -99,7 +122,7 @@ eslint: build-bundles: stage: build - needs: ["check_commit_log"] + <<: *prereview_req script: - ./export-zips.sh artifacts: From 34f6c9514a61a87e5be32d7510bbcb1e61533d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 31 Aug 2021 11:02:24 +0200 Subject: [PATCH 34/42] ci: Add a fedora build job We currently use a setup modelled after the flatpak CI workflow, where we produce extension bundles and expose them as artifacts for easy testing. It still makes sense to test a regular build though, in particular as that can include classic mode support. Part-of: --- .gitlab-ci.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 064dc497..297a6bce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -130,3 +130,16 @@ build-bundles: expose_as: 'Get Extension bundles here' paths: - zip-files/ + +fedora-build: + extends: + - .fdo.distribution-image@fedora + - .gnome-shell-extensions.fedora:34 + stage: build + needs: + - build-fedora-container + script: + - meson setup build --werror -Dextension_set=all -Dclassic=true + - meson compile -C build + - meson test -C build + - meson install -C build From 443d1dc42b92fa201aa28e7900416f55555066b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 31 Aug 2021 11:08:41 +0200 Subject: [PATCH 35/42] ci: Add dist job So far, releases are done locally by invoking `meson dist`. We can do better and leverage the existing CI infrastructure, to get to the following release workflow: - bump version in meson.build, update NEWS etc. - open merge request for the release - merge when the pipeline (including dist check) succeeds - tag the release - wait for the tag pipeline to spit out the tarball artifact Part-of: --- .gitlab-ci.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 297a6bce..92ce01ed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,7 @@ stages: - prepare - review - build + - deploy default: # Cancel jobs if newer commits are pushed to the branch @@ -143,3 +144,30 @@ fedora-build: - meson compile -C build - meson test -C build - meson install -C build + artifacts: + paths: + - build + +fedora-dist: + extends: + - .fdo.distribution-image@fedora + - .gnome-shell-extensions.fedora:34 + stage: deploy + needs: + - fedora-build + script: + - meson dist -C build + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + changes: + - "**/meson.build" + - meson/* + +fedora-dist-tarball: + extends: fedora-dist + artifacts: + expose_as: 'Get tarball here' + paths: + - build/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz + rules: + - if: '$CI_COMMIT_TAG' From 5dfdb68c75c685b4fb654c8c015352306be2044b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 3 Sep 2021 00:04:01 +0200 Subject: [PATCH 36/42] Bump version to 41.rc Update NEWS. Part-of: --- NEWS | 9 +++++++++ meson.build | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 54ec5e06..47e5dd08 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,12 @@ +41.rc +===== +* window-list: Adapt to overview-on-startup [Florian; !185] +* apps-menu: Use a custom 'toggle-menu' shortcut [Florian; !173] +* Misc. bug fixes and cleanups [Florian; !186] + +Contributors: + Florian Müllner + 41.beta ======= * window-list: Extend reactive area of minimap to screen edges [Adam; !171] diff --git a/meson.build b/meson.build index 1b145b82..ccd815ff 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gnome-shell-extensions', - version: '41.beta', + version: '41.rc', meson_version: '>= 0.44.0', license: 'GPL2+' ) From 0b993525f535f3e51ed33ca1fd302c36875a434d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 5 Sep 2021 23:33:39 +0200 Subject: [PATCH 37/42] build: Check sassc errors when generating stylesheet We currently just call sassc, but don't check its return value. That means as long as sassc is available, the script (and therefore the newly added dist CI job) will succeed. Make sure we fail on failure. Part-of: --- meson/generate-stylesheets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson/generate-stylesheets.py b/meson/generate-stylesheets.py index 6e402b61..599d098f 100644 --- a/meson/generate-stylesheets.py +++ b/meson/generate-stylesheets.py @@ -10,4 +10,4 @@ distroot = os.environ.get('MESON_DIST_ROOT') stylesheet_path = PurePath('data/gnome-classic.css') src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss')) dst = PurePath(distroot, stylesheet_path) -subprocess.call(['sassc', '-a', src, dst]) +subprocess.run(['sassc', '-a', src, dst], check=True) From 93dd8f535d46a24c59f618b9618f784a49498cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 6 Sep 2021 00:08:29 +0200 Subject: [PATCH 38/42] ci: Init submodule As the gnome-shell-sass submodule isn't included under subprojects, meson doesn't handle it automatically. Part-of: --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 92ce01ed..abffa4a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -139,6 +139,8 @@ fedora-build: stage: build needs: - build-fedora-container + before_script: + - git submodule update --init script: - meson setup build --werror -Dextension_set=all -Dclassic=true - meson compile -C build @@ -155,6 +157,8 @@ fedora-dist: stage: deploy needs: - fedora-build + before_script: + - git submodule update --init script: - meson dist -C build rules: From 68bf3e7ff77ce804848b48a0801b55ee634747a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 5 Sep 2021 23:59:31 +0200 Subject: [PATCH 39/42] ci: Fix classic build The option name used in CI was wrong, so we did not actually build the auxiliary classic mode file. Part-of: --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index abffa4a5..18851e9a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -142,7 +142,7 @@ fedora-build: before_script: - git submodule update --init script: - - meson setup build --werror -Dextension_set=all -Dclassic=true + - meson setup build --werror -Dextension_set=all -Dclassic_mode=true - meson compile -C build - meson test -C build - meson install -C build From 0a7491d747f8a47e17424ec285746492e6f6ec04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 6 Sep 2021 01:22:27 +0200 Subject: [PATCH 40/42] build: Bump meson requirement Passing arguments to dist scripts was only introduced after 0.44, so bump the requirement to shut up the corresponding warning. Meson 0.53 is the same version requirement as gnome-shell, so that shouldn't be an issue for distributors. Part-of: --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index ccd815ff..3c7604c7 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('gnome-shell-extensions', version: '41.rc', - meson_version: '>= 0.44.0', + meson_version: '>= 0.53.0', license: 'GPL2+' ) From 74121fce78fb9146263d2edee663342b56353d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 6 Sep 2021 01:21:57 +0200 Subject: [PATCH 41/42] Bump version to 41.rc.1 Update NEWS. Part-of: --- NEWS | 7 +++++++ meson.build | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 47e5dd08..7927183e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,10 @@ +41.rc.1 +======= +* Fix pre-generating stylesheets in tarball [Florian; !190] + +Contributors: + Florian Müllner + 41.rc ===== * window-list: Adapt to overview-on-startup [Florian; !185] diff --git a/meson.build b/meson.build index 3c7604c7..0c593ddc 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gnome-shell-extensions', - version: '41.rc', + version: '41.rc.1', meson_version: '>= 0.53.0', license: 'GPL2+' ) From 4ccf12e9889c7947c9a04f3ef5a78834dc42833a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 19 Sep 2021 12:47:07 +0200 Subject: [PATCH 42/42] Bump version to 41.0 Update NEWS. Part-of: --- NEWS | 4 ++++ meson.build | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 7927183e..79c07254 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +41.0 +==== +* Bump version + 41.rc.1 ======= * Fix pre-generating stylesheets in tarball [Florian; !190] diff --git a/meson.build b/meson.build index 0c593ddc..8f2afda3 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gnome-shell-extensions', - version: '41.rc.1', + version: '41.0', meson_version: '>= 0.53.0', license: 'GPL2+' )