int current_row;
int current_col;
+ /* Should clients on this workspace be automatically floating? */
+ bool auto_float;
+
Client *fullscreen_client;
/* The focus stack contains the clients in the correct order of focus so that
return;
}
+ enum { WITH_WINDOW, WITH_CONTAINER, WITH_WORKSPACE } with = WITH_WINDOW;
+
+ /* Is it a <with>? */
+ if (command[0] == 'w') {
+ command++;
+ /* TODO: implement */
+ if (command[0] == 'c') {
+ with = WITH_CONTAINER;
+ command++;
+ } else if (command[0] == 'w') {
+ with = WITH_WORKSPACE;
+ command++;
+ } else {
+ LOG("not yet implemented.\n");
+ return;
+ }
+ }
+
/* Is it 't' for toggle tiling/floating? */
if (command[0] == 't') {
+ if (with == WITH_WORKSPACE) {
+ c_ws->auto_float = !c_ws->auto_float;
+ LOG("autofloat is now %d\n", c_ws->auto_float);
+ return;
+ }
if (last_focused == NULL) {
LOG("Cannot toggle tiling/floating: workspace empty\n");
return;
return;
}
- enum { WITH_WINDOW, WITH_CONTAINER } with = WITH_WINDOW;
-
- /* Is it a <with>? */
- if (command[0] == 'w') {
- command++;
- /* TODO: implement */
- if (command[0] == 'c') {
- with = WITH_CONTAINER;
- command++;
- } else {
- LOG("not yet implemented.\n");
- return;
- }
- }
-
/* It’s a normal <cmd> */
char *rest = NULL;
enum { ACTION_FOCUS, ACTION_MOVE, ACTION_SNAP } action = ACTION_FOCUS;
atom[i] == atoms[_NET_WM_WINDOW_TYPE_SPLASH]) {
/* Set the dialog window to automatically floating, will be used below */
new->floating = FLOATING_AUTO_ON;
- LOG("dialog window, automatically floating\n");
+ LOG("dialog/utility/toolbar/splash window, automatically floating\n");
}
}
+ if (new->workspace->auto_float) {
+ new->floating = FLOATING_AUTO_ON;
+ LOG("workspace is in autofloat mode, setting floating\n");
+ }
+
if (new->dock) {
/* Get _NET_WM_STRUT_PARTIAL to determine the client’s requested height */
uint32_t *strut;