feat(desktop): add the desktop group and Hyprland session (task 0021) #13
@@ -102,3 +102,7 @@ The domain model (Host, Module, Skeleton, Auto-loader, Enable convention, overla
|
|||||||
The Lua backend mangles `$mod`-style variables and INI `bind=` strings into invalid Lua (`hl.$mod("SUPER")`), and does not fail the build, since the config is only text.
|
The Lua backend mangles `$mod`-style variables and INI `bind=` strings into invalid Lua (`hl.$mod("SUPER")`), and does not fail the build, since the config is only text.
|
||||||
Set `configType = "hyprlang"` to get the native `hyprland.conf` whose variable and bind syntax the usual settings are written in.
|
Set `configType = "hyprlang"` to get the native `hyprland.conf` whose variable and bind syntax the usual settings are written in.
|
||||||
Render the file to check which format is in effect: `nix build --print-out-paths .#nixosConfigurations.<host>.config.home-manager.users.<user>.xdg.configFile.\"hypr/hyprland.conf\".source` (only the enabled `configType`'s key exists).
|
Render the file to check which format is in effect: `nix build --print-out-paths .#nixosConfigurations.<host>.config.home-manager.users.<user>.xdg.configFile.\"hypr/hyprland.conf\".source` (only the enabled `configType`'s key exists).
|
||||||
|
- An invalid Hyprland dispatcher or config-option name never fails the nix build, since `hyprland.conf` is only text, so it surfaces only when the compositor loads the file at login.
|
||||||
|
The build/render check is therefore blind to it, and the real test is a running session (or reading `~/.config/hypr/hyprland.conf` against the running package's own names).
|
||||||
|
Two that bit on 0.55.4: the dwindle split actions `togglesplit`, `swapsplit`, and `pseudo` are layout messages reached through the `layoutmsg` dispatcher (`bind = $mod, T, layoutmsg, togglesplit`), not top-level dispatchers, and the old `dwindle:pseudotile` option is gone.
|
||||||
|
Confirm names against the pinned package rather than the wiki, whose "latest" drifts from it.
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true;
|
|
||||||
preserve_split = true;
|
preserve_split = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -121,7 +120,8 @@ in
|
|||||||
|
|
||||||
"$mod, Space, togglefloating,"
|
"$mod, Space, togglefloating,"
|
||||||
"$mod, F, fullscreen,"
|
"$mod, F, fullscreen,"
|
||||||
"$mod, T, togglesplit,"
|
# togglesplit is a dwindle layout message, reached through layoutmsg.
|
||||||
|
"$mod, T, layoutmsg, togglesplit"
|
||||||
"$mod SHIFT, Q, killactive,"
|
"$mod SHIFT, Q, killactive,"
|
||||||
"$mod CTRL, Q, forcekillactive,"
|
"$mod CTRL, Q, forcekillactive,"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
# Ghostty as the desktop terminal.
|
# Ghostty as the desktop terminal.
|
||||||
@@ -13,6 +12,12 @@ in
|
|||||||
options.modules.desktop.terminal.enable = lib.mkEnableOption "Ghostty as the desktop terminal";
|
options.modules.desktop.terminal.enable = lib.mkEnableOption "Ghostty as the desktop terminal";
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home-manager.users.${user}.home.packages = [ pkgs.ghostty ];
|
home-manager.users.${user}.programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Reuse a single process, so each window after the first opens instantly
|
||||||
|
# instead of paying a fresh GTK startup.
|
||||||
|
settings.gtk-single-instance = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user