diff --git a/config/hypr/hyprland.lua b/config/hypr/hyprland.lua index 659042b..3219f27 100644 --- a/config/hypr/hyprland.lua +++ b/config/hypr/hyprland.lua @@ -209,10 +209,14 @@ function focus_or_launch(opts) on_current_monitor = true, })) end - hl.dispatch(hl.dsp.focus({ window = "address:" .. client.address })) + + local layout = client.layout + if not (layout and layout.name == "master" and layout.is_master) then + hl.dispatch(hl.dsp.layout("swapwithmaster")) + end return end end @@ -235,14 +239,18 @@ function fetch_or_launch(opts) if value and string.find(string.lower(value), string.lower(match), 1, true) then if use_workspace and client.workspace and client.workspace.id then hl.dispatch(hl.dsp.window.move({ - workspace = active_workspace.id, + workspace = active_workspace, on_current_monitor = true, + window = client, })) end - hl.dispatch(hl.dsp.focus({ - window = "address:" .. client.address - })) + hl.dispatch(hl.dsp.focus({window = client})) + + local layout = client.layout + if not (layout and layout.name == "master" and layout.is_master) then + hl.dispatch(hl.dsp.layout("swapwithmaster")) + end return end end diff --git a/script/hyprland-fetch-client b/script/hyprland-fetch-client index cb3671b..fab896e 100755 --- a/script/hyprland-fetch-client +++ b/script/hyprland-fetch-client @@ -3,7 +3,9 @@ chooser="rofi -i -dmenu -display-columns 1" workspace=$(hyprctl activeworkspace -j | jq -r '.id') selected=$(hyprctl clients -j | jq -r 'to_entries | .[] | select(.value.hidden == false) | "\(.value.title)\t\(.value.class)::\(.value.address)"' | $chooser -p 'Client to Fetch') -#address=$(hyprctl clients -j | jq -r "to_entries | .[] | select(.value.title == \"$selected\") | \"\(.value.address)\"") address=$(echo "$selected" | awk -F '::' '{print $NF}') -#hyprctl dispatch movetoworkspace "$workspace,address:$address" -hyprctl dispatch "hl.dsp.window.move({workspace = $workspace, follow = true, window = \"address:$address\"})" +if [ -z "$address" ]; then + notify-send "No client selected" + exit 1 +fi +hyprctl dispatch "fetch_or_launch({ match = '$address', field = 'address', cmd = 'notify-send \"$selected not found\"'})" diff --git a/script/hyprland-focus-client b/script/hyprland-focus-client index f62b751..903406f 100755 --- a/script/hyprland-focus-client +++ b/script/hyprland-focus-client @@ -3,7 +3,8 @@ chooser="rofi -i -dmenu -display-columns 1" selected=$(hyprctl clients -j | jq -r 'to_entries | .[] | select(.value.hidden == false) | "\(.value.title) \t\(.value.class)::\(.value.address)"' | $chooser -p 'Client to Focus') address=$(echo $selected | awk -F'::' '{print $NF}') -json=$(hyprctl clients -j | jq -r ".[] | select(.address == \"$address\")") -workspace=$(echo $json | jq -r '.workspace.id') -hyprctl dispatch "hl.dsp.focus({workspace = $workspace , on_current_monitor = true})" -hyprctl dispatch "hl.dsp.focus({ window = \"address:$address\" })" +if [ -z "$address" ]; then + notify-send "No client selected" + exit 1 +fi +hyprctl dispatch "focus_or_launch({ match = '$address', field = 'address', cmd = 'notify-send \"$selected not found\"'})"