| Age | Commit message (Collapse) | Author | Files | Lines |
|
The balloons now wear the Hyprland window border: 2px, the udt gradient
read from ~/.cache/udt/udt-border.lua (the file look_and_feel.lua reads,
watched so a wallpaper change follows), rotating, with the windows'
corners.
A Rectangle border takes one colour and its radius is circular, while the
windows use rounding 15 at rounding_power 4, a superellipse. So the body
and the border are both drawn by a Shape from an SVG path whose corners
are the cubic fit to |x|^4 + |y|^4 = 1, and the border is a ring filled
odd-even, which keeps the translucent body from showing the gradient
through.
One angle drives every balloon, so they turn together, and the
animation runs only while the stack is mapped. Hyprland's borderangle
(speed 30) reads as 3s a turn, which looked slow on a balloon that size,
so the turn is 1.5s, tuned by eye.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Deriving the window's visible from column.implicitHeight deadlocked it:
a hidden window stops polishing, Column computes implicitHeight during
polish, so once the column was empty the window never re-mapped and no
later balloon could show, including at startup where the queue arrives
asynchronously after the window is already hidden. The binding now reads
Notify.queue membership, which a property binding re-evaluates whether or
not the window is mapped, so a later notification re-maps it. Expired
entries left in the queue keep a zero-height window mapped, which is
harmless.
|
|
The Repeater model was a fresh filter of Notify.queue on every 250ms tick
because the filter read now, so Qt Quick recreated every balloon delegate
four times a second, reloading icons and resetting hover. Model is now
Notify.queue itself, and each balloon drops itself at expiry through its
own visible binding, driven by the shared tick.
Removing required from the balloon's properties is part of the same fix: a
required property makes QML create the delegate in its own context, where
modelData and index are undefined, so notification: modelData silently
arrived undefined once a live queue item was actually drawn.
|
|
Reads the daemon's queue through the Notify singleton and draws a balloon
per live notification, bottom-right of DP-1 over conky. Suppression is here,
not in the daemon: dnd withholds low and normal, snooze withholds all, and
the drawer still lists them.
|