]> git.sur5r.net Git - i3/i3/blobdiff - include/client.h
Fix unaligned memory access on sparc (Thanks David Coppa)
[i3/i3] / include / client.h
index 5d87b2ee4d5d8015b6354bd7afc6423f98af8d50..45b8f4a7ef2d6525ca1cc6a0618955c2b470aef4 100644 (file)
@@ -3,7 +3,7 @@
  *
  * i3 - an improved dynamic tiling window manager
  *
- * (c) 2009 Michael Stapelberg and contributors
+ * © 2009 Michael Stapelberg and contributors
  *
  * See file LICENSE for license information.
  *
@@ -51,7 +51,19 @@ bool client_matches_class_name(Client *client, char *to_class, char *to_title,
  * and when moving a fullscreen client to another screen.
  *
  */
-void client_enter_fullscreen(xcb_connection_t *conn, Client *client);
+void client_enter_fullscreen(xcb_connection_t *conn, Client *client, bool global);
+
+/**
+ * Leaves fullscreen mode for the given client. This is called by toggle_fullscreen.
+ *
+ */
+void client_leave_fullscreen(xcb_connection_t *conn, Client *client);
+
+/**
+ * Leaves fullscreen mode for the current client. This is called by toggle_fullscreen.
+ *
+ */
+void client_leave_fullscreen(xcb_connection_t *conn, Client *client);
 
 /**
  * Toggles fullscreen mode for the given client. It updates the data
@@ -62,6 +74,12 @@ void client_enter_fullscreen(xcb_connection_t *conn, Client *client);
  */
 void client_toggle_fullscreen(xcb_connection_t *conn, Client *client);
 
+/**
+ * Like client_toggle_fullscreen(), but putting it in global fullscreen-mode.
+ *
+ */
+void client_toggle_fullscreen_global(xcb_connection_t *conn, Client *client);
+
 /**
  * Sets the position of the given client in the X stack to the highest (tiling
  * layer is always on the same position, so this doesn’t matter) below the
@@ -85,4 +103,53 @@ bool client_is_floating(Client *client);
  */
 void client_change_border(xcb_connection_t *conn, Client *client, char border_type);
 
+/**
+ * Change the border type for the given client to normal (n), 1px border (p) or
+ * completely borderless (b) without actually re-rendering the layout. Useful
+ * for calling it when initializing a new client.
+ *
+ */
+bool client_init_border(xcb_connection_t *conn, Client *client, char border_type);
+
+/**
+ * Unmap the client, correctly setting any state which is needed.
+ *
+ */
+void client_unmap(xcb_connection_t *conn, Client *client);
+
+/**
+ * Map the client, correctly restoring any state needed.
+ *
+ */
+void client_map(xcb_connection_t *conn, Client *client);
+
+/**
+ * Set the given mark for this client. Used for jumping to the client
+ * afterwards (like m<mark> and '<mark> in vim).
+ *
+ */
+void client_mark(xcb_connection_t *conn, Client *client, const char *mark);
+
+/**
+ * Returns the minimum height of a specific window. The height is calculated
+ * by using 2 pixels (for the client window itself), possibly padding this to
+ * comply with the client’s base_height and then adding the decoration height.
+ *
+ */
+uint32_t client_min_height(Client *client);
+
+/**
+ * See client_min_height.
+ *
+ */
+uint32_t client_min_width(Client *client);
+
+/**
+ * Pretty-prints the client’s information into the logfile.
+ *
+ */
+#define CLIENT_LOG(client) do { \
+                DLOG("Window: frame 0x%08x, child 0x%08x\n", client->frame, client->child); \
+        } while (0)
+
 #endif