[Linux] TrayIcon: StatusNotifierItem Id is hard-coded to "nativeapi-tray"
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
Start in src/platform/linux/tray_icon_linux.cpp at the StatusNotifierItem Id property, then inspect how the default GApplication application ID and executable name are available. Trace the TrayIcon API and Flutter bindings to determine where an explicit id can be set before registration. Done means Linux icons have stable app-specific default ids, explicit ids are exposed, and other platforms follow the agreed no-op or mapping behavior.
Written by the indexing model from the issue text.
Description
On Linux, the tray icon is a StatusNotifierItem published by nativeapi, and its Id property is hard-coded (src/platform/linux/tray_icon_linux.cpp):
if (g_strcmp0(property_name, "Id") == 0)
return g_variant_new_string("nativeapi-tray");
The SNI spec wants Id to be a name that is unique to the application and stable across sessions. Hosts use it to remember per-item settings (hidden/shown, order), and some show it to the user: niri shows it as the hover tooltip. Right now every nativeapi app reports the same nativeapi-tray, so hosts can't tell apps apart, and a user's choice for one app applies to all of them.
Proposal:
- Default the
Idto something app-specific and stable, for example the application id (g_application_get_application_id()of the default GApplication, which is what Flutter's Linux runner sets fromAPPLICATION_ID), falling back to the executable name. Add a per-icon suffix only when an app has several tray icons. - Let apps set it explicitly:
TrayIcon::SetId(std::string)(or a constructor argument), set before the item is registered, sinceIdmust not change afterwards. Expose it in the bindings (Flutter:TrayIcon.id). - On macOS and Windows it can be a no-op, or map to
NSStatusItem.autosaveNameon macOS, which serves the same purpose (remembering position/visibility).
Background:
- leanflutter/tray_manager#97: incorrect ID when creating the app indicator on Linux (downstream: localsend/localsend#2902)
- leanflutter/tray_manager#100: expose the id for customization (niri shows it as the tooltip)
- Dominant language
- C++
- Stars
- 34
- Forks
- 7
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from libnativeapi/nativeapi
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
libnativeapi/nativeapi#80 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 35/100
libnativeapi/nativeapi#79 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
libnativeapi/nativeapi#78 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
libnativeapi/nativeapi#77 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 48/100
libnativeapi/nativeapi#76 ·
All issues in libnativeapi/nativeapi
Similar issues
-
AuTest Bug Tests
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/trafficserver#13714 ·
-
bug build
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
facebookincubator/velox#19143 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
tenstorrent/tt-metal#57393 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
objectionary/eo-graphs#74 ·