Add hyprland-move-window script

This commit is contained in:
ItsDrike 2024-06-10 14:23:59 +02:00
parent 14d5cf5261
commit 98f1ed0089
Signed by: ItsDrike
GPG key ID: FA2745890B7048C0
5 changed files with 47 additions and 2 deletions

View file

@ -89,7 +89,10 @@
# #
# Move floating windows # Move floating windows
# #
# TODO: requires script (move-window.sh) "SUPER_ALT, left, exec, hyprland-move-window 100 l"
"SUPER_ALT, right, exec, hyprland-move-window 100 r"
"SUPER_ALT, up, exec, hyprland-move-window 100 u"
"SUPER_ALT, down, exec, hyprland-move-window 100 d"
# #
# Override split direction for next window (manual tiling) # Override split direction for next window (manual tiling)

View file

@ -6,7 +6,7 @@
}: let }: let
inherit (lib) mkIf; inherit (lib) mkIf;
inherit (import ./packages {inherit pkgs;}) hyprland-swap-workspace; inherit (import ./packages {inherit pkgs;}) hyprland-swap-workspace hyprland-move-window;
cfg = osConfig.myOptions.home-manager.wms.hyprland; cfg = osConfig.myOptions.home-manager.wms.hyprland;
in { in {
@ -17,6 +17,7 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = with pkgs; [ home.packages = with pkgs; [
hyprland-swap-workspace hyprland-swap-workspace
hyprland-move-window
]; ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {

View file

@ -4,6 +4,7 @@
}: let }: let
packages = { packages = {
hyprland-swap-workspace = pkgs.callPackage ./hyprland-swap-workspace {}; hyprland-swap-workspace = pkgs.callPackage ./hyprland-swap-workspace {};
hyprland-move-window = pkgs.callPackage ./hyprland-move-window {};
}; };
in in
packages packages

View file

@ -0,0 +1,5 @@
{pkgs, ...}:
pkgs.writeShellScriptBin "hyprland-move-window" ''
${builtins.readFile ./hyprland-move-window.sh}
''

View file

@ -0,0 +1,35 @@
#!/bin/sh
RESIZE_SIZE=${1:?Missing resize size}
RESIZE_PARAMS_X=0
RESIZE_PARAMS_Y=0
DIRECTION=${2:?Missing move direction}
case $DIRECTION in
l)
RESIZE_PARAMS_X=-$RESIZE_SIZE
;;
r)
RESIZE_PARAMS_X=$RESIZE_SIZE
;;
u)
RESIZE_PARAMS_Y=-$RESIZE_SIZE
;;
d)
RESIZE_PARAMS_Y=$RESIZE_SIZE
;;
*)
echo "kbye"
return 1
;;
esac
ACTIVE_WINDOW=$(hyprctl activewindow -j)
IS_FLOATING=$(echo "$ACTIVE_WINDOW" | jq .floating)
if [ "$IS_FLOATING" = "true" ]; then
hyprctl dispatch moveactive "$RESIZE_PARAMS_X" "$RESIZE_PARAMS_Y"
else
hyprctl dispatch movewindow "$DIRECTION"
fi