aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* input/cursor: unhide cursor on synthetic inputLibravatar Tudor Brindus2020-12-06
| | | | Fixes #5847.
* criteria: fix crash when comparing NULL propertiesLibravatar Paul Riou2020-12-04
| | | | | | | | | | | | | | | | | | | | | | | | For each following combinations of criteria & command below, the command would crash sway without the fix. It's particular about the __focused__ criteria, where the view matches part of the criteria but not the focused app, leading to a failure when calling `strcmp` with NULL. "xterm" is a non-wayland app (X11) and "kitty" is. Both are terminals. # "class" is specific to X11 # The view is X11 (xterm) leading to the criteria checking for the # focused app's class, leading to a crash for_window [class="__focused__"] floating enable exec kitty -e xterm # Similarly, crash as the focused app (xterm) has no app_id when the view has one for_window [app_id="__focused__"] floating enable exec xterm -e kitty # If the view has a title but not the focused app: NULL title will crash criteria checking for_window [title="__focused__"] floating enable exec xterm -title "" -e xterm
* common: make 'lenient_strcmp' arguments constLibravatar Paul Riou2020-12-04
| | | | | | | Prevents build failures when calling the function with 'const char *' arguments. This is also more accurate since the function is not expected to modify the args.
* xdg_shell: allow views to change geometry anytimeLibravatar Ronan Pigott2020-11-24
| | | | | | | | | | | Currently, when sway sends a configure with some geometry and the client responds with a different geometry in a commit that acks that configure, sway ignores the new size. Sway applies the surface geometry it had requested to the container, not what was actually committed, in the following transaction. This change allows any client commit to change its surface geometry, even if it is a response to a configure event.
* document parse_errorLibravatar Rex Hackbro2020-11-21
|
* Small wording change to README.ja.mdLibravatar Tudor Brindus2020-11-16
| | | | 見落とされていた英語の単語を置き換える。
* Log which output is using direct scan-outLibravatar Simon Ser2020-11-16
|
* input/keyboard: fix Group# bindings for keyboard groupsLibravatar Brian Ashworth2020-11-12
| | | | | | The keyboard group's effective keyboard layout was never being changed due to a condition that incorrectly preventing it from being performed. The IPC event that follows the change was correctly being prevented.
* tree/container: introduce `container_is_sticky[_or_child]` functionsLibravatar Tudor Brindus2020-11-11
| | | | | | | | | | To query whether a container is sticky, checking `con->is_sticky` is insufficient. `container_is_floating_or_child` must also return true; this led to a lot of repetition. This commit introduces `container_is_sticky[_or_child]` functions, and switches all stickiness checks to use them. (Including ones where the container is already known to be floating, for consistency.)
* Add missing includes for wlr_input_device.hLibravatar Simon Ser2020-11-11
| | | | References: https://github.com/swaywm/wlroots/pull/2470
* Replace wlr_key_state with wl_keyboard_key_stateLibravatar Simon Ser2020-11-11
| | | | References: https://github.com/swaywm/wlroots/pull/2446
* build: bump wlroots dependency to 0.12.0Libravatar Simon Ser2020-11-08
|
* input/seatop_default: consider fullscreen views to have no edgesLibravatar Tudor Brindus2020-11-05
| | | | | | | | | | | | | Previously, `find_edge` on a single fullscreen view would occasionally return an edge rather than `WLR_EDGE_NONE`. This would trigger entry into `seatop_resize_tiling`, which doesn't have meaning for a fullscreen view. The result was that the fullscreen container hitbox was considered to be that of where it'd be if it were tiling, so most clicks would not go through. Fixes #5792.
* fix typoLibravatar heitor2020-11-05
|
* update portuguese README (fix typos, update informations...)Libravatar heitor2020-11-05
|
* input: fully change focus when scrolling tabs/stacksLibravatar Tudor Brindus2020-11-01
| | | | | | | | When scrolling on a tabbed/stacked container, i3 focuses its inactive-focused focused child. Sway does the same, but then resets the focus to whatever was focused previously. Ref https://github.com/i3/i3/blob/e5992eed163179f5cd2715c2c212d3d757f04b31/src/click.c#L207-L219
* commands/focus: force container warp when fulfilling `focus mode_toggle`Libravatar Tudor Brindus2020-11-01
| | | | | | | This commit switches focusing behavior to force a warp when executing `focus mode_toggle`. Fixes #5772.
* input: remove motion deltas from seatop callbacksLibravatar Tudor Brindus2020-10-31
| | | | Straightforward cleanup, they haven't been used for a while.
* hide_cursor: Add an option to hide when typingLibravatar Tamir Zahavi-Brunner2020-10-30
| | | | | Add an option for the `hide_cursor` command to hide the cursor when typing, i.e. whenever a key is pressed.
* output: Revert implementation of evacuate_sticky()Libravatar mwenzkowski2020-10-28
| | | | | | | | The function evacuate_sticky() was changed in commit 32788a93 to be used by workspace_for_each_container() to make the code more readable. But I overlooked that it is not safe to use workspace_for_each_container() to remove container from a workspace. This commit restores the previous implementation for evacuate_sticky().
* In container_split, set a floating container's view to tiledLibravatar Dimitris Triantafyllidis2020-10-28
| | | | | | | | | | | | | | | Currently, when a floating container with a view is split and children are added to it, the new views are rendered as tiled, while the first view stays in floating style. Here this is addressed by setting the view to tiled as soon as the container is split, by duplicating the "view part" of the logic in container_set_floating(..., false). Since the new container of the view is no longer considered floating, it makes sense to set the view to tiling at this point. The view would have to be set back to floating if it was possible to "unsplit" the container.
* output: evacuate sticky containers only if new output has a workspaceLibravatar mwenzkowski2020-10-27
| | | | | | | Sticky floating containers on an otherwise empty workspace can only be evacuated if the new output has an active workspace. The noop output may not have one and in that case we have to move the whole workspace to the new output.
* Smart borders fix: always show borders for floating containersLibravatar Dimitris Triantafyllidis2020-10-25
| | | | | | | | | | | | | | Currently, in view_autoconfigure, the only condition for show_border is !view_is_only_visible. view_is_only_visible does not cross the boundary between the workspace's tiling and floating lists and does not differentiate between them. The result is, that in a workspace with zero or more tiling containers and a single floating container, the floating container will lose its borders as soon as it is split, provided that a only one view is visible within the floating container. Fixed by adjusting the condition for show_borders.
* container: Fix NULL pointer dereferenceLibravatar mwenzkowski2020-10-24
| | | | | | | Reset the workspace layout to the output's default only if the workspace is actually attached to an output. Fixes #5762
* commands/move: fix crash when moving sphsc childLibravatar Ronan Pigott2020-10-24
|
* commands/resize: don't consider 1px resizes to be invalidLibravatar Daniel De Graaf2020-10-22
| | | | | | A "resize shrink width 1px" will cause grow_x to be 0 while grow_width is -1, incorrectly rejecting the command even though the resize is not a noop. Fix this by checking width/height instead of x/y.
* tiling_resize: abandon resize if a sibling con diesLibravatar Ronan Pigott2020-10-20
|
* transaction: make transaction collapsing smarter with > 2 viewsLibravatar Tudor Brindus2020-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | Sway maintains a list of pending transactions, and tries to merge consecutive transactions applying to the same views into one. Given a pending transactions list on views {A, B, C} of: A -> A' -> A'' -> B -> B' -> B'' Sway will collapse the transactions into just A'' -> B''. This works fine when doing things like resizing views by their border. However, when interactively resizing layouts like H[V[A B] C], we end up with pending transaction lists like: A -> B -> C -> A' -> B' -> C' -> A'' -> B'' -> C'' Previously, Sway would not be able to simplify this transaction list, and execute many more transactions than would be necessary (the final state is determined by {A'', B'', C''}). After this commit, the transaction list gets simplified to A'' -> B'' -> C'', resolving performance problems (that were particularly noticeable with high-refresh-rate mice). Fixes #5736.
* transaction: validate X transaction completions by geometry, not sizeLibravatar Tudor Brindus2020-10-18
| | | | | | | | | | | Xwayland views are aware of their coordinates, so validating transaction completions should take into account the reported coordinates of the view. Prior to this commit they didn't, and matching dimensions would suffice to validate the transaction. Also introduced `transaction_notify_view_ready_immediately` to support the fix from d0f7e0f without jumping through hoops to figure out the geometry of an `xdg_shell` view.
* transaction: don't reconfigure X views unless integral coords changedLibravatar Tudor Brindus2020-10-18
| | | | | | | | | Sway logical coordinates are doubles, but they get truncated to integers when sent to Xwayland through `xcb_configure_window`. X11 apps will not respond to duplicate configure requests (from their truncated point of view) and cause transactions to time out. Fixes #5035.
* tiling_drag: emit window move ipc eventsLibravatar Ronan Pigott2020-10-18
|
* xwayland: listen to `set_geometry` eventLibravatar Tudor Brindus2020-10-18
| | | | | | Closes #5735, refs #3007. This makes the "Search everywhere" dialog in JetBrains IDEs movable.
* seat: use default output mapping if there is no input configLibravatar Ronan Pigott2020-10-16
|
* swaybar: don't expand separator_block_width if separator is falseLibravatar Ludvig Michaelsson2020-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | When swaybar receives the following JSON body [ { "full_text": "foo", "separator": false, "separator_block_width": 0 }, { "full_text": "bar" } ] it should not draw any separator or any space between the two blocks. However, since swaybar calculates that separator_block_width 0 is too small to fit any configured separator, it will override the separator_block_width with some non-zero value. This patch changes that such that the necessary separator_block_width is only expanded if the block has 'separator: true'. This should be in line to what i3 does, as its documentation of the i3bar protocol for separator states that "[...] if you disable the separator line, there will still be a gap after the block, unless you also use separator_block_width".
* input/tablet: add tool_mode option to set tablet tools as relative inputLibravatar Tudor Brindus2020-10-12
| | | | Closes #4139.
* input/cursor: default tablet lens tool to relative motionLibravatar Tudor Brindus2020-10-12
| | | | | | | | It is recommended that mouse and lens cursor tool default to relative mode and all pen-like tools to absolute mode. Refs https://wayland.freedesktop.org/libinput/doc/1.11.3/tablet-support.html#tablet-relative-motion.
* Add support for workspace_min_width bar option.Libravatar Tarmack2020-10-11
|
* xwayland: support views that change override-redirect statusLibravatar Tobias Langendorf2020-10-10
|
* commands/move: fix single-split escaping on moveLibravatar Tudor Brindus2020-10-04
| | | | | | | | | Prior to this commit, having a layout like T[app1 V[app2]], focusing app2, and then doing `move left` would result in T[app2 app1]. Now, the resulting layout is T[app1 app2], which matches i3 behavior. `container_flatten` updates `container->parent`, meaning that the existing check would never be true.
* desktop/render: show indicators for top-level splitLibravatar Tudor Brindus2020-10-04
| | | | | | | | | i3 shows indicators for the workspace-level pseudo-split, but Sway does not, as of b977c02. This commit replaces the floating container check with a call to `container_is_floating`, which has some more robust checks in place. Fixes #5699.
* Make focus_follows_mouse work when hovering a layer-shell surface on another ↵Libravatar David962020-09-26
| | | | | | output Fixes #5668
* check parent surface before it is destroyedLibravatar John Mako2020-09-19
|
* cursor: update hide timer during config applyLibravatar Rouven Czerwinski2020-09-16
| | | | | | | | | We can't arm the timer during cursor creation since the config may not be ready yet. Instead arm the timer while applying the input configuration, by this time the configuration has been parsed and we can arm the hide timer. Fixes #5686
* server: Avoid using "wayland-0" as WAYLAND_DISPLAYLibravatar Geoffrey Casper2020-09-16
| | | | See https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/486
* Fix minor typos in German READMELibravatar Jonas Hohmann2020-09-15
|
* cursor: arm cursor hide timer immediatelyLibravatar Rouven Czerwinski2020-09-15
| | | | | | | | | | According to the wayland docs, wayland timers are disarmed on creation. This leads to the cursor not being hidden if there is no activity after creation, since the timer is armed on activity, but not at creation. Arm the timer after creation to ensure the cursor is hidden even if there is no cursor activity after creation. Fixes #5684
* input/pointer: update cursor activity after updating button countsLibravatar Tudor Brindus2020-09-14
| | | | | | | Otherwise, Sway will not re-hide a cursor after the last button has been released. Needed alongside afa890e to fix #5679.
* swaynag: add details background optionLibravatar Mustafa Abdul-Kader2020-09-14
| | | | | | Adds a new config option for details background for swaynag issue/#5673
* input/cursor: reset event source after unhideLibravatar Rouven Czerwinski2020-09-14
| | | | | | | | Reset the event source after unhiding the cursor, to ensure that the timeout starts after showing the cursor. Also remove the open coded variant in seat_consider_warp_to_focus(). Fixes #5679
* Re-focus on parent surface if it is availableLibravatar BrassyPanache2020-09-04
| | | | | | | | | | | | | | | | | | | | | | My primary issue was IntelliJ IDEA's code suggestion pop-up not returning focus to the active editing window. I have spent some time looking at the changes of @Xyene (#5398) and @RyanDwyer (#2103). I think my proposed change maintains the status quo for the most part whilst fixing my focus issue. I have verified that @Xyene's fix for IntelliJ sub-menus still works. I have done basic testing which consists of: - Chrome - IntelliJ IDEA 2020.2.1 - VSCode - Alacritty It seems to hold up. I at least didn't see any obvious errors. Relates to #3007