aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* desktop/output: Stop repaint loop when not neededv1.10Libravatar Kenny Levinsen2024-07-17
| | | | | | | | | | | | | | 1e0031781fc9 refactored repaint to accumulate all changes in a single wlr_output_state and commit them at the end of the repaint loop, replacing a call to wlr_scene_output_commit. wlr_scene_output_commit contains an early bail-out when no frame has been requested and no damage has accumulated, which was not replicated as part of this refactor, causing the repaint loop to never pause. Replicate the logic to stop the repaint loop as needed. Fixes: 1e0031781fc9 ("desktop/output: unify page-flip codepath") (cherry picked from commit 3f327b3db0c1fc6985c0ed3231e1bd6296584dad)
* ci: use package x11-servers/xwayland instead of x11-servers/xwayland-develLibravatar Bill Li2024-07-17
| | | | (cherry picked from commit 50073dc579fffffda8a4de903719b9bbb9d5ac3d)
* ci: pin wlroots to v0.18.xLibravatar Simon Ser2024-07-13
|
* common/pango: Disable glyph position roundingLibravatar Kenny Levinsen2024-07-10
| | | | | | | | | | Pango rounds glyph position and widths to nearest integer, which leads to font dimensions jumping around when rendering with a scale, causing text geometry to jump around when changing scale. This is disturbing when text buffers change scale, and also mean that the text geometry calculations in sway_text_node are incorrect. Disable this rounding to make the geometry stable.
* xdg-activation: launcher tokens are activation requestsLibravatar Ronan Pigott2024-07-06
| | | | | | 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.
* build: bump libinput version requiredLibravatar Tarcísio Eduardo Moreira Crocomo2024-07-04
|
* Implement clickfinger_button_map support.Libravatar Tarcísio Eduardo Moreira Crocomo2024-07-04
|
* sway_text_node: avoid unnecessary redrawsLibravatar Simon Ser2024-07-03
| | | | | | | 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.
* tree/container: drop decl for container_update_textures_recursive()Libravatar Simon Ser2024-07-03
| | | | This function doesn't exist anymore.
* xdg_shell: don't send configure events to uninitialized surfacesLibravatar llyyr2024-07-03
| | | | | | | | | 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
* ipc: properly check for titlebarsLibravatar novenary2024-07-03
| | | | | This fixes incorrect values for rect.y when using `hide_edge_borders --i3`.
* transaction: fix missing top border with hide_lone_tabLibravatar novenary2024-07-03
| | | | Regressed by scene graph.
* desktop/output: Debounce modesetsLibravatar Kenny Levinsen2024-07-03
| | | | | Output changes often happen in rapid succession. Instead of doing the modesets one by one, set a 10 millisecond debounce timer.
* input/keyboard: don't set layout for virtual keyboard deviceLibravatar llyyr2024-07-03
| | | | | This prevents us from recompiling keymap every time a virtual device is created by clients like fcitx5
* input/keyboard: refactor into sway_keyboard_set_layoutLibravatar llyyr2024-07-03
|
* input/seat: don't send redundant leave/enter on device creationLibravatar llyyr2024-07-03
| | | | | Fixes: #8143 #8173 Upstream issue: https://github.com/fcitx/fcitx5/issues/1044
* input/keyboard: don't send key release if we don't have focused surfaceLibravatar llyyr2024-07-02
| | | | | | | | | | "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
* config/output: Skip VRR tests when not supportedLibravatar Kenny Levinsen2024-07-02
| | | | | | | | | | | | | | 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.
* desktop/output: unify page-flip codepathLibravatar Simon Ser2024-07-01
| | | | | | | 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.
* view: send scale notification when the output is knownLibravatar Ronan Pigott2024-06-29
|
* protocols: use tablet-v2 xml from stable/Libravatar Kirill Primak2024-06-27
|
* prevent workspace_find_container from crashing with NULL workspacesLibravatar bretello2024-06-27
|
* fix crash when setting urgency on an hidden scratchpad containerLibravatar bretello2024-06-27
|
* tree/view: ensure content_{width,height} is positiveLibravatar Simon Ser2024-06-25
| | | | | The size computations may result in a zero or negative size, which are not valid wl_surface sizes.
* tree/view: set default min size to 1×1Libravatar Simon Ser2024-06-25
| | | | It's not possible to have a surface with a smaller size.
* Set color transform when calling wlr_scene_output_build_state()Libravatar Simon Ser2024-06-10
| | | | | | | 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.
* sway/commands/output: Add command to set color profileLibravatar Manuel Stoeckl2024-06-07
| | | | | This makes it possible to render output buffers in a different color space, by specifying an ICC profile for the output.
* Update for versioned wlroots filesLibravatar Violet Purcell2024-05-28
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4614
* Drop server.h include from input/input-manager.hLibravatar Simon Ser2024-05-27
| | | | | | | | 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.
* input/text_input: ensure keyboard is set before sending modifiersLibravatar Simon Ser2024-05-27
| | | | | Clients get confused when modifier events are sent before the keymap.
* server: hide xdg_output from unprivileged clientsLibravatar Simon Ser2024-05-27
| | | | | | 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.
* tree/view: Do not clip to geometry if using CSDLibravatar thal2024-05-24
| | | | | | 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.
* build: drop xwayland optionLibravatar Simon Ser2024-05-21
| | | | | | | | | | | | | | | | | | 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.
* sway/config/output.c: fix null deref on output configLibravatar Anna (navi) Figueiredo Gomes2024-05-18
| | | | | | | | 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>
* build: disable wayland-protocols subproject tests by defaultLibravatar Simon Ser2024-05-18
|
* desktop/layer_shell: provide fractional scale on creationLibravatar Manuel Stoeckl2024-05-07
| | | | Also, send a matching wl_surface.preferred_buffer_scale event.
* tree/container: ensure pixman rect is valid in container_arrange_title_bar()Libravatar Simon Ser2024-05-07
| | | | Fixes "Invalid rectangle passed" errors printed by Pixman.
* sway_text_node: Allow 0 text widthLibravatar Alexander Orzechowski2024-05-07
| | | | special case negative numbers instead.
* config/output: Print output state during testsLibravatar Kenny Levinsen2024-05-02
| | | | | | 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.
* config/output: Search for output config fallbacksLibravatar Kenny Levinsen2024-05-02
| | | | | | | | | | | | | | | | 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.
* config/output: Use all outputs for config mergeLibravatar Kenny Levinsen2024-05-02
| | | | | | | | | | | 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
* desktop/output: Fix check if config should be storedLibravatar Kenny Levinsen2024-04-23
| | | | | | | | | 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
* server: Use wlr_renderer_get_texture_formatsLibravatar Kenny Levinsen2024-04-21
| | | | | | | 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
* config/output: drop fast path in store_output_config()Libravatar Simon Ser2024-04-13
| | | | | | | | 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.
* config/output: fix NULL derefs in store_output_config()Libravatar Simon Ser2024-04-13
| | | | | | | | | | | | | | | | | | | | | | ../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")
* config/output: Refactor handling of tiered configsLibravatar Kenny Levinsen2024-04-12
| | | | | | | | | | | | | | | | | | | | 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
* 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.
* sway-ipc(7): Escape backslashes correctly in GET_CONFIG outputLibravatar Daniel Kahn Gillmor2024-03-30
| | | | | | | | | | | | | | | | | | | | 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" } ```
* 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
* commands/output/toggle: Use free_output_configLibravatar Kenny Levinsen2024-03-28
|