Confira libappindicator
. É responsável por colocar o ícone na bandeja. O menu suspenso exibido pelo indicador é um GtkMenu
. O resto deve ser familiar se você trabalhou com o GTK +. Aqui está um exemplo mínimo.
#include <gtk/gtk.h>
#include <libappindicator/app-indicator.h>
static void do_something(GtkWidget *widget, gpointer data) {
//...
}
int main (int argc, char **argv) {
gtk_init(&argc, &argv);
GtkWidget *menu = gtk_menu_new();
GtkWidget *menuitem = gtk_menu_item_new_with_mnemonic("_This is a menu item");
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
g_signal_connect(menuitem, "activate", G_CALLBACK(do_something), NULL);
/* the second parameter is the icon displayed */
AppIndicator* ind = app_indicator_new("test", "indicator-messages-new",
APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
app_indicator_set_menu(ind, GTK_MENU(menu));
gtk_main();
}
Você compila com o seguinte. Você precisará de libgtk2.0-dev
e libappindicator-dev
packages.
$ gcc test.c 'pkg-config --cflags --libs gtk+-2.0 appindicator-0.1'
Você descobrirá o resto. A maneira mais fácil é verificar outras aplicações de indicadores simples. Por exemplo, veja o indicador de esta resposta .