feat(desktop): toggle the tiling layout on Super+Shift+T
Flip between the dwindle and master layouts with one bind. Neither a dispatcher nor a keyword toggles the layout on its own, so a small pinned script reads general:layout and sets the other through hyprctl keyword.
This commit was merged in pull request #13.
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
@@ -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,"
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user