9960e874c4
- Updated `binds.nix` files for both Niri and Hyprland to utilize a centralized `dmsIpcBinds` structure, improving maintainability and consistency across keybindings. - Introduced `dmsIpcBinds` in `default.nix` for both modules to streamline the command definitions for DMS IPC calls. - Enhanced `dms` module to define shared IPC commands, ensuring uniform command formatting for different compositors.
71 lines
3.1 KiB
Nix
71 lines
3.1 KiB
Nix
{ ... }: {
|
|
flake.nixosModules.desktopShellDmsOptions = { lib, ... }: {
|
|
options.chiasson.desktop.shells.dms = {
|
|
enableGpuTemp = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "GPU temp in DMS bar.";
|
|
};
|
|
obsidianVaults = lib.mkOption {
|
|
type = lib.types.listOf lib.types.str;
|
|
default = [ ];
|
|
example = [ "/mnt/zimaos/Obsidian/Home/.obsidian" ];
|
|
description = "Vault `.obsidian/` dirs; matugen writes `<vault>/snippets/matugen.css`.";
|
|
};
|
|
extraRightBarWidgets = lib.mkOption {
|
|
type = lib.types.listOf lib.types.attrs;
|
|
default = [ ];
|
|
description = "Extra right-bar widgets merged into the first-run DMS settings seed.";
|
|
};
|
|
rebuildCommand = lib.mkOption {
|
|
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
|
default = null;
|
|
example = [ "sudo" "nixos-rebuild" "switch" "--flake" ".#14900k" ];
|
|
description = "Command used by DMS nix-monitor widget for rebuild actions.";
|
|
};
|
|
defaultSeedDir = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.path;
|
|
default = null;
|
|
example = ./dms-defaults;
|
|
description = ''
|
|
Host-specific first-run DMS config seed directory. When set, copies
|
|
`settings.json` (required) and `plugin_settings.json` (optional) from this
|
|
directory into `~/.config/DankMaterialShell/` on fresh profiles.
|
|
Replaces the bundled `default-settings.nix` template for `settings.json`.
|
|
'';
|
|
};
|
|
bundleThirdPartyPlugins = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
Install bundled DMS plugins from flake inputs (third-party + chiasson).
|
|
Disable individual plugins in DMS settings; set this to false to skip all bundled plugins.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
flake.homeManagerModules.desktopShellDms = import ./_private/hm.nix;
|
|
|
|
# DMS IPC commands shared between Niri and Hyprland keybind tables.
|
|
# Defines flake.lib.dmsIpcBinds so each compositor formats the same
|
|
# command string in its native shape — Niri attrs vs Hyprland string-list.
|
|
# Adding a new DMS keybind requires editing this file plus the
|
|
# per-compositor bind layout, not the command string.
|
|
flake.lib.dmsIpcBinds = {
|
|
spotlight = "dms ipc call spotlight toggle";
|
|
clipboard = "dms ipc call clipboard toggle";
|
|
notepad = "dms ipc call notepad toggle";
|
|
notifications = "dms ipc call notifications toggle";
|
|
processlist = "dms ipc call processlist toggle";
|
|
# Hyprland prefers focusOrToggle (window-aware); niri subscribes to toggle.
|
|
processlistFocus = "dms ipc call processlist focusOrToggle";
|
|
settingsFocus = "dms ipc call settings focusOrToggle";
|
|
barToggle = ''dms ipc call bar toggle name "Main Bar"; dms ipc call bar toggle name "Bar 2"'';
|
|
barToggleBar2 = ''dms ipc call bar toggle name "Bar 2"'';
|
|
ephemera = "dms ipc call ephemera toggle";
|
|
wallpaperCarousel = "dms ipc call wallpaperCarousel toggle";
|
|
lock = "dms ipc call lock lock";
|
|
};
|
|
}
|