Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Well it's C not python, but this works for me. I named the menu "mymenu" that way you can style it without using GtkLabel which would affect any other labels in the application.</p> <pre><code>/* COMPILE WITH: gcc -Wall -o icon3 `pkg-config --cflags --libs gtk+-3.0` icon3.c */ #include &lt;gtk/gtk.h&gt; #include &lt;string.h&gt; /* for CSS */ static void cb_left_click(GtkStatusIcon *icon, gpointer data) { static GtkWidget *window = NULL; if (window == NULL) { window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Status Icon"); g_signal_connect( window, "delete-event", G_CALLBACK(gtk_main_quit), NULL ); gtk_widget_show(window); } } static void cb_right_click(GtkStatusIcon *icon, int button, int time, gpointer data) { GtkWidget *menu; menu = gtk_menu_new (); gtk_widget_set_name(GTK_WIDGET(menu),"mymenu"); GtkWidget *item1 = gtk_menu_item_new_with_label("First"); GtkWidget *item2 = gtk_menu_item_new_with_label("Second"); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item1); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item2); gtk_widget_show_all(menu); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, gtk_status_icon_position_menu, icon, button, time); } int main(int argc, char *argv[]) { GtkStatusIcon *icon; /*-- CSS ------------------*/ GtkCssProvider *provider; GdkDisplay *display; GdkScreen *screen; /*---------------------------*/ gtk_init(&amp;argc, &amp;argv); icon = gtk_status_icon_new_from_stock (GTK_STOCK_MEDIA_PLAY); g_signal_connect (G_OBJECT(icon), "activate", G_CALLBACK(cb_left_click), NULL); g_signal_connect (G_OBJECT(icon), "popup-menu", G_CALLBACK(cb_right_click), NULL); /*---------------- CSS ----------------------------------------------------------------------------------------------------*/ provider = gtk_css_provider_new (); display = gdk_display_get_default (); screen = gdk_display_get_default_screen (display); gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); gsize bytes_written, bytes_read; const gchar* home = "/home/mike/icon3.css"; GError *error = 0; gtk_css_provider_load_from_path (provider, g_filename_to_utf8(home, strlen(home), &amp;bytes_read, &amp;bytes_written, &amp;error), NULL); g_object_unref (provider); /*-------------------------------------------------------------------------------------------------------------------------*/ gtk_main(); return 0; } </code></pre> <p>Css file:</p> <pre><code>#mymenu { background-color: white; color: green; font-weight:bold; } #mymenu :hover { background-color: red; color: blue; font-weight:bold; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload