aboutsummaryrefslogtreecommitdiff
path: root/sway
AgeCommit message (Collapse)Author
2020-09-26Make focus_follows_mouse work when hovering a layer-shell surface on another ↵David96
output Fixes #5668
2020-09-19check parent surface before it is destroyedJohn Mako
2020-09-16cursor: update hide timer during config applyRouven Czerwinski
We can't arm the timer during cursor creation since the config may not be ready yet. Instead arm the timer while applying the input configuration, by this time the configuration has been parsed and we can arm the hide timer. Fixes #5686
2020-09-16server: Avoid using "wayland-0" as WAYLAND_DISPLAYGeoffrey Casper
See https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/486
2020-09-15cursor: arm cursor hide timer immediatelyRouven Czerwinski
According to the wayland docs, wayland timers are disarmed on creation. This leads to the cursor not being hidden if there is no activity after creation, since the timer is armed on activity, but not at creation. Arm the timer after creation to ensure the cursor is hidden even if there is no cursor activity after creation. Fixes #5684
2020-09-14input/pointer: update cursor activity after updating button countsTudor Brindus
Otherwise, Sway will not re-hide a cursor after the last button has been released. Needed alongside afa890e to fix #5679.
2020-09-14input/cursor: reset event source after unhideRouven Czerwinski
Reset the event source after unhiding the cursor, to ensure that the timeout starts after showing the cursor. Also remove the open coded variant in seat_consider_warp_to_focus(). Fixes #5679
2020-09-04Re-focus on parent surface if it is availableBrassyPanache
My primary issue was IntelliJ IDEA's code suggestion pop-up not returning focus to the active editing window. I have spent some time looking at the changes of @Xyene (#5398) and @RyanDwyer (#2103). I think my proposed change maintains the status quo for the most part whilst fixing my focus issue. I have verified that @Xyene's fix for IntelliJ sub-menus still works. I have done basic testing which consists of: - Chrome - IntelliJ IDEA 2020.2.1 - VSCode - Alacritty It seems to hold up. I at least didn't see any obvious errors. Relates to #3007
2020-09-03input/libinput: remove input type property biasBrian Ashworth
This changes it so all libinput config options are set on any device that supports it. Previously, only a subset of libinput config options were being considered depending on the input type. Instead of trying to guess which properties the device may support, attempt to set any configured property regardless of the device type. All of the functions already have early returns in them for when the device does not actually support the property. This brings the configuration side inline with describe_libinput_device for the IPC side. This change was prompted by a tablet tool showing the calibration matrix property in the IPC message, but not being able to actually change it since that property was only being considered for the touch input type.
2020-08-27Use wlr_output_event_commitSimon Ser
Instead of listening to both transform and scale events, we can listen to the commit event and use the new wlr_output_event_commit struct to decide what to do. This de-duplicates some of the work we were doing twice when an output was re-configured. Depends on [1]. [1]: https://github.com/swaywm/wlroots/pull/2315
2020-08-24exec: fix validation during config reloadKonstantin Pospelov
Split cmd_exec_always into separate methods for general validation and process creation. This fixes a potential call of join_args with 0 arguments.
2020-08-11Handle SIGINTSimon Ser
Gracefully exit on SIGINT, like we do for SIGTERM.
2020-08-05view: remove foreign toplevel listeners on destroyRonan Pigott
2020-08-05view: implement foreign toplevel fullscreen requestRonan Pigott
2020-08-05view: implement foreign toplevel fullscreen indicatorRonan Pigott
2020-08-03document force_display_urgency_hintRex Hackbro
2020-08-03fix force_display_urgency_hint parsingRex Hackbro
2020-08-03fix typosRex Hackbro
2020-07-30Fix incorrect format specifiersAntonin Décimo
2020-07-30Log empty value if envvar is not definedAntonin Décimo
If the environment variable is not defined, getenv returns NULL. Passing a NULL pointer to the "%s" format specifier is undefined behavior. Even if some implementations output "(null)", an empty string is nicer.
2020-07-30cmd/bar/colors: fix dereference of null pointerAntonin Décimo
`!*rgba` tests if the first byte of rgba isn't `'\0'`. `hex_to_rgba_hex` returns NULL if `parse_color` fails. There's a null pointer dereference in that case. The intended behavior is `!rgba`.
2020-07-30ipc: fix aligment issue of data bufferAntonin Décimo
The pointer `data` is cast to a more strictly aligned pointer type. To prevent issues, the `data32` buffer is removed and its occurrences are replaced with an offset from the `data` buffer.
2020-07-27Use wlr_output_layout_output_at to get output for move to cursorThayne McCombs
2020-07-27Keep windows in bounds on move to position mouseThayne McCombs
If the mouse/cursor/pointer is near the edge of an output when a "move position to pointer" command is run, then the floating container will be constrained to fit inside the bounds of the output as much as possible. This behavior matches what i3 does in this scenario. I also think it is a better user experience. Relates to #4906 The logic for the bounds check follows the implementation in i3: https://github.com/i3/i3/blob/733077822302d8b77eacb606a26fd002a42f534f/src/floating.c#L536
2020-07-27commands: disallow runtime includeRonan Pigott
2020-07-25view: display scratchpad hidden containers when activated by ftmRonan Pigott
2020-07-22Fix X11 clients getting stuck minimizedTobias Langendorf
Usually it should be enough to simply not grant a client's minimize request, however some applications (Steam, fullscreen games in Wine) don't wait for the compositor and minimize anyway, getting them stuck in an unrecoverable state. Restoring them immediately lead to heavy flickering when unfocused on my test application (Earth Defense Force 5 via Steam), so it's preferable to grant their request without actually minimizing and then restoring them once they are in focus again.
2020-07-21Fix typos in man page.Antonin Décimo
2020-07-21added ppt unit to move position commandNils Schulte
2020-07-21moved and renamed movement-unit parsing to commonNils Schulte
2020-07-19sway.5: add missing underscoreRonan Pigott
2020-07-18desktop: output: Scale custom output refresh rateAndri Yngvason
This fixes an issue with wlr-output-management causing the frame rate to jump to 60000 Hz when setting a custom mode.
2020-07-15input/cursor: don't send wl_pointer.motion event on pointer unlock warpTudor Brindus
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.
2020-07-14xdg_shell: schedule configure on maximize requestsRonan Pigott
2020-07-13Assert output is found before removing from listSimon Ser
References: https://github.com/swaywm/sway/issues/5483
2020-07-13input: implement xdg_toplevel interactive resize hintsRonan Pigott
2020-07-10config/output: don't change output state before commitSimon Ser
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
2020-07-07Reload command now matches i3's implementationGeoffrey Casper
2020-07-07seat/dnd: support null drag icon surfacesNick Diego Yamane
As per the Wayland spec [1]: > The icon surface is an optional (can be NULL) surface that provides an > icon to be moved around with the cursor. However, as of now Sway "start_drag" signal handler does not starts the DND session unless a non-NULL drag icons is provided. This patch fixes it by skipping handling of the drag icon if it is null. Fixes #5509 [1] https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_data_device Signed-off-by: Nick Diego Yamane <nickdiego@igalia.com>
2020-07-03commands/move: maintain workspace_layout when movingTudor Brindus
Fixes #5157.
2020-07-03Replace unprintable characters in input device idwb9688
2020-07-03tree/view: fix segfault in view_update_titleSimon Ser
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
2020-07-02Unset DISPLAY when wlr_xwayland failsSimon Ser
Avoids having applications connect to a leftover DISPLAY when Xwayland fails to initialize.
2020-07-02Don't set xwayland cursor when wlr_xwayland failedSimon Ser
This causes a NULL pointer dereference.
2020-07-02seat: fix segfault in sway_input_method_relay_set_focusSimon Ser
sway_input_method_relay_set_focus was called before sway_input_method_relay_init. Closes: https://github.com/swaywm/sway/issues/5503
2020-07-01commands/move: unwrap workspace container on move to new workspaceTudor Brindus
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.
2020-07-01tree/view: Make foreign-toplevel app_id fallback to classJohan Bjäreholt
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. https://source.puri.sm/Librem5/phoc/-/blob/c8d8a4c5440a6c1647b09dbd3bba7999f9cd433c/src/xwayland.c#L236
2020-06-30output: simplify loop over layer surfacesIsaac Freund
2020-06-30seat: Refocus seat when wlr_drag is destroyedKenny Levinsen
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-30transaction: Mark client resize immediately readyKenny Levinsen
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