Add a no-animations mode, on by default in VMs (#13550)

A machine without a GPU, like most VMs, renders through llvmpipe on the
CPU, where every animated frame and every translucent window costs. In a
VM, opening and closing a terminal took ~5s of CPU; a panel ~3.4s.

omarchy toggle animations (also under Toggle > Animations) places a Hyprland
flag that turns off animations, blur and shadows and makes windows opaque.
The shell follows Hyprland's animations:enabled, rereading it on every
config reload: its one-shot animations run for Style.duration(ms), which
is then 0, and its spinners, pulses and title marquee hold still. A new
install in a VM starts with the flag in place.

Measured in the ISO test VM (llvmpipe), CPU per interaction:
terminal open+close 5000ms -> 481ms, workspace switch 1670ms -> 409ms,
audio panel 3446ms -> 796ms, volume OSD 2324ms -> 584ms, menu 2028ms ->
1241ms.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Opus 5.5 authored and GitHub committed 2026-09-28 15:46:05 +02:00
1 parent 97a9fce54f
commit b18ab4952b
41 files changed
+201 -79

No files matched your search

+27
View File
@@ -84,3 +84,30 @@ 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"
else
[[ ! -f $animations_flag ]] || fail "a machine that is not a VM keeps its animations"
fi
done
pass "a VM install starts without animations"