feat(desktop): add the desktop group and Hyprland session (task 0021) #13

Merged
alexion merged 5 commits from task-0021-desktop-group-and-hyprland-session into main 2026-07-22 10:09:37 -04:00
2 changed files with 16 additions and 0 deletions
Showing only changes of commit 5ca717ca4a - Show all commits

View File

@@ -60,3 +60,8 @@ Enable the desktop on neogaia.
- **Dropped from the plan.** - **Dropped from the plan.**
Mouse drag-to-move and drag-to-resize (`bindm`) were removed: they fall outside the task's enumerated keyboard bindings, and `resizeactive`/`movewindow` already cover floating windows from the keyboard. Mouse drag-to-move and drag-to-resize (`bindm`) were removed: they fall outside the task's enumerated keyboard bindings, and `resizeactive`/`movewindow` already cover floating windows from the keyboard.
Hardware media/brightness keys (the spec table's `XF86` row) are likewise deferred, since they depend on audio and backlight tooling not yet in scope. Hardware media/brightness keys (the spec table's `XF86` row) are likewise deferred, since they depend on audio and backlight tooling not yet in scope.
- **Added beyond the plan.**
`Super+Shift+T` toggles the tiling strategy between the dwindle and master layouts, added at the operator's request during review.
Neither a dispatcher nor a keyword flips the layout on its own, so a small script reads the current layout and sets the other through `hyprctl keyword`.
It is not in the spec keybind table.

View File

@@ -14,6 +14,16 @@ let
"$mod, ${toString n}, workspace, ${toString n}" "$mod, ${toString n}, workspace, ${toString n}"
"$mod SHIFT, ${toString n}, movetoworkspace, ${toString n}" "$mod SHIFT, ${toString n}, movetoworkspace, ${toString n}"
]) (lib.range 1 9); ]) (lib.range 1 9);
# Flip the tiling strategy between the two built-in layouts, since neither a
# dispatcher nor a keyword toggles it on its own.
toggleLayout = pkgs.writeShellScript "hypr-toggle-layout" ''
if [ "$(hyprctl getoption -j general:layout | ${pkgs.jq}/bin/jq -r .str)" = dwindle ]; then
hyprctl keyword general:layout master
else
hyprctl keyword general:layout dwindle
fi
'';
in in
{ {
options.modules.desktop.hyprland = { options.modules.desktop.hyprland = {
@@ -122,6 +132,7 @@ in
"$mod, F, fullscreen," "$mod, F, fullscreen,"
# togglesplit is a dwindle layout message, reached through layoutmsg. # togglesplit is a dwindle layout message, reached through layoutmsg.
"$mod, T, layoutmsg, togglesplit" "$mod, T, layoutmsg, togglesplit"
"$mod SHIFT, T, exec, ${toggleLayout}"
"$mod SHIFT, Q, killactive," "$mod SHIFT, Q, killactive,"
"$mod CTRL, Q, forcekillactive," "$mod CTRL, Q, forcekillactive,"
] ]