userguide: Mention know issues for assign (#3434)

Fixes #3222
Fixes #3293
Related to #2060
This commit is contained in:
Orestis 2018-10-07 21:24:09 +03:00 committed by Michael Stapelberg
parent 5720ba65ab
commit 18dbfe699a
2 changed files with 27 additions and 8 deletions

View File

@ -755,14 +755,23 @@ set_from_resource $black i3wm.color0 #000000
To automatically make a specific window show up on a specific workspace, you
can use an *assignment*. You can match windows by using any criteria,
see <<command_criteria>>. It is recommended that you match on window classes
(and instances, when appropriate) instead of window titles whenever possible
because some applications first create their window, and then worry about
setting the correct title. Firefox with Vimperator comes to mind. The window
starts up being named Firefox, and only when Vimperator is loaded does the
title change. As i3 will get the title as soon as the application maps the
window (mapping means actually displaying it on the screen), youd need to have
to match on 'Firefox' in this case.
see <<command_criteria>>. The difference between +assign+ and
+for_window <criteria> move to workspace+ is that the former will only be
executed when the application maps the window (mapping means actually displaying
it on the screen) but the latter will be executed whenever a window changes its
properties to something that matches the specified criteria.
Thus, it is recommended that you match on window classes (and instances, when
appropriate) instead of window titles whenever possible because some
applications first create their window, and then worry about setting the correct
title. Firefox with Vimperator comes to mind. The window starts up being named
Firefox, and only when Vimperator is loaded does the title change. As i3 will
get the title as soon as the application maps the window, youd need to have to
match on 'Firefox' in this case.
Another known issue is with Spotify, which doesn't set the class hints when
mapping the window, meaning you'll have to use a +for_window+ rule to assign
Spotify to a specific workspace.
Finally, using +assign [tiling]+ and +assign [floating]+ is not supported.
You can also assign a window to show up on a specific output. You can use RandR
names such as +VGA1+ or names relative to the output with the currently focused

View File

@ -406,6 +406,11 @@ CFGFUN(assign_output, const char *output) {
return;
}
if (current_match->window_mode != WM_ANY) {
ELOG("Assignments using window mode (floating/tiling) is not supported\n");
return;
}
DLOG("New assignment, using above criteria, to output \"%s\".\n", output);
Assignment *assignment = scalloc(1, sizeof(Assignment));
match_copy(&(assignment->match), current_match);
@ -420,6 +425,11 @@ CFGFUN(assign, const char *workspace, bool is_number) {
return;
}
if (current_match->window_mode != WM_ANY) {
ELOG("Assignments using window mode (floating/tiling) is not supported\n");
return;
}
if (is_number && ws_name_to_number(workspace) == -1) {
ELOG("Could not parse initial part of \"%s\" as a number.\n", workspace);
return;