![]() |
tray latest
Cross-platform, super tiny C99 implementation of a system tray icon with a popup menu and notifications.
|
System tray implementation for Windows. More...
Classes | |
| struct | icon_info |
| Icon information. More... | |
Enumerations | |
| enum | IconType { REGULAR = 1 , LARGE , NOTIFICATION } |
| Icon type. More... | |
Functions | |
| struct icon_info | _create_icon_info (const char *path) |
| Create icon information. | |
| void | _destroy_icon_cache () |
| Destroy icon cache. | |
| HICON | _fetch_cached_icon (struct icon_info *icon_record, enum IconType icon_type) |
| Fetch cached icon. | |
| HICON | _fetch_icon (const char *path, enum IconType icon_type) |
| Fetch icon. | |
| void | _init_icon_cache (const char **paths, int count) |
| Initialize icon cache. | |
| void | tray_exit (void) |
| Terminate UI loop. | |
| HWND | tray_get_hwnd (void) |
| Get the tray window handle. | |
| int | tray_init (struct tray *tray) |
| Create tray icon. | |
| int | tray_loop (int blocking) |
| Run one iteration of the UI loop. | |
| void | tray_set_app_info (const char *app_name, const char *app_display_name, const char *desktop_name) |
| Set application metadata used by the tray library. | |
| void | tray_set_log_callback (void(*cb)(int level, const char *msg)) |
| Set a callback for log messages produced by the tray library. | |
| void | tray_show_menu (void) |
| Force show the tray menu (for testing purposes). | |
| void | tray_simulate_menu_item_click (int index) |
| Simulate clicking a top-level menu item by index (for testing purposes). | |
| void | tray_simulate_notification_click (void) |
| Simulate a notification click, invoking the notification callback (for testing purposes). | |
| void | tray_update (struct tray *tray) |
| Update the tray icon and menu. | |
System tray implementation for Windows.
| enum IconType |
| struct icon_info _create_icon_info | ( | const char * | path | ) |
Create icon information.
| path | Path to the icon. |
Fetch cached icon.
| icon_record | Icon record. |
| icon_type | Icon type. |
| HICON _fetch_icon | ( | const char * | path, |
| enum IconType | icon_type ) |
Fetch icon.
| path | Path to the icon. |
| icon_type | Icon type. |
| void _init_icon_cache | ( | const char ** | paths, |
| int | count ) |
Initialize icon cache.
| paths | Paths to the icons. |
| count | Number of paths. |
| HWND tray_get_hwnd | ( | void | ) |
Get the tray window handle.
| int tray_init | ( | struct tray * | tray | ) |
Create tray icon.
| tray | The tray to initialize. |
| int tray_loop | ( | int | blocking | ) |
Run one iteration of the UI loop.
| blocking | Whether to block the call or not. |
| void tray_set_app_info | ( | const char * | app_name, |
| const char * | app_display_name, | ||
| const char * | desktop_name ) |
Set application metadata used by the tray library.
Must be called before tray_init(). On Linux (Qt), sets the Qt application name, display name, and desktop file name used for D-Bus registration. On other platforms this function is a no-op.
| app_name | Application name used as a technical identifier (e.g., for D-Bus registration). Converted to lowercase automatically. NULL uses the default ("tray"). |
| app_display_name | Human-readable name shown in notifications and UI. NULL derives from the tray tooltip or falls back to app_name. |
| desktop_name | Desktop file name for D-Bus. NULL appends ".desktop" to app_name. |
| void tray_set_log_callback | ( | void(* | cb )(int level, const char *msg) | ) |
Set a callback for log messages produced by the tray library.
On Linux the callback is installed as a Qt message handler so all Qt diagnostic output is routed through it. On other platforms this function is a no-op.
| cb | Callback invoked with level (0=debug, 1=info, 2=warning, 3=error) and the message string. Pass NULL to restore the default logging behaviour. |
| void tray_simulate_menu_item_click | ( | int | index | ) |
Simulate clicking a top-level menu item by index (for testing purposes).
On Linux (Qt): triggers the QAction associated with the given top-level menu index (separators and submenus are ignored). On other platforms: no-op.
| index | Zero-based index in the top-level tray menu. |
| void tray_simulate_notification_click | ( | void | ) |
Simulate a notification click, invoking the notification callback (for testing purposes).
On Linux (Qt): triggers the stored notification callback as if the user clicked the notification. On other platforms: no-op.
| void tray_update | ( | struct tray * | tray | ) |
Update the tray icon and menu.
| tray | The tray to update. |