aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2024-07-06xdg-activation: launcher tokens are activation requestsRonan Pigott-6/+6
If the launched client decides to pass it's token along as an activation request, allow that. This will make the behavior match tokens provided by an external launcher client.
2024-07-04build: bump libinput version requiredTarcísio Eduardo Moreira Crocomo-1/+1
2024-07-04Implement clickfinger_button_map support.Tarcísio Eduardo Moreira Crocomo-3/+74
2024-07-03sway_text_node: avoid unnecessary redrawsSimon Ser-0/+6
When a floating container has a titlebar, render_backing_buffer() ends up being called each time the container is moved. Add some more checks for no-op changes in sway_text_node_set_max_width() and sway_text_node_set_background(). This makes the move smoother.
2024-07-03tree/container: drop decl for container_update_textures_recursive()Simon Ser-2/+0
This function doesn't exist anymore.
2024-07-03xdg_shell: don't send configure events to uninitialized surfacesllyyr-3/+2
the surface isn't initialized yet when we first handle it in `handle_xdg_shell_toplevel`, move setting WM capabilities to handle_commit instead. Fixes warnings from wlroots about a configure being scheduled for uninitialized surface
2024-07-03ipc: properly check for titlebarsnovenary-1/+2
This fixes incorrect values for rect.y when using `hide_edge_borders --i3`.
2024-07-03transaction: fix missing top border with hide_lone_tabnovenary-2/+2
Regressed by scene graph.
2024-07-03desktop/output: Debounce modesetsKenny Levinsen-9/+25
Output changes often happen in rapid succession. Instead of doing the modesets one by one, set a 10 millisecond debounce timer.
2024-07-03input/keyboard: don't set layout for virtual keyboard devicellyyr-1/+3
This prevents us from recompiling keymap every time a virtual device is created by clients like fcitx5
2024-07-03input/keyboard: refactor into sway_keyboard_set_layoutllyyr-36/+44
2024-07-03input/seat: don't send redundant leave/enter on device creationllyyr-2/+1
Fixes: #8143 #8173 Upstream issue: https://github.com/fcitx/fcitx5/issues/1044
2024-07-02input/keyboard: don't send key release if we don't have focused surfacellyyr-2/+3
"The compositor must not send this event if the wl_keyboard did not have an active surface immediately before this event. The compositor must not send this event if state is pressed (resp. released) and the key was already logically down (resp. was not logically down) immediately before this event." From https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/382
2024-07-02config/output: Skip VRR tests when not supportedKenny Levinsen-9/+6
Adaptive sync is a "soft" setting which we degrade of off when not supported. Some outputs types do not support turning it off (Wayland, X11), which makes for an awkward three-way test where we first enable, disable and finally unset the setting. wlr_output.adaptive_sync_supported tells us whether the output definitely does not support making changes (backend without support, connector without the feature), or whether it might work. Use this to avoid wasting time on adaptive sync test that can never succeed, and to avoid the Wayland/X11-backend specific unset step.
2024-07-01desktop/output: unify page-flip codepathSimon Ser-13/+12
Instead of having a special codepath for applying gamma LUTs, have a single codepath for regular page-flips and gamma LUT updates. Should make it easier to add more logic on top e.g. for tearing page-flips.
2024-06-29view: send scale notification when the output is knownRonan Pigott-0/+9
2024-06-27protocols: use tablet-v2 xml from stable/Kirill Primak-1/+1
2024-06-27prevent workspace_find_container from crashing with NULL workspacesbretello-0/+5
2024-06-27fix crash when setting urgency on an hidden scratchpad containerbretello-1/+1
2024-06-25tree/view: ensure content_{width,height} is positiveSimon Ser-2/+2
The size computations may result in a zero or negative size, which are not valid wl_surface sizes.
2024-06-25tree/view: set default min size to 1×1Simon Ser-2/+2
It's not possible to have a surface with a smaller size.
2024-06-10Set color transform when calling wlr_scene_output_build_state()Simon Ser-4/+6
We were only passing the color transform when calling wlr_scene_output_commit(). However when modesetting or pushing a new gamma LUT we render via wlr_scene_output_build_state(). Pass the color transform there as well.
2024-06-07sway/commands/output: Add command to set color profileManuel Stoeckl-1/+147
This makes it possible to render output buffers in a different color space, by specifying an ICC profile for the output.
2024-05-28Update for versioned wlroots filesViolet Purcell-1/+1
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4614
2024-05-27Drop server.h include from input/input-manager.hSimon Ser-1/+29
The only reason it's included there is for a declaration of struct sway_server, but we can just forward-declare it. This avoids rebuilding almost all of Sway when touching server.h. All other server.h includes are from source files, not headers.
2024-05-27input/text_input: ensure keyboard is set before sending modifiersSimon Ser-1/+3
Clients get confused when modifier events are sent before the keymap.
2024-05-27server: hide xdg_output from unprivileged clientsSimon Ser-2/+6
Regular Wayland clients shouldn't care about the position or size of outputs. Hide xdg_output from unprivileged clients to make sure they're not doing shenanigans with this information.
2024-05-24tree/view: Do not clip to geometry if using CSDthal-6/+13
If a floating window is using CSD, the geometry should not be used to define the clipping region. Otherwise drop shadows and such may be clipped excessively.
2024-05-21build: drop xwayland optionSimon Ser-59/+56
Instead of having a build-time option to enable/disable xwayland support, just use the wlroots build config: enable xwayland in Sway if it was enabled when building wlroots. I don't see any use-case for disabling xwayland in Sway when enabled in wlroots: Sway doesn't pull in any additional dependency (just pulls in dependencies that wlroots already needs). We have a config command to disable xwayland at runtime anyways. This makes it so xwayland behaves the same way as other features such as libinput backend and session support. This also reduces the build matrix (less combinations of build options). I think we originally introduced the xwayland option when we didn't have a good way to figure out the wlroots build config from the Sway build system.
2024-05-18sway/config/output.c: fix null deref on output configAnna (navi) Figueiredo Gomes-1/+1
If there's no config for the output, oc is null, but some screens might have a default rotation, causing the log call to dereference a null pointer. Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
2024-05-18build: disable wayland-protocols subproject tests by defaultSimon Ser-1/+1
2024-05-07desktop/layer_shell: provide fractional scale on creationManuel Stoeckl-0/+7
Also, send a matching wl_surface.preferred_buffer_scale event.
2024-05-07tree/container: ensure pixman rect is valid in container_arrange_title_bar()Simon Ser-0/+4
Fixes "Invalid rectangle passed" errors printed by Pixman.
2024-05-07sway_text_node: Allow 0 text widthAlexander Orzechowski-1/+7
special case negative numbers instead.
2024-05-02config/output: Print output state during testsKenny Levinsen-14/+32
Instead of having each search function print its various test decisions, print the full state at the end of every search. This makes it much clearer what state a particular test includes.
2024-05-02config/output: Search for output config fallbacksKenny Levinsen-55/+261
The original sway output config implementation enabled one output at a time, testing modes, render formats and VRR support as it went along. While this sort of fallback is easy to do, it has the downside of not considering the effect of neighbor outputs on the configuration viability. With backend-wide commits, we can now better consider the effect of neighbor outputs, but to handle the fact that we commit all outputs at once we need to perform a more elaborate search of viable configurations. Implement a recursive configuration search for when the primary configuration failed to apply.
2024-05-02config/output: Use all outputs for config mergeKenny Levinsen-1/+1
When storing a config, we need to find the output that is being configured to extract its identifier. output_by_name_or_id does not return outputs that are disabled, and using this makes it impossible to merge configurations related to disabled outputs. Switch to all_outputs_by_name_or_id. Fixes: https://github.com/swaywm/sway/issues/8141
2024-04-23desktop/output: Fix check if config should be storedKenny Levinsen-1/+1
We want to check if a config_head existed for the current matched_output_config, so we should check cfg->output. sway_output is a temporary variable from a previous wl_list_for_each, and does not contain anything useful to us. Fixes: https://github.com/swaywm/sway/issues/8128
2024-04-21server: Use wlr_renderer_get_texture_formatsKenny Levinsen-5/+4
wlr_renderer_get_{dmabuf|shm}_texture_formats have been replaced by a unified wlr_renderer_get_texture_formats interface using buffer caps. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4644
2024-04-13config/output: drop fast path in store_output_config()Simon Ser-5/+0
If there is no output currently connected, we still want to merge to any existing config. It shouldn't matter to iterate over the list of outputs to do nothing anwyays.
2024-04-13config/output: fix NULL derefs in store_output_config()Simon Ser-2/+5
../sway/config/output.c:33:21: runtime error: member access within null pointer of type 'struct sway_output' AddressSanitizer:DEADLYSIGNAL ================================================================= ==7856==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000080 (pc 0x63da8558205c bp 0x7ffdc35881a0 sp 0x7ffdc3588160 T0) ==7856==The signal is caused by a READ memory access. ==7856==Hint: address points to the zero page. #0 0x63da8558205c in output_get_identifier ../sway/config/output.c:33 #1 0x63da855865c3 in store_output_config ../sway/config/output.c:220 #2 0x63da855d4066 in cmd_output ../sway/commands/output.c:106 #3 0x63da8547f2e3 in config_command ../sway/commands.c:425 #4 0x63da8548f3fc in read_config ../sway/config.c:822 #5 0x63da8548a224 in load_config ../sway/config.c:435 #6 0x63da8548b065 in load_main_config ../sway/config.c:507 #7 0x63da854bee8d in main ../sway/main.c:351 #8 0x77e2ea643ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af) #9 0x77e2ea643d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af) #10 0x63da8547ad64 in _start (/home/simon/src/sway/build/sway/sway+0x372d64) (BuildId: 3fa2e8838c1c32713b40aec6b1e84bbe4db5bde8) Fixes: 1267e47de913 ("config/output: Refactor handling of tiered configs")
2024-04-12config/output: Refactor handling of tiered configsKenny Levinsen-162/+143
Output configuration can be applied to a particular output in three ways: As a wildcard, by connector name and by identifier. This in turn means that three different configurations must be handled at any given time. In the current model, this is managed by merging new configuration into every other matching configuration. At the same time, an additional synthetic configuration is made which matchehes both identifier and name at the same time, further complicating logic. Instead, manage and store each configuration independently and merge them in order when retrieving configuration for an output. When changes are made to a less specific configuration, clear these fields from more specific configurations to allow the change to take effect regardless of precedence. Fixes: https://github.com/swaywm/sway/issues/8048
2024-04-05input: add Super as alternative for Mod4Ferdinand Bachmann-2/+3
This PR implements alternative human-readable names for the logo key (Mod4) as proposed in #8084.
2024-03-30sway-ipc(7): Escape backslashes correctly in GET_CONFIG outputDaniel Kahn Gillmor-1/+1
Without this change, i see the following in the sway-ipc manpage: ``` 9. GET_CONFIG MESSAGE Retrieve the contents of the config that was last loaded REPLY An object with a single string property containing the contents of the config Example Reply: { "config": "set $mod Mod4nbindsym $mod+q exitn" } ```
2024-03-28input: pass wlr_seat_client to wlr_seat_touch_notify_cancel()Simon Ser-1/+5
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4613
2024-03-28commands/output/toggle: Use free_output_configKenny Levinsen-1/+1
2024-03-28output/config: Remove unused test_output_configKenny Levinsen-12/+0
2024-03-28config/output: Make merge_output_config staticKenny Levinsen-3/+1
2024-03-28output/config: Remove reset_outputs and co.Kenny Levinsen-58/+1
apply_output_config_to_outputs uses the specified output config to check which outputs to apply to, and to use as backup when no config is found. If any config matches the output, the specified config will be disregarded. The only remaining user of apply_output_config_to_outputs is reset_outputs, which called apply_output_config_to_outputs with either the first stored wildcard config, or a new empty wildcard config. Providing a stored or empty wildcard config is practically the same as calling `apply_all_output_configs`. Replace uses of `reset_outputs` with `apply_all_output_configs` and remove the now unused functions.
2024-03-28config/output: Remove apply_output_configKenny Levinsen-32/+0