No description
  • TypeScript 98.1%
  • JavaScript 0.9%
  • Shell 0.6%
  • CSS 0.4%
Find a file
2026-10-11 12:49:16 -04:00
interfaces Resolve icons from StatusNotifierItem theme paths 2026-08-17 12:39:59 -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 Improve tray interaction and preserve indicator actors 2026-10-11 12:48:00 -04:00
tests/unit Improve tray interaction and preserve indicator actors 2026-10-11 12:48:00 -04:00
.gitignore Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
AGENTS.md Improve tray interaction and preserve indicator actors 2026-10-11 12:48:00 -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 Improve tray interaction and preserve indicator actors 2026-10-11 12:48:00 -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 consistent click actions for tray indicators 2026-10-09 20:55:42 -04:00
stylesheet.css Add Real Tray GNOME Shell extension 2026-07-12 13:52:14 -04:00
tsconfig.build.json Improve extension lifecycle cleanup and packaging 2026-10-09 20:36:57 -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 and 51 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.

Left click activates the application, right click opens its menu, and middle click requests its secondary action. Items declaring ItemIsMenu also open their menu on left click. These actions apply to both panel and tray icons. Keyboard activation uses Enter or Space; Menu or Shift+F10 opens the context menu.

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.