Age | Commit message (Collapse) | Author |
|
This introduces the following command extensions from `i3-gaps`:
* `gaps horizontal|vertical|top|right|bottom|left <amount>`
* `gaps horizontal|vertical|top|right|bottom|left all|current
set|plus|minus <amount>`
* `workspace <ws> gaps horizontal|vertical|top|right|bottom|left
<amount>`
`inner` and `outer` are also still available as options for all three
of the above commands. `outer` now acts as a shorthand to set/alter
all sides.
Additionally, this fixes two bugs with the prevention of invalid gap
configurations for workspace configs:
1. If outer gaps were not set and inner gaps were, the outer gaps
would be snapped to the negation of the inner gaps due to `INT_MIN`
being less than the negation. This took precedence over the default
outer gaps.
2. Similarly, if inner gaps were not set and outer gaps were, inner
gaps would be set to zero, which would take precedence over the
default inner gaps.
Fixing both of the above items also requires checking the gaps again
when creating a workspace since the default outer gaps can be smaller
than the negation of the workspace specific inner gaps.
|
|
* Add focus_follows_mouse_mode.
* Fail if focus_follows_mouse is invalid.
* Fix indentation.
|
|
This commit enhances the output transform
command with options for a relative transform,
i.e. the provided transform will be applied as
an offset to the current transform. Append
`clockwise` to rotate clockwise from the current
rotation, or `anticlockwise` to rotate in the
opposite direction.
For example, if the output LVDS-1 is rotated
90 degrees clockwise, the command
`output LVDS-1 transform 90 clockwise`
will rotate the display to 180 degrees.
All transform options are supported,
including flipped transforms.
Relative transforms can only be applied to
a single output and cannot be used with
a wildcard (*) output specifier.
|
|
|
|
|
|
The exec_always command was executed twice, since it was not checking for the
config->validating variable.
Fix this by defering the command if the configuration is validating.
Fixes #3072
|
|
It appears that the focus code that handles `focus_wrapping yes` was
removed during the conversion to type safety. This re-implements the
focus code for when `focus_wrapping` is set to `yes` (default). Neither
the `no` or `force` options appear to be effected and should be working.
|
|
Improvements to the runtime only part of the gaps command
|
|
|
|
Always raise an error if the runtime only gaps command is found in the
config file.
|
|
The command 'gaps inner|outer all|current set|plus|minus <amount>'
is not valid in the configuration file, hence list it accordingly.
|
|
|
|
|
|
|
|
|
|
binding: match single-key bindings if no multi-key binding matched
|
|
|
|
|
|
|
|
Move a function call, such that data it depends on is initialized before.
|
|
Like border properties, this will be needed to implement layout saving
and restoring.
|
|
Move view border properties to container struct
|
|
Also moves the `opposite_direction` function into `util.c` as it's used
in two places now.
|
|
This will be needed to implement layout saving and restoring, as we need
to be able to configure borders on a placeholder container which has no
view.
|
|
Restore previous tabbed layout behavior
|
|
There's no point having both movement_direction and wlr_direction. This
replaces the former with the latter.
As movement_direction also contained MOVE_PARENT and MOVE_CHILD items,
these are now checked specifically in the focus command and handled in
separate functions, just like the other focus variants.
|
|
This reverts commit 65328ef60c9468ae44b4b1d6316d604c47293ec3.
|
|
This reverts commit 6414b5d288b89c9f3ecde0757f16184071b6036f.
|
|
This makes bindings more snappy when the user is typing faster than
his keycaps are releasing.
Signed-off-by: Franklin "Snaipe" Mathieu <me@snai.pe>
|
|
|
|
output: initialize layers before usage in apply_config
|
|
input-manager: consider cursor warping on input_manager_set_focus
|
|
The previous pull request #2993 tried to fix this by moving the function which
used the layers after the initilization.
Since this initialization is done unconditionally only depending on the struct
definition, move the layer initialization to the beginning of the function.
Also move the signal initialization of the destroy event.
Fixes #2992
|
|
input_manager_set_focus is used to set the focus after mapping the view in
view_map. This needs to consider to warp the cursor as well, since for
WARP_CONTAINER, the cursor should warp to the newly created view.
|
|
ipc: make json for view match i3's output more closely
|
|
Use output identifier for workspace config
|
|
Found by introspection.
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
|
|
i3 seems to make all window properties, with the exception of
transient_for, optional[1].
[1]: https://github.com/i3/i3/blob/315ff17563fd703b2f5117b2ec4d46e89389d323/src/ipc.c#L435-L450
Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io>
|
|
It turns out that i3 does not have a `class` key in the json description
of a view, but provides it through `window_properties.class`. Since
`window_properties` has been added by 8fc9328, we can remove `class`
altogether.
Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io>
|
|
|
|
This reverts commit 94985146ea00b40f72cd6afaa191fd92a46e4fd3.
|
|
|
|
|
|
In i3, when a child of a tabbed or stacked container has no siblings,
its border settings are respected.
This patch achieves the same effect by rendering a lone tabbed/stacked
child as if it's a linear container. This makes the border settings be
respected.
Over in view_autoconfigure, we compensate for this by only adjusting
`y_offset` if there's multiple children.
|
|
Move a function call, such that data it depends on is initialized before.
|
|
The code being changed is responsible for updating the focus stack when
a container is destroyed in a different part of the tree to where the
real focus is. It's attempting to set focus_inactive to a sibling (or
parent if no siblings) of the container that is being destroyed, then
put our real focus back on the end of the focus stack.
The problem occurs when the container being destroyed is in a different
workspace. For example:
* Have a focused view on workspace 1
* Have workspace 2 not visible with a single view that is unmapping
* The first call to seat_set_raw_focus sets focus to workspace 2 because
it's the parent
* Prior to this patch, the second call to seat_set_raw_focus would set
focus to the view on workspace 1
* Later, when using output_get_active_workspace, this function would
return workspace 2 because it's the first workspace it finds in the
focus stack.
To fix this, workspace 1 must be placed on the focus stack between
workspace 2 and the focused view. That's what this patch does.
Lastly, it also uses seat_get_focus_inactive to choose the focus. This
fixes a crash when a view unmaps while a non-container is focused (eg.
swaylock), because focus is NULL.
|
|
Fix re-tiling for floating containers
|
|
When a floating container is tiled (e.g.: 'floating toggle' or
'floating disable'), it should be placed after/below the inactive
focused container from the tiling layout.
|
|
|
|
|