When going through the `binding_workspace_names` to prioritize
user-specified names, we only check if the workspace exists, not the
workspace number. If the user specified a `bindsym … workspace number X`
directive, then it is appended in `binding_workspace_names` and a
workspace is created using that number even though from the POV of a
user that uses numbers to change workspaces, that workspace already
exists.
In similar code here:
1d9160f2d2/src/workspace.c (L997)
we do the check.
Fixes#4238
We never did (and still do not) guarantee any order in which terminal emulators
are tried. Quoting from the i3-sensible-terminal man page:
> Please don’t complain about the order: If the user has any preference, they
> will have $TERMINAL set or modified their i3 configuration file.
This commit moves mate-terminal to the beginning of the list, which is
considered the most accessible terminal emulator among blind users.
fixes https://github.com/i3/i3/issues/4256
Currently i3bar click events provide x and y coordinates relative to all monitors.
I've added coordinates relative to the current output.
+-----------+-----------+
| | i3bar |
| +-----------+
| HDMI-0 | DP-0 |
| 1920x1080 | 2560x1080 |
+-----------+-----------+
When you click in the top right corner of the DP-0,
i3bar will provide something like this:
{
"x": 4480,
"y": 10,
"output_x": 2560,
"output_y": 10,
}
This is useful for creating a rofi menu or something else.
rofi -show run -location 1 -xoffset ${I3_OUTPUT_X} -yoffset ${I3_OUTPUT_Y}
The bug here is that workspace assignments with numbers are triggered
even if a named argument matches later on.
With this commit, get_assigned_output is called to correctly iterate the
workspace assignments.
Fixes#4021
I find the new loop more straightforward and easy to understand.
Old loop used to be:
foreach assignment:
foreach assignment2:
// find if this is the first valid output in this assignment
foreach workspace:
// find matching by assignment name
if workspace:
move workspace to output
New loop is:
foreach workspace:
foreach assignment:
if workspace is assigned to this output:
move workspace to output
With this, workspace assignments triggered by numbers during output
changes should be handled correctly.
Fixes#3685