diff --git a/options/custom/scripts/default.nix b/options/custom/scripts/default.nix index f3e5197..5cd6c9d 100644 --- a/options/custom/scripts/default.nix +++ b/options/custom/scripts/default.nix @@ -177,9 +177,17 @@ in { ]) (bash "window" [ argc + coreutils hyprland jq ]) + (bash "workspace" [ + argc + coreutils + hyprland + jq + libnotify + ]) (bash "zoom" [ argc bc diff --git a/options/custom/scripts/workspace.sh b/options/custom/scripts/workspace.sh new file mode 100644 index 0000000..b5fef1e --- /dev/null +++ b/options/custom/scripts/workspace.sh @@ -0,0 +1,32 @@ +#! /usr/bin/env bash + +# @describe Wrapper for toggling last special workspace +# +# https://github.com/sigoden/argc + +# @meta combine-shorts +# @option -f --file=`_default_file` File to save last special workspace + +_default_file() { + echo "/tmp/workspace" +} + +eval "$(argc --argc-eval "$0" "$@")" + +# Get current special workspace from active monitor, empty if not toggled +workspace="$(hyprctl -j monitors | jq -r ".[] | select(.focused == true).specialWorkspace.name")" + +# If empty, use saved file +if ! [[ "$workspace" ]] && [[ -f "${argc_file:-}" ]]; then + workspace="$(cat "${argc_file:-}")" +fi + +if [[ "$workspace" ]]; then + # Toggle workspace + hyprctl dispatch togglespecialworkspace "${workspace#special:*}" # Strip prefix + + # Save last workspace + echo "$workspace" > "${argc_file:-}" +else + notify-send "> workspace" "Last workspace not yet saved" +fi