Skip to content

Add eww lyrics scroll widget, pinned over other windows - #9

Merged
susamn merged 1 commit into
mainfrom
feature/eww-lyrics-widget
Aug 18, 2026
Merged

Add eww lyrics scroll widget, pinned over other windows#9
susamn merged 1 commit into
mainfrom
feature/eww-lyrics-widget

Conversation

@susamn

@susamn susamn commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Renders mpdtui's -lyrics-line output (its 4-line synced-lyrics window) as a small always-on-top overlay, auto-hiding when MPD isn't playing and closable/reopenable via a button. Chose eww over conky specifically for smooth CSS transitions -- conky can only hard-redraw text each tick, no animation.

  • .config/eww/scripts/lyrics-listen.sh -- a deflisten (not defpoll) daemon script: runs mpdtui -lyrics-line once/sec, pushing an intermediate dimmed frame before a new current line so its opacity transition has two states to animate between (revealer was tried first but collapses its child's height, causing the whole box to visibly shrink/grow on every line change -- opacity leaves layout untouched). Also emits "visible" (only while MPD is actively [playing]) and a font-size hint that shrinks the current line for long text instead of overflowing the box's fixed width.
  • .config/eww/eww.yuck / eww.scss -- the widget itself.
  • .config/systemd/user/eww.service -- runs "eww daemon --no-daemonize" (Type=simple, not Type=forking -- that raced against eww's own self-daemonizing and caused a restart-loop) with an explicit Environment=PATH covering Homebrew (mpdtui's install location isn't on a systemd user service's default PATH). WantedBy both default.target (auto-start at login) and personal-services.target (visibility under linux-system-manager's Section 5).

Removed the earlier conky-based attempt (.config/conky/conky-lyrics.conf, get-lyrics-window.sh) -- conky can't animate a text change, only hard-redraw it each tick, which wasn't smooth enough.

Bumps workspace/aistuff for the accompanying dotfiles-management skill reference doc update (personal-systemd-services.md), documenting the two systemd gotchas above plus the deflisten/window-lifecycle nuance as a worked example for the next user-scope GUI daemon.

Renders mpdtui's -lyrics-line output (its 4-line synced-lyrics window)
as a small always-on-top overlay, auto-hiding when MPD isn't playing
and closable/reopenable via a button. Chose eww over conky specifically
for smooth CSS transitions -- conky can only hard-redraw text each
tick, no animation.

- .config/eww/scripts/lyrics-listen.sh -- a deflisten (not defpoll)
  daemon script: runs mpdtui -lyrics-line once/sec, pushing an
  intermediate dimmed frame before a new current line so its opacity
  transition has two states to animate between (revealer was tried
  first but collapses its child's height, causing the whole box to
  visibly shrink/grow on every line change -- opacity leaves layout
  untouched). Also emits "visible" (only while MPD is actively
  [playing]) and a font-size hint that shrinks the current line for
  long text instead of overflowing the box's fixed width.
- .config/eww/eww.yuck / eww.scss -- the widget itself.
- .config/systemd/user/eww.service -- runs "eww daemon --no-daemonize"
  (Type=simple, not Type=forking -- that raced against eww's own
  self-daemonizing and caused a restart-loop) with an explicit
  Environment=PATH covering Homebrew (mpdtui's install location isn't
  on a systemd user service's default PATH). WantedBy both
  default.target (auto-start at login) and personal-services.target
  (visibility under linux-system-manager's Section 5).

Removed the earlier conky-based attempt (.config/conky/conky-lyrics.conf,
get-lyrics-window.sh) -- conky can't animate a text change, only
hard-redraw it each tick, which wasn't smooth enough.

Bumps workspace/aistuff for the accompanying dotfiles-management skill
reference doc update (personal-systemd-services.md), documenting the
two systemd gotchas above plus the deflisten/window-lifecycle nuance as
a worked example for the next user-scope GUI daemon.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@susamn
susamn merged commit 4fa5d7d into main Aug 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant