41 lines
No EOL
2 KiB
Bash
Executable file
41 lines
No EOL
2 KiB
Bash
Executable file
#!/bin/sh
|
|
SCRIPT_THIS="$(realpath "$0")"
|
|
SCRIPT_GETTER="$(dirname "$SCRIPT_THIS")/get_active_workspace.sh"
|
|
|
|
RESTORE_TARGET="2"
|
|
RESTORE_TARGET_SPECIAL="DO_NOT_RESTORE_ANY_SPECIAL_WORKSPACES"
|
|
|
|
ACTIVE_WORKSPACE="$("$SCRIPT_GETTER")"
|
|
if [ "$ACTIVE_WORKSPACE" = "empty" ]; then
|
|
hyprctl dispatch "hl.dsp.focus({workspace=\"$RESTORE_TARGET\"})"
|
|
#hyprctl notify 3 6000 000 "hl.dsp.focus({workspace=\"$RESTORE_TARGET\"})"
|
|
if [ "$RESTORE_TARGET_SPECIAL" != "DO_NOT_RESTORE_ANY_SPECIAL_WORKSPACES" ]; then
|
|
hyprctl dispatch "hl.dsp.workspace.toggle_special(\"$RESTORE_TARGET_SPECIAL\")"
|
|
#hyprctl notify 3 6000 000 "hl.dsp.workspace.toggle_special(\"$RESTORE_TARGET_SPECIAL\")"
|
|
fi
|
|
|
|
|
|
elif [ "$ACTIVE_WORKSPACE" = "special" ]; then
|
|
SPECIAL_WS_NAME="$(hyprctl activewindow -j | jq -r .workspace.name)"
|
|
SPECIAL_WS_NAME="${SPECIAL_WS_NAME#"special:"}"
|
|
UNDERLYING_WS_ID="$(hyprctl -j monitors | jq --argjson monitorid "$(hyprctl activewindow -j | jq -r .monitor)" ".[] | select(.id == \$monitorid) | .activeWorkspace.id")"
|
|
|
|
sed -i "s/RESTORE_TARGET=\"$RESTORE_TARGET\"/RESTORE_TARGET=\"$UNDERLYING_WS_ID\"/" "$SCRIPT_THIS"
|
|
sed -i "s/RESTORE_TARGET_SPECIAL=\"$RESTORE_TARGET_SPECIAL\"/RESTORE_TARGET_SPECIAL=\"$SPECIAL_WS_NAME\"/" "$SCRIPT_THIS"
|
|
|
|
hyprctl dispatch "hl.dsp.workspace.toggle_special(\"$SPECIAL_WS_NAME\")"
|
|
#hyprctl notify 3 6000 000 "hl.dsp.workspace.toggle_special(\"$SPECIAL_WS_NAME\")"
|
|
hyprctl dispatch "hl.dsp.focus({workspace=\"emptynm\"})"
|
|
#hyprctl notify 3 6000 000 "hl.dsp.focus({workspace=\"emptynm\"})"
|
|
|
|
|
|
elif [ "$ACTIVE_WORKSPACE" = "normal" ]; then
|
|
sed -i "s/RESTORE_TARGET=\"$RESTORE_TARGET\"/RESTORE_TARGET=\"$(hyprctl activewindow -j | jq -r .workspace.name)\"/" "$SCRIPT_THIS"
|
|
sed -i "s/RESTORE_TARGET_SPECIAL=\"$RESTORE_TARGET_SPECIAL\"/RESTORE_TARGET_SPECIAL=\"DO_NOT_RESTORE_ANY_SPECIAL_WORKSPACES\"/" "$SCRIPT_THIS"
|
|
hyprctl dispatch "hl.dsp.focus({workspace=\"emptynm\"})"
|
|
#hyprctl notify 3 6000 000 "hl.dsp.focus({workspace=\"emptynm\"})"
|
|
|
|
else
|
|
hyprctl notify 3 1000 000 "Error: Unknown workspace state \"$ACTIVE_WORKSPACE\".";
|
|
exit 1;
|
|
fi |