Add multi-monitor support
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -21,67 +21,77 @@
|
||||
"$mod" = "Super_L";
|
||||
"$term" = lib.meta.getExe pkgs.kitty;
|
||||
|
||||
bind = [
|
||||
"$mod, Return, exec, $term"
|
||||
bind =
|
||||
let
|
||||
bindHelper = lib.meta.getExe (
|
||||
pkgs.writeShellApplication {
|
||||
name = "hyprland-bind-helper";
|
||||
bashOptions = [
|
||||
"errexit"
|
||||
"pipefail"
|
||||
];
|
||||
runtimeInputs = with pkgs; [ hyprland ];
|
||||
text = builtins.readFile ./scripts/bind.sh;
|
||||
}
|
||||
);
|
||||
in
|
||||
[
|
||||
"$mod, Return, exec, $term"
|
||||
|
||||
"$mod, `, togglespecialworkspace"
|
||||
"$mod, 1, workspace, 1"
|
||||
"$mod, 2, workspace, 2"
|
||||
"$mod, 3, workspace, 3"
|
||||
"$mod, 4, workspace, 4"
|
||||
"$mod, 5, workspace, 5"
|
||||
"$mod, 6, workspace, 6"
|
||||
"$mod, 7, workspace, 7"
|
||||
"$mod, 8, workspace, 8"
|
||||
"$mod, 9, workspace, 9"
|
||||
"$mod, 0, workspace, 10"
|
||||
"$mod, 1, exec, ${bindHelper} 1"
|
||||
"$mod, 2, exec, ${bindHelper} 2"
|
||||
"$mod, 3, exec, ${bindHelper} 3"
|
||||
"$mod, 4, exec, ${bindHelper} 4"
|
||||
"$mod, 5, exec, ${bindHelper} 5"
|
||||
"$mod, 6, exec, ${bindHelper} 6"
|
||||
"$mod, 7, exec, ${bindHelper} 7"
|
||||
"$mod, 8, exec, ${bindHelper} 8"
|
||||
"$mod, 9, exec, ${bindHelper} 9"
|
||||
"$mod, 0, exec, ${bindHelper} 10"
|
||||
|
||||
"$mod_Shift, `, movetoworkspacesilent, special"
|
||||
"$mod_Shift, 1, movetoworkspacesilent, 1"
|
||||
"$mod_Shift, 2, movetoworkspacesilent, 2"
|
||||
"$mod_Shift, 3, movetoworkspacesilent, 3"
|
||||
"$mod_Shift, 4, movetoworkspacesilent, 4"
|
||||
"$mod_Shift, 5, movetoworkspacesilent, 5"
|
||||
"$mod_Shift, 6, movetoworkspacesilent, 6"
|
||||
"$mod_Shift, 7, movetoworkspacesilent, 7"
|
||||
"$mod_Shift, 8, movetoworkspacesilent, 8"
|
||||
"$mod_Shift, 9, movetoworkspacesilent, 9"
|
||||
"$mod_Shift, 0, movetoworkspacesilent, 10"
|
||||
"$mod_Shift, 1, exec, ${bindHelper} 1 move"
|
||||
"$mod_Shift, 2, exec, ${bindHelper} 2 move"
|
||||
"$mod_Shift, 3, exec, ${bindHelper} 3 move"
|
||||
"$mod_Shift, 4, exec, ${bindHelper} 4 move"
|
||||
"$mod_Shift, 5, exec, ${bindHelper} 5 move"
|
||||
"$mod_Shift, 6, exec, ${bindHelper} 6 move"
|
||||
"$mod_Shift, 7, exec, ${bindHelper} 7 move"
|
||||
"$mod_Shift, 8, exec, ${bindHelper} 8 move"
|
||||
"$mod_Shift, 9, exec, ${bindHelper} 9 move"
|
||||
"$mod_Shift, 0, exec, ${bindHelper} 1 move0"
|
||||
|
||||
"$mod_Ctrl, Space, workspaceopt, allfloat"
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, h, movefocus, l"
|
||||
"$mod, down, movefocus, d"
|
||||
"$mod, j, movefocus, d"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, k, movefocus, u"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, l, movefocus, r"
|
||||
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, h, movefocus, l"
|
||||
"$mod, down, movefocus, d"
|
||||
"$mod, j, movefocus, d"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, k, movefocus, u"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, l, movefocus, r"
|
||||
"$mod_Shift, left, movewindow, l"
|
||||
"$mod_Shift, h, movewindow, l"
|
||||
"$mod_Shift, down, movewindow, d"
|
||||
"$mod_Shift, j, movewindow, d"
|
||||
"$mod_Shift, up, movewindow, u"
|
||||
"$mod_Shift, k, movewindow, u"
|
||||
"$mod_Shift, right, movewindow, r"
|
||||
"$mod_Shift, l, movewindow, r"
|
||||
|
||||
"$mod_Shift, left, movewindow, l"
|
||||
"$mod_Shift, h, movewindow, l"
|
||||
"$mod_Shift, down, movewindow, d"
|
||||
"$mod_Shift, j, movewindow, d"
|
||||
"$mod_Shift, up, movewindow, u"
|
||||
"$mod_Shift, k, movewindow, u"
|
||||
"$mod_Shift, right, movewindow, r"
|
||||
"$mod_Shift, l, movewindow, r"
|
||||
"$mod, Tab, cyclenext"
|
||||
"$mod, Tab, bringactivetotop"
|
||||
"$mod_Shift, Tab, cyclenext, prev"
|
||||
"$mod_Shift, Tab, bringactivetotop"
|
||||
|
||||
"$mod, Tab, cyclenext"
|
||||
"$mod, Tab, bringactivetotop"
|
||||
"$mod_Shift, Tab, cyclenext, prev"
|
||||
"$mod_Shift, Tab, bringactivetotop"
|
||||
"$mod, f, fullscreen, 0"
|
||||
"$mod, m, fullscreen, 1"
|
||||
"$mod, p, pin"
|
||||
"$mod, Space, togglefloating"
|
||||
"$mod, Space, centerwindow"
|
||||
"$mod, q, killactive"
|
||||
|
||||
"$mod, f, fullscreen, 0"
|
||||
"$mod, m, fullscreen, 1"
|
||||
"$mod, p, pin"
|
||||
"$mod, Space, togglefloating"
|
||||
"$mod, Space, centerwindow"
|
||||
"$mod, q, killactive"
|
||||
|
||||
"Ctrl_Alt, Delete, exit"
|
||||
];
|
||||
"Ctrl_Alt, Delete, exit"
|
||||
];
|
||||
|
||||
binde = [
|
||||
"$mod_Ctrl, left, resizeactive, -20 0"
|
||||
|
@@ -43,7 +43,7 @@ in
|
||||
systemd
|
||||
];
|
||||
runtimeEnv.SERVICES = lib.strings.concatStringsSep " " cfg.onMonitorChange.services;
|
||||
text = builtins.readFile ./monitors.sh;
|
||||
text = builtins.readFile ./scripts/monitors.sh;
|
||||
}
|
||||
)
|
||||
} &";
|
||||
|
24
hosts/common/configs/user/gui/hyprland/scripts/bind.sh
Normal file
24
hosts/common/configs/user/gui/hyprland/scripts/bind.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
BASE_WS="$1"
|
||||
ACTION="$2"
|
||||
|
||||
current_ws_id="$(hyprctl -j activeworkspace | jq -r '.id')"
|
||||
|
||||
ws_json="$(hyprctl -j workspaces)"
|
||||
max_ws_id="$(echo "$ws_json" | jq -r '[.[] | .id] | max')"
|
||||
|
||||
BLOCK_SIZE=10
|
||||
|
||||
total_blocks=$(((max_ws_id - 1) / BLOCK_SIZE + 1))
|
||||
current_block=$(((current_ws_id - 1) / BLOCK_SIZE))
|
||||
target_ws=$((current_block * BLOCK_SIZE + BASE_WS))
|
||||
|
||||
if [ "$target_ws" -eq "$current_ws_id" ]; then
|
||||
next_block=$(( (current_block + 1) % total_blocks ))
|
||||
target_ws=$(( next_block * BLOCK_SIZE + BASE_WS ))
|
||||
fi
|
||||
|
||||
if [ "$ACTION" = "move" ]; then
|
||||
hyprctl dispatch movetoworkspacesilent "$target_ws"
|
||||
else
|
||||
hyprctl dispatch workspace "$target_ws"
|
||||
fi
|
Reference in New Issue
Block a user