No description
Find a file
Marco Trevisan (Treviño) a3c6ae96fc dbusProxy: Init async cancellable early
This is used also during signal handling, so we need to init it early

LP: #214448
2026-03-23 21:39:52 +01:00
.github/workflows ci: Do not require eslint on upload job and ignore errors on upload check 2025-09-18 03:51:31 +02:00
icons/hicolor/scalable/actions prefs: Modernize settings dialog 2025-05-06 22:26:14 +02:00
indicator-test-tool eslint: Sync with current upstream gjs and shell rules 2023-08-17 05:26:30 +03:00
interfaces-xml interfaces-xml: Comment out the signal definitions 2023-03-10 01:03:12 +01:00
lint eslint: Sync with current upstream gjs and shell rules 2023-08-17 05:26:30 +03:00
locale locale/it: Set proper charset value 2026-02-12 04:34:19 +01:00
preferences Initial Commit: Added Entry for preferences 2026-02-12 04:09:23 +01:00
schemas Initial Commit: Added Entry for preferences 2026-02-12 04:09:23 +01:00
tools statusNotifierWatcher: Move the bus analyzer for seeking SNI's off-process 2026-03-21 04:32:04 +01:00
.eslintrc.yml eslint: Catch all the js files around 2025-05-06 22:26:14 +02:00
.gitignore Add icon opacity, size, position and other effects settings 2021-06-07 17:24:51 +02:00
appIndicator.js utils: Split out DBUs only utilities 2026-03-21 04:32:04 +01:00
AUTHORS.md Use AUTHORS.md file instead of Copyright lines 2017-10-11 14:59:50 +02:00
dbusMenu.js dbusMenu: Do not notify about unknown object errors after closing a menu 2026-03-21 04:31:51 +01:00
dbusProxy.js dbusProxy: Init async cancellable early 2026-03-23 21:39:52 +01:00
dbusUtils.js statusNotifierWatcher: Move the bus analyzer for seeking SNI's off-process 2026-03-21 04:32:04 +01:00
extension.js statusNotifierWatcher: Move the bus analyzer for seeking SNI's off-process 2026-03-21 04:32:04 +01:00
iconCache.js iconCache: Gio.Icon.equal(), not .equals() 2024-04-18 19:58:38 +02:00
indicatorStatusIcon.js indicatorStatusIcon: Override new Clutter.ClickGesture 2026-03-19 17:03:02 +01:00
interfaces.js eslint: Sync with current upstream gjs and shell rules 2023-08-17 05:26:30 +03:00
LICENSE Create LICENSE 2019-09-02 17:46:11 +02:00
logger.js util: Split out logger class to different file 2026-03-21 04:32:04 +01:00
meson.build Release v64 2026-03-21 04:41:31 +01:00
meson_options.txt build: Use meson to configure, test and install the extension 2021-06-15 01:26:56 +02:00
metadata.json metadata: Add support to GNOME 50 2026-02-12 03:46:38 +01:00
pixmapsUtils.js eslint: Sync with current upstream gjs and shell rules 2023-08-17 05:26:30 +03:00
prefs.js Initial Commit: Added Entry for preferences 2026-02-12 04:09:23 +01:00
promiseUtils.js cleanup: Use Signals.EventEmitter instead of changing the prototypes 2023-08-17 05:26:30 +03:00
README.md build: Use meson to configure, test and install the extension 2021-06-15 01:26:56 +02:00
settingsManager.js settingsManager: Avoid using run_dispose() manually 2023-08-18 01:03:03 +02:00
statusNotifierWatcher.js statusNotifierWatcher: Do not use potentially outdated cancellable 2026-03-23 12:28:10 +01:00
trayIconsManager.js trayIconsManager: Remove panel style-changed handler to prevent race condition 2026-02-12 04:01:41 +01:00
util.js util: Split out logger class to different file 2026-03-21 04:32:04 +01:00

AppIndicator/KStatusNotifierItem support for GNOME Shell

This extension integrates Ubuntu AppIndicators and KStatusNotifierItems (KDE's blessed successor of the systray) into GNOME Shell. Including support for legacy tray icons.

Features

  • Show indicator icons in the panel.
  • Reveal indicator menus upon click.
  • Double clicking an icon will activate the application window (if implemented by the indicator).
  • Legacy tray icons
  • Middle mouse click an icon to send a 'SecondaryActivate' event to the application. Support needs to be implemented in the application. Info 1, Info 2.

Missing features

  • Tooltips: Not implemented in libappindicator nor in Unity and I've yet to see any indicator using it for anything relevant (KDE ones maybe?). Also, the GNOME designers decided not to have tooltips in the shell and I'd like to honor that decision.

Known issues

  • ClassicMenu Indicator takes ages to load and has been reported to freeze the shell forever. This is probably caused by the insane amount of embedded PNG icons. Try at your own risk.

Installation

Normal users are recommended to get the extension from extensions.gnome.org.

Alternatively, you can check out a version from git, compile the language files, and symlink ~/.local/share/gnome-shell/extensions/appindicatorsupport@rgcjonas.gmail.com to your clone:

git clone https://github.com/ubuntu/gnome-shell-extension-appindicator.git
meson gnome-shell-extension-appindicator /tmp/g-s-appindicators-build
ninja -C /tmp/g-s-appindicators-build install
gnome-extensions enable appindicatorsupport@rgcjonas.gmail.com

Under X11, you may need to restart GNOME Shell (Alt+F2, r, ) after that. Under Wayland you need to logout and login again.

Applications dependencies

Many applications support indicators via libappindicator, (that is quite often dynamically loaded, as it happens in Electron apps), so without having this library installed in your system no icon will be shown.

Guidelines for bug reports

Unfortunately, this extension is not completely bug free and will probably never be. In order to successfully resolve remaining issues, you need to provide some data:

  • Your distribution, Shell version and extension version (something like "latest git" or "latest from extensions.gnome.org" is sufficient).
  • The indicator that caused the bug (if applicable).
  • Instructions how to reproduce it. This is the single most important point. Bugs which cannot be reproduced cannot be fixed.

Bug reports which do not provide the necessary information may be closed as "invalid" without prior notice.

Release process

This section serves as reminder for the current maintainer and as instruction set for an eventual sucessor.

  • The maintainer decides when to release a new version.
  • Versions are tagged (and signed). Version numbers sould be kept in sync with the versions submitted to extensions.gnome.org. This implies that version numbers are integers which will be incremented with each release.
  • The maintainer will tag a new version, update the meson version and generate a zip file using ninja -C <build-dir> zip-file.
  • The zip file will be tested to ensure that nothing was missed when packaging it.
  • Only if it passed, it is uploaded to extensions.gnome.org and the tag is pushed.

This release process has been in place since v41.