aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-11-28input/keyboard: reset seat keyboard on destroyBrian Ashworth
If a sway keyboard is being destroyed, then the keyboard is being removed from a seat. If the associated wlr_keyboard is the currently set keyboard for the wlr_seat, then we need to reset the wlr_seat's keyboard to NULL so it doesn't reference an invalid device for the seat. The next configured keyboard from the seat or the next keyboard from that seat that has an event will then become the seat keyboard. Similarly, this needs to be done for a wlr_keyboard_group's keyboard when the wlr_keyboard_group is being destroyed.
2019-11-27config: improvements to the reload validationBrian Ashworth
For the validation pass of reloading, there is no need to touch swaybg, swaynag, inputs, outputs, or seats. This drastically improves the speed of a reload by skipping over the expensive I/O configuration and handling of wayland clients. As long as the syntax is valid, the CMD_FAILURE's can be relayed during the actual reload.
2019-11-26input/keyboard: check keyboard group before removeBrian Ashworth
In sway_keyboard_destroy, only remove the keyboard from a keyboard group, if it is part of a keyboard group. If the keyboard is not part of a keyboard group, then there is nothing to remove it from
2019-11-24input: seat: Fix seat device list not initialised before usePaul Riou
When being created, non first seats would get through the list of devices without the list being first initialised -> segfault. Issue introduced with ab0248a54564b2f644b6fb367f9eb44fe0bf5f3c Fixes #4750: Crash when reloading Sway with multiple seats configured
2019-11-23Amend typosJason
2019-11-21Use new presentation-time helperSimon Ser
This has the advantage to (1) reduce boilerplate and (2) make us correctly handle wlr_output_event_present.commit_seq.
2019-11-21Add support for wlr_keyboard_groupBrian Ashworth
A wlr_keyboard_group allows for multiple keyboard devices to be combined into one logical keyboard. This is useful for keyboards that are split into multiple input devices despite appearing as one physical keyboard in the user's mind. This adds support for wlr_keyboard_groups to sway. There are two keyboard groupings currently supported, which can be set on a per-seat basis. The first keyboard grouping is none, which disables all grouping and provides no functional change. The second is keymap, which groups the keyboard devices in the seat by their keymap. With this grouping, the effective layout and repeat info is also synced across keyboard devices in the seat. Device specific bindings will still be executed as normal, but everything else related to key and modifier events will be handled by the keyboard group's keyboard.
2019-11-21input_cmd_xkb_file: allow shell path expansionBrian Ashworth
This allows for shell path expansion for input_cmd_xkb_file. The logic has been extracted from output_cmd_background
2019-11-21input/keyboard: cleanup xkb_file error handingBrian Ashworth
This fixes an inverted fclose return value check and simplifies the error handling and logging for xkb_file in sway_keyboard_compile_keymap
2019-11-17Add note about backends to output max_render_timeIvan Molodetskikh
2019-11-17output: check wlr_output in repaint handlerIvan Molodetskikh
It's possible for the output to be disconnected in just the right moment for wlr_output to be NULL in the repaint handler, causing a crash. This check fixes that crash.
2019-11-17Add max_render_time to view JSONIvan Molodetskikh
2019-11-17Add max_render_time to output JSONIvan Molodetskikh
2019-11-17view: add max_render_timeIvan Molodetskikh
2019-11-17Add sway_surfaceIvan Molodetskikh
For extending wlr_surface with additional things.
2019-11-17output: add max_render_timeIvan Molodetskikh
2019-11-17Add -Wno-missing-bracesSimon Ser
-Wmissing-braces makes it annoying to zero-initialize structs with = {0} when the first field is a struct. See for instance [1]. [1]: https://builds.sr.ht/~sircmpwn/job/110425
2019-11-17grimshot: fix branching on command exit statusManuel Mendez
The previous behavior was incorrect because `if` was checking the return status of the `[` command which was never going to be an error. `[` seems to only return an error if no args are provided. This was basically a useless use of `[` anyway since it was just meant as a straight interpretation of command exit, something that `if` can do itself. Compare: ```sh [ ]; echo ?=$? [ /bin/false ]; echo ?=$? if [ /bin/false ]; then echo this is the unintended bug; fi if /bin/false; then echo this will not be printed; fi ```
2019-11-17Use an enum instead of a marker string for map_to_Tadeo Kondrak
2019-11-17Implement input map_to_region commandTadeo Kondrak
2019-11-16xwayland: get_constraints using size hintsRouven Czerwinski
Previously, Xwayland windows did not have size_constraints implemented, resulting in the window being resizable. This implements the constraints through the X11 size hints supplied by the window itself.
2019-11-08seatop_default: handle focus for unmanaged xwayland windows lastRonan Pigott
Fixes #4707
2019-11-05Use wlr_output_preferred_mode instead of the last modeSimon Ser
Instead of relying on the order of modes, use wlr_output_preferred_mode to get the preferred mode.
2019-11-05Fix segfault in set_modeSimon Ser
best is NULL prior to being assigned to a mode. Closes: https://github.com/swaywm/sway/issues/4705 Fixes: f33dcd4c604f ("Prefer higher refresh rate default modes")
2019-11-05Prefer higher refresh rate default modesRonan Pigott
2019-11-04smart_borders: separate smartness from edge typesRonan Pigott
2019-11-04Add --custom to `output mode` commandSimon Ser
This forces to set the mode as a custom mode.
2019-11-04seatop_default: handle focus for xwayland_unmanaged viewsRonan Pigott
2019-11-04seatop_move_floating: make container respect pointer constraintRonan Pigott
2019-11-04focus: do nothing on focus prev|next for workspacesRonan Pigott
2019-11-01Rename symbol set_cloexec to sway_set_cloexec, remove duplicates.Sheena Artrip
set_cloexec is defined by both sway and wlroots (and who-knows-else), so rename the sway one for supporting static linkage. We also remove the duplicate version of this in client/. Fixes: https://github.com/swaywm/sway/issues/4677
2019-11-01focus: add a NULL check in `focus <direction>`lbonn
container is checked for NULL in other conditions earlier, it's not obvious that it can't be undefined here.
2019-11-01Fix potential NULL reference on cleanuplbonn
If allocation of bindings failed. Found with clang-tidy
2019-11-01Fix various memory leakslbonn
Found with clang-tidy
2019-11-01seat: simplify a strduplbonn
2019-10-31Skip line continuation when it is a commentRobert Günzler
Currently commented lines ending in the backslash character will be concatenated with the following line. ``` # with this comment \ exec swaynag -m 'will not run' ``` This change modifies `getline_with_cont` to stop reading when the initial character is a '#'.
2019-10-27Fix presentation feedback when scanning out fullscreen viewSimon Ser
Closes: https://github.com/swaywm/sway/issues/4663
2019-10-27Handle layer changes for layer shell surfacesSimon Ser
Closes: https://github.com/swaywm/sway/issues/4644 References: https://github.com/emersion/rootston/commit/1982106c9b0fbd48ee9fe20e013524125f6ca3cf
2019-10-27criteria: make literal comparison for __focused__ valuesRonan Pigott
2019-10-27focus: support focus prev|next [sibling]Ronan Pigott
2019-10-27Fix segfault in wlr_output_manager_v1_set_configurationSimon Ser
Calling wlr_output_manager_v1_set_configuration with an enabled output and a NULL mode is incorrect if the output doesn't support modes. When DPMS'ing an output, wlr_output_enable(output, false) is called. This de-allocates the CRTC and sets wlr_output.current_mode to NULL. Because we mark DPMS'ed outputs as enabled, we also need to provide a correct output mode. Add a field to sway_output to hold the current mode. Closes: https://github.com/swaywm/wlroots/issues/1867
2019-10-27Fix apply_output_config return value when enabling outputSimon Ser
apply_output_config would call output_enable and always return true, even if the output couldn't be enabled.
2019-10-23Fix tiled containers resize with mouseKirill Chibisov
Fixes regression introduced in 2c1a11016ccb7646a74de51eff003c18e5aa7902
2019-10-23swaybar: fix typo in the loop over pixmapsKonstantin Pospelov
Fixes #4665.
2019-10-21swaybar: do not retry search for tray iconsKonstantin Pospelov
In case a tray icon cannot be found or does not have a desirable size, swaybar retries the search again and again, which increases load on disk and CPU. This commit solves it by storing target_size for each icon, so that swaybar does not search for an icon of some size if it already tried to. Fixes #3789.
2019-10-21Fix refresh rate scale of outputDanilo Spinella
When applying config, value mode->refresh is mHz; convert it to Hz before assigning it to the temporary output config. oc->refresh_rate will be converted back to mHz in set_mode function. Fix debug log printing GHz instead of Hz.
2019-10-17focus: support focus_wrapping workspacelbonn
Following i3 support: https://github.com/i3/i3/pull/3407
2019-10-17xwayland.c handle_map(): NULL out xsurface->data() to prevent crashing.A. M. Joseph
When changing a surface from managed to unmanaged in handle_map(), the call to handle_destroy(.., view) causes the sway_xwayland_view pointed to by the untyped wlr_xwayland_surface.data field to become invalid garbage, yet the untyped wlr_xwayland_surface.data continues to point at it. In particular: view_get_*(view_from_wlr_surface(..)), even with appropriate NULL checking, will crash sway when this codepath is exercised (reliable test case: drop-down menus in Google Earth).
2019-10-16Updates per wlroots layer shell changesDrew DeVault
2019-10-16Grimshot: a helper for screenshots within swayLauri
Usage: grimshot copy|save win|screen|area [FILE] Troubleshoot: grimshot check Requirements: - `grim`: screenshot utility for wayland - `slurp`: to select an area - `swaymsg`: to read properties of current window - `wl-copy`: clipboard utility - `jq`: json uliity to parse swaymsg output - `notify-send`: to show notifications Those are needed to be installed, if unsure, run `grimshot check` Examples: `grimshot copy win` - to copy current window `grimshot save area` - to select area and save it to default file (Pictures/Grimshot-$datetime.png) `grimshot save screen ~/screenshot.png` - to save screenshot under ~/screenshot.png `grimshot` - usage `grimshot check` - verify if tools are installed