tray latest
Cross-platform, super tiny C99 implementation of a system tray icon with a popup menu and notifications.
tray.h
Go to the documentation of this file.
1
5#ifndef TRAY_H
6#define TRAY_H
7
8#if defined(_WIN32)
9 #include <Windows.h>
10#endif
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
19 struct tray_menu;
20
24 struct tray {
25 const char *icon;
26 const char *tooltip;
27 const char *notification_icon;
28 const char *notification_text;
29 const char *notification_title;
30 void (*notification_cb)();
31 void (*cb)(struct tray *);
32 struct tray_menu *menu;
33 const int iconPathCount;
34 const char *allIconPaths[];
35 };
36
40 struct tray_menu {
41 const char *text;
43 int checked;
45
46 void (*cb)(struct tray_menu *);
47 void *context;
48
50 };
51
57 int tray_init(struct tray *tray);
58
64 int tray_loop(int blocking);
65
70 void tray_update(struct tray *tray);
71
75 void tray_show_menu(void);
76
84
94 void tray_simulate_menu_item_click(int index);
95
99 void tray_exit(void);
100
111 void tray_set_log_callback(void (*cb)(int level, const char *msg));
112
128 void tray_set_app_info(const char *app_name, const char *app_display_name, const char *desktop_name);
129
130#if defined(_WIN32)
135 HWND tray_get_hwnd(void);
136#endif
137
138#ifdef __cplusplus
139} // extern "C"
140#endif
141
142#endif /* TRAY_H */
Tray menu item.
Definition tray.h:40
void * context
Context to pass to the callback.
Definition tray.h:47
struct tray_menu * submenu
Submenu items.
Definition tray.h:49
int checkbox
Whether the item is a checkbox.
Definition tray.h:44
void(* cb)(struct tray_menu *)
Callback to invoke when the item is clicked.
Definition tray.h:46
int disabled
Whether the item is disabled.
Definition tray.h:42
const char * text
Text to display.
Definition tray.h:41
int checked
Whether the item is checked.
Definition tray.h:43
Tray icon.
Definition tray.h:24
const char * notification_title
Title to display in the notification.
Definition tray.h:29
void(* notification_cb)()
Callback to invoke when the notification is clicked.
Definition tray.h:30
const char * allIconPaths[]
Array of icon paths.
Definition tray.h:34
void(* cb)(struct tray *)
Callback for left click, leave null to just open menu.
Definition tray.h:31
const char * tooltip
Tooltip to display.
Definition tray.h:26
const char * notification_icon
Icon to display in the notification.
Definition tray.h:27
const int iconPathCount
Number of icon paths.
Definition tray.h:33
struct tray_menu * menu
Menu items.
Definition tray.h:32
const char * icon
Icon to display.
Definition tray.h:25
const char * notification_text
Text to display in the notification.
Definition tray.h:28
void tray_set_log_callback(void(*cb)(int level, const char *msg))
Set a callback for log messages produced by the tray library.
Definition tray_darwin.m:143
void tray_simulate_notification_click(void)
Simulate a notification click, invoking the notification callback (for testing purposes).
Definition tray_darwin.m:133
int tray_init(struct tray *tray)
Create tray icon.
Definition tray_darwin.m:86
void tray_simulate_menu_item_click(int index)
Simulate clicking a top-level menu item by index (for testing purposes).
Definition tray_darwin.m:138
HWND tray_get_hwnd(void)
Get the tray window handle.
Definition tray_windows.c:373
void tray_show_menu(void)
Force show the tray menu (for testing purposes).
Definition tray_darwin.m:129
void tray_exit(void)
Terminate UI loop.
Definition tray_darwin.m:155
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.
Definition tray_darwin.m:148
int tray_loop(int blocking)
Run one iteration of the UI loop.
Definition tray_darwin.m:99
void tray_update(struct tray *tray)
Update the tray icon and menu.
Definition tray_darwin.m:116