Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

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