Implement the possibility to set a workspace open clients automatically in floating mode
Use "wwt" (with workspace: toggle floating) in your configuration file
This commit is contained in:
parent
4135aaad7c
commit
5c48444b4e
|
@ -161,6 +161,9 @@ struct Workspace {
|
||||||
int current_row;
|
int current_row;
|
||||||
int current_col;
|
int current_col;
|
||||||
|
|
||||||
|
/* Should clients on this workspace be automatically floating? */
|
||||||
|
bool auto_float;
|
||||||
|
|
||||||
Client *fullscreen_client;
|
Client *fullscreen_client;
|
||||||
|
|
||||||
/* The focus stack contains the clients in the correct order of focus so that
|
/* The focus stack contains the clients in the correct order of focus so that
|
||||||
|
|
|
@ -854,8 +854,31 @@ void parse_command(xcb_connection_t *conn, const char *command) {
|
||||||
return;
|
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? */
|
/* Is it 't' for toggle tiling/floating? */
|
||||||
if (command[0] == 't') {
|
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) {
|
if (last_focused == NULL) {
|
||||||
LOG("Cannot toggle tiling/floating: workspace empty\n");
|
LOG("Cannot toggle tiling/floating: workspace empty\n");
|
||||||
return;
|
return;
|
||||||
|
@ -873,21 +896,6 @@ void parse_command(xcb_connection_t *conn, const char *command) {
|
||||||
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> */
|
/* It’s a normal <cmd> */
|
||||||
char *rest = NULL;
|
char *rest = NULL;
|
||||||
enum { ACTION_FOCUS, ACTION_MOVE, ACTION_SNAP } action = ACTION_FOCUS;
|
enum { ACTION_FOCUS, ACTION_MOVE, ACTION_SNAP } action = ACTION_FOCUS;
|
||||||
|
|
|
@ -265,10 +265,15 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child,
|
||||||
atom[i] == atoms[_NET_WM_WINDOW_TYPE_SPLASH]) {
|
atom[i] == atoms[_NET_WM_WINDOW_TYPE_SPLASH]) {
|
||||||
/* Set the dialog window to automatically floating, will be used below */
|
/* Set the dialog window to automatically floating, will be used below */
|
||||||
new->floating = FLOATING_AUTO_ON;
|
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) {
|
if (new->dock) {
|
||||||
/* Get _NET_WM_STRUT_PARTIAL to determine the client’s requested height */
|
/* Get _NET_WM_STRUT_PARTIAL to determine the client’s requested height */
|
||||||
uint32_t *strut;
|
uint32_t *strut;
|
||||||
|
|
Loading…
Reference in New Issue