window-manager/scripts/hide.sh

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