Commit bbdd162

HPCesia <me@hpcesia.com>
2026-02-21 13:41:29
feat: update noctalia shell config
1 parent 93506d8
Changed files (7)
modules
desktop
apps
desktop-environment
modules/desktop/apps/kdeconnect.nix
@@ -16,11 +16,15 @@
     };
   };
 
-  flake.modules.homeManager.desktop = {osConfig, ...}: {
+  flake.modules.homeManager.desktop = {osConfig, ...}: let
+    isPlasma = osConfig.services.desktopManager.plasma6.enable;
+    isNoctalia = osConfig.services.noctalia-shell.enable or false;
+  in {
     services.kdeconnect = {
       enable = true;
       # If using Plasma, KDE Connect has integrated indicator.
-      indicator = !osConfig.services.desktopManager.plasma6.enable;
+      # If using Noctalia, a KDE Connect widget plugin is available, so no indicator is needed.
+      indicator = !isPlasma && !isNoctalia;
     };
   };
 }
modules/desktop/desktop-environment/discrete/shell/noctalia/keybindings/niri.nix
@@ -8,6 +8,10 @@
       programs.niri.settings.binds = with config.lib.niri.actions; let
         noctalia = spawn "noctalia-shell" "ipc" "call";
       in {
+        "Mod+Shift+Slash" = {
+          action = noctalia "plugin:keybind-cheatsheet" "toggle";
+          hotkey-overlay.title = "Toggle Hotkey Cheatsheet";
+        };
         "Mod+Space" = lib.mkIf (!(config.services.vicinae.enable or false)) {
           action = noctalia "launcher" "toggle";
           hotkey-overlay.title = "Toggle Application Launcher";
modules/desktop/desktop-environment/discrete/shell/noctalia/bar.nix
@@ -11,18 +11,13 @@
       marginHorizontal = 8; # 8px
       marginVertical = 8; # 8px
       widgets = {
-        center = [
-          {
-            id = "Workspace";
-            hideUnoccupied = true;
-            labelMode = "index";
-          }
-        ];
         left = [
           {
             id = "SystemMonitor";
             usePrimaryColor = true;
           }
+          {id = "plugin:kde-connect";}
+          {id = "plugin:privacy-indicator";}
           {
             id = "MediaMini";
             hideMode = "hidden";
@@ -33,16 +28,23 @@
             showArtistFirst = false;
           }
         ];
-        right = [
+        center = [
           {
-            id = "Tray";
+            id = "Workspace";
+            hideUnoccupied = true;
+            labelMode = "index";
           }
+        ];
+        right = [
+          {id = "Tray";}
           {
             id = "NotificationHistory";
             hideWhenZero = true;
             showUnreadBadge = true;
           }
           {id = "Volume";}
+          {id = "Bluetooth";}
+          {id = "Network";}
           {
             id = "Battery";
             showNoctaliaPerformance = true;
modules/desktop/desktop-environment/discrete/shell/noctalia/colors.nix
@@ -1,12 +1,8 @@
-{lib, ...}: {
+{
   flake.modules.homeManager.de-shell-noctalia = {config, ...}: {
     programs.noctalia-shell.settings.colorSchemes = {
       darkMode = config.lib.stylix.colors.variant == "dark";
       useWallpaperColors = false;
     };
-
-    programs.noctalia-shell.colors = {
-      mPrimary = lib.mkForce config.lib.stylix.colors.base0E;
-    };
   };
 }
modules/desktop/desktop-environment/discrete/shell/noctalia/plugins.nix
@@ -0,0 +1,42 @@
+{
+  flake.modules.homeManager.de-shell-noctalia = {pkgs, ...}: {
+    home.packages = [
+      pkgs.kdePackages.qttools # Needed for KDE Connect plugin to work properly
+    ];
+
+    programs.noctalia-shell = {
+      plugins = {
+        sources = [
+          {
+            enabled = true;
+            name = "Official Noctalia Plugins";
+            url = "https://github.com/noctalia-dev/noctalia-plugins";
+          }
+        ];
+        states = {
+          kaomoji-provider = {
+            enabled = true;
+            sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
+          };
+          kde-connect = {
+            enabled = true;
+            sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
+          };
+          keybind-cheatsheet = {
+            enabled = true;
+            sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
+          };
+          privacy-indicator = {
+            enabled = true;
+            sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
+          };
+        };
+        version = 2;
+      };
+
+      pluginSettings = {
+        privacy-indicator.hideInactive = true;
+      };
+    };
+  };
+}
modules/desktop/desktop-environment/discrete/wm/niri/default.nix
@@ -21,6 +21,7 @@
     programs.niri.package = osConfig.programs.niri.package;
     programs.niri.settings = {
       screenshot-path = "${config.xdg.userDirs.pictures}/Screenshots/Screenshot_%Y-%m-%d_%H-%M-%S.png";
+      hotkey-overlay.skip-at-startup = true;
     };
   };
 }
modules/desktop/desktop-environment/discrete/wm/niri/keybinding.nix
@@ -3,7 +3,7 @@
     programs.niri.settings.binds = with config.lib.niri.actions; {
       # Mod-Shift-/, which is usually the same as Mod-?,
       # shows a list of important hotkeys.
-      "Mod+Shift+Slash".action = show-hotkey-overlay;
+      "Mod+Shift+Slash".action = lib.mkIf (config.services.noctalia-shell.enable or false) show-hotkey-overlay;
       "Mod+Escape".action = toggle-overview;
 
       "Mod+Shift+E".action = quit;