/*! Holds an icon in ARGB format */
typedef struct Icon {
- unsigned long w, h;
+ unsigned long width, height;
unsigned long *data;
} Icon;
/*! Display a button to toggle the window's placement on
all desktops */
Decor_AllDesktops = 1 << 6,
- Decor_Close = 1 << 7 /*!< Display a close button */
+ Decor_Shade = 1 << 7, /*!< Displays a shade button */
+ Decor_Close = 1 << 8 /*!< Display a close button */
} Decoration;
gchar *icon_title;
/*! The application that created the window */
- gchar *res_name;
+ gchar *name;
/*! The class of the window, can used for grouping */
- gchar *res_class;
+ gchar *class;
/*! The specified role of the window, used for identification */
gchar *role;
gboolean urgent;
/*! Notify the window when it receives focus? */
gboolean focus_notify;
- /*! Does the client window have the input focus? */
- gboolean focused;
/*! The window uses shape extension to be non-rectangular? */
gboolean shaped;
*/
int functions;
+ /*! Saved decorations from before becoming fullscreen */
+ int pre_fs_decor;
+
+ /*! Saved functions from before becoming fullscreen */
+ int pre_fs_func;
+
/*! Icons for the client as specified on the client window */
Icon *icons;
/*! The number of icons in icons */
Pixmap pixmap_icon_mask;
} Client;
-extern GSList *client_list;
+extern GList *client_list;
extern GHashTable *client_map;
void client_startup();
to them in a number of places regarding focus or user interaction. */
gboolean client_normal(Client *self);
+/* Returns if the window is focused */
+gboolean client_focused(Client *self);
+
/*! Move and/or resize the window.
This also maintains things like the client's minsize, and size increments.
@param anchor The corner to keep in the same position when resizing.
*/
void client_shade(Client *self, gboolean shade);
-/*! Request the client to close its window. */
+/*! Request the client to close its window */
void client_close(Client *self);
-/*! Sends the window to the specified desktop */
-void client_set_desktop(Client *self, unsigned int target);
+/*! Kill the client off violently */
+void client_kill(Client *self);
+
+/*! Sends the window to the specified desktop
+ @param donthide If TRUE, the window will not be shown/hidden after its
+ desktop has been changed. Generally this should be FALSE. */
+void client_set_desktop(Client *self, guint target, gboolean donthide);
/*! Return a modal child of the client window
@return A modal child of the client window, or 0 if none was found.
/*! Retrieves the window's type and sets Client->type */
void client_get_type(Client *self);
+Icon *client_icon(Client *self, int w, int h);
+
#endif