#!/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