Pick window transparency from Appearance > Window Transparency, and a Glassy bar background (#14991)
* 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>
This commit is contained in:
1 parent
be7c7bf378
commit
a98e55eb91
32 files changed
+814
-64
No files matched your search
@@ -255,6 +255,9 @@ pass "Hyprland bootstrap reloads cached Omarchy config modules"
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
mkdir -p "$TMPDIR/home/.config/omarchy"
|
||||
# The bar keeps its blur toggle where Hyprland reads it, under XDG_STATE_HOME,
|
||||
# so that points into the test home too.
|
||||
export XDG_STATE_HOME="$TMPDIR/home/.local/state"
|
||||
|
||||
ipc_mock_bin="$TMPDIR/ipc-mock"
|
||||
mkdir -p "$ipc_mock_bin"
|
||||
@@ -335,16 +338,97 @@ pass "shell config sets bar position"
|
||||
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar transparent true
|
||||
jq -e '
|
||||
.bar.transparent == true and
|
||||
.bar.background == "none" and
|
||||
.bar.position == "bottom" and
|
||||
.plugins == []
|
||||
' "$TMPDIR/home/.config/omarchy/shell.json" >/dev/null
|
||||
pass "shell config sets bar transparency"
|
||||
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar transparent toggle
|
||||
jq -e '.bar.transparent == false' "$TMPDIR/home/.config/omarchy/shell.json" >/dev/null
|
||||
jq -e '.bar.background == "opaque"' "$TMPDIR/home/.config/omarchy/shell.json" >/dev/null
|
||||
pass "shell config toggles bar transparency"
|
||||
|
||||
# The bar background is opaque, glassy or none. A glassy bar needs Hyprland's
|
||||
# blur, so the bar-glassy toggle follows it.
|
||||
printf '#!/bin/bash\nprintf "%%s\\n" "$*" >>"%s/hyprctl.log"\n' "$TMPDIR" >"$ipc_mock_bin/hyprctl"
|
||||
chmod +x "$ipc_mock_bin/hyprctl"
|
||||
glass_toggle="$TMPDIR/home/.local/state/omarchy/toggles/hypr/bar-glassy.lua"
|
||||
bar_background() { HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar background "$@"; }
|
||||
|
||||
bar_background opaque >/dev/null
|
||||
[[ $(bar_background) == "opaque" ]] || fail "an opaque bar background is reported"
|
||||
bar_background glassy >/dev/null
|
||||
jq -e '.bar.background == "glassy"' "$TMPDIR/home/.config/omarchy/shell.json" >/dev/null ||
|
||||
fail "shell config sets a glassy bar"
|
||||
[[ $(bar_background) == "glassy" ]] || fail "a glassy bar background is reported"
|
||||
[[ -f $glass_toggle ]] || fail "a glassy bar turns on Hyprland's blur behind it"
|
||||
grep -qx 'reload' "$TMPDIR/hyprctl.log" || fail "a glassy bar reloads Hyprland"
|
||||
bar_background none >/dev/null
|
||||
jq -e '.bar.background == "none"' "$TMPDIR/home/.config/omarchy/shell.json" >/dev/null ||
|
||||
fail "a bar without a background is stored as none"
|
||||
[[ ! -f $glass_toggle ]] || fail "a bar without a background turns Hyprland's blur off again"
|
||||
pass "shell config sets the bar background, and Hyprland's blur follows a glassy one"
|
||||
|
||||
seen=()
|
||||
for _ in 1 2 3; do
|
||||
bar_background cycle >/dev/null
|
||||
seen+=("$(bar_background)")
|
||||
done
|
||||
[[ ${seen[*]} == "glassy opaque none" ]] || fail "the bar background cycles from clear to glassy to opaque and around" "${seen[*]}"
|
||||
if bar_background frosted 2>/dev/null; then
|
||||
fail "an unknown bar background is refused"
|
||||
fi
|
||||
: >"$TMPDIR/hyprctl.log"
|
||||
bar_background opaque >/dev/null
|
||||
[[ ! -s $TMPDIR/hyprctl.log ]] || fail "Hyprland reloads only when the bar's glass changes"
|
||||
pass "the bar background cycles through its looks and refuses unknown ones"
|
||||
|
||||
# transparent stays for scripts written against it: true is none, false opaque.
|
||||
bar_background glassy >/dev/null
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar transparent true >/dev/null
|
||||
[[ $(bar_background) == "none" ]] || fail "transparent true leaves the bar without a background"
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar transparent toggle >/dev/null
|
||||
[[ $(bar_background) == "opaque" ]] || fail "toggling transparency off makes the bar opaque"
|
||||
# A shell.json from before background says transparent, which reads as none
|
||||
# and is dropped once a background is set.
|
||||
jq '.bar.transparent = true | del(.bar.background)' "$TMPDIR/home/.config/omarchy/shell.json" >"$TMPDIR/legacy.json" &&
|
||||
mv "$TMPDIR/legacy.json" "$TMPDIR/home/.config/omarchy/shell.json"
|
||||
[[ $(bar_background) == "none" ]] || fail "an older transparent bar reads as no background"
|
||||
bar_background glassy >/dev/null
|
||||
jq -e '.bar.background == "glassy" and (.bar | has("transparent") | not)' "$TMPDIR/home/.config/omarchy/shell.json" >/dev/null ||
|
||||
fail "setting a background drops the older transparent flag"
|
||||
pass "the older transparent form still sets and reads as the bar background"
|
||||
|
||||
# Restoring the default bar also restores its opaque background, and the blur
|
||||
# behind a glassy one goes with it.
|
||||
bar_background glassy >/dev/null
|
||||
[[ -f $glass_toggle ]] || fail "a glassy bar has its blur on before defaults"
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar defaults >/dev/null
|
||||
[[ $(bar_background) == "opaque" && ! -f $glass_toggle ]] || fail "omarchy bar defaults turns a glassy bar's blur off"
|
||||
pass "restoring the default bar turns a glassy bar's blur off"
|
||||
|
||||
# A background set by editing shell.json gets its blur when the shell syncs it.
|
||||
jq '.bar.background = "glassy"' "$TMPDIR/home/.config/omarchy/shell.json" >"$TMPDIR/edited.json" &&
|
||||
mv "$TMPDIR/edited.json" "$TMPDIR/home/.config/omarchy/shell.json"
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar sync-glass
|
||||
[[ -f $glass_toggle ]] || fail "syncing a hand-edited glassy bar turns its blur on"
|
||||
jq '.bar.background = "opaque"' "$TMPDIR/home/.config/omarchy/shell.json" >"$TMPDIR/edited.json" &&
|
||||
mv "$TMPDIR/edited.json" "$TMPDIR/home/.config/omarchy/shell.json"
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar sync-glass
|
||||
[[ ! -f $glass_toggle ]] || fail "syncing a hand-edited opaque bar turns its blur off"
|
||||
pass "a bar background edited into shell.json gets its blur synced"
|
||||
|
||||
# A glassy bar whose blur can't be turned on keeps the background it had.
|
||||
toggles_dir="${glass_toggle%/*}"
|
||||
chmod a-w "$toggles_dir"
|
||||
if bar_background glassy >/dev/null 2>&1; then
|
||||
chmod u+w "$toggles_dir"
|
||||
fail "a bar whose blur can't be turned on reports failure"
|
||||
fi
|
||||
chmod u+w "$toggles_dir"
|
||||
[[ $(bar_background) == "opaque" && ! -f $glass_toggle ]] || fail "a bar whose blur can't be turned on keeps its old background" "$(bar_background)"
|
||||
pass "a bar whose blur can't change keeps its old background"
|
||||
|
||||
HOME="$TMPDIR/home" OMARCHY_PATH="$ROOT" omarchy-bar set omarchy.bluetooth enabled false --json
|
||||
grep -Fqx 'shell setBarWidget omarchy.bluetooth enabled false {}' \
|
||||
"$TMPDIR/home/.local/state/omarchy/shell-ipc-calls"
|
||||
|
||||
Reference in new issue
Block a user