struct _ObFrame;
struct _ObGroup;
+struct _ObSessionState;
typedef struct _ObClient ObClient;
typedef struct _ObClientIcon ObClientIcon;
/*! The id of the group the window belongs to */
struct _ObGroup *group;
+
+ /*! Saved session data to apply to this client */
+ struct _ObSessionState *session;
+
/*! Whether or not the client is a transient window. This is guaranteed to
be TRUE if transient_for != NULL, but not guaranteed to be FALSE if
transient_for == NULL. */
desktops) */
guint desktop;
+ /*! The startup id for the startup-notification protocol. This will be
+ NULL if a startup id is not set. */
+ gchar *startup_id;
+
/*! Normal window title */
gchar *title;
/*! The count for the title. When another window with the same title
gchar *class;
/*! The specified role of the window, used for identification */
gchar *role;
+ /*! The session client id for the window. *This can be NULL!* */
+ gchar *sm_client_id;
/*! The type of window (what its function is) */
ObClientType type;
extern GList *client_list;
-void client_startup();
-void client_shutdown();
+void client_startup(gboolean reconfig);
+void client_shutdown(gboolean reconfig);
+
+void client_add_destructor(GDestroyNotify func);
+void client_remove_destructor(GDestroyNotify func);
/*! Manages all existing windows */
void client_manage_all();
/* Returns if the window is focused */
gboolean client_focused(ObClient *self);
+#define client_move(self, x, y) \
+ client_configure(self, OB_CORNER_TOPLEFT, x, y, \
+ self->area.width, self->area.height, \
+ TRUE, TRUE)
+#define client_resize(self, w, h) \
+ client_configure(self, OB_CORNER_TOPLEFT, self->area.x, self->area.y, \
+ w, h, TRUE, TRUE)
+#define client_move_resize(self, x, y, w, h) \
+ client_configure(self, OB_CORNER_TOPLEFT, x, y, w, h, TRUE, TRUE)
+
#define client_configure(self, anchor, x, y, w, h, user, final) \
client_configure_full(self, anchor, x, y, w, h, user, final, FALSE)
guint client_monitor(ObClient *self);
-gchar* client_get_sm_client_id(ObClient *self);
+void client_update_sm_client_id(ObClient *self);
#endif