Skip to content

feat(linux): add native tray with WebUI menu and bounded lifecycle - #1111

Merged
rowkav09 merged 1 commit into
mainfrom
linux-tray
Oct 3, 2026
Merged

rowkav09 merged 1 commit into
mainfrom
linux-tray

Conversation

@rowkav09

@rowkav09 rowkav09 commented Oct 3, 2026

Copy link
Copy Markdown
Member

Adds a tray icon on Linux desktops with a small menu to open the WebUI pages (home, settings, logs) and to quit nowplaying.

How it works:

  • scripts/linux-tray.py is the tray helper. It gets only the icon path. It reports menu events over stdout, and Node only accepts a small fixed set of them. The helper cannot pass commands or URLs.
  • src/linux-tray.js starts and stops the helper with bounded timeouts (ready timeout, SIGTERM then SIGKILL). Pages open through xdg-open with only the desktop session environment, and only for loopback 127.0.0.1 URLs on the allowed pages.
  • If there is no display or the helper can't start, the server and WebUI keep running and the tray is just skipped. Quit never turns into a startup failure.
  • scripts/nowplaying.js wires it in, and the POSIX build ships the helper.

Testing: protocol and headless tests only (test/linux-tray.test.js, test/unix-entry.test.js). I have not run it on a real Linux desktop, so real tray rendering and the menu behaviour are untested.

@codecov

codecov Bot commented Oct 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 87.75510% with 12 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
scripts/nowplaying.js 58.62% 12 Missing ⚠️

📢 Thoughts on this report? Let us know!

@rowkav09
rowkav09 merged commit 513a34a into main Oct 3, 2026
20 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in nowplaying Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant