aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* tree/view: ensure content_{width,height} is positiveview-size-posLibravatar Simon Ser7 days
| | | | | 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 Ser7 days
| | | | 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
|
* output/config: Remove unused test_output_configLibravatar Kenny Levinsen2024-03-28
|
* config/output: Make merge_output_config staticLibravatar Kenny Levinsen2024-03-28
|
* output/config: Remove reset_outputs and co.Libravatar Kenny Levinsen2024-03-28
| | | | | | | | | | | | | | | 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.
* config/output: Remove apply_output_configLibravatar Kenny Levinsen2024-03-28
|
* desktop/output: Use apply_output_configs for output mgmtLibravatar Kenny Levinsen2024-03-28
|
* Use apply_all_output_configs to light up outputsLibravatar Kenny Levinsen2024-03-28
| | | | | This allows us to test and if necessary degrade the entire backend configuration to light everything up.
* output/config: Add apply_all_output_configsLibravatar Kenny Levinsen2024-03-28
| | | | | | Apply all output configs as they are. This differs from apply_output_config_to_outputs, which tries to apply a specific output config.
* config/output: Introduce apply_output_configsLibravatar Kenny Levinsen2024-03-28
| | | | | | | Introduce apply_output_configs, which applies the specified matched output configs as a single backend commit. Reimplement apply_output_config_to_outputs using apply_output_configs.
* config/output: Split apply_output_configLibravatar Kenny Levinsen2024-03-28
| | | | | | | | | Applying an output config has two stages: Atomic application of wlr_output_state, and applicaiton of non-atomic state like output layout. Split the latter out into finalize_output_config for use in a later commit.
* man: document supported modifier namesLibravatar Ferdinand Bachmann2024-03-28
|
* Implement transient seat managementLibravatar Andri Yngvason2024-03-18
|
* man: document that the scale might be adjustedLibravatar Simon Ser2024-03-14
| | | | | | fractional-scale only supports representing fractions of 120. References: https://github.com/swaywm/sway/issues/8057
* man: drop fractional scale warningLibravatar Simon Ser2024-03-14
| | | | | With the fractional-scale protocol, clients can render without being downscaled.
* Re-create renderer when lostLibravatar Simon Ser2024-03-14
|
* server: fix wlr_seat use-after-free on exitLibravatar Simon Ser2024-03-14
| | | | | | | | | | Same as [1]. I originally tried to properly handle seat destruction, but that turned out to be a can of worms [2]. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4590 [2]: https://github.com/swaywm/sway/pull/8034
* Force bilinear scaling when scaling downLibravatar Alexander Orzechowski2024-03-09
|
* config/output: drop enabling flagLibravatar Simon Ser2024-03-08
| | | | | This was useful when wlroots backends were updating the current mode on their own. This is no longer the case.
* xdg-shell: send WM capabilitiesLibravatar Simon Ser2024-03-08
|
* xdg-shell: implement popup repositioningLibravatar Simon Ser2024-03-08
|
* Fetch input device vendor/product from libinputLibravatar Simon Ser2024-03-07
| | | | References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4582
* config: add fallback without env vars for keysym translation XKB keymapLibravatar Simon Ser2024-03-06
|
* config: error out on keysym translation XKB state failureLibravatar Simon Ser2024-03-06
| | | | | | | | If we can't create the XKB keymap used for keysym translation, gracefully error out instead of crashing. This can happen if the XKB_DEFAULT_LAYOUT is set to an invalid value, for instance. Closes: https://github.com/swaywm/sway/issues/7789
* commands/move: do not force focus on the moved containerLibravatar Ronan Pigott2024-03-01
| | | | | | | | | | My code archaeology isn't good enough to determine what this is here for, but it isn't correct. We should be able to move containers in a direction without focusing them. AFAICT i3 doesn't do this, so we shouldn't either. This fixes ipc commands like move <dir> with criteria that apply to containers which are not the current focus.