introduce new command to rename focused workspace
The corresponding command is 'rename workspace to <name>'. As a side-effect this fixes the command 'rename workspace 1 to to'. Signed-off-by: Michael Walle <michael@walle.cc>
This commit is contained in:
parent
2f90321d16
commit
ae14fe9141
|
@ -1503,19 +1503,24 @@ specify a default name if there's currently no workspace starting with a "1".
|
|||
|
||||
You can rename workspaces. This might be useful to start with the default
|
||||
numbered workspaces, do your work, and rename the workspaces afterwards to
|
||||
reflect what’s actually on them.
|
||||
reflect what’s actually on them. You can also omit the old name to rename
|
||||
the currently focused workspace. This is handy if you wan't to use the
|
||||
rename command with +i3-input+.
|
||||
|
||||
*Syntax*:
|
||||
----------------------------------------------------
|
||||
rename workspace <old_name> to <new_name>
|
||||
rename workspace to <new_name>
|
||||
----------------------------------------------------
|
||||
|
||||
*Examples*:
|
||||
------------------------------------------------
|
||||
--------------------------------------------------------------------------
|
||||
i3-msg 'rename workspace 5 to 6'
|
||||
i3-msg 'rename workspace 1 to "1: www"'
|
||||
i3-msg 'rename workspace "1: www" to "10: www"'
|
||||
------------------------------------------------
|
||||
i3-msg 'rename workspace to "2: mail"
|
||||
bindsym $mod+r exec i3-input -F 'rename workspace to %s' -P 'New name: '
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
=== Moving containers/workspaces to RandR outputs
|
||||
|
||||
|
|
|
@ -195,17 +195,30 @@ state RESIZE_TILING_OR:
|
|||
-> call cmd_resize($way, $direction, $resize_px, $resize_ppt)
|
||||
|
||||
# rename workspace <name> to <name>
|
||||
# rename workspace to <name>
|
||||
state RENAME:
|
||||
'workspace'
|
||||
-> RENAME_WORKSPACE
|
||||
|
||||
state RENAME_WORKSPACE:
|
||||
old_name = 'to'
|
||||
-> RENAME_WORKSPACE_LIKELY_TO
|
||||
old_name = word
|
||||
-> RENAME_WORKSPACE_TO
|
||||
|
||||
state RENAME_WORKSPACE_LIKELY_TO:
|
||||
'to'
|
||||
-> RENAME_WORKSPACE_NEW_NAME
|
||||
new_name = word
|
||||
-> call cmd_rename_workspace(NULL, $new_name)
|
||||
|
||||
state RENAME_WORKSPACE_TO:
|
||||
'to'
|
||||
->
|
||||
-> RENAME_WORKSPACE_NEW_NAME
|
||||
|
||||
state RENAME_WORKSPACE_NEW_NAME:
|
||||
end
|
||||
-> call cmd_rename_workspace(NULL, "to")
|
||||
new_name = string
|
||||
-> call cmd_rename_workspace($old_name, $new_name)
|
||||
|
||||
|
|
|
@ -1802,16 +1802,24 @@ void cmd_scratchpad_show(I3_CMD) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Implementation of 'rename workspace <name> to <name>'
|
||||
* Implementation of 'rename workspace [<name>] to <name>'
|
||||
*
|
||||
*/
|
||||
void cmd_rename_workspace(I3_CMD, char *old_name, char *new_name) {
|
||||
if (old_name) {
|
||||
LOG("Renaming workspace \"%s\" to \"%s\"\n", old_name, new_name);
|
||||
} else {
|
||||
LOG("Renaming current workspace to \"%s\"\n", new_name);
|
||||
}
|
||||
|
||||
Con *output, *workspace = NULL;
|
||||
if (old_name) {
|
||||
TAILQ_FOREACH(output, &(croot->nodes_head), nodes)
|
||||
GREP_FIRST(workspace, output_get_content(output),
|
||||
!strcasecmp(child->name, old_name));
|
||||
} else {
|
||||
workspace = con_get_workspace(focused);
|
||||
}
|
||||
|
||||
if (!workspace) {
|
||||
// TODO: we should include the old workspace name here and use yajl for
|
||||
|
|
|
@ -254,11 +254,38 @@ $ws = get_ws('qux');
|
|||
is($ws->{num}, -1, 'number correctly changed');
|
||||
workspace_numbers_sorted();
|
||||
|
||||
# 5: already existing workspace
|
||||
# 4: rename current workspace
|
||||
cmd 'workspace 4711';
|
||||
is(focused_ws(), '4711', 'now on workspace 4711');
|
||||
|
||||
ok(!workspace_exists('42'), 'workspace 42 does not exist yet');
|
||||
cmd 'rename workspace to 42';
|
||||
ok(!workspace_exists('4711'), 'workspace 4711 does not exist anymore');
|
||||
is(focused_ws(), '42', 'now on workspace 42');
|
||||
$ws = get_ws('42');
|
||||
is($ws->{num}, 42, 'number correctly changed');
|
||||
workspace_numbers_sorted();
|
||||
|
||||
# 5: special cases
|
||||
cmd 'workspace bla';
|
||||
is(focused_ws(), 'bla', 'now on workspace to');
|
||||
|
||||
ok(!workspace_exists('to'), 'workspace to does not exist yet');
|
||||
cmd 'rename workspace bla to to';
|
||||
ok(!workspace_exists('bla'), 'workspace bla does not exist anymore');
|
||||
is(focused_ws(), 'to', 'now on workspace to');
|
||||
cmd 'rename workspace to to bla';
|
||||
ok(!workspace_exists('to'), 'workspace to does not exist anymore');
|
||||
is(focused_ws(), 'bla', 'now on workspace bla');
|
||||
cmd 'rename workspace to to';
|
||||
ok(!workspace_exists('bla'), 'workspace bla does not exist anymore');
|
||||
is(focused_ws(), 'to', 'now on workspace to');
|
||||
|
||||
# 6: already existing workspace
|
||||
my $result = cmd 'rename workspace qux to 11: bar';
|
||||
ok(!$result->[0]->{success}, 'renaming workspace to an already existing one failed');
|
||||
|
||||
# 6: non-existing old workspace (verify command result)
|
||||
# 7: non-existing old workspace (verify command result)
|
||||
$result = cmd 'rename workspace notexistant to bleh';
|
||||
ok(!$result->[0]->{success}, 'renaming workspace which does not exist failed');
|
||||
|
||||
|
|
Loading…
Reference in New Issue