GtkStatusIcon

GtkStatusIcon — Display an icon in the system tray

Synopsis


#include <gtk/gtk.h>

                    GtkStatusIcon;
GtkStatusIcon*      gtk_status_icon_new                 (void);
GtkStatusIcon*      gtk_status_icon_new_from_pixbuf     (GdkPixbuf *pixbuf);
GtkStatusIcon*      gtk_status_icon_new_from_file       (const gchar *filename);
GtkStatusIcon*      gtk_status_icon_new_from_stock      (const gchar *stock_id);
GtkStatusIcon*      gtk_status_icon_new_from_icon_name  (const gchar *icon_name);
GtkStatusIcon*      gtk_status_icon_new_from_gicon      (GIcon *icon);
void                gtk_status_icon_set_from_pixbuf     (GtkStatusIcon *status_icon,
                                                         GdkPixbuf *pixbuf);
void                gtk_status_icon_set_from_file       (GtkStatusIcon *status_icon,
                                                         const gchar *filename);
void                gtk_status_icon_set_from_stock      (GtkStatusIcon *status_icon,
                                                         const gchar *stock_id);
void                gtk_status_icon_set_from_icon_name  (GtkStatusIcon *status_icon,
                                                         const gchar *icon_name);
void                gtk_status_icon_set_from_gicon      (GtkStatusIcon *status_icon,
                                                         GIcon *icon);
GtkImageType        gtk_status_icon_get_storage_type    (GtkStatusIcon *status_icon);
GdkPixbuf*          gtk_status_icon_get_pixbuf          (GtkStatusIcon *status_icon);
const gchar*        gtk_status_icon_get_stock           (GtkStatusIcon *status_icon);
const gchar*        gtk_status_icon_get_icon_name       (GtkStatusIcon *status_icon);
GIcon*              gtk_status_icon_get_gicon           (GtkStatusIcon *status_icon);
gint                gtk_status_icon_get_size            (GtkStatusIcon *status_icon);
void                gtk_status_icon_set_screen          (GtkStatusIcon *status_icon,
                                                         GdkScreen *screen);
GdkScreen*          gtk_status_icon_get_screen          (GtkStatusIcon *status_icon);
void                gtk_status_icon_set_tooltip         (GtkStatusIcon *status_icon,
                                                         const gchar *tooltip_text);
void                gtk_status_icon_set_visible         (GtkStatusIcon *status_icon,
                                                         gboolean visible);
gboolean            gtk_status_icon_get_visible         (GtkStatusIcon *status_icon);
void                gtk_status_icon_set_blinking        (GtkStatusIcon *status_icon,
                                                         gboolean blinking);
gboolean            gtk_status_icon_get_blinking        (GtkStatusIcon *status_icon);
gboolean            gtk_status_icon_is_embedded         (GtkStatusIcon *status_icon);
void                gtk_status_icon_position_menu       (GtkMenu *menu,
                                                         gint *x,
                                                         gint *y,
                                                         gboolean *push_in,
                                                         gpointer user_data);
gboolean            gtk_status_icon_get_geometry        (GtkStatusIcon *status_icon,
                                                         GdkScreen **screen,
                                                         GdkRectangle *area,
                                                         GtkOrientation *orientation);
guint32             gtk_status_icon_get_x11_window_id   (GtkStatusIcon *status_icon);

Object Hierarchy

  GObject
   +----GtkStatusIcon

Properties

  "blinking"                 gboolean              : Read / Write
  "embedded"                 gboolean              : Read
  "file"                     gchar*                : Write
  "gicon"                    GIcon*                : Read / Write
  "icon-name"                gchar*                : Read / Write
  "orientation"              GtkOrientation        : Read
  "pixbuf"                   GdkPixbuf*            : Read / Write
  "screen"                   GdkScreen*            : Read / Write
  "size"                     gint                  : Read
  "stock"                    gchar*                : Read / Write
  "storage-type"             GtkImageType          : Read
  "visible"                  gboolean              : Read / Write

Signals

  "activate"                                       : Run First / Action
  "popup-menu"                                     : Run First / Action
  "size-changed"                                   : Run Last

Description

The "system tray" or notification area is normally used for transient icons that indicate some special state. For example, a system tray icon might appear to tell the user that they have new mail, or have an incoming instant message, or something along those lines. The basic idea is that creating an icon in the notification area is less annoying than popping up a dialog.

A GtkStatusIcon object can be used to display an icon in a "system tray". The icon can have a tooltip, and the user can interact with it by activating it or popping up a context menu. Critical information should not solely be displayed in a GtkStatusIcon, since it may not be visible (e.g. when the user doesn't have a notification area on his panel). This can be checked with gtk_status_icon_is_embedded().

On X11, the implementation follows the freedesktop.org "System Tray" specification. Implementations of the "tray" side of this specification can be found e.g. in the GNOME and KDE panel applications.

Note that a GtkStatusIcon is not a widget, but just a GObject. Making it a widget would be impractical, since the system tray on Win32 doesn't allow to embed arbitrary widgets.

Details

GtkStatusIcon

typedef struct _GtkStatusIcon GtkStatusIcon;


gtk_status_icon_new ()

GtkStatusIcon*      gtk_status_icon_new                 (void);

Creates an empty status icon object.

Returns : a new GtkStatusIcon

Since 2.10


gtk_status_icon_new_from_pixbuf ()

GtkStatusIcon*      gtk_status_icon_new_from_pixbuf     (GdkPixbuf *pixbuf);

Creates a status icon displaying pixbuf.

The image will be scaled down to fit in the available space in the notification area, if necessary.

pixbuf : a GdkPixbuf
Returns : a new GtkStatusIcon

Since 2.10


gtk_status_icon_new_from_file ()

GtkStatusIcon*      gtk_status_icon_new_from_file       (const gchar *filename);

Creates a status icon displaying the file filename.

The image will be scaled down to fit in the available space in the notification area, if necessary.

filename : a filename
Returns : a new GtkStatusIcon

Since 2.10


gtk_status_icon_new_from_stock ()

GtkStatusIcon*      gtk_status_icon_new_from_stock      (const gchar *stock_id);

Creates a status icon displaying a stock icon. Sample stock icon names are GTK_STOCK_OPEN, GTK_STOCK_QUIT. You can register your own stock icon names, see gtk_icon_factory_add_default() and gtk_icon_factory_add().

stock_id : a stock icon id
Returns : a new GtkStatusIcon

Since 2.10


gtk_status_icon_new_from_icon_name ()

GtkStatusIcon*      gtk_status_icon_new_from_icon_name  (const gchar *icon_name);

Creates a status icon displaying an icon from the current icon theme. If the current icon theme is changed, the icon will be updated appropriately.

icon_name : an icon name
Returns : a new GtkStatusIcon

Since 2.10


gtk_status_icon_new_from_gicon ()

GtkStatusIcon*      gtk_status_icon_new_from_gicon      (GIcon *icon);

Creates a status icon displaying a GIcon. If the icon is a themed icon, it will be updated when the theme changes.

icon : a GIcon
Returns : a new GtkStatusIcon

Since 2.14


gtk_status_icon_set_from_pixbuf ()

void                gtk_status_icon_set_from_pixbuf     (GtkStatusIcon *status_icon,
                                                         GdkPixbuf *pixbuf);

Makes status_icon display pixbuf. See gtk_status_icon_new_from_pixbuf() for details.

status_icon : a GtkStatusIcon
pixbuf : a GdkPixbuf or NULL

Since 2.10


gtk_status_icon_set_from_file ()

void                gtk_status_icon_set_from_file       (GtkStatusIcon *status_icon,
                                                         const gchar *filename);

Makes status_icon display the file filename. See gtk_status_icon_new_from_file() for details.

status_icon : a GtkStatusIcon
filename : a filename

Since 2.10


gtk_status_icon_set_from_stock ()

void                gtk_status_icon_set_from_stock      (GtkStatusIcon *status_icon,
                                                         const gchar *stock_id);

Makes status_icon display the stock icon with the id stock_id. See gtk_status_icon_new_from_stock() for details.

status_icon : a GtkStatusIcon
stock_id : a stock icon id

Since 2.10


gtk_status_icon_set_from_icon_name ()

void                gtk_status_icon_set_from_icon_name  (GtkStatusIcon *status_icon,
                                                         const gchar *icon_name);

Makes status_icon display the icon named icon_name from the current icon theme. See gtk_status_icon_new_from_icon_name() for details.

status_icon : a GtkStatusIcon
icon_name : an icon name

Since 2.10


gtk_status_icon_set_from_gicon ()

void                gtk_status_icon_set_from_gicon      (GtkStatusIcon *status_icon,
                                                         GIcon *icon);

Makes status_icon display the GIcon. See gtk_status_icon_new_from_gicon() for details.

status_icon : a GtkStatusIcon
icon : a GIcon

Since 2.14


gtk_status_icon_get_storage_type ()

GtkImageType        gtk_status_icon_get_storage_type    (GtkStatusIcon *status_icon);

Gets the type of representation being used by the GtkStatusIcon to store image data. If the GtkStatusIcon has no image data, the return value will be GTK_IMAGE_EMPTY.

status_icon : a GtkStatusIcon
Returns : the image representation being used

Since 2.10


gtk_status_icon_get_pixbuf ()

GdkPixbuf*          gtk_status_icon_get_pixbuf          (GtkStatusIcon *status_icon);

Gets the GdkPixbuf being displayed by the GtkStatusIcon. The storage type of the status icon must be GTK_IMAGE_EMPTY or GTK_IMAGE_PIXBUF (see gtk_status_icon_get_storage_type()). The caller of this function does not own a reference to the returned pixbuf.

status_icon : a GtkStatusIcon
Returns : the displayed pixbuf, or NULL if the image is empty.

Since 2.10


gtk_status_icon_get_stock ()

const gchar*        gtk_status_icon_get_stock           (GtkStatusIcon *status_icon);

Gets the id of the stock icon being displayed by the GtkStatusIcon. The storage type of the status icon must be GTK_IMAGE_EMPTY or GTK_IMAGE_STOCK (see gtk_status_icon_get_storage_type()). The returned string is owned by the GtkStatusIcon and should not be freed or modified.

status_icon : a GtkStatusIcon
Returns : stock id of the displayed stock icon, or NULL if the image is empty.

Since 2.10


gtk_status_icon_get_icon_name ()

const gchar*        gtk_status_icon_get_icon_name       (GtkStatusIcon *status_icon);

Gets the name of the icon being displayed by the GtkStatusIcon. The storage type of the status icon must be GTK_IMAGE_EMPTY or GTK_IMAGE_ICON_NAME (see gtk_status_icon_get_storage_type()). The returned string is owned by the GtkStatusIcon and should not be freed or modified.

status_icon : a GtkStatusIcon
Returns : name of the displayed icon, or NULL if the image is empty.

Since 2.10


gtk_status_icon_get_gicon ()

GIcon*              gtk_status_icon_get_gicon           (GtkStatusIcon *status_icon);

Retrieves the GIcon being displayed by the GtkStatusIcon. The storage type of the status icon must be GTK_IMAGE_EMPTY or GTK_IMAGE_GICON (see gtk_status_icon_get_storage_type()). The caller of this function does not own a reference to the returned GIcon.

If this function fails, icon is left unchanged;

status_icon : a GtkStatusIcon
Returns : the displayed icon, or NULL if the image is empty

Since 2.14


gtk_status_icon_get_size ()

gint                gtk_status_icon_get_size            (GtkStatusIcon *status_icon);

Gets the size in pixels that is available for the image. Stock icons and named icons adapt their size automatically if the size of the notification area changes. For other storage types, the size-changed signal can be used to react to size changes.

Note that the returned size is only meaningful while the status icon is embedded (see gtk_status_icon_is_embedded()).

status_icon : a GtkStatusIcon
Returns : the size that is available for the image

Since 2.10


gtk_status_icon_set_screen ()

void                gtk_status_icon_set_screen          (GtkStatusIcon *status_icon,
                                                         GdkScreen *screen);

Sets the GdkScreen where status_icon is displayed; if the icon is already mapped, it will be unmapped, and then remapped on the new screen.

status_icon : a GtkStatusIcon
screen : a GdkScreen

Since 2.12


gtk_status_icon_get_screen ()

GdkScreen*          gtk_status_icon_get_screen          (GtkStatusIcon *status_icon);

Returns the GdkScreen associated with status_icon.

status_icon : a GtkStatusIcon
Returns : a GdkScreen.

Since 2.12


gtk_status_icon_set_tooltip ()

void                gtk_status_icon_set_tooltip         (GtkStatusIcon *status_icon,
                                                         const gchar *tooltip_text);

Sets the tooltip of the status icon.

status_icon : a GtkStatusIcon
tooltip_text : the tooltip text, or NULL

Since 2.10


gtk_status_icon_set_visible ()

void                gtk_status_icon_set_visible         (GtkStatusIcon *status_icon,
                                                         gboolean visible);

Shows or hides a status icon.

status_icon : a GtkStatusIcon
visible : TRUE to show the status icon, FALSE to hide it

Since 2.10


gtk_status_icon_get_visible ()

gboolean            gtk_status_icon_get_visible         (GtkStatusIcon *status_icon);

Returns whether the status icon is visible or not. Note that being visible does not guarantee that the user can actually see the icon, see also gtk_status_icon_is_embedded().

status_icon : a GtkStatusIcon
Returns : TRUE if the status icon is visible

Since 2.10


gtk_status_icon_set_blinking ()

void                gtk_status_icon_set_blinking        (GtkStatusIcon *status_icon,
                                                         gboolean blinking);

Makes the status icon start or stop blinking. Note that blinking user interface elements may be problematic for some users, and thus may be turned off, in which case this setting has no effect.

status_icon : a GtkStatusIcon
blinking : TRUE to turn blinking on, FALSE to turn it off

Since 2.10


gtk_status_icon_get_blinking ()

gboolean            gtk_status_icon_get_blinking        (GtkStatusIcon *status_icon);

Returns whether the icon is blinking, see gtk_status_icon_set_blinking().

status_icon : a GtkStatusIcon
Returns : TRUE if the icon is blinking

Since 2.10


gtk_status_icon_is_embedded ()

gboolean            gtk_status_icon_is_embedded         (GtkStatusIcon *status_icon);

Returns whether the status icon is embedded in a notification area.

status_icon : a GtkStatusIcon
Returns : TRUE if the status icon is embedded in a notification area.

Since 2.10


gtk_status_icon_position_menu ()

void                gtk_status_icon_position_menu       (GtkMenu *menu,
                                                         gint *x,
                                                         gint *y,
                                                         gboolean *push_in,
                                                         gpointer user_data);

Menu positioning function to use with gtk_menu_popup() to position menu aligned to the status icon user_data.

menu : the GtkMenu
x : return location for the x position
y : return location for the y position
push_in : whether the first menu item should be offset (pushed in) to be aligned with the menu popup position (only useful for GtkOptionMenu).
user_data : the status icon to position the menu on

Since 2.10


gtk_status_icon_get_geometry ()

gboolean            gtk_status_icon_get_geometry        (GtkStatusIcon *status_icon,
                                                         GdkScreen **screen,
                                                         GdkRectangle *area,
                                                         GtkOrientation *orientation);

Obtains information about the location of the status icon on screen. This information can be used to e.g. position popups like notification bubbles.

See gtk_status_icon_position_menu() for a more convenient alternative for positioning menus.

Note that some platforms do not allow GTK+ to provide this information, and even on platforms that do allow it, the information is not reliable unless the status icon is embedded in a notification area, see gtk_status_icon_is_embedded().

status_icon : a GtkStatusIcon
screen : return location for the screen, or NULL if the information is not needed
area : return location for the area occupied by the status icon, or NULL
orientation : return location for the orientation of the panel in which the status icon is embedded, or NULL. A panel at the top or bottom of the screen is horizontal, a panel at the left or right is vertical.
Returns : TRUE if the location information has been filled in

Since 2.10


gtk_status_icon_get_x11_window_id ()

guint32             gtk_status_icon_get_x11_window_id   (GtkStatusIcon *status_icon);

This function is only useful on the X11/freedesktop.org platform. It returns a window ID for the widget in the underlying status icon implementation. This is useful for the Galago notification service, which can send a window ID in the protocol in order for the server to position notification windows pointing to a status icon reliably.

This function is not intended for other use cases which are more likely to be met by one of the non-X11 specific methods, such as gtk_status_icon_position_menu().

status_icon : a GtkStatusIcon
Returns : An 32 bit unsigned integer identifier for the underlying X11 Window

Since 2.14

Property Details

The "blinking" property

  "blinking"                 gboolean              : Read / Write

Whether or not the status icon is blinking.

Default value: FALSE


The "embedded" property

  "embedded"                 gboolean              : Read

TRUE if the statusicon is embedded in a notification area.

Default value: FALSE

Since 2.12


The "file" property

  "file"                     gchar*                : Write

Filename to load and display.

Default value: NULL


The "gicon" property

  "gicon"                    GIcon*                : Read / Write

The GIcon displayed in the GtkStatusIcon. For themed icons, the image will be updated automatically if the theme changes.

Since 2.14


The "icon-name" property

  "icon-name"                gchar*                : Read / Write

The name of the icon from the icon theme.

Default value: NULL


The "orientation" property

  "orientation"              GtkOrientation        : Read

The orientation of the tray in which the statusicon is embedded.

Default value: GTK_ORIENTATION_HORIZONTAL

Since 2.12


The "pixbuf" property

  "pixbuf"                   GdkPixbuf*            : Read / Write

A GdkPixbuf to display.


The "screen" property

  "screen"                   GdkScreen*            : Read / Write

The screen where this status icon will be displayed.


The "size" property

  "size"                     gint                  : Read

The size of the icon.

Allowed values: >= 0

Default value: 0


The "stock" property

  "stock"                    gchar*                : Read / Write

Stock ID for a stock image to display.

Default value: NULL


The "storage-type" property

  "storage-type"             GtkImageType          : Read

The representation being used for image data.

Default value: GTK_IMAGE_EMPTY


The "visible" property

  "visible"                  gboolean              : Read / Write

Whether or not the status icon is visible.

Default value: TRUE

Signal Details

The "activate" signal

void                user_function                      (GtkStatusIcon *status_icon,
                                                        gpointer       user_data)        : Run First / Action

Gets emitted when the user activates the status icon. If and how status icons can activated is platform-dependent.

Unlike most G_SIGNAL_ACTION signals, this signal is meant to be used by applications and should be wrapped by language bindings.

status_icon : the object which received the signal
user_data : user data set when the signal handler was connected.

Since 2.10


The "popup-menu" signal

void                user_function                      (GtkStatusIcon *status_icon,
                                                        guint          button,
                                                        guint          activate_time,
                                                        gpointer       user_data)          : Run First / Action

Gets emitted when the user brings up the context menu of the status icon. Whether status icons can have context menus and how these are activated is platform-dependent.

The button and activate_time parameters should be passed as the last to arguments to gtk_menu_popup().

Unlike most G_SIGNAL_ACTION signals, this signal is meant to be used by applications and should be wrapped by language bindings.

status_icon : the object which received the signal
button : the button that was pressed, or 0 if the signal is not emitted in response to a button press event
activate_time : the timestamp of the event that triggered the signal emission
user_data : user data set when the signal handler was connected.

Since 2.10


The "size-changed" signal

gboolean            user_function                      (GtkStatusIcon *status_icon,
                                                        gint           size,
                                                        gpointer       user_data)        : Run Last

Gets emitted when the size available for the image changes, e.g. because the notification area got resized.

status_icon : the object which received the signal
size : the new size
user_data : user data set when the signal handler was connected.
Returns : TRUE if the icon was updated for the new size. Otherwise, GTK+ will scale the icon as necessary.

Since 2.10