4 * i3 - an improved dynamic tiling window manager
6 * © 2009-2010 Michael Stapelberg and contributors
8 * See file LICENSE for license information.
21 * Returns a pointer to the workspace with the given number (starting at 0),
22 * creating the workspace if necessary (by allocating the necessary amount of
23 * memory and initializing the data structures correctly).
26 Con *workspace_get(const char *num);
30 * Sets the name (or just its number) for the given workspace. This has to
31 * be called for every workspace as the rendering function
32 * (render_internal_bar) relies on workspace->name and workspace->name_len
36 void workspace_set_name(Workspace *ws, const char *name);
39 * Returns true if the workspace is currently visible. Especially important for
40 * multi-monitor environments, as they can have multiple currenlty active
44 bool workspace_is_visible(Workspace *ws);
47 /** Switches to the given workspace */
48 void workspace_show(const char *num);
52 * Assigns the given workspace to the given screen by correctly updating its
53 * state and reconfiguring all the clients on this workspace.
55 * This is called when initializing a screen and when re-assigning it to a
56 * different screen which just got available (if you configured it to be on
57 * screen 1 and you just plugged in screen 1).
60 void workspace_assign_to(Workspace *ws, Output *screen, bool hide_it);
63 * Initializes the given workspace if it is not already initialized. The given
64 * screen is to be understood as a fallback, if the workspace itself either
65 * was not assigned to a particular screen or cannot be placed there because
66 * the screen is not attached at the moment.
69 void workspace_initialize(Workspace *ws, Output *screen, bool recheck);
72 * Gets the first unused workspace for the given screen, taking into account
73 * the preferred_screen setting of every workspace (workspace assignments).
76 Workspace *get_first_workspace_for_output(Output *screen);
79 * Unmaps all clients (and stack windows) of the given workspace.
81 * This needs to be called separately when temporarily rendering a workspace
82 * which is not the active workspace to force reconfiguration of all clients,
83 * like in src/xinerama.c when re-assigning a workspace to another screen.
86 void workspace_unmap_clients(xcb_connection_t *conn, Workspace *u_ws);
89 * Maps all clients (and stack windows) of the given workspace.
92 void workspace_map_clients(xcb_connection_t *conn, Workspace *ws);
96 * Goes through all clients on the given workspace and updates the workspace’s
97 * urgent flag accordingly.
100 void workspace_update_urgent_flag(Con *ws);
104 * Returns the width of the workspace.
107 int workspace_width(Workspace *ws);
110 * Returns the effective height of the workspace (without the internal bar and
111 * without dock clients).
114 int workspace_height(Workspace *ws);