システムトレイをいじってみる 2/3

左クリックでアイコンの点滅をon/off、
右クリックでアプリ終了、
という機能を追加してみます。


シグナル "activate"が アイコン上での左クリック
シグナル "popup-menu"が アイコン上での右クリック
に対応しているようです。


tray.c

#include

static gboolean isBlinking = TRUE;

void on_statusIcon_activate(GtkStatusIcon *status_icon, gpointer user_data)
{
gtk_status_icon_set_blinking(status_icon, isBlinking);
isBlinking = !isBlinking;
}

void on_statusIcon_popup_menu(GtkStatusIcon *status_icon, gpointer user_data)
{
gtk_main_quit();
}

int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);

GtkStatusIcon *icon;

icon = gtk_status_icon_new();
gtk_status_icon_set_from_file(icon, "icon.png");
gtk_status_icon_set_tooltip(icon, "StatusIcon Aplication");

g_signal_connect(G_OBJECT(icon), "activate",
G_CALLBACK(on_statusIcon_activate), NULL);
g_signal_connect(G_OBJECT(icon), "popup-menu",
G_CALLBACK(on_statusIcon_popup_menu), NULL);

gtk_main();

return 0;
}

これで無事にアプリを終了できるようなりました。

参考資料