Popular desktop environments have dropped the legacy concept of a SysTray (system tray, notification area, status icons, app indicators, tray icons, etc.). However, there are many newer, more capable, and cross-desktop APIs that replace the functionality previously provided by these icons.
Here you can find a list of replacement APIs and see how well-supported they are.
If you want to communicate synchronization status or provide actions related to cloud storage devices, you can use the CloudProviders DBus API
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Status Icon | ✔️ | ✖️ | ✖️ | ✔️ | ✔️ | ✖️ |
| Actions | ✔️ | ✖️ | ✖️ | ✔️ | ✔️ | ✖️ |
If you want to provide quick access to common actions, you can add them to your .desktop file
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Actions | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Icons | ✖️ | ✔️ | ✔️ | 📝️ | ✖️ | ✔️ |
If you want to communicate progress information for long-running background tasks or the number of items needing action in your app (such as tasks or messages) you can use the LauncherEntry DBus API
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Progress Bar | ✖️ | ✔️ | ✖️ | ✔️ | ✔️ | ✖️ |
| Badge | ✖️ | ✔️ | ✖️ | ✔️ | ✔️ | ✖️ |
If you want the user to be able to access media player controls for you app, you can listen to and supply information to MPRIS
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Media Info | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Player Controls | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Album Art | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖️ |
If you want to alert the user that something has changed in your app, you can send a notification bubble
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Bubbles | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Actions | 🛠️ | ✔️ | ✔️ | 📝️ | 🛠️ | ✔️ |
| Notification Center | ✔️ | ✔️ | ✖️ | ✔️ | ✔️ | ✔️ |
| Images | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Replace | ✔️ | ✔️ | ✖️ | ✔️ | ✔️ | ✔️ |
| Inline Reply | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ |
XDG Desktop Portals are sandbox-compatible DBus APIs for accessing system functions. Desktop environments can use these portals to request consent from users and provide an ongoing visual indication of portal usage.
The Location Portal is responsible for providing apps with the device’s current physical location.
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Consent | ✔️ | ❓️ | ❓️ | 🛠️ | ✔️ | ❓️ |
| Indication | ✔️ | ❓️ | ✖️ | 📝️ | ✔️ | ✖️ |
The Screencast Portal is responsible for providing apps with the display’s or a window’s visible content i.e. for recording, streaming, or remote viewing.
| GNOME | KDE Plasma | MATE | Pantheon | Ubuntu | Xfce | |
|---|---|---|---|---|---|---|
| Consent | ✔️ | ✔️ | ❓️ | 📝️ | ✔️ | ❓️ |
| Indication | ✔️ | ✔️ | ✖️ | 📝️ | ✔️ | ✖️ |