Set Logo Menu defaults and finalize flatpak setup

This commit is contained in:
randogoth 2026-02-03 17:58:54 +02:00
parent 6bea3e57a7
commit c24571128b
7 changed files with 189 additions and 5 deletions

View file

@ -1,12 +1,49 @@
{ pkgs, ... }:
{ pkgs, lib, ... }:
{
let
# Patched Logo Menu extension (same patch as installed system-wide).
logoMenuExtension = pkgs.gnomeExtensions.logo-menu.overrideAttrs (old: {
patches = (old.patches or []) ++ [ ./patches/logo-menu-custom-menu.patch ];
});
# Expose the extension schema in the layout expected by gsettings overrides.
logoMenuSchemas = pkgs.runCommand "logo-menu-gsettings-schemas" { } ''
schemaSrc="${logoMenuExtension}/share/gnome-shell/extensions/logomenu@aryan_k/schemas";
dest=$out/share/gsettings-schemas/logo-menu-gsettings-schemas/glib-2.0/schemas
mkdir -p "$dest"
cp -a "$schemaSrc"/*.xml "$dest"/
'';
in {
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
services.desktopManager.gnome.extraGSettingsOverridePackages = [
pkgs.gnome-shell
logoMenuSchemas
];
# Ensure GNOME sees the compiled overrides.
environment.profileRelativeEnvVars.XDG_DATA_DIRS = lib.mkAfter [
"/share/gsettings-schemas/nixos-gsettings-overrides"
];
services.gnome.core-developer-tools.enable = false;
services.gnome.games.enable = false;
# System default GNOME Shell extensions (user can still toggle/override).
services.desktopManager.gnome.extraGSettingsOverrides = ''
[org/gnome/shell]
disable-user-extensions=false
enabled-extensions=['all-in-one-clipboard@NiffirgkcaJ.github.com','AlphabeticalAppGrid@stuarthayhurst','app-hider@lynith.dev','apps@github.com.howbea','blur-my-shell@aunetx','caffeine@patapon.info','logomenu@aryan_k','places-menu@gnome-shell-extensions.gcampax.github.com','restartto@tiagoporsch.github.io']
favorite-apps=['firefox.desktop','org.gnome.Settings.desktop','org.gnome.Ptyxis.desktop','com.mattjakeman.ExtensionManager.desktop']
[org/gnome/shell/extensions/logo-menu]
menu-button-icon-image=51
menu-button-terminal='ghostty'
menu-button-system-monitor='flatpak run io.missioncenter.MissionCenter'
menu-button-extensions-app='com.mattjakeman.ExtensionManager.desktop'
hide-softwarecentre=true
'';
environment.gnome.excludePackages = with pkgs; [
# comment out to include
gnome-tour

View file

@ -0,0 +1,132 @@
diff -ru orig/extension.js mod/extension.js
--- orig/extension.js 2026-02-03 17:53:49.513281802 +0200
+++ mod/extension.js 2026-02-03 17:53:49.528021029 +0200
@@ -47,13 +47,8 @@
this.setIconSize();
this.add_child(this.icon);
- // Menu
- this._settings.connectObject('changed::hide-softwarecentre', () => this._displayMenuItems(), this);
- this._settings.connectObject('changed::show-power-options', () => this._displayMenuItems(), this);
- this._settings.connectObject('changed::hide-forcequit', () => this._displayMenuItems(), this);
- this._settings.connectObject('changed::show-lockscreen', () => this._displayMenuItems(), this);
- this._settings.connectObject('changed::show-activities-button', () => this._displayMenuItems(), this);
- this._displayMenuItems();
+ // Menu (custom layout)
+ this._displayMenuItems();
// bind middle click option to toggle overview
this.connect('button-press-event', this._buttonPressEvent.bind(this));
@@ -64,51 +59,19 @@
}
_displayMenuItems() {
- const showPowerOptions = this._settings.get_boolean('show-power-options');
- const showForceQuit = !this._settings.get_boolean('hide-forcequit');
- const showLockScreen = this._settings.get_boolean('show-lockscreen');
- const showSoftwareCenter = !this._settings.get_boolean('hide-softwarecentre');
- const showActivitiesButton = this._settings.get_boolean('show-activities-button');
-
- this.menu.removeAll();
-
- this._addItem(new MenuItem(_('About My System'), () => this._aboutThisDistro()));
- // this._addItem(new MenuItem(_('System Settings...'), () => this._systemPreferences()));
- this._addItem(new PopupMenu.PopupSeparatorMenuItem());
-
- if (!showActivitiesButton)
- this._addItem(new MenuItem(_('Activities'), () => this._overviewToggle()));
-
- this._addItem(new MenuItem(_('App Grid'), () => this._showAppGrid()));
- this._addItem(new PopupMenu.PopupSeparatorMenuItem());
-
- if (showSoftwareCenter)
- this._addItem(new MenuItem(_('Software Center'), () => this._openSoftwareCenter()));
-
- this._addItem(new MenuItem(_('System Monitor'), () => this._openSystemMonitor()));
- this._addItem(new MenuItem(_('Terminal'), () => this._openTerminal()));
- this._addItem(new MenuItem(_('Extensions'), () => this._openExtensionsApp()));
-
- if (showForceQuit) {
- this._addItem(new PopupMenu.PopupSeparatorMenuItem());
- this._addItem(new MenuItem(_('Force Quit App'), () => this._forceQuit()));
- }
-
- if (showPowerOptions) {
- this._addItem(new PopupMenu.PopupSeparatorMenuItem());
- this._addItem(new MenuItem(_('Sleep'), () => this._sleep()));
- this._addItem(new MenuItem(_('Restart...'), () => this._restart()));
- this._addItem(new MenuItem(_('Shut Down...'), () => this._shutdown()));
- this._addItem(new PopupMenu.PopupSeparatorMenuItem());
-
- if (showLockScreen)
- this._addItem(new MenuItem(_('Lock Screen'), () => this._lockScreen()));
-
- this._addItem(new MenuItem(_('Log Out...'), () => this._logOut()));
- } else if (!showPowerOptions && showLockScreen) {
- this._addItem(new PopupMenu.PopupSeparatorMenuItem());
- this._addItem(new MenuItem(_('Lock Screen'), () => this._lockScreen()));
- }
+ this.menu.removeAll();
+
+ // Custom menu layout
+ this._addItem(new MenuItem(_('About My System'), () => this._aboutThisDistro()));
+ this._addItem(new MenuItem(_('System Settings'), () => this._systemPreferences()));
+
+ this._addItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._addItem(new MenuItem(_('Extensions'), () => this._openExtensionsApp()));
+ this._addItem(new MenuItem(_('System Monitor'), () => this._openSystemMonitor()));
+ this._addItem(new MenuItem(_('Terminal'), () => this._openTerminal()));
+
+ this._addItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._addItem(new MenuItem(_('Containers'), () => this._openContainers()));
}
_buttonPressEvent(actor, event) {
diff -ru orig/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml mod/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml
--- orig/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml 2026-02-03 17:53:49.513219947 +0200
+++ mod/schemas/org.gnome.shell.extensions.logo-menu.gschema.xml 2026-02-03 17:53:49.531021112 +0200
@@ -4,7 +4,7 @@
<schema path="/org/gnome/shell/extensions/Logo-menu/" id="org.gnome.shell.extensions.logo-menu">
<key type="i" name="menu-button-icon-image">
- <default>0</default>
+ <default>51</default>
<summary>Menu Button Icon Image</summary>
<description>Change the Menu Button Icon Image.</description>
</key>
@@ -22,7 +22,7 @@
</key>
<key type="s" name="menu-button-extensions-app">
- <default>"org.gnome.Extensions.desktop"</default>
+ <default>"com.mattjakeman.ExtensionManager.desktop"</default>
<summary>Preffered Extensions app</summary>
<description>Change to preffered Extensions app.</description>
</key>
@@ -34,7 +34,7 @@
</key>
<key type="s" name="menu-button-terminal">
- <default>"gnome-terminal"</default>
+ <default>"ghostty"</default>
<summary>Menu Button Terminal</summary>
<description>Change the Menu Button Terminal.</description>
</key>
@@ -70,7 +70,7 @@
</key>
<key type="b" name="hide-softwarecentre">
- <default>false</default>
+ <default>true</default>
<summary>Toggle Software Centre option visibility</summary>
<description>Toggle Software Centre option visibility.</description>
</key>
@@ -95,7 +95,7 @@
</key>
<key type="s" name="menu-button-system-monitor">
- <default>"gnome-system-monitor"</default>
+ <default>"flatpak run io.missioncenter.MissionCenter"</default>
<summary>Menu System Monitor</summary>
<description>Change the Menu System Monitor.</description>
</key>

View file

@ -20,6 +20,7 @@
packages = [
"com.github.tchx84.Flatseal"
"io.github.kolunmi.Bazaar"
"io.missioncenter.MissionCenter"
];
};
}

View file

@ -9,6 +9,19 @@
pkgs.flatpak
pkgs.ghostty
pkgs.git
pkgs.gnome-browser-connector # lets users install extensions from GNOME Extensions website
pkgs.gnome-extension-manager # GUI to browse/install GNOME Shell extensions
pkgs.gnomeExtensions.all-in-one-clipboard
pkgs.gnomeExtensions.alphabetical-app-grid
pkgs.gnomeExtensions.app-hider
pkgs.gnomeExtensions.apps
pkgs.gnomeExtensions.blur-my-shell
pkgs.gnomeExtensions.caffeine
(pkgs.gnomeExtensions.logo-menu.overrideAttrs (old: {
patches = (old.patches or []) ++ [ ../desktop/patches/logo-menu-custom-menu.patch ];
}))
pkgs.gnomeExtensions.places-status-indicator
pkgs.gnomeExtensions.restart-to
pkgs.home-manager
pkgs.just
pkgs.libnotify