No description
  • TypeScript 96.7%
  • JavaScript 1.5%
  • Shell 1.1%
  • CSS 0.7%
Find a file
2026-07-12 14:06:12 -04:00
interfaces Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
schemas Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
scripts Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
src Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
tests/unit Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
.gitignore Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
eslint.config.js Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
LICENSE Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
metadata.json Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
package-lock.json Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
package.json Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
README.md Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
stylesheet.css Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
tsconfig.build.json Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
tsconfig.json Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
vitest.config.ts Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00

Real Tray

Real Tray is an original GNOME Shell 50 extension that hosts AppIndicator/KStatusNotifierItem applications in a proper drop-down tray.

It supports three modes:

  • Off: every non-hidden indicator is placed on the panel.
  • Overflow: pinned indicators and up to a configurable limit are placed on the panel; the rest are placed in the tray.
  • Drop-down only: all indicators are placed in the tray.

The extension deliberately does not support legacy XEmbed tray icons. Disable "AppIndicator and KStatusNotifierItem Support" before enabling Real Tray: only one process can own org.kde.StatusNotifierWatcher.

Development

npm install
npm run typecheck
npm run lint
npm test
npm run build
npm run package

Install the built extension for the current user with npm run install:user, then log out and back in on Wayland before enabling real-tray@local.

The TypeScript source is compiled to readable ES2023 JavaScript modules. The project is not bundled. Protocol specifications and the existing Ubuntu AppIndicator extension were used as behavioral references; this is an independently structured implementation.

Identity rules

New rules use the normalized StatusNotifier DesktopEntry when one exists and fall back to Id otherwise. Rules can still be edited to match either or both. When both are populated, both must match. A two-field rule takes precedence over a one-field rule. Equal-specificity matches are treated as conflicts and no rule is applied.

License

GPL-3.0-or-later. See LICENSE.