## XAppGtkWindow

XAppGtkWindow — A subclass of `GtkWindow` that allows additional communication with the window manager.

## Functions

GtkWidget * | xapp_gtk_window_new ()
void | xapp_gtk_window_set_icon_name ()
void | xapp_gtk_window_set_icon_from_file ()
void | xapp_gtk_window_set_progress ()
void | xapp_gtk_window_set_progress_pulse ()
void | xapp_set_window_icon_name ()
void | xapp_set_window_icon_from_file ()
void | xapp_set_window_progress ()
void | xapp_set_window_progress_pulse ()
void | xapp_set_xid_icon_name ()
void | xapp_set_xid_icon_from_file ()
void | xapp_set_xid_progress ()
void | xapp_set_xid_progress_pulse ()

## Types and Values

#define | XAPP_TYPE_GTK_WINDOW
struct | XAppGtkWindowClass
| XAppGtkWindow

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkWidget
                ╰── GtkContainer
                    ╰── GtkBin
                        ╰── GtkWindow
                            ╰── XAppGtkWindow
                                ╰── XAppIconChooserDialog

## Implemented Interfaces

XAppGtkWindow implements AtkImplementorIface and GtkBuildable.

## Description

This widget is a simple subclass of GtkWindow that provides the following additional capabilities:

- Ability to set an icon name or icon file path for the window manager to make use of, rather than relying on a desktop file or fixed-size window- backed icon that Gtk normally generates. The window manager must support the NET_WM_XAPP_ICON_NAME hint.

- Ability to send progress info to the window manager, in the form of an integer, 0-100, which can then be used to display this progress in some manner in a task manager or window list. The window manager must support the NET_WM_XAPP_PROGRESS hint.

- Ability to signal a 'pulsing' progress state, of potentially indeterminate value, in the form of a boolean, which can be passed on to a window list. The window manager must support the NET_WM_XAPP_PROGRESS_PULSE hint

Wrappers:

Also provided are corresponding wrapper functions for normal GtkWindows. They are not class methods - they are called with the target widget as their first argument.

For example:

win = Gtk.Window() XApp.set_window_icon_name(win, "foobar")

These functions mirror those of the XAppGtkWindow class, but allow the properties to work with normal GtkWindows and descendants of GtkWindow.

## Functions

### xapp_gtk_window_new ()

    GtkWidget *
    xapp_gtk_window_new (GtkWindowType type);

Creates a new XAppGtkWindow of type `type` . See `gtk_window_new()` for more details.

#### Parameters

type | The GtkWindowType to use |

#### Returns

A new XAppGtkWindow (transfer: full)

### xapp_gtk_window_set_icon_name ()

    void
    xapp_gtk_window_set_icon_name (XAppGtkWindow *window,
                                   const gchar *icon_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This also chains up and calls GtkWindow.set_icon_name for convenience and compatibility. Set to `NULL` to unset.

#### Parameters

window | The XAppGtkWindow to set the icon name for |
icon_name | The icon name or path to set, or `NULL` to unset. | [nullable]

### xapp_gtk_window_set_icon_from_file ()

    void
    xapp_gtk_window_set_icon_from_file (XAppGtkWindow *window,
                                        const gchar *file_name,
                                        GError **error);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This also chains up and calls GtkWindow.set_icon_from_file for convenience and compatibility. Set to `NULL` to unset.

#### Parameters

window | The XAppGtkWindow to set the icon name for |
file_name | The icon path to set, or `NULL` to unset. | [nullable]
error | An error to set if something goes wrong. | [nullable]

### xapp_gtk_window_set_progress ()

    void
    xapp_gtk_window_set_progress (XAppGtkWindow *window,
                                  gint progress);

Sets the progress hint for a window manager (like muffin) to make available when applications want to display the application's progress in some operation. The value sent to the WM will be clamped to between 0 and 100.

Note: If a window will stick around after progress is complete, you will probably need to set progress to 0 to remove any progress effects on taskbars and window lists.

Setting progress will also cancel the 'pulsing' flag on the window as well, if it has been set.

#### Parameters

window | The XAppGtkWindow to set the progress for |
progress | The value to set for progress. |

### xapp_gtk_window_set_progress_pulse ()

    void
    xapp_gtk_window_set_progress_pulse (XAppGtkWindow *window,
                                        gboolean pulse);

Sets the progress pulse hint hint for a window manager (like muffin) to make available when applications want to display indeterminate or ongoing progress in a task manager.

Note: If a window will stick around after progress is complete, you will probably need to set progress to 0 to remove any progress effects on taskbars and window lists. This will also remove the pulse state, if it is set.

Setting an explicit progress value will unset this flag.

#### Parameters

window | The XAppGtkWindow to set the progress for |
pulse | Whether to have pulsing set or not. |

### xapp_set_window_icon_name ()

    void
    xapp_set_window_icon_name (GtkWindow *window,
                               const gchar *icon_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This is a function, not a method, for taking advantage of this feature with descendants of GtkWindows, such as GtkDialogs. Sets gtk_window_set_icon_name as well, to avoid needing to have two calls each time. Set to `NULL` to unset.

#### Parameters

window | The GtkWindow to set the icon name for |
icon_name | The icon name to set, or `NULL` to unset. | [nullable]

### xapp_set_window_icon_from_file ()

    void
    xapp_set_window_icon_from_file (GtkWindow *window,
                                    const gchar *file_name,
                                    GError **error);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This also chains up and calls GtkWindow.set_icon_from_file for convenience and compatibility. Set to `NULL` to unset.

#### Parameters

window | The GtkWindow to set the icon name for |
file_name | The icon path to set, or `NULL` to unset. | [nullable]
error | An error to set if something goes wrong. | [nullable]

### xapp_set_window_progress ()

    void
    xapp_set_window_progress (GtkWindow *window,
                              gint progress);

Sets the progress hint for a window manager (like muffin) to make available when applications want to display the application's progress in some operation. The value sent to the WM will be clamped to between 0 and 100.

Note: If a window will stick around after progress is complete, you will probably need to set progress to 0 to remove any progress effects on taskbars and window lists.

Setting progress will also cancel the 'pulsing' flag on the window as well, if it has been set.

#### Parameters

window | The GtkWindow to set the progress for |
progress | The value to set for progress. |

### xapp_set_window_progress_pulse ()

    void
    xapp_set_window_progress_pulse (GtkWindow *window,
                                    gboolean pulse);

Sets the progress pulse hint hint for a window manager (like muffin) to make available when applications want to display indeterminate or ongoing progress in a task manager.

Note: If a window will stick around after progress is complete, you will probably need to set progress to 0 to remove any progress effects on taskbars and window lists. This will also remove the pulse state, if it is set.

Setting an explicit progress value will unset this flag.

#### Parameters

window | The GtkWindow to set the progress for |
pulse | Whether to have pulsing set or not. |

### xapp_set_xid_icon_name ()

    void
    xapp_set_xid_icon_name (gulong xid,
                            const gchar *icon_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This is a function, not a method, for applying the icon name property for a given (possibly foreign) window, by passing the window's XID. Set to `NULL` to unset.

#### Parameters

xid | The Window to set the icon name for |
icon_name | The icon name to set, or `NULL` to unset. | [nullable]

### xapp_set_xid_icon_from_file ()

    void
    xapp_set_xid_icon_from_file (gulong xid,
                                 const gchar *file_name);

Sets the icon name hint for a window manager (like muffin) to make available when applications want to change their icons during runtime without having to resort to the internal low-res pixbufs that GdkWindow sets on the client side. This is a function, not a method, for applying the icon name property for a given (possibly foreign) window, by passing the window's XID. Set to `NULL` to unset.

#### Parameters

xid | The Window to set the icon name for |
file_name | The icon path to set, or `NULL` to unset. | [nullable]

### xapp_set_xid_progress ()

    void
    xapp_set_xid_progress (gulong xid,
                           gint progress);

Sets the progress hint for a window manager (like muffin) to make available when applications want to display the application's progress in some operation. The value sent to the WM will be clamped to between 0 and 100.

Setting progress will also cancel the 'pulsing' flag on the window as well, if it has been set.

Note: If a window will stick around after progress is complete, you will probably need to set progress to 0 to remove any progress effects on taskbars and window lists.

This is a function, not a method, for applying the progress property for a given (possibly foreign) window, by passing the window's XID.

#### Parameters

xid | The Window to set the progress for |
progress | The value to set for progress. |

### xapp_set_xid_progress_pulse ()

    void
    xapp_set_xid_progress_pulse (gulong xid,
                                 gboolean pulse);

Sets the progress pulse hint hint for a window manager (like muffin) to make available when applications want to display indeterminate or ongoing progress in a task manager.

Note: If a window will stick around after progress is complete, you will probably need to set progress to 0 to remove any progress effects on taskbars and window lists.

Setting an explicit progress value will unset this flag.

#### Parameters

xid | The Window to set the progress for |
pulse | Whether to have pulsing set or not. |

## Types and Values

### XAPP_TYPE_GTK_WINDOW

    #define XAPP_TYPE_GTK_WINDOW (xapp_gtk_window_get_type ())

### struct XAppGtkWindowClass

    struct XAppGtkWindowClass {
      GtkWindowClass parent_class;

      gpointer padding[12];
    };

### XAppGtkWindow

    typedef struct _XAppGtkWindow XAppGtkWindow;