Add explicit toggle states

This commit is contained in:
David Heinemeier Hansson
2026-06-04 11:14:04 +02:00
parent c31825dca4
commit 1d6467c91c
3 changed files with 83 additions and 50 deletions
+29 -6
View File
@@ -1,19 +1,42 @@
#!/bin/bash
# omarchy:summary=Toggle Omarchy features between enabled and disabled
# omarchy:args=<flag-name>
# omarchy:args=<flag-name> [toggle|on|off]
if (($# < 1)); then
echo "Usage: omarchy-toggle <flag-name>" >&2
echo "Usage: omarchy-toggle <flag-name> [toggle|on|off]" >&2
exit 1
fi
FLAG_NAME="$1"
ACTION="${2:-toggle}"
FLAG="$HOME/.local/state/omarchy/toggles/$FLAG_NAME"
if [[ -f $FLAG ]]; then
rm -f "$FLAG"
else
enable() {
mkdir -p "$(dirname "$FLAG")"
touch "$FLAG"
fi
}
disable() {
rm -f "$FLAG"
}
case "$ACTION" in
toggle|"")
if [[ -f $FLAG ]]; then
disable
else
enable
fi
;;
on)
enable
;;
off)
disable
;;
*)
echo "Usage: omarchy-toggle <flag-name> [toggle|on|off]" >&2
exit 1
;;
esac
+3 -44
View File
@@ -1,48 +1,7 @@
#!/bin/bash
# omarchy:summary=Toggle bar visibility without killing the Omarchy shell
# omarchy:args=[toggle|show|hide]
# omarchy:examples=omarchy toggle bar | omarchy toggle bar hide | omarchy toggle bar show
# omarchy:args=[toggle|on|off]
# omarchy:examples=omarchy toggle bar | omarchy toggle bar off | omarchy toggle bar on
FLAG="$HOME/.local/state/omarchy/toggles/bar-off"
apply_state() {
case "$1" in
hidden)
mkdir -p "$(dirname "$FLAG")"
touch "$FLAG"
;;
visible)
rm -f "$FLAG"
;;
esac
}
case "${1:-toggle}" in
hide|off)
apply_state hidden
state=hidden
;;
show|on)
apply_state visible
state=visible
;;
toggle|"")
if [[ -f $FLAG ]]; then
apply_state visible
state=visible
else
apply_state hidden
state=hidden
fi
;;
*)
echo "Usage: omarchy-toggle-bar [toggle|show|hide]" >&2
exit 1
;;
esac
case "$state" in
visible) omarchy-notification-send "Bar shown" -g 󰍜 ;;
hidden) omarchy-notification-send "Bar hidden" -g 󰍜 ;;
esac
omarchy-toggle bar-off "${1:-toggle}"
+51
View File
@@ -0,0 +1,51 @@
#!/bin/bash
set -euo pipefail
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
TMPDIR=""
export PATH="$ROOT/bin:$PATH"
cleanup() {
[[ -n $TMPDIR && -d $TMPDIR ]] && rm -rf "$TMPDIR"
}
trap cleanup EXIT
TMPDIR=$(mktemp -d)
test_home="$TMPDIR/home"
flag="$test_home/.local/state/omarchy/toggles/example"
bar_flag="$test_home/.local/state/omarchy/toggles/bar-off"
HOME="$test_home" omarchy-toggle example on
[[ -f $flag ]] || fail "generic toggle enables explicit on state"
pass "generic toggle enables explicit on state"
HOME="$test_home" omarchy-toggle example on
[[ -f $flag ]] || fail "generic toggle on is idempotent"
pass "generic toggle on is idempotent"
HOME="$test_home" omarchy-toggle example off
[[ ! -f $flag ]] || fail "generic toggle disables explicit off state"
pass "generic toggle disables explicit off state"
HOME="$test_home" omarchy-toggle example
[[ -f $flag ]] || fail "generic toggle flips disabled state on"
pass "generic toggle flips disabled state on"
HOME="$test_home" omarchy-toggle example toggle
[[ ! -f $flag ]] || fail "generic toggle flips enabled state off"
pass "generic toggle flips enabled state off"
HOME="$test_home" omarchy-toggle-bar on
[[ -f $bar_flag ]] || fail "bar on enables bar-off toggle"
pass "bar on enables bar-off toggle"
HOME="$test_home" omarchy-toggle-bar on
[[ -f $bar_flag ]] || fail "bar on is idempotent"
pass "bar on is idempotent"
HOME="$test_home" omarchy-toggle-bar off
[[ ! -f $bar_flag ]] || fail "bar off disables bar-off toggle"
pass "bar off disables bar-off toggle"