Add a new command 'move to workspace current'
Added a new command 'move to workspace current' which can be used with criteria to move a window to the current workspace.
This commit is contained in:
parent
51173baf28
commit
2afecaf355
|
@ -1293,8 +1293,9 @@ You can also switch to the next and previous workspace with the commands
|
||||||
workspace 1, 3, 4 and 9 and you want to cycle through them with a single key
|
workspace 1, 3, 4 and 9 and you want to cycle through them with a single key
|
||||||
combination. To restrict those to the current output, use +workspace
|
combination. To restrict those to the current output, use +workspace
|
||||||
next_on_output+ and +workspace prev_on_output+. Similarly, you can use +move
|
next_on_output+ and +workspace prev_on_output+. Similarly, you can use +move
|
||||||
container to workspace next+ and +move container to workspace prev+ to move a
|
container to workspace next+, +move container to workspace prev+ to move a
|
||||||
container to the next/previous workspace.
|
container to the next/previous workspace and +move container to workspace current+
|
||||||
|
(the last one makes sense only when used with criteria).
|
||||||
|
|
||||||
[[back_and_forth]]
|
[[back_and_forth]]
|
||||||
To switch back to the previously focused workspace, use +workspace
|
To switch back to the previously focused workspace, use +workspace
|
||||||
|
@ -1310,6 +1311,18 @@ you can use the +move workspace to output+ command followed by the name of the
|
||||||
target output. You may also use +left+, +right+, +up+, +down+ instead of the
|
target output. You may also use +left+, +right+, +up+, +down+ instead of the
|
||||||
xrandr output name to move to the next output in the specified direction.
|
xrandr output name to move to the next output in the specified direction.
|
||||||
|
|
||||||
|
*Syntax*:
|
||||||
|
-----------------------------------
|
||||||
|
workspace <next|prev|next_on_output|prev_on_output>
|
||||||
|
workspace back_and_forth
|
||||||
|
workspace <name>
|
||||||
|
workspace number <number>
|
||||||
|
|
||||||
|
move [window|container] [to] workspace <name>
|
||||||
|
move [window|container] [to] workspace number <number>
|
||||||
|
move [window|container] [to] workspace <prev|next|current>
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
*Examples*:
|
*Examples*:
|
||||||
-------------------------
|
-------------------------
|
||||||
bindsym mod+1 workspace 1
|
bindsym mod+1 workspace 1
|
||||||
|
@ -1325,6 +1338,9 @@ bindsym mod+b workspace back_and_forth
|
||||||
|
|
||||||
# move the whole workspace to the next output
|
# move the whole workspace to the next output
|
||||||
bindsym mod+x move workspace to output right
|
bindsym mod+x move workspace to output right
|
||||||
|
|
||||||
|
# move firefox to current workspace
|
||||||
|
bindsym mod+F1 [class="Firefox"] move workspace current
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
==== Named workspaces
|
==== Named workspaces
|
||||||
|
|
|
@ -190,7 +190,7 @@ state RENAME_WORKSPACE_TO:
|
||||||
-> call cmd_rename_workspace($old_name, $new_name)
|
-> call cmd_rename_workspace($old_name, $new_name)
|
||||||
|
|
||||||
# move <direction> [<pixels> [px]]
|
# move <direction> [<pixels> [px]]
|
||||||
# move [window|container] [to] workspace <str>
|
# move [window|container] [to] workspace [<str>|next|prev|current]
|
||||||
# move [window|container] [to] output <str>
|
# move [window|container] [to] output <str>
|
||||||
# move [window|container] [to] scratchpad
|
# move [window|container] [to] scratchpad
|
||||||
# move workspace to [output] <str>
|
# move workspace to [output] <str>
|
||||||
|
@ -231,7 +231,7 @@ state MOVE_DIRECTION_PX:
|
||||||
state MOVE_WORKSPACE:
|
state MOVE_WORKSPACE:
|
||||||
'to'
|
'to'
|
||||||
-> MOVE_WORKSPACE_TO_OUTPUT
|
-> MOVE_WORKSPACE_TO_OUTPUT
|
||||||
workspace = 'next', 'prev', 'next_on_output', 'prev_on_output'
|
workspace = 'next', 'prev', 'next_on_output', 'prev_on_output', 'current'
|
||||||
-> call cmd_move_con_to_workspace($workspace)
|
-> call cmd_move_con_to_workspace($workspace)
|
||||||
'number'
|
'number'
|
||||||
-> MOVE_WORKSPACE_NUMBER
|
-> MOVE_WORKSPACE_NUMBER
|
||||||
|
|
|
@ -351,7 +351,7 @@ void cmd_criteria_add(I3_CMD, char *ctype, char *cvalue) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementation of 'move [window|container] [to] workspace
|
* Implementation of 'move [window|container] [to] workspace
|
||||||
* next|prev|next_on_output|prev_on_output'.
|
* next|prev|next_on_output|prev_on_output|current'.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void cmd_move_con_to_workspace(I3_CMD, char *which) {
|
void cmd_move_con_to_workspace(I3_CMD, char *which) {
|
||||||
|
@ -380,6 +380,8 @@ void cmd_move_con_to_workspace(I3_CMD, char *which) {
|
||||||
ws = workspace_next_on_output();
|
ws = workspace_next_on_output();
|
||||||
else if (strcmp(which, "prev_on_output") == 0)
|
else if (strcmp(which, "prev_on_output") == 0)
|
||||||
ws = workspace_prev_on_output();
|
ws = workspace_prev_on_output();
|
||||||
|
else if (strcmp(which, "current") == 0)
|
||||||
|
ws = con_get_workspace(focused);
|
||||||
else {
|
else {
|
||||||
ELOG("BUG: called with which=%s\n", which);
|
ELOG("BUG: called with which=%s\n", which);
|
||||||
ysuccess(false);
|
ysuccess(false);
|
||||||
|
|
|
@ -99,6 +99,26 @@ cmd 'move workspace prev';
|
||||||
ok(@{get_ws_content($tmp)} == 3, 'three containers on first ws');
|
ok(@{get_ws_content($tmp)} == 3, 'three containers on first ws');
|
||||||
ok(@{get_ws_content($tmp2)} == 0, 'no containers on second ws');
|
ok(@{get_ws_content($tmp2)} == 0, 'no containers on second ws');
|
||||||
|
|
||||||
|
###################################################################
|
||||||
|
# check if 'move workspace current' works
|
||||||
|
###################################################################
|
||||||
|
|
||||||
|
$tmp = get_unused_workspace();
|
||||||
|
$tmp2 = get_unused_workspace();
|
||||||
|
|
||||||
|
cmd "workspace $tmp";
|
||||||
|
$first = open_window(name => 'win-name');
|
||||||
|
ok(@{get_ws_content($tmp)} == 1, 'one container on first ws');
|
||||||
|
|
||||||
|
cmd "workspace $tmp2";
|
||||||
|
ok(@{get_ws_content($tmp2)} == 0, 'no containers yet');
|
||||||
|
|
||||||
|
cmd qq|[title="win-name"] move workspace $tmp2|;
|
||||||
|
ok(@{get_ws_content($tmp2)} == 1, 'one container on second ws');
|
||||||
|
|
||||||
|
cmd qq|[title="win-name"] move workspace $tmp|;
|
||||||
|
ok(@{get_ws_content($tmp2)} == 0, 'no containers on second ws');
|
||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
# check if floating cons are moved to new workspaces properly
|
# check if floating cons are moved to new workspaces properly
|
||||||
# (that is, if they are floating on the target ws, too)
|
# (that is, if they are floating on the target ws, too)
|
||||||
|
|
Loading…
Reference in New Issue