* Pick window transparency from Appearance > Window Transparency Transparent, the default, keeps today's windows. Opaque turns the windows Omarchy makes transparent solid. Glassy is the frosted glass Starship (#14726): its blur behind every see-through window and shell surface, and a see-through, blurred background in the theme's terminal files, since foot turns compositor blur down and a Hyprland opacity rule fades text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Leave window transparency to Appearance when animations are off Turning animations off no longer makes windows opaque. VM installs start with opaque windows instead, and a migration keeps them opaque for anyone who already has animations off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Add a Glassy bar background, under Menu Bar > Bar Background Menu Bar > Bar Background picks Opaque Bar, Glassy Bar or Clear Bar, and Indicators becomes Bar Indicators to match. Glassy keeps the theme background faintly and Hyprland blurs what is behind it, with the same blur as Glassy windows. omarchy bar background opaque|glassy|none|cycle sets it and prints it when given nothing. omarchy bar transparent true|false|toggle stays for compatibility, as none and opaque. Double-clicking the bar cycles through the three backgrounds the same way, from clear to glassy to opaque. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Stop when a saved corner choice can't be removed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Make btop follow glassy windows --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
136 lines
6.0 KiB
Bash
136 lines
6.0 KiB
Bash
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
|
|
|
TMPDIR=""
|
|
|
|
export PATH="$ROOT/bin:$PATH"
|
|
|
|
cleanup() {
|
|
if [[ -n $TMPDIR && -d $TMPDIR ]]; then
|
|
rm -rf "$TMPDIR"
|
|
fi
|
|
}
|
|
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"
|
|
|
|
# The gaps half of full screen copies a flag file in and reloads Hyprland, so
|
|
# give it this checkout to copy from and a hyprctl that answers without a
|
|
# compositor.
|
|
export OMARCHY_PATH="$ROOT"
|
|
stub_bin="$TMPDIR/bin"
|
|
mkdir -p "$stub_bin"
|
|
printf '#!/bin/bash\nexit 0\n' >"$stub_bin/hyprctl"
|
|
chmod +x "$stub_bin/hyprctl"
|
|
export PATH="$stub_bin:$PATH"
|
|
|
|
gaps_flag="$test_home/.local/state/omarchy/toggles/hypr/window-no-gaps.lua"
|
|
|
|
HOME="$test_home" omarchy-toggle-fullscreen-desktop
|
|
[[ -f $bar_flag && -f $gaps_flag ]] || fail "fullscreen toggle hides the bar and the gaps together"
|
|
pass "fullscreen toggle hides the bar and the gaps together"
|
|
|
|
HOME="$test_home" omarchy-toggle-fullscreen-desktop
|
|
[[ ! -f $bar_flag && ! -f $gaps_flag ]] || fail "fullscreen toggle restores the bar and the gaps together"
|
|
pass "fullscreen toggle restores the bar and the gaps together"
|
|
|
|
HOME="$test_home" omarchy-toggle-bar on
|
|
HOME="$test_home" omarchy-toggle-fullscreen-desktop
|
|
[[ -f $bar_flag && -f $gaps_flag ]] || fail "fullscreen toggle pulls a half-hidden desktop into full screen"
|
|
pass "fullscreen toggle pulls a half-hidden desktop into full screen"
|
|
|
|
HOME="$test_home" omarchy-toggle-fullscreen-desktop off
|
|
[[ ! -f $bar_flag && ! -f $gaps_flag ]] || fail "fullscreen off leaves full screen"
|
|
pass "fullscreen off leaves full screen"
|
|
|
|
HOME="$test_home" omarchy-toggle-fullscreen-desktop on
|
|
[[ -f $bar_flag && -f $gaps_flag ]] || fail "fullscreen on enters full screen"
|
|
pass "fullscreen on enters full screen"
|
|
|
|
# The flag records animations being off, so on and off are the other way round.
|
|
printf '#!/bin/bash\nexit 0\n' >"$stub_bin/omarchy-notification-send"
|
|
chmod +x "$stub_bin/omarchy-notification-send"
|
|
animations_flag="$test_home/.local/state/omarchy/toggles/hypr/no-animations.lua"
|
|
|
|
HOME="$test_home" omarchy-toggle-animations off
|
|
[[ -f $animations_flag ]] || fail "animations off places the no-animations flag"
|
|
HOME="$test_home" omarchy-toggle-animations on
|
|
[[ ! -f $animations_flag ]] || fail "animations on removes the no-animations flag"
|
|
HOME="$test_home" omarchy-toggle-animations
|
|
[[ -f $animations_flag ]] || fail "toggling animations flips the flag"
|
|
pass "animations toggle turns the no-animations flag the right way round"
|
|
|
|
# A VM install starts without animations; other machines keep them.
|
|
for virt in vm none; do
|
|
rm -rf "$test_home/.local/state/omarchy/toggles/hypr"
|
|
printf '#!/bin/bash\n[[ %s == vm ]]\n' "$virt" >"$stub_bin/omarchy-hw-vm"
|
|
chmod +x "$stub_bin/omarchy-hw-vm"
|
|
HOME="$test_home" OMARCHY_PATH="$ROOT" bash "$ROOT/install/user/hardware/vm-no-animations.sh" >/dev/null
|
|
if [[ $virt == "vm" ]]; then
|
|
[[ -f $animations_flag ]] || fail "a VM install turns animations off"
|
|
[[ -f ${animations_flag%/*}/window-opaque.lua ]] || fail "a VM install starts with opaque windows"
|
|
else
|
|
[[ ! -f $animations_flag ]] || fail "a machine that is not a VM keeps its animations"
|
|
[[ ! -f ${animations_flag%/*}/window-opaque.lua ]] || fail "a machine that is not a VM keeps transparent windows"
|
|
fi
|
|
done
|
|
pass "a VM install starts without animations and with opaque windows"
|
|
|
|
# Animations off no longer makes windows opaque. The migration takes that rule
|
|
# out of a saved flag, keeping anything else in it, and keeps those windows
|
|
# opaque through Window Transparency instead.
|
|
migration_home=$(mktemp -d)
|
|
migration_flags="$migration_home/.local/state/omarchy/toggles/hypr"
|
|
mkdir -p "$migration_flags"
|
|
printf 'hl.config({ animations = { enabled = false } })\n\no.window(".*", { opacity = "1 1" })\n-- mine\n' >"$migration_flags/no-animations.lua"
|
|
for _ in 1 2; do
|
|
HOME="$migration_home" XDG_STATE_HOME="" OMARCHY_PATH="$ROOT" bash -euo pipefail "$ROOT/migrations/1791705142.sh" >/dev/null
|
|
done
|
|
! grep -q 'opacity' "$migration_flags/no-animations.lua" || fail "the migration drops the opacity rule from a saved animations flag"
|
|
grep -qx -- '-- mine' "$migration_flags/no-animations.lua" || fail "the migration keeps the rest of a saved animations flag"
|
|
[[ -f $migration_flags/window-opaque.lua ]] || fail "the migration keeps windows opaque where animations are off"
|
|
rm -f "$migration_flags/window-opaque.lua"
|
|
printf 'x\n' >"$migration_flags/window-glassy.lua"
|
|
HOME="$migration_home" XDG_STATE_HOME="" OMARCHY_PATH="$ROOT" bash -euo pipefail "$ROOT/migrations/1791705142.sh" >/dev/null
|
|
[[ ! -f $migration_flags/window-opaque.lua ]] || fail "the migration leaves a chosen transparency alone"
|
|
rm -rf "$migration_home"
|
|
pass "the migration moves opaque windows from the animations flag to Window Transparency"
|