Add window-grouper extension
Resolves: https://redhat.atlassian.net/browse/RHEL-193200
This commit is contained in:
parent
66d17b8ff0
commit
cc696100e6
@ -1,4 +1,4 @@
|
||||
From 1982ab4218fa3a7ff622fff5af7c15c2e11351f7 Mon Sep 17 00:00:00 2001
|
||||
From 4310f31f2cdd0212b9b5b175fede1c60b86eb1e1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 23 Feb 2018 16:56:46 +0100
|
||||
Subject: [PATCH] Include top-icons in classic session
|
||||
@ -8,7 +8,7 @@ Subject: [PATCH] Include top-icons in classic session
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index afc0133..78dee5b 100644
|
||||
index c7fccd0f..21c754d2 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -31,6 +31,7 @@ classic_extensions = [
|
||||
@ -19,14 +19,14 @@ index afc0133..78dee5b 100644
|
||||
'window-list'
|
||||
]
|
||||
|
||||
@@ -49,7 +50,6 @@ all_extensions += [
|
||||
@@ -52,7 +53,6 @@ all_extensions += [
|
||||
'native-window-placement',
|
||||
'panel-favorites',
|
||||
'systemMonitor',
|
||||
- 'top-icons',
|
||||
'updates-dialog',
|
||||
'user-theme'
|
||||
]
|
||||
'user-theme',
|
||||
'window-grouper'
|
||||
--
|
||||
2.32.0
|
||||
2.55.0
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
From 6623a374036e0f2458d4b36e268f6e4dcc19a2d7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Wed, 20 May 2015 17:44:50 +0200
|
||||
Subject: [PATCH 1/8] Add top-icons extension
|
||||
Subject: [PATCH 1/9] Add top-icons extension
|
||||
|
||||
---
|
||||
extensions/top-icons/extension.js | 96 +++++++++++++++++++++++++++
|
||||
@ -164,13 +164,13 @@ index 41a7e99d..f754767c 100644
|
||||
]
|
||||
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From a38891b5a6b0ba51998298963988bf146b2e1f86 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Wed, 20 May 2015 18:05:41 +0200
|
||||
Subject: [PATCH 2/8] Add dash-to-dock extension
|
||||
Subject: [PATCH 2/9] Add dash-to-dock extension
|
||||
|
||||
---
|
||||
extensions/dash-to-dock/Settings.ui | 2660 +++++++++++++++++
|
||||
@ -44398,13 +44398,13 @@ index 6a40e212..14e60ccb 100644
|
||||
+#~ msgid "0.000"
|
||||
+#~ msgstr "0.000"
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From 6cad2aac52022030bcbbf03066fc08937f6d177f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Wed, 20 May 2015 18:55:47 +0200
|
||||
Subject: [PATCH 3/8] Add panel-favorites extension
|
||||
Subject: [PATCH 3/9] Add panel-favorites extension
|
||||
|
||||
---
|
||||
extensions/panel-favorites/extension.js | 257 ++++++++++++++++++++
|
||||
@ -44741,13 +44741,13 @@ index e3d94918..12706001 100644
|
||||
'user-theme'
|
||||
]
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From dbd3ebbb2d3cf380f2c0a13f13618fedfd8bbad4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 4 Mar 2016 17:07:21 +0100
|
||||
Subject: [PATCH 4/8] Add updates-dialog extension
|
||||
Subject: [PATCH 4/9] Add updates-dialog extension
|
||||
|
||||
---
|
||||
extensions/updates-dialog/extension.js | 504 ++++++++++++++++++
|
||||
@ -45372,13 +45372,433 @@ index 0ed12762..10b1d517 100644
|
||||
extensions/window-list/extension.js
|
||||
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From 5de33c69acd297659ac3182e85f0fe32771dd75e Mon Sep 17 00:00:00 2001
|
||||
From f28cde648757165a8ae3bc138eccea7836fb7f6b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Tue, 26 Mar 2019 19:44:43 +0100
|
||||
Subject: [PATCH 5/9] Add window-grouper extension
|
||||
|
||||
---
|
||||
extensions/window-grouper/extension.js | 109 +++++++++
|
||||
extensions/window-grouper/meson.build | 8 +
|
||||
extensions/window-grouper/metadata.json.in | 11 +
|
||||
...hell.extensions.window-grouper.gschema.xml | 9 +
|
||||
extensions/window-grouper/prefs.js | 207 ++++++++++++++++++
|
||||
extensions/window-grouper/stylesheet.css | 1 +
|
||||
meson.build | 3 +-
|
||||
7 files changed, 347 insertions(+), 1 deletion(-)
|
||||
create mode 100644 extensions/window-grouper/extension.js
|
||||
create mode 100644 extensions/window-grouper/meson.build
|
||||
create mode 100644 extensions/window-grouper/metadata.json.in
|
||||
create mode 100644 extensions/window-grouper/org.gnome.shell.extensions.window-grouper.gschema.xml
|
||||
create mode 100644 extensions/window-grouper/prefs.js
|
||||
create mode 100644 extensions/window-grouper/stylesheet.css
|
||||
|
||||
diff --git a/extensions/window-grouper/extension.js b/extensions/window-grouper/extension.js
|
||||
new file mode 100644
|
||||
index 00000000..f66a7641
|
||||
--- /dev/null
|
||||
+++ b/extensions/window-grouper/extension.js
|
||||
@@ -0,0 +1,109 @@
|
||||
+// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||
+/* exported init */
|
||||
+
|
||||
+const { Shell } = imports.gi;
|
||||
+
|
||||
+const ExtensionUtils = imports.misc.extensionUtils;
|
||||
+
|
||||
+class WindowMover {
|
||||
+ constructor() {
|
||||
+ this._settings = ExtensionUtils.getSettings();
|
||||
+ this._appSystem = Shell.AppSystem.get_default();
|
||||
+ this._appConfigs = new Set();
|
||||
+ this._appData = new Map();
|
||||
+
|
||||
+ this._appsChangedId = this._appSystem.connect(
|
||||
+ 'installed-changed', this._updateAppData.bind(this));
|
||||
+
|
||||
+ this._settings.connect('changed', this._updateAppConfigs.bind(this));
|
||||
+ this._updateAppConfigs();
|
||||
+ }
|
||||
+
|
||||
+ _updateAppConfigs() {
|
||||
+ this._appConfigs.clear();
|
||||
+
|
||||
+ this._settings.get_strv('application-list').forEach(appId => {
|
||||
+ this._appConfigs.add(appId);
|
||||
+ });
|
||||
+
|
||||
+ this._updateAppData();
|
||||
+ }
|
||||
+
|
||||
+ _updateAppData() {
|
||||
+ let ids = [...this._appConfigs.values()];
|
||||
+ let removedApps = [...this._appData.keys()].filter(
|
||||
+ a => !ids.includes(a.id)
|
||||
+ );
|
||||
+ removedApps.forEach(app => {
|
||||
+ app.disconnect(this._appData.get(app).windowsChangedId);
|
||||
+ this._appData.delete(app);
|
||||
+ });
|
||||
+
|
||||
+ let addedApps = ids.map(id => this._appSystem.lookup_app(id)).filter(
|
||||
+ app => app != null && !this._appData.has(app)
|
||||
+ );
|
||||
+ addedApps.forEach(app => {
|
||||
+ let data = {
|
||||
+ windows: app.get_windows(),
|
||||
+ windowsChangedId: app.connect(
|
||||
+ 'windows-changed', this._appWindowsChanged.bind(this))
|
||||
+ };
|
||||
+ this._appData.set(app, data);
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ destroy() {
|
||||
+ if (this._appsChangedId) {
|
||||
+ this._appSystem.disconnect(this._appsChangedId);
|
||||
+ this._appsChangedId = 0;
|
||||
+ }
|
||||
+
|
||||
+ if (this._settings) {
|
||||
+ this._settings.run_dispose();
|
||||
+ this._settings = null;
|
||||
+ }
|
||||
+
|
||||
+ this._appConfigs.clear();
|
||||
+ this._updateAppData();
|
||||
+ }
|
||||
+
|
||||
+ _appWindowsChanged(app) {
|
||||
+ let data = this._appData.get(app);
|
||||
+ let windows = app.get_windows();
|
||||
+
|
||||
+ // If get_compositor_private() returns non-NULL on a removed windows,
|
||||
+ // the window still exists and is just moved to a different workspace
|
||||
+ // or something; assume it'll be added back immediately, so keep it
|
||||
+ // to avoid moving it again
|
||||
+ windows.push(...data.windows.filter(
|
||||
+ w => !windows.includes(w) && w.get_compositor_private() != null
|
||||
+ ));
|
||||
+
|
||||
+ windows.filter(w => !data.windows.includes(w)).forEach(window => {
|
||||
+ let leader = data.windows.find(w => w.get_pid() == window.get_pid());
|
||||
+ if (leader)
|
||||
+ window.change_workspace(leader.get_workspace());
|
||||
+ });
|
||||
+ data.windows = windows;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+class Extension {
|
||||
+ constructor() {
|
||||
+ this._winMover = null;
|
||||
+ }
|
||||
+
|
||||
+ enable() {
|
||||
+ this._winMover = new WindowMover();
|
||||
+ }
|
||||
+
|
||||
+ disable() {
|
||||
+ this._winMover.destroy();
|
||||
+ this._winMover = null;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+function init() {
|
||||
+ ExtensionUtils.initTranslations();
|
||||
+ return new Extension();
|
||||
+}
|
||||
diff --git a/extensions/window-grouper/meson.build b/extensions/window-grouper/meson.build
|
||||
new file mode 100644
|
||||
index 00000000..c55a7830
|
||||
--- /dev/null
|
||||
+++ b/extensions/window-grouper/meson.build
|
||||
@@ -0,0 +1,8 @@
|
||||
+extension_data += configure_file(
|
||||
+ input: metadata_name + '.in',
|
||||
+ output: metadata_name,
|
||||
+ configuration: metadata_conf
|
||||
+)
|
||||
+
|
||||
+extension_sources += files('prefs.js')
|
||||
+extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
|
||||
diff --git a/extensions/window-grouper/metadata.json.in b/extensions/window-grouper/metadata.json.in
|
||||
new file mode 100644
|
||||
index 00000000..aa202c8f
|
||||
--- /dev/null
|
||||
+++ b/extensions/window-grouper/metadata.json.in
|
||||
@@ -0,0 +1,11 @@
|
||||
+{
|
||||
+ "extension-id": "@extension_id@",
|
||||
+ "uuid": "@uuid@",
|
||||
+ "settings-schema": "@gschemaname@",
|
||||
+ "gettext-domain": "@gettext_domain@",
|
||||
+ "name": "Window grouper",
|
||||
+ "description": "Keep windows that belong to the same process on the same workspace.",
|
||||
+ "shell-version": [ "@shell_current@" ],
|
||||
+ "original-authors": [ "fmuellner@redhat.com" ],
|
||||
+ "url": "@url@"
|
||||
+}
|
||||
diff --git a/extensions/window-grouper/org.gnome.shell.extensions.window-grouper.gschema.xml b/extensions/window-grouper/org.gnome.shell.extensions.window-grouper.gschema.xml
|
||||
new file mode 100644
|
||||
index 00000000..ee052a6e
|
||||
--- /dev/null
|
||||
+++ b/extensions/window-grouper/org.gnome.shell.extensions.window-grouper.gschema.xml
|
||||
@@ -0,0 +1,9 @@
|
||||
+<schemalist gettext-domain="gnome-shell-extensions">
|
||||
+ <schema id="org.gnome.shell.extensions.window-grouper" path="/org/gnome/shell/extensions/window-grouper/">
|
||||
+ <key name="application-list" type="as">
|
||||
+ <default>[ ]</default>
|
||||
+ <summary>Application that should be grouped</summary>
|
||||
+ <description>A list of application ids</description>
|
||||
+ </key>
|
||||
+ </schema>
|
||||
+</schemalist>
|
||||
diff --git a/extensions/window-grouper/prefs.js b/extensions/window-grouper/prefs.js
|
||||
new file mode 100644
|
||||
index 00000000..422d9290
|
||||
--- /dev/null
|
||||
+++ b/extensions/window-grouper/prefs.js
|
||||
@@ -0,0 +1,207 @@
|
||||
+// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
|
||||
+/* exported init buildPrefsWidget */
|
||||
+
|
||||
+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 SETTINGS_KEY = 'application-list';
|
||||
+
|
||||
+const WindowGrouperSettingsWidget = GObject.registerClass(
|
||||
+class WindowGrouperSettingsWidget extends Gtk.ScrolledWindow {
|
||||
+ _init(params) {
|
||||
+ super._init({
|
||||
+ hscrollbar_policy: Gtk.PolicyType.NEVER,
|
||||
+ });
|
||||
+
|
||||
+ const box = new Gtk.Box({
|
||||
+ orientation: Gtk.Orientation.VERTICAL,
|
||||
+ halign: Gtk.Align.CENTER,
|
||||
+ spacing: 12,
|
||||
+ margin_top: 36,
|
||||
+ margin_bottom: 36,
|
||||
+ margin_start: 36,
|
||||
+ margin_end: 36,
|
||||
+ });
|
||||
+ this.set_child(box);
|
||||
+
|
||||
+ box.append(new Gtk.Label({
|
||||
+ label: '<b>%s</b>'.format(_('Grouped Apps')),
|
||||
+ use_markup: true,
|
||||
+ halign: Gtk.Align.START,
|
||||
+ }));
|
||||
+
|
||||
+ this._list = new Gtk.ListBox({
|
||||
+ selection_mode: Gtk.SelectionMode.NONE,
|
||||
+ valign: Gtk.Align.START,
|
||||
+ show_separators: true,
|
||||
+ });
|
||||
+ box.append(this._list);
|
||||
+
|
||||
+ const context = this._list.get_style_context();
|
||||
+ const cssProvider = new Gtk.CssProvider();
|
||||
+ cssProvider.load_from_data(
|
||||
+ 'list { min-width: 30em; }', -1);
|
||||
+
|
||||
+ context.add_provider(cssProvider,
|
||||
+ Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
+ context.add_class('frame');
|
||||
+
|
||||
+ this._list.append(new NewAppRow());
|
||||
+
|
||||
+ this._actionGroup = new Gio.SimpleActionGroup();
|
||||
+ this._list.insert_action_group('apps', this._actionGroup);
|
||||
+
|
||||
+ let action;
|
||||
+ action = new Gio.SimpleAction({name: 'add'});
|
||||
+ action.connect('activate', this._onAddActivated.bind(this));
|
||||
+ this._actionGroup.add_action(action);
|
||||
+
|
||||
+ action = new Gio.SimpleAction({
|
||||
+ name: 'remove',
|
||||
+ parameter_type: new GLib.VariantType('s'),
|
||||
+ });
|
||||
+ action.connect('activate', this._onRemoveActivated.bind(this));
|
||||
+ this._actionGroup.add_action(action);
|
||||
+
|
||||
+ this._settings = ExtensionUtils.getSettings();
|
||||
+ this._settings.connect('changed', this._refresh.bind(this));
|
||||
+
|
||||
+ this._refresh();
|
||||
+ }
|
||||
+
|
||||
+ _onAddActivated() {
|
||||
+ const dialog = new Gtk.AppChooserDialog({
|
||||
+ heading: _('Select an application for which grouping should apply'),
|
||||
+ transient_for: this.get_root(),
|
||||
+ modal: true
|
||||
+ });
|
||||
+
|
||||
+ dialog.get_widget().show_all = true;
|
||||
+
|
||||
+ dialog.connect('response', (dialog, id) => {
|
||||
+ const appInfo = id === Gtk.ResponseType.OK
|
||||
+ ? dialog.get_app_info() : null;
|
||||
+
|
||||
+ if (appInfo) {
|
||||
+ this._settings.set_strv(SETTINGS_KEY, [
|
||||
+ ...this._settings.get_strv(SETTINGS_KEY),
|
||||
+ appInfo.get_id(),
|
||||
+ ]);
|
||||
+ }
|
||||
+ dialog.destroy();
|
||||
+ });
|
||||
+ dialog.show();
|
||||
+ }
|
||||
+
|
||||
+ _onRemoveActivated(action, param) {
|
||||
+ const removed = param.deepUnpack();
|
||||
+ this._settings.set_strv(SETTINGS_KEY,
|
||||
+ this._settings.get_strv(SETTINGS_KEY).filter(id => id !== removed));
|
||||
+ }
|
||||
+
|
||||
+ _refresh() {
|
||||
+ const oldRows = [...this._list].filter(row => !!row.id);
|
||||
+
|
||||
+ const oldIds = oldRows.map(r => r.id);
|
||||
+ const newIds = this._settings.get_strv(SETTINGS_KEY);
|
||||
+
|
||||
+ newIds.forEach((id, i) => {
|
||||
+ if (oldIds.includes(id))
|
||||
+ return;
|
||||
+
|
||||
+ const appInfo = Gio.DesktopAppInfo.new(id);
|
||||
+ if (appInfo)
|
||||
+ this._list.insert(new AppRow(appInfo), i);
|
||||
+ });
|
||||
+
|
||||
+ oldRows.forEach(row => {
|
||||
+ if (!newIds.includes(row.id))
|
||||
+ this._list.remove(row);
|
||||
+ });
|
||||
+ }
|
||||
+});
|
||||
+
|
||||
+const AppRow = GObject.registerClass({
|
||||
+ Properties: {
|
||||
+ 'id': GObject.ParamSpec.string(
|
||||
+ 'id', 'id', 'id',
|
||||
+ GObject.ParamFlags.READABLE,
|
||||
+ ''),
|
||||
+ },
|
||||
+}, class AppRow extends Gtk.ListBoxRow {
|
||||
+ _init(appInfo) {
|
||||
+ super._init({
|
||||
+ activatable: false,
|
||||
+ });
|
||||
+ this._appInfo = appInfo;
|
||||
+
|
||||
+ const box = new Gtk.Box({
|
||||
+ spacing: 0,
|
||||
+ margin_top: 6,
|
||||
+ margin_bottom: 6,
|
||||
+ margin_start: 6,
|
||||
+ margin_end: 6,
|
||||
+ });
|
||||
+ this.child = box;
|
||||
+
|
||||
+ const icon = new Gtk.Image({
|
||||
+ gicon: appInfo.get_icon(),
|
||||
+ pixel_size: 32,
|
||||
+ });
|
||||
+ icon.get_style_context().add_class('icon-dropshadow');
|
||||
+ box.append(icon);
|
||||
+
|
||||
+ const label = new Gtk.Label({
|
||||
+ label: appInfo.get_display_name(),
|
||||
+ halign: Gtk.Align.START,
|
||||
+ hexpand: true,
|
||||
+ max_width_chars: 20,
|
||||
+ ellipsize: Pango.EllipsizeMode.END,
|
||||
+ });
|
||||
+ box.append(label);
|
||||
+
|
||||
+ const button = new Gtk.Button({
|
||||
+ action_name: 'apps.remove',
|
||||
+ action_target: new GLib.Variant('s', this.id),
|
||||
+ icon_name: 'edit-delete-symbolic',
|
||||
+ });
|
||||
+ box.append(button);
|
||||
+ }
|
||||
+
|
||||
+ get id() {
|
||||
+ return this._appInfo.get_id();
|
||||
+ }
|
||||
+});
|
||||
+
|
||||
+const NewAppRow = GObject.registerClass(
|
||||
+class NewAppRow extends Gtk.ListBoxRow {
|
||||
+ _init() {
|
||||
+ super._init({
|
||||
+ action_name: 'apps.add',
|
||||
+ child: new Gtk.Image({
|
||||
+ icon_name: 'list-add-symbolic',
|
||||
+ pixel_size: 16,
|
||||
+ margin_top: 12,
|
||||
+ margin_bottom: 12,
|
||||
+ margin_start: 12,
|
||||
+ margin_end: 12,
|
||||
+ }),
|
||||
+ });
|
||||
+
|
||||
+ this.update_property(
|
||||
+ [Gtk.AccessibleProperty.LABEL], [_('Add App')]);
|
||||
+ }
|
||||
+});
|
||||
+
|
||||
+function init() {
|
||||
+ ExtensionUtils.initTranslations();
|
||||
+}
|
||||
+
|
||||
+function buildPrefsWidget() {
|
||||
+ return new WindowGrouperSettingsWidget();
|
||||
+}
|
||||
diff --git a/extensions/window-grouper/stylesheet.css b/extensions/window-grouper/stylesheet.css
|
||||
new file mode 100644
|
||||
index 00000000..25134b65
|
||||
--- /dev/null
|
||||
+++ b/extensions/window-grouper/stylesheet.css
|
||||
@@ -0,0 +1 @@
|
||||
+/* This extensions requires no special styling */
|
||||
diff --git a/meson.build b/meson.build
|
||||
index c609ae52..81974203 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -49,7 +49,8 @@ all_extensions += [
|
||||
'panel-favorites',
|
||||
'top-icons',
|
||||
'updates-dialog',
|
||||
- 'user-theme'
|
||||
+ 'user-theme',
|
||||
+ 'window-grouper'
|
||||
]
|
||||
|
||||
enabled_extensions = get_option('enable_extensions')
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
||||
From b48930a2e60d56bc585ac4a56b904647a2440b4f Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Soriano <csoriano@gnome.org>
|
||||
Date: Mon, 13 Aug 2018 17:28:41 +0200
|
||||
Subject: [PATCH 5/8] Add desktop icons extension
|
||||
Subject: [PATCH 6/9] Add desktop icons extension
|
||||
|
||||
---
|
||||
.../desktop-icons/createFolderDialog.js | 165 +++
|
||||
@ -56921,7 +57341,7 @@ index 00000000..a468f4ab
|
||||
+ }
|
||||
+}
|
||||
diff --git a/meson.build b/meson.build
|
||||
index c609ae52..b83f0795 100644
|
||||
index 81974203..3b188d9a 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -28,6 +28,7 @@ uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
|
||||
@ -66729,13 +67149,13 @@ index 14e60ccb..4bdf7154 100644
|
||||
+#~ msgid "Huge"
|
||||
+#~ msgstr "巨大圖示"
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From 8e23a9d2a5e2f6050bc3cfcebac71565ab5aa1e0 Mon Sep 17 00:00:00 2001
|
||||
From 16e7dd5407fb0462fa0d023036a6627126a3a904 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 8 Oct 2021 19:36:18 +0200
|
||||
Subject: [PATCH 6/8] Add dash-to-panel
|
||||
Subject: [PATCH 7/9] Add dash-to-panel
|
||||
|
||||
---
|
||||
extensions/dash-to-panel/COPYING | 341 +
|
||||
@ -89964,7 +90384,7 @@ index 00000000..45d08a04
|
||||
+ return Utils.mergeObjects(opts || {}, defaults);
|
||||
+}
|
||||
diff --git a/meson.build b/meson.build
|
||||
index b83f0795..b3212c34 100644
|
||||
index 3b188d9a..d3cbfb5f 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -46,6 +46,7 @@ all_extensions = default_extensions
|
||||
@ -115612,13 +116032,13 @@ index 4bdf7154..1fc6b171 100644
|
||||
#~ msgstr "退出應用程式"
|
||||
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From 8ae915152f47068f7f7855edf5a80a3caac6b8ee Mon Sep 17 00:00:00 2001
|
||||
From 6fc4565a0b3a5bd6bc751c062b9d5814bc681a59 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Thu, 2 Dec 2021 19:39:50 +0100
|
||||
Subject: [PATCH 7/8] Add classification-banner
|
||||
Subject: [PATCH 8/9] Add classification-banner
|
||||
|
||||
---
|
||||
extensions/classification-banner/adwShim.js | 202 ++++++++++++++++++
|
||||
@ -116300,7 +116720,7 @@ index 00000000..fb6a697e
|
||||
+.classification-message { font-weight: bold; }
|
||||
+.classification-banner { font-size: 0.9em; }
|
||||
diff --git a/meson.build b/meson.build
|
||||
index b3212c34..c73261f7 100644
|
||||
index d3cbfb5f..b6a91b07 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -45,6 +45,7 @@ default_extensions += [
|
||||
@ -116312,13 +116732,13 @@ index b3212c34..c73261f7 100644
|
||||
'dash-to-panel',
|
||||
'native-window-placement',
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From 55f40c6c9c3fffe27dab3490412e1a7268393814 Mon Sep 17 00:00:00 2001
|
||||
From 6533b08df2a363690543185490817b9c31e86493 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Thu, 12 Jan 2023 19:43:52 +0100
|
||||
Subject: [PATCH 8/8] Add custom-menu extension
|
||||
Subject: [PATCH 9/9] Add custom-menu extension
|
||||
|
||||
---
|
||||
extensions/custom-menu/config.js | 484 ++++++++++++++++++++++++
|
||||
@ -117084,7 +117504,7 @@ index 00000000..25134b65
|
||||
@@ -0,0 +1 @@
|
||||
+/* This extensions requires no special styling */
|
||||
diff --git a/meson.build b/meson.build
|
||||
index c73261f7..fa9e622a 100644
|
||||
index b6a91b07..0c9b190e 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -46,6 +46,7 @@ all_extensions = default_extensions
|
||||
@ -117096,5 +117516,5 @@ index c73261f7..fa9e622a 100644
|
||||
'dash-to-panel',
|
||||
'native-window-placement',
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
Name: gnome-shell-extensions
|
||||
Version: 40.7
|
||||
Release: 33%{?dist}
|
||||
Release: 34%{?dist}
|
||||
Summary: Modify and extend GNOME Shell functionality and behavior
|
||||
|
||||
License: GPLv2+
|
||||
@ -81,6 +81,7 @@ Enabled extensions:
|
||||
* top-icons
|
||||
* updates-dialog
|
||||
* user-theme
|
||||
* window-grouper
|
||||
* window-list
|
||||
* windowsNavigator
|
||||
* workspace-indicator
|
||||
@ -308,6 +309,15 @@ This GNOME Shell extension enables loading a GNOME Shell theme from
|
||||
~/.themes/<name>/gnome-shell/.
|
||||
|
||||
|
||||
%package -n %{pkg_prefix}-window-grouper
|
||||
Summary: Keep windows that belong to the same process on the same workspace
|
||||
License: GPLv2+
|
||||
Requires: %{pkg_prefix}-common = %{version}-%{release}
|
||||
|
||||
%description -n %{pkg_prefix}-window-grouper
|
||||
This GNOME Shell extension keeps windows that belong to the same process on the same workspace.
|
||||
|
||||
|
||||
%package -n %{pkg_prefix}-window-list
|
||||
Summary: Display a window list at the bottom of the screen in GNOME Shell
|
||||
License: GPLv2+
|
||||
@ -460,6 +470,11 @@ workspaces.
|
||||
%{_datadir}/gnome-shell/extensions/user-theme*/
|
||||
|
||||
|
||||
%files -n %{pkg_prefix}-window-grouper
|
||||
%{_datadir}/gnome-shell/extensions/window-grouper*/
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.window-grouper.gschema.xml
|
||||
|
||||
|
||||
%files -n %{pkg_prefix}-window-list
|
||||
%{_datadir}/gnome-shell/extensions/window-list*/
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.window-list.gschema.xml
|
||||
@ -475,6 +490,10 @@ workspaces.
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Jul 09 2026 Florian Müllner <fmuellner@redhat.com> - 40.7-34
|
||||
- Add "window-grouper" extension
|
||||
Resolves: RHEL-193200
|
||||
|
||||
* Tue Apr 28 2026 Florian Müllner <fmuellner@redhat.com> - 40.7-33
|
||||
- Include "Desktop Settings" in background menu
|
||||
Resolves: RHEL-84188
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
From c5e26a4c25754dc74e5f2aa9953bc2e30cfea94e Mon Sep 17 00:00:00 2001
|
||||
From db5a4d33df4d85a8c4e1fa794cde85662555b01b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Wed, 17 May 2017 19:13:50 +0200
|
||||
Subject: [PATCH 1/6] extensions: Resurrect systemMonitor extension
|
||||
@ -476,7 +476,7 @@ index 00000000..13f95ec7
|
||||
+ font-weight: bold;
|
||||
+}
|
||||
diff --git a/meson.build b/meson.build
|
||||
index fa9e622a..70dbf007 100644
|
||||
index 0c9b190e..7b21b2e9 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -51,6 +51,7 @@ all_extensions += [
|
||||
@ -486,12 +486,12 @@ index fa9e622a..70dbf007 100644
|
||||
+ 'systemMonitor',
|
||||
'top-icons',
|
||||
'updates-dialog',
|
||||
'user-theme'
|
||||
'user-theme',
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From efe89316c5ae1721306defcdbb80227fe61414c4 Mon Sep 17 00:00:00 2001
|
||||
From 6c4adb80ea81e070b232dd2cb9fe65cd7f7c64c9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 17 May 2019 22:55:48 +0000
|
||||
Subject: [PATCH 2/6] systemMonitor: Modernise code
|
||||
@ -1081,10 +1081,10 @@ index 7b09df01..f7c6a4a9 100644
|
||||
function init() {
|
||||
return new Extension();
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From fe1916c1b29ab64c73179ab4c86e106ff69f977d Mon Sep 17 00:00:00 2001
|
||||
From f686b3fc4bf9968f346c7f04c42369dfea5ecbf6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Wed, 26 May 2021 19:50:37 +0200
|
||||
Subject: [PATCH 3/6] systemMonitor: Make label property private
|
||||
@ -1187,10 +1187,10 @@ index f7c6a4a9..bde25a1d 100644
|
||||
|
||||
_initValues() {
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From b8457707c2b05b88d443587b729e1893cf8b8d3d Mon Sep 17 00:00:00 2001
|
||||
From c0f6679c43c3b680cad4270c77f45afb76f58665 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Wed, 17 May 2017 19:31:58 +0200
|
||||
Subject: [PATCH 4/6] systemMonitor: Move indicators to calendar
|
||||
@ -1448,10 +1448,10 @@ index 13f95ec7..978ac12a 100644
|
||||
|
||||
.extension-systemMonitor-indicator-label {
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From bc05d47dbd45f761b14d90f60fd16259486bcb53 Mon Sep 17 00:00:00 2001
|
||||
From 68ac2d06628254b4831ab3fd1e3687d05c509330 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Thu, 18 May 2017 16:20:07 +0200
|
||||
Subject: [PATCH 5/6] systemMonitor: Handle clicks on section title
|
||||
@ -1503,10 +1503,10 @@ index 1fd01ab4..57bdb51f 100644
|
||||
for (let i = 0; i < INDICATORS.length; i++) {
|
||||
let indicator = new INDICATORS[i]();
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
From 597086c27823a7eb0b2124bfbe2c0572bbd1783d Mon Sep 17 00:00:00 2001
|
||||
From bfb43d952a0077ab35109518fb0040bfa26bbca7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Thu, 18 May 2017 18:00:17 +0200
|
||||
Subject: [PATCH 6/6] systemMonitor: Provide classic styling
|
||||
@ -1547,5 +1547,5 @@ index 48504f63..b6548b14 100644
|
||||
+ extension_data += files('classic.css')
|
||||
+endif
|
||||
--
|
||||
2.41.0
|
||||
2.55.0
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user