diff --git a/gnome-shell-favourite-apps-firefox.patch b/gnome-shell-favourite-apps-firefox.patch index af91439..efbf8bb 100644 --- a/gnome-shell-favourite-apps-firefox.patch +++ b/gnome-shell-favourite-apps-firefox.patch @@ -1,31 +1,28 @@ -From 9bb33b1c8d0dba0d5c9e98d98b1063a1d0408414 Mon Sep 17 00:00:00 2001 +From 8a6298a1e7f7d46abf86ddec8ca2c8edbe4a589f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 17 Sep 2014 07:11:12 +0200 Subject: [PATCH] Replace Web with Firefox in default favorites --- - data/org.gnome.shell.gschema.xml.in | 2 +- - js/ui/appFavorites.js | 1 + + data/default-apps/dash.txt | 2 +- + js/ui/appFavorites.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in -index 3cd37692a7..bd2bd5ead8 100644 ---- a/data/org.gnome.shell.gschema.xml.in -+++ b/data/org.gnome.shell.gschema.xml.in -@@ -61,7 +61,7 @@ - - - -- [ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] -+ [ 'org.mozilla.firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] - List of desktop file IDs for favorite applications - - The applications corresponding to these identifiers +diff --git a/data/default-apps/dash.txt b/data/default-apps/dash.txt +index d0c2c21eb8..a926311701 100644 +--- a/data/default-apps/dash.txt ++++ b/data/default-apps/dash.txt +@@ -1,4 +1,4 @@ +-org.gnome.Epiphany.desktop ++org.mozilla.Firefox.desktop + org.gnome.Calendar.desktop + org.gnome.Music.desktop + gnome.Nautilus.desktop diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js -index 576df3800d..a1deabde37 100644 +index e3a76dce96..b6525f3cc9 100644 --- a/js/ui/appFavorites.js +++ b/js/ui/appFavorites.js -@@ -51,6 +51,7 @@ const RENAMED_DESKTOP_IDS = { +@@ -48,6 +48,7 @@ const RENAMED_DESKTOP_IDS = { 'gnotski.desktop': 'org.gnome.Klotski.desktop', 'gtali.desktop': 'org.gnome.Tali.desktop', 'iagno.desktop': 'org.gnome.Reversi.desktop', @@ -34,5 +31,5 @@ index 576df3800d..a1deabde37 100644 'org.gnome.gnome-2048.desktop': 'org.gnome.TwentyFortyEight.desktop', 'org.gnome.taquin.desktop': 'org.gnome.Taquin.desktop', -- -2.45.2 +2.48.1 diff --git a/gnome-shell-favourite-apps-terminal.patch b/gnome-shell-favourite-apps-terminal.patch index 1cdee69..eefbf01 100644 --- a/gnome-shell-favourite-apps-terminal.patch +++ b/gnome-shell-favourite-apps-terminal.patch @@ -1,25 +1,23 @@ -From d4d39560f1694f06c3594f8d34eaa4b038804920 Mon Sep 17 00:00:00 2001 +From c20b996f0cf89d4620d01fa777787b80b15c8a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 9 Mar 2017 14:44:32 +0100 Subject: [PATCH] appFavorites: Add terminal --- - data/org.gnome.shell.gschema.xml.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + data/default-apps/dash.txt | 1 + + 1 file changed, 1 insertion(+) -diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in -index bd2bd5ead8..4827fa5b79 100644 ---- a/data/org.gnome.shell.gschema.xml.in -+++ b/data/org.gnome.shell.gschema.xml.in -@@ -61,7 +61,7 @@ - - - -- [ 'org.mozilla.firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] -+ [ 'org.mozilla.firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.Ptyxis.desktop', 'org.gnome.TextEditor.desktop'] - List of desktop file IDs for favorite applications - - The applications corresponding to these identifiers +diff --git a/data/default-apps/dash.txt b/data/default-apps/dash.txt +index a926311701..5178256f6a 100644 +--- a/data/default-apps/dash.txt ++++ b/data/default-apps/dash.txt +@@ -3,5 +3,6 @@ org.gnome.Calendar.desktop + org.gnome.Music.desktop + gnome.Nautilus.desktop + org.gnome.Software.desktop ++org.gnome.Ptyxis.desktop + org.gnome.TextEditor.desktop + org.gnome.Calculator.desktop -- -2.45.2 +2.48.1 diff --git a/gnome-shell.spec b/gnome-shell.spec index 618c915..3dae3d2 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -18,6 +18,7 @@ Source0: https://download.gnome.org/sources/gnome-shell/%{major_version}/ # Replace Epiphany with Firefox in the default favourite apps list, etc # and enable background extension by default +Patch: tweak-app-defaults.patch Patch: gnome-shell-favourite-apps-firefox.patch Patch: gnome-shell-favourite-apps-terminal.patch Patch: gnome-shell-enabled-extensions-background-logos.patch diff --git a/tweak-app-defaults.patch b/tweak-app-defaults.patch new file mode 100644 index 0000000..431f705 --- /dev/null +++ b/tweak-app-defaults.patch @@ -0,0 +1,384 @@ +From cfeade9501e158b426f571d05ab15ee6dbe49e75 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 7 Feb 2025 15:01:48 +0100 +Subject: [PATCH 1/3] data: Generate dash/app-grid defaults from text files + +Defining default apps as serialized GVariants isn't very human-friendly, +which likely contributes to the fact that the lists are in parts horribly +outdated (Books! Cheese! Screenshot! gedit!). + +Instead, generate the lists at build time from simple text files, which +should be much easier to update. + +Part-of: +--- + data/default-apps/app-grid.txt | 21 ++++++++++++++ + data/default-apps/dash.txt | 6 ++++ + data/default-apps/utilities-folder.txt | 17 +++++++++++ + data/meson.build | 8 ++++++ + data/org.gnome.shell.gschema.xml.in | 28 +++--------------- + js/misc/config.js.in | 2 ++ + js/misc/meson.build | 4 +++ + js/ui/appDisplay.js | 19 ++---------- + meson.build | 1 + + meson/generate-app-list.py | 40 ++++++++++++++++++++++++++ + 10 files changed, 106 insertions(+), 40 deletions(-) + create mode 100644 data/default-apps/app-grid.txt + create mode 100644 data/default-apps/dash.txt + create mode 100644 data/default-apps/utilities-folder.txt + create mode 100755 meson/generate-app-list.py + +diff --git a/data/default-apps/app-grid.txt b/data/default-apps/app-grid.txt +new file mode 100644 +index 0000000000..d78ed165eb +--- /dev/null ++++ b/data/default-apps/app-grid.txt +@@ -0,0 +1,21 @@ ++org.gnome.Geary.desktop ++org.gnome.Contacts.desktop ++org.gnome.Weather.desktop ++org.gnome.clocks.desktop ++org.gnome.Maps.desktop ++org.gnome.Books.desktop ++org.gnome.Photos.desktop ++org.gnome.Totem.desktop ++org.gnome.Calculator.desktop ++org.gnome.gedit.desktop ++simple-scan.desktop ++org.gnome.Settings.desktop ++org.gnome.SystemMonitor.desktop ++org.gnome.Boxes.desktop ++org.gnome.Terminal.desktop ++Utilities # folder ++org.gnome.Characters.desktop ++yelp.desktop ++org.gnome.Screenshot.desktop ++org.gnome.Cheese.desktop ++org.gnome.font-viewer.desktop +diff --git a/data/default-apps/dash.txt b/data/default-apps/dash.txt +new file mode 100644 +index 0000000000..2a8e8bcd06 +--- /dev/null ++++ b/data/default-apps/dash.txt +@@ -0,0 +1,6 @@ ++org.gnome.Epiphany.desktop ++org.gnome.Calendar.desktop ++org.gnome.Music.desktop ++gnome.Nautilus.desktop ++org.gnome.Software.desktop ++org.gnome.TextEditor.desktop +diff --git a/data/default-apps/utilities-folder.txt b/data/default-apps/utilities-folder.txt +new file mode 100644 +index 0000000000..6169977751 +--- /dev/null ++++ b/data/default-apps/utilities-folder.txt +@@ -0,0 +1,17 @@ ++# Sorted by name as shown in menus, not filename ++nm-connection-editor.desktop # Advanced Network Configuration ++org.gnome.DejaDup.desktop # Backups ++org.gnome.Characters.desktop # Characters ++org.gnome.Connections.desktop # Connections ++org.gnome.DiskUtility.desktop # Disks ++org.gnome.baobab.desktop # Disk Usage Analyzer ++org.gnome.Evince.desktop # Document Viewer ++org.gnome.FileRoller.desktop # File Roller ++org.gnome.font-viewer.desktop # Fonts ++org.gnome.Loupe.desktop # Image Viewer ++org.gnome.Logs.desktop # Logs ++org.freedesktop.MalcontentControl.desktop # Parental Controls ++org.gnome.seahorse.Application.desktop # Passwords and Keys ++org.freedesktop.GnomeAbrt.desktop # Problem Reporting ++org.gnome.tweaks.desktop # Tweaks ++org.gnome.Usage.desktop # Usage +diff --git a/data/meson.build b/data/meson.build +index ed13b6baea..c7565ee810 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -90,6 +90,14 @@ install_data(keybinding_files, install_dir: keysdir) + + schemaconf = configuration_data() + schemaconf.set('GETTEXT_PACKAGE', meson.project_name()) ++schemaconf.set('DASH_APPS', run_command( ++ generate_app_list, 'default-apps/dash.txt', ++ check: true, ++).stdout()) ++schemaconf.set('APP_GRID_APPS', run_command( ++ generate_app_list, '--pages', 'default-apps/app-grid.txt', ++ check: true, ++).stdout()) + schema = configure_file( + input: 'org.gnome.shell.gschema.xml.in', + output: 'org.gnome.shell.gschema.xml', +diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in +index 3cd37692a7..b1c2534f9c 100644 +--- a/data/org.gnome.shell.gschema.xml.in ++++ b/data/org.gnome.shell.gschema.xml.in +@@ -61,7 +61,9 @@ + + + +- [ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop'] ++ ++ @DASH_APPS@ ++ + List of desktop file IDs for favorite applications + + The applications corresponding to these identifiers +@@ -118,29 +120,7 @@ + + + }>, +- 'org.gnome.Contacts.desktop': <{'position': <1>}>, +- 'org.gnome.Weather.desktop': <{'position': <2>}>, +- 'org.gnome.clocks.desktop': <{'position': <3>}>, +- 'org.gnome.Maps.desktop': <{'position': <4>}>, +- 'org.gnome.Books.desktop': <{'position': <5>}>, +- 'org.gnome.Photos.desktop': <{'position': <6>}>, +- 'org.gnome.Totem.desktop': <{'position': <7>}>, +- 'org.gnome.Calculator.desktop': <{'position': <8>}>, +- 'org.gnome.gedit.desktop': <{'position': <9>}>, +- 'simple-scan.desktop': <{'position': <10>}>, +- 'org.gnome.Settings.desktop': <{'position': <11>}>, +- 'org.gnome.SystemMonitor.desktop': <{'position': <12>}>, +- 'org.gnome.Boxes.desktop': <{'position': <13>}>, +- 'org.gnome.Terminal.desktop': <{'position': <14>}>, +- 'Utilities': <{'position': <15>}>, +- 'org.gnome.Characters.desktop': <{'position': <16>}>, +- 'yelp.desktop': <{'position': <17>}>, +- 'org.gnome.Screenshot.desktop': <{'position': <18>}>, +- 'org.gnome.Cheese.desktop': <{'position': <19>}>, +- 'org.gnome.font-viewer.desktop': <{'position': <20>}> +- }] ++ @APP_GRID_APPS@ + ]]> + Layout of the app picker + +diff --git a/js/misc/config.js.in b/js/misc/config.js.in +index a5069e438a..6485d614f5 100644 +--- a/js/misc/config.js.in ++++ b/js/misc/config.js.in +@@ -20,3 +20,5 @@ export const LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'; + + export const HAVE_BLUETOOTH = pkg.checkSymbol('GnomeBluetooth', '3.0', + 'Client.default_adapter_state'); ++ ++export const UTILITIES_FOLDER_APPS = @UTILS_FOLDER_APPS@; +diff --git a/js/misc/meson.build b/js/misc/meson.build +index 5fc8ca433f..4b137ef3e6 100644 +--- a/js/misc/meson.build ++++ b/js/misc/meson.build +@@ -5,6 +5,10 @@ jsconf.set('GETTEXT_PACKAGE', meson.project_name()) + jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version) + jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager) + jsconf.set10('HAVE_PORTAL_HELPER', have_portal_helper) ++jsconf.set('UTILS_FOLDER_APPS', run_command( ++ generate_app_list, '../../data/default-apps/utilities-folder.txt', ++ check: true, ++).stdout()) + jsconf.set('datadir', datadir) + jsconf.set('libexecdir', libexecdir) + +diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js +index bdce3bdeed..992004b8f9 100644 +--- a/js/ui/appDisplay.js ++++ b/js/ui/appDisplay.js +@@ -24,6 +24,8 @@ import * as SystemActions from '../misc/systemActions.js'; + + import * as Main from './main.js'; + ++import {UTILITIES_FOLDER_APPS} from '../misc/config.js'; ++ + const MENU_POPUP_TIMEOUT = 600; + const POPDOWN_DIALOG_TIMEOUT = 500; + +@@ -60,22 +62,7 @@ const DEFAULT_FOLDERS = { + 'Utilities': { + name: 'X-GNOME-Utilities.directory', + categories: ['X-GNOME-Utilities'], +- apps: [ +- 'org.freedesktop.GnomeAbrt.desktop', +- 'nm-connection-editor.desktop', +- 'org.gnome.baobab.desktop', +- 'org.gnome.Connections.desktop', +- 'org.gnome.DejaDup.desktop', +- 'org.gnome.DiskUtility.desktop', +- 'org.gnome.Evince.desktop', +- 'org.gnome.FileRoller.desktop', +- 'org.gnome.font-viewer.desktop', +- 'org.gnome.Loupe.desktop', +- 'org.freedesktop.MalcontentControl.desktop', +- 'org.gnome.seahorse.Application.desktop', +- 'org.gnome.tweaks.desktop', +- 'org.gnome.Usage.desktop', +- ], ++ apps: UTILITIES_FOLDER_APPS, + }, + 'YaST': { + name: 'suse-yast.directory', +diff --git a/meson.build b/meson.build +index c9955ca651..6f10a366bf 100644 +--- a/meson.build ++++ b/meson.build +@@ -137,6 +137,7 @@ endif + mutter_typelibdir = mutter_dep.get_variable('typelibdir') + python = find_program('python3') + gjs = find_program('gjs') ++generate_app_list = find_program('meson/generate-app-list.py') + + cc = meson.get_compiler('c') + +diff --git a/meson/generate-app-list.py b/meson/generate-app-list.py +new file mode 100755 +index 0000000000..067c36967c +--- /dev/null ++++ b/meson/generate-app-list.py +@@ -0,0 +1,40 @@ ++#!/usr/bin/env python3 ++ ++import argparse ++ ++def read_app_ids(path) -> str: ++ ids = [] ++ with open(path, "r") as file: ++ for line in file: ++ # strip comments ++ line, _, _ = line.partition('#'); ++ line = line.strip() ++ if len(line) > 0: ++ ids.append(line) ++ return ids ++ ++def print_as_array(ids): ++ mapped_ids = list(map(lambda i: f" '{i}'", ids)) ++ print('[') ++ print(',\n'.join(mapped_ids)) ++ print(']') ++ ++def print_as_pages(ids): ++ mapped_ids = [] ++ for i, id in enumerate(ids): ++ mapped_ids.append(f" '{id}': <{{'position': <{i}>}}>") ++ ++ print('[{') ++ print(',\n'.join(mapped_ids)) ++ print('}]') ++ ++parser = argparse.ArgumentParser() ++parser.add_argument('--pages', action='store_true') ++parser.add_argument('file') ++args = parser.parse_args() ++ ++ids = read_app_ids(args.file) ++if args.pages: ++ print_as_pages(ids) ++else: ++ print_as_array(ids) +-- +2.48.1 + + +From aeb7adf061d74d75edc85f65520cb404e8a4361d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 14 Feb 2025 15:44:30 +0100 +Subject: [PATCH 2/3] data: Tweak dash/app-grid defaults + +With the current RHEL 10 app set, the dash and app grid look +rather empty. + +Address this by + - adding Calculator to dash + - moving Characters and Baobab out of the Utilities folder + +With those changes, there are at least 5 apps in the dash and 2 rows +in the app grid. +--- + data/default-apps/dash.txt | 1 + + data/default-apps/utilities-folder.txt | 2 -- + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/data/default-apps/dash.txt b/data/default-apps/dash.txt +index 2a8e8bcd06..d0c2c21eb8 100644 +--- a/data/default-apps/dash.txt ++++ b/data/default-apps/dash.txt +@@ -4,3 +4,4 @@ org.gnome.Music.desktop + gnome.Nautilus.desktop + org.gnome.Software.desktop + org.gnome.TextEditor.desktop ++org.gnome.Calculator.desktop +diff --git a/data/default-apps/utilities-folder.txt b/data/default-apps/utilities-folder.txt +index 6169977751..187e3cfc54 100644 +--- a/data/default-apps/utilities-folder.txt ++++ b/data/default-apps/utilities-folder.txt +@@ -1,10 +1,8 @@ + # Sorted by name as shown in menus, not filename + nm-connection-editor.desktop # Advanced Network Configuration + org.gnome.DejaDup.desktop # Backups +-org.gnome.Characters.desktop # Characters + org.gnome.Connections.desktop # Connections + org.gnome.DiskUtility.desktop # Disks +-org.gnome.baobab.desktop # Disk Usage Analyzer + org.gnome.Evince.desktop # Document Viewer + org.gnome.FileRoller.desktop # File Roller + org.gnome.font-viewer.desktop # Fonts +-- +2.48.1 + + +From 7a21fca2f59d68896f54600b64e5d9a216203e9e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 7 Feb 2025 15:54:15 +0100 +Subject: [PATCH 3/3] appDisplay: Filter apps in default folder + +We currently create the default folder with the corresponding +app list, regardless of whether the apps are actually part of +the default install or not. + +This matters when a user explicitly install such an app later, +as it will be hidden away in the folder rather than appended +to the app grid as expected. + +To avoid that, only add currently-installed apps to the folder +when creating it. + +Part-of: +--- + js/ui/appDisplay.js | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js +index 992004b8f9..6bd2d899cd 100644 +--- a/js/ui/appDisplay.js ++++ b/js/ui/appDisplay.js +@@ -1419,12 +1419,16 @@ class AppDisplay extends BaseAppView { + if (this._folderSettings.get_strv('folder-children').length > 0) + return; + ++ const appSys = Shell.AppSystem.get_default(); + const folders = Object.keys(DEFAULT_FOLDERS); + this._folderSettings.set_strv('folder-children', folders); + + const {path} = this._folderSettings; + for (const folder of folders) { + const {name, categories, apps} = DEFAULT_FOLDERS[folder]; ++ const filteredApps = apps ++ ? apps.filter(id => appSys.lookup_app(id) != null) ++ : []; + const child = new Gio.Settings({ + schema_id: 'org.gnome.desktop.app-folders.folder', + path: `${path}folders/${folder}/`, +@@ -1432,8 +1436,8 @@ class AppDisplay extends BaseAppView { + child.set_string('name', name); + child.set_boolean('translate', true); + child.set_strv('categories', categories); +- if (apps) +- child.set_strv('apps', apps); ++ if (filteredApps.length > 0) ++ child.set_strv('apps', filteredApps); + } + } + +-- +2.48.1 +