Commit graph

6451 commits

Author SHA1 Message Date
Ronan Pigott 2155dc9d7d ci: fix archlinux builds
The "xorg-server-xwayland" package has become "xorg-xwayland" in Arch.
Our egl requirement was previously satisfied by xorg-server-xwayland's
dependency on libgl, which "xorg-xwayland" does not have. So add the
libegl dependency as well.

(cherry picked from commit ba943c694c)
2021-05-19 11:48:08 +02:00
Kenny Levinsen baa0a32b7f ci: Update alpine xwayland package name
(cherry picked from commit 3287b12fff)
2021-05-19 11:48:08 +02:00
Kenny Levinsen 0a70675d9c view: Set parent for view_child subsurfaces on init
view_child_init was calling view_init_subsurfaces, which did not set the
parent attribute for the subchildren. This lead to the subchildren
acting as standalone children. If the parent was an xdg_popup, this
would make the subchild unaware of the popup position.

Introduce view_child_init_subsurfaces for view_child_init to use
instead.

Closes: https://github.com/swaywm/sway/issues/6038
(cherry picked from commit 1a6471be17)
2021-05-19 11:48:08 +02:00
Kenny Levinsen ec1c8143b0 view: Mark subchildren as unmapped in view_child_destroy
The subchildren lose their parent association at this point, so they
will not be able to see that the parent is unmapped.

Instead, just set the subchildren to be unmapped directly.

(cherry picked from commit 79e43b19d7)
2021-05-19 11:48:08 +02:00
Kenny Levinsen ad718158b6 view: Recursively check mapped of view_child tree
A subsurface may be set to mapped without its parent.

(cherry picked from commit e7af5b6309)
2021-05-19 11:48:08 +02:00
Simon Ser eca57594a0
build: bump version to 1.5.1 2020-11-10 17:47:31 +01:00
Simon Ser 3cb59e31ca
build: bump wlroots dependency to 0.12.0
(cherry picked from commit 5ae4f65045)
2020-11-10 17:47:01 +01:00
Simon Ser 108b8e97b7
Bump version to 1.5 2020-07-16 01:04:23 +02:00
Simon Ser 8ee58a3ad0
Bump wlroots dependency to 0.11.0
(cherry picked from commit 9f944ff05d)
2020-07-16 01:04:17 +02:00
Tudor Brindus e79e89c94d
input/cursor: don't send wl_pointer.motion event on pointer unlock warp
On warping to a cursor hint, update the pointer position we track as
well, so that on the next pointer rebase we don't send an unexpected
synthetic motion event to clients.

Fixes #5405.

(cherry picked from commit 6b9a9b6246)
2020-07-15 19:41:26 +02:00
Vinko Kašljević a314deeaa3
Add check for empty GEOM variable
In case when slurp is used to select part of screen or a window, if user aborts
the selection, grimshot will capture the whole screen instead of exiting. This
is fixed with check for empty variable.

(cherry picked from commit c65cd1cffa)
2020-07-15 19:27:13 +02:00
Campbell Vertesi 105c69d431
Add note on quoting to swaymsg manpage
(cherry picked from commit acbe902815)
2020-07-15 19:27:13 +02:00
Ronan Pigott 28bcb1e6f2
xdg_shell: schedule configure on maximize requests
(cherry picked from commit 4dd46f06ac)
2020-07-15 19:27:13 +02:00
Simon Ser 863b9c8ad9
Assert output is found before removing from list
References: https://github.com/swaywm/sway/issues/5483
(cherry picked from commit 9bb70283e9)
2020-07-15 19:27:13 +02:00
Jonas Große Sundrup 773e745f52
rephrase swayidle-timout example to improve readability
(cherry picked from commit 10ec97c073)
2020-07-15 19:27:13 +02:00
Wai Hon Law 3d6010e480
Make the default workspace commands compatible with i3
**Problem**

When I rename the workspace to something like "1:web",
`$mod+1` does not move to the "1:web" with the default config. This breaks
the expectation of i3 users.

**Cause**

The default Sway binding for `$mod+1` does not have the number
keyword:

```
bindsym $mod+1 workspace 1
```

Instead, the default Sway binding for `$mod+1` is

```
bindsym Mod1+1 workspace number $ws1
```

e6662df114
is the corresponding commit from i3.

(cherry picked from commit 585236f168)
2020-07-15 19:27:12 +02:00
Simon Ser d5f5885c94
config/output: don't change output state before commit
Previously, we called output_disable prior to wlr_output_commit. This
mutates Sway's output state before the output commit actually succeeds.
This results in Sway's state getting out-of-sync with wlroots'.

An alternative fix [1] was to revert the changes made by output_disable
in case of failure. This is a little complicated. Instead, this patch
makes it so Sway's internal state is never changed before a successful
wlr_output commit.

We had two output flags: enabled and configured. However enabled was set
prior to the output becoming enabled, and was used to prevent the output
event handlers (specifically, the mode handler) from calling
apply_output_config again (infinite loop).

Rename enabled to enabling and use it exclusively for this purpose.
Rename configure to enabled, because that's what it really means.

[1]: https://github.com/swaywm/sway/pull/5521

Closes: https://github.com/swaywm/sway/issues/5483
(cherry picked from commit 5432f00adf)
2020-07-15 19:27:12 +02:00
Geoffrey Casper f5ba5cbcf6
Reload command now matches i3's implementation
(cherry picked from commit ea3ba203cc)
2020-07-15 19:27:12 +02:00
Jan Beich 585cf904c5
protocols: sync wlr-layer-shell-unstable-v1 with wlroots
(cherry picked from commit 1d149230ea)
2020-07-15 19:27:12 +02:00
Tudor Brindus 83382f0b4e
commands/move: maintain workspace_layout when moving
Fixes #5157.

(cherry picked from commit b4a75a1ab2)
2020-07-15 19:27:12 +02:00
wb9688 c199c8d6ea
Replace unprintable characters in input device id
(cherry picked from commit 17ff13fc84)
2020-07-15 19:27:12 +02:00
Simon Ser cdff693e2e
tree/view: fix segfault in view_update_title
xdg-shell doesn't allow clients to set the title to NULL, so we
shouldn't need to call wlr_foreign_toplevel_handle_v1_set_title with an
empty string to reset the old one.

Closes: https://github.com/swaywm/sway/issues/5488
(cherry picked from commit b5a35c484f)
2020-07-15 19:27:12 +02:00
Simon Ser 2cc61bbbbe
Unset DISPLAY when wlr_xwayland fails
Avoids having applications connect to a leftover DISPLAY when Xwayland
fails to initialize.

(cherry picked from commit eb4fa18308)
2020-07-15 19:27:11 +02:00
Simon Ser 1c5046d7e4
Don't set xwayland cursor when wlr_xwayland failed
This causes a NULL pointer dereference.

(cherry picked from commit dfccd2a4c4)
2020-07-15 19:22:39 +02:00
Simon Ser 70cc5236ec
seat: fix segfault in sway_input_method_relay_set_focus
sway_input_method_relay_set_focus was called before
sway_input_method_relay_init.

Closes: https://github.com/swaywm/sway/issues/5503
(cherry picked from commit 1bfbf262cc)
2020-07-15 19:22:39 +02:00
Tudor Brindus 472dce6621
commands/move: unwrap workspace container on move to new workspace
If moving e.g. `T[app app]` into a new workspace with `workspace_layout
tabbed`, then post-move the tree in that workspace will be `T[T[app
app]]`. This still happens with horizontal or vertical workspace layout,
but is less visible since those containers have no decorations.

Fixes #5426.

(cherry picked from commit 92891fb1ed)
2020-07-15 19:22:05 +02:00
Drew DeVault 8b2ff2f1b3 Update version to v1.5-rc2 2020-07-01 14:36:29 -04:00
Johan Bjäreholt 1f8dbb320a tree/view: Make foreign-toplevel app_id fallback to class
It is not a part of the foreign-toplevel-management protocol to get the
class of a toplevel, only for getting the app_id.
For xwayland clients this is an issue because that means that you cannot
identify what application the toplevel refers to which is the point of
the app_id property.

By falling back to class when an app_id does not exist solves this problem.

Phoc also uses app_id and class interchangeably in their implementation
of foreign-toplevel-management, in fact they always do that and not only
for just this protocol.
c8d8a4c544/src/xwayland.c (L236)
2020-07-01 17:21:57 +02:00
Isaac Freund 76adcc3fd3 output: simplify loop over layer surfaces 2020-06-30 16:19:00 +02:00
Kenny Levinsen 492267a5d6 seat: Refocus seat when wlr_drag is destroyed
wlr_drag installs grabs for the full duration of the drag, leading to
the drag target not being focused when the drag ends. This leads to
unexpected focus behavior, especially for the keyboard which requires
toggling focus away and back to set.

We can only fix the focus once the grabs are released, so refocus the
seat when the wlr_drag destroy event is received.

Closes: https://github.com/swaywm/sway/issues/5116
2020-06-30 13:27:51 +02:00
Kenny Levinsen d0f7e0f481 transaction: Mark client resize immediately ready
If a client commits a new size on its own, we create a transaction for
the resize like any other. However, this involves sending a configure
and waiting for the ack, and wlroots will not send configure events when
there has been no change. This leads to transactions timing out.

Instead, just mark the view ready immediately by size when the client
is already ready, so that we avoid waiting for an ack that will never
come.

Closes: https://github.com/swaywm/sway/issues/5490
2020-06-30 10:59:33 +02:00
Tudor Brindus bb85b9070d tree/view: fix smart borders with tabbed/stacked ancestor
Fixes #5484.
2020-06-27 21:05:58 -04:00
Tudor Brindus c822427091 input/pointer: correctly handle bindings for synthetic events
This commit addresses a regression introduced in 8fa74ad.

Fixes #5481.
2020-06-25 21:32:15 +02:00
Simon Ser ba0232e6f0
Update version to 1.5-rc1 2020-06-24 19:29:13 +02:00
taminaru 64f080fa27 Add Romanian translation 2020-06-23 22:59:27 +02:00
Drew DeVault 8d5e627bc9 Implement wlr-foreign-toplevel-management-v1 2020-06-23 22:26:00 +02:00
Tudor Brindus eeb90a7963 input_cmd_click_method: fix typo in error text 2020-06-19 22:48:53 +02:00
Tudor Brindus 2270b4c213 input/seat: don't notify keyboard grabs with NULL surface on shutdown
Fixes #5469, a minor regression introduced in #5368.
2020-06-19 18:46:01 +02:00
Tudor Brindus b3f08597cd input: disable events for map_to_output devices when output not present
Fixes #3449.
2020-06-19 10:02:22 +02:00
Tudor Brindus d328c2439c input/pointer: don't trigger pointer bindings for emulated input
Prior to this commit, a tablet device could trigger mouse button down
bindings if the pen was pressed on a surface that didn't bind tablet
handlers -- but it wouldn't if the surface did bind tablet handlers.

We should expose consistent behavior to users so that they don't have to
care about emulated vs. non-emulated input, so stop triggering bindings
for any non-pointer devices.
2020-06-18 22:35:01 +02:00
Tudor Brindus 82c439c4f1 input/cursor: send idle events based off device type, not input type
Previously, a tablet or touch device could report activity as a pointer
device if it went through pointer emulation. This commit refactors idle
sources to be consistently reported based on the type of the device that
generated an input event, and now how that input event is being
processed.
2020-06-18 22:35:01 +02:00
David Arnold 21b77f376d grimshot: fix POSIX compliance
source is not POSIX compliant, '.' is.
https://stackoverflow.com/a/11588629
2020-06-17 22:33:10 +02:00
David Arnold 62e28f6129 grimshot: Unary operator expected
fixes this error:
/usr/local/bin/grimshot: line 22: [: ==: unary operator expected
2020-06-17 22:32:05 +02:00
Simon Ser e19bd1e474 Add support for viewporter
Depends on [1].

[1]: https://github.com/swaywm/wlroots/pull/2092
2020-06-17 10:18:58 -06:00
Tudor Brindus 8fa74add82 input/pointer: don't trigger pointer bindings for emulated input
Prior to this commit, a tablet device could trigger mouse button down
bindings if the pen was pressed on a surface that didn't bind tablet
handlers -- but it wouldn't if the surface did bind tablet handlers.

We should expose consistent behavior to users so that they don't have to
care about emulated vs. non-emulated input, so stop triggering bindings
for any non-pointer devices.
2020-06-16 19:21:55 +02:00
Tudor Brindus 20deb8ec16 input/tablet: focus appropriate node on tip down
This commit makes tablet input more usable when `focus_follows_mouse` is
set to `no`.

Previously, tapping down on surfaces that bound tablet input would not
switch focus, whereas tapping on surfaces that didn't (and hence went
through pointer emulation) did.
2020-06-16 17:58:13 +02:00
Brian Ashworth 33aa59d4c6 input/keyboard: wlr_keyboard_group enter and leave
This adds support for wlr_keyboard_group's enter and leave events. The
enter event just updates the keyboard's state. The leave event updates
the keyboard's state and if the surface was notified of a press event
for any of the keycodes, it is refocused so that it can pick up the
current keyboard state without triggering any keybinds.
2020-06-16 17:53:23 +02:00
Jason Nader 45859be03f i3-compat: add GET_BINDING_STATE IPC command 2020-06-14 00:55:14 -04:00
Simon Ser f9361ae36c Remove view child surface_{map,unmap} listeners on destroy 2020-06-12 19:37:19 -04:00
Ronan Pigott 90d936d4ad view: fix surface_new_subsurface use-after-free 2020-06-13 00:55:33 +02:00