aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input
Commit message (Collapse)AuthorAge
* input: add Super as alternative for Mod4Libravatar Ferdinand Bachmann2024-04-05
| | | | This PR implements alternative human-readable names for the logo key (Mod4) as proposed in #8084.
* input: pass wlr_seat_client to wlr_seat_touch_notify_cancel()Libravatar Simon Ser2024-03-28
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4613
* Implement transient seat managementLibravatar Andri Yngvason2024-03-18
|
* Fetch input device vendor/product from libinputLibravatar Simon Ser2024-03-07
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4582
* input: Rename WLR_INPUT_DEVICE_TABLET_TOOL to WLR_INPUT_DEVICE_TABLETLibravatar Luofan Chen2024-03-01
| | | | | | | wlroots has changed the naming, causing the following build errors when building: error: ‘WLR_INPUT_DEVICE_TABLET_TOOL’ undeclared
* Convert to new pointer enumsLibravatar Simon Ser2024-02-28
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4575
* text_input: don't destroy scene_node twiceLibravatar llyyr2024-02-28
|
* Define _POSIX_C_SOURCE globallyLibravatar Simon Ser2024-02-23
| | | | See discussion in https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4555
* input/text_input: fix dangling listenersLibravatar Simon Ser2024-02-23
|
* input/text_input: parent wlr_box may be uninitializedLibravatar llyyr2024-02-20
|
* text_input: Implement input-method popupsLibravatar Access2024-02-20
| | | Co-authored-by: tadeokondrak <me@tadeo.ca>
* Drop unnecessary includes from sway/server.hLibravatar Simon Ser2024-02-15
|
* layer_shell: Handle popups through popup descriptorLibravatar Alexander Orzechowski2024-02-12
| | | | | | | | We tried to synchronize layer shell popups with the parent layer shell on commits, but this is subtly wrong because we would only update the position for one layer shell that was committed, but not any other layer that might be affected. By moving handling to the scene descriptor we can iterate all popups and ensure they are synchronized.
* xdg_shell: Extract struct for popup descriptorLibravatar Alexander Orzechowski2024-02-12
|
* Chase wlroots!4003Libravatar Kirill Primak2024-01-23
|
* Fix SIGSEGV on surface destroyLibravatar Alexander Orzechowski2024-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` Program terminated with signal SIGSEGV, Segmentation fault. warning: Section `.reg-xstate/3960717' in core file too small. 0 container_get_siblings (container=0x55bcde4797f0) at ../sway/tree/container.c:1228 1228 if (list_find(container->pending.workspace->tiling, container) != -1) { [Current thread is 1 (Thread 0x7fa23b4a2940 (LWP 3960717))] (gdb) bt full= No symbol "full" in current context. (gdb) bt full 0 container_get_siblings (container=0x55bcde4797f0) at ../sway/tree/container.c:1228 1 0x000055bcdb62c704 in edge_is_external (cont=0x55bcde4797f0, edge=(WLR_EDGE_TOP | WLR_EDGE_LEFT)) at ../sway/input/seatop_default.c:54 siblings = 0x55bcde4797f0 index = 32766 layout = L_NONE __PRETTY_FUNCTION__ = "edge_is_external" 2 0x000055bcdb62c96f in find_resize_edge (cont=0x55bcde4797f0, surface=0x0, cursor=0x55bcddd5c2e0) at ../sway/input/seatop_default.c:106 edge = (WLR_EDGE_TOP | WLR_EDGE_LEFT) 3 0x000055bcdb620b3c in cursor_update_image (cursor=0x55bcddd5c2e0, node=0x55bcde4797f0) at ../sway/input/cursor.c:144 edge = WLR_EDGE_NONE 4 0x000055bcdb62eb8f in handle_rebase (seat=0x55bcddd5a740, time_msec=488992944) at ../sway/input/seatop_default.c:773 e = 0x55bcddd5c8e0 cursor = 0x55bcddd5c2e0 surface = 0x0 sx = 0 sy = 0 5 0x000055bcdb62c531 in seatop_rebase (seat=0x55bcddd5a740, time_msec=488992944) at ../sway/input/seat.c:1585 6 0x000055bcdb620a7d in cursor_rebase (cursor=0x55bcddd5c2e0) at ../sway/input/cursor.c:126 time_msec = 488992944 7 0x000055bcdb620ac4 in cursor_rebase_all () at ../sway/input/cursor.c:136 seat = 0x55bcddd5a740 8 0x000055bcdb61cc95 in transaction_apply (transaction=0x55bcde5b28c0) at ../sway/desktop/transaction.c:704 9 0x000055bcdb61ccdb in transaction_progress () at ../sway/desktop/transaction.c:716 10 0x000055bcdb61d1f9 in transaction_commit_pending () at ../sway/desktop/transaction.c:836 transaction = 0x55bcde5b28c0 11 0x000055bcdb61d596 in _transaction_commit_dirty (server_request=true) at ../sway/desktop/transaction.c:912 12 0x000055bcdb61d5ac in transaction_commit_dirty () at ../sway/desktop/transaction.c:916 13 0x000055bcdb65f579 in view_unmap (view=0x55bcde2ff180) at ../sway/tree/view.c:847 parent = 0x55bcde489010 ws = 0x55bcdde19080 seat = 0x55bcddd5a198 14 0x000055bcdb61e461 in handle_unmap (listener=0x55bcde2ff368, data=0x0) at ../sway/desktop/xdg_shell.c:394 xdg_shell_view = 0x55bcde2ff180 view = 0x55bcde2ff180 __PRETTY_FUNCTION__ = "handle_unmap" 15 0x00007fa23c4ae87f in wlr_signal_emit_safe (signal=0x55bcde46cf38, data=0x0) at ../util/signal.c:29 pos = 0x55bcde2ff368 l = 0x55bcde2ff368 cursor = {link = {prev = 0x55bcde2ff368, next = 0x7ffe240702a0}, notify = 0x7fa23c4ae7c9 <handle_noop>} end = {link = {prev = 0x7ffe24070280, next = 0x55bcde46cf38}, notify = 0x7fa23c4ae7c9 <handle_noop>} 16 0x00007fa23c47c3c7 in unmap_xdg_surface (surface=0x55bcde46ce30) at ../types/xdg_shell/wlr_xdg_surface.c:40 __PRETTY_FUNCTION__ = "unmap_xdg_surface" popup = 0x55bcde46ce60 popup_tmp = 0x55bcde46ce60 configure = 0x7ffe24070360 tmp = 0x55bcde488020 17 0x00007fa23c47cd47 in xdg_surface_role_precommit (wlr_surface=0x55bcde488020, state=0x55bcde4881a8) at ../types/xdg_shell/wlr_xdg_surface.c:330 surface = 0x55bcde46ce30 18 0x00007fa23c4813b2 in surface_commit_state (surface=0x55bcde488020, next=0x55bcde4881a8) at ../types/wlr_compositor.c:407 __PRETTY_FUNCTION__ = "surface_commit_state" invalid_buffer = false subsurface = 0xbd8e9aecae023300 --Type <RET> for more, q to quit, c to continue without paging-- 19 0x00007fa23c48192a in surface_handle_commit (client=0x55bcde488850, resource=0x55bcde2fdb80) at ../types/wlr_compositor.c:523 surface = 0x55bcde488020 20 0x00007fa23bb5ed4a in () at /usr/lib/libffi.so.8 21 0x00007fa23bb5e267 in () at /usr/lib/libffi.so.8 22 0x00007fa23c517323 in () at /usr/lib/libwayland-server.so.0 23 0x00007fa23c5125cc in () at /usr/lib/libwayland-server.so.0 24 0x00007fa23c5151ca in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0 25 0x00007fa23c512d37 in wl_display_run () at /usr/lib/libwayland-server.so.0 26 0x000055bcdb616885 in server_run (server=0x55bcdb68c5c0 <server>) at ../sway/server.c:307 27 0x000055bcdb61594e in main (argc=3, argv=0x7ffe24070af8) at ../sway/main.c:433 ``` It seems to be happening because of this set of events all happening in the span of a single transaction: 1. You kill a tiled window that is the only window in a workplace. 2. Sway will destroy the workspace but not yet the container - this makes `con->pending.workspace` NULL. 3. Cursor glyphs get recomputed causing sway to recompute if the cursor is on a container edge. 4. That computation causes an access to the NULL workspace. Crash.
* Delete old damage tracking codeLibravatar Alexander Orzechowski2024-01-18
| | | | The new scene graph abstraction handles this for us.
* scene_graph: Port xwaylandLibravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port xdg_shellLibravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port layer_shellLibravatar Alexander Orzechowski2024-01-18
|
* input: Query scene graph for relevant surface/node intersectionsLibravatar Alexander Orzechowski2024-01-18
|
* seat: Remove dead seatop_render functionLibravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port ext_session_v1Libravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port seatop_move_tiling indicatorsLibravatar Alexander Orzechowski2024-01-18
|
* scene_graph: Port seat drag iconsLibravatar Alexander Orzechowski2024-01-18
|
* desktop: Rename layers to shell_layersLibravatar Alexander Orzechowski2024-01-18
| | | | | This code will be deleted later, but for the time being rename it so it doesn't conflict with future properties.
* input: reconfigure send_events on output hotplugLibravatar Simon Ser2024-01-02
| | | | Closes: https://github.com/swaywm/sway/issues/7890
* Check wlr_pointer_constraint_v1_state.cursor_hint.enabledLibravatar Simon Ser2023-12-25
| | | | | | | Update for a wlroots breaking change which resets the committed mask. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4478
* input/seat: simplify seat_is_input_allowed()Libravatar Simon Ser2023-12-13
| | | | Use an early return to make the code more readable.
* input/seat: rename seat_set_exclusive_client()Libravatar Simon Ser2023-12-13
|
* input/seat: inline seat_set_exclusive_client() with NULL clientLibravatar Simon Ser2023-12-13
|
* input/{keyboard,switch}: rename input_inhibited variable to lockedLibravatar Simon Ser2023-12-13
| | | | This is more descriptive now.
* input/seat: drop exclusive_clientLibravatar Simon Ser2023-12-13
| | | | This was a input-inhibit concept.
* Chase wlroots!4440Libravatar llyyr2023-11-22
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4440
* seat: Fix cursor theme reload for tablet toolLibravatar NemuiBanila2023-11-21
|
* seat: Fix reloading cursor theme after changeLibravatar Lina Banik2023-11-21
| | | | | | | | | | | | | This reverts commit afde6369 "seat: avoid unneeded reloading xcursor theme". Always avoiding to reload the xcursor theme prevents reloading the cursor even when this is desired. Instead seat_configure_xcursor can determine whether a full reload is necessary. To stay with the spirit of the reverted change, cursors are only fully reloaded, if the theme has changed. Fixes #6931
* input/input-manager: drop input_manager_configure_all_inputsLibravatar Simon Ser2023-11-16
| | | | This is now unused.
* Only reconfigure input mappings on output changeLibravatar Simon Ser2023-11-16
| | | | | | Fully reconfiguring all input devices on output change takes a loooong time. Let's just reconfigure what we need: only mappings depend on outputs.
* input/seat: rename seat_apply_input_configLibravatar Simon Ser2023-11-16
| | | | seat_apply_input_mapping is a lot more descriptive.
* input/seat: don't configure mappings for switchesLibravatar Simon Ser2023-11-16
| | | | | Switch devices cannot be mapped to an output/region, stop trying to do so.
* Drop support for KDE's idle protocolLibravatar Simon Ser2023-10-05
| | | | We support the standard idle-notify protocol since Sway 1.8.
* chore: chase wlroots xdg-surface role reworkLibravatar Kirill Primak2023-08-21
|
* Add support for cursor-shape-v1Libravatar Simon Ser2023-07-24
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4106
* Deprecate seat idle_wakeLibravatar Simon Ser2023-07-19
| | | | | | | | | | | | | | | | | | | | | | | Sway has two knobs to control idling: - seat idle_inhibit: when the seat is active (ie. not idle), this extends the active state. When the seat is idle, this is ignored. - seat idle_wake: when the seat is idle, this wakes up the seat. When the seat is active, this is ignored. The motivation for the deprecation is two-fold: - The concept of "seat idle state" is ill-defined. Each idle-notify-v1 client will pass a different idle timeout. With the old logic, a seat was declared idle if and only if all idle-notify-v1 timeouts have expired. However, if only a portion of the timeouts have expired, then some clients would wake up, and the rest would stay active. This is inconsistent with the definition of idle_inhibit/idle_wake: idle_inhibit was used for clients which are waking up. - It never worked properly with the new idle-notify-v1 protocol and no-one noticed. Only the legacy KDE idle protocol is taken into account, but that protocol is not used anymore.
* input: Move wlr_pointer_gestures_v1 to sway_input_managerLibravatar Mark Bolhuis2023-06-26
| | | | | | | | On multi-seat configurations a zwp_pointer_gestures_v1 global was created for every seat. Instead, create the global once in the input manager, to be shared across all seats.
* Use "default" XCursor instead of "left_ptr"Libravatar Simon Ser2023-06-25
| | | | | "left_ptr" is the legacy XCursor name. "default" is the cursor spec name.
* Use wlr_cursor_unset_image()Libravatar Simon Ser2023-06-19
| | | | | | A bit cleaner. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4209
* Use wlr_cursor_set_xcursor()Libravatar Simon Ser2023-06-19
| | | | | | wlr_xcursor_manager_set_cursor_image() is deprecated. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4170
* input/libinput: add scroll_button_lock methodLibravatar Cezary Drożak2023-06-16
| | | | | | | Closes https://github.com/swaywm/sway/issues/6987 Co-authored-by: JJGadgets <git@jjgadgets.tech> Co-authored-by: DeltaWhy <mike5713@gmail.com>
* Fix `bindsym --to-code` not respecting input configsLibravatar 33KK2023-06-11
| | | Fixes #7535