Replaces the flat cursor_hide_timeout key with a grouped cursor_hide key
carrying the idle, fullscreen-idle, typing and touch triggers, plus the
pure decision function the compositor's idle timer evaluates on fire.
The fullscreen timeout shortens the global one rather than replacing it,
so an unset fullscreen timeout cannot suppress an enabled global one.
Drafted with Claude (Anthropic); reviewed and tested by the committer.
A sleeping wireless keyboard relit blanked displays and idle never re-armed.
Written with assistance from Claude Opus 5.0. Reviewed, built and tested by the
author, who understands the changes in full.
When no saved configuration matches the current output set, positions
were assigned in hotplug/registration order. On hotplug races (e.g.
reconnecting monitors through a KVM switch) outputs can appear in
arbitrary order, producing a swapped left/right layout that then gets
persisted to outputs.ron, poisoning all future reconnects.
Sort outputs by connector name before generating fallback positions so
the layout is deterministic regardless of arrival order.
AI disclosure: implemented with the assistance of an LLM coding agent,
directed, reviewed, and tested by the author.
Signed-off-by: apassert <249084898+apassert@users.noreply.github.com>
Replace the symmetric_difference over two freshly-materialized HashSets
with direct contains_key lookups on the existing key sets. Semantically
identical (set difference non-empty iff any key is in exactly one set) but
removes two heap HashSet allocations plus hashing of every key on each
widget update. Also drops the now-unused HashSet import.
Implements compact-idiomatic-code-20 from the cosmic-comp optimization
report. Created with the help of DeepSeek V4 Flash.
This makes `cosmic-osk` show a group change on `super+space`. Previously
a change like that wouldn't be sent until a keyboard input changed the
modifier state, for instance releasing the shift key.