Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault in cmd_resize #6693

Closed
stromnet opened this issue Dec 2, 2021 · 3 comments · Fixed by #7680
Closed

Segfault in cmd_resize #6693

stromnet opened this issue Dec 2, 2021 · 3 comments · Fixed by #7680
Labels
bug Not working as intended

Comments

@stromnet
Copy link

stromnet commented Dec 2, 2021

Please fill out the following:

  • Sway Version:
    -sway version 1.6-a23cdbbe (Nov 23 2021, branch 'master')

  • Debug Log:
    Unfortunately do not have debug log.

  • Configuration File:
    The relevant command, as of my knowledge:

for_window [app_id="qalculate-gtk"] move to scratchpad
bindsym $mod+c exec pidof qalculate-gtk || qalculate-gtk ; [app_id="qalculate-gtk"] scratchpad show, resize set 1440 810, move position center
  • Stack Trace:
* thread #1, name = 'sway', stop reason = signal SIGSEGV
  * frame #0: 0x000055d49fe66077 sway`cmd_resize(argc=<unavailable>, argv=<unavailable>) at resize.c:291:51
    frame #1: 0x000055d49fe36310 sway`execute_command(_exec=<unavailable>, seat=0x000055d4a22f6e00, con=0x0000000000000000) at commands.c:305:31
    frame #2: 0x000055d49fe596c6 sway`seat_execute_command(seat=0x000055d4a22f6e00, binding=0x000055d4a303f900) at bind.c:631:21
    frame #3: 0x000055d49fe4aa94 sway`handle_key_event(keyboard=0x000055d4a2c71970, event=0x00007ffe083f18f0) at keyboard.c:491:3
    frame #4: 0x00007fc36d4a9f9e libwlroots.so.10`wlr_signal_emit_safe(signal=0x000055d4a2fc6538, data=0x00007ffe083f18f0) at signal.c:29:3
    frame #5: 0x00007fc36d48b975 libwlroots.so.10`wlr_keyboard_notify_key(keyboard=0x000055d4a2fc6430, event=0x00007ffe083f18f0) at wlr_keyboard.c:96:2
    frame #6: 0x00007fc36d4a9f9e libwlroots.so.10`wlr_signal_emit_safe(signal=0x000055d4a24508e8, data=0x00007ffe083f18f0) at signal.c:29:3
    frame #7: 0x00007fc36d48b975 libwlroots.so.10`wlr_keyboard_notify_key(keyboard=0x000055d4a24507e0, event=0x00007ffe083f18f0) at wlr_keyboard.c:96:2
    frame #8: 0x00007fc36d469986 libwlroots.so.10`handle_libinput_readable(fd=<unavailable>, mask=<unavailable>, _backend=<unavailable>) at keyboard.c:82:2
    frame #9: 0x00007fc36d50104a libwayland-server.so.0`wl_event_loop_dispatch + 202
    frame #10: 0x00007fc36d4febc7 libwayland-server.so.0`wl_display_run + 39
    frame #11: 0x000055d49fe2fa03 sway`main [inlined] server_run(server=<unavailable>) at server.c:297:2
    frame #12: 0x000055d49fe2f9d4 sway`main(argc=<unavailable>, argv=<unavailable>) at main.c:428:2
    frame #13: 0x00007fc36d1fbb25 libc.so.6`__libc_start_main + 213
    frame #14: 0x000055d49fe2fdce sway`_start + 46
(lldb) up
frame #1: 0x000055d49fe36310 sway`execute_command(_exec=<unavailable>, seat=0x000055d4a22f6e00, con=0x0000000000000000) at commands.c:305:31
   302 				for (int i = 0; i < containers->length; ++i) {
   303 					struct sway_container *container = containers->items[i];
   304 					set_config_node(&container->node, true);
-> 305 					struct cmd_results *res = handler->handle(argc-1, argv+1);
   306 					if (res->status == CMD_SUCCESS) {
   307 						free_cmd_results(res);
   308 					} else {
(lldb) down
frame #0: 0x000055d49fe66077 sway`cmd_resize(argc=<unavailable>, argv=<unavailable>) at resize.c:291:51
   288 				if (parent) {
   289 					width->amount = parent->pending.width * width->amount / 100;
   290 				} else {
-> 291 					width->amount = con->pending.workspace->width * width->amount / 100;
   292 				}
   293 				width->unit = MOVEMENT_UNIT_PX;
   294 			}
  • Description:
    This has happened a few times now, but very random. On $mod-c I have calculator app showing floating, $mod-c again to hide it. Normally works perfectly fine, but some times, it crashes just after disappearing. Now running with sway-git-aur, so managed to get useful stacktrace.
    Have not had opportunity to try to reproduce it.
@stromnet stromnet added the bug Not working as intended label Dec 2, 2021
@donnex
Copy link

donnex commented Dec 16, 2021

I'm experiencing the exact same issue. Seems to be random and happens a few times every month.

I'm using binds like bindsym $mod+o [app_id="..."] scratchpad show, resize set 1600 900, move position center. The move and resize directives makes sure that my applications has the correct position and size when moving between different displays.

I've got a dump file saved if/when anyone wants to take a closer look at this issue.

@stromnet
Copy link
Author

stromnet commented Mar 24, 2023

This is still a problem, happened yesterday and today while frequently jumping in and out of calculator juggling around numbers, resulting in shitload of workspaces going down and time to get back up running 😭

(lldb) bt
* thread #1, name = 'sway', stop reason = signal SIGSEGV
  * frame #0: 0x0000559b91559d17 sway`cmd_resize at resize.c:291:51
    frame #1: 0x0000559b91559c1a sway`cmd_resize at resize.c:449:9
    frame #2: 0x0000559b915598aa sway`cmd_resize at resize.c:557:10
    frame #3: 0x0000559b915595d4 sway`cmd_resize(argc=<unavailable>, argv=0x0000559b93b00f88) at resize.c:541:21
    frame #4: 0x0000559b91521e23 sway`execute_command(_exec=<unavailable>, seat=0x0000559b93423d40, con=0x0000000000000000) at commands.c:309:31
    frame #5: 0x0000559b9154d186 sway`seat_execute_command(seat=0x0000559b93423d40, binding=0x0000559b93428b80) at bind.c:632:21
    frame #6: 0x0000559b9153884b sway`handle_key_event(keyboard=0x0000559b934f4fd0, event=0x00007fff7420b8a0) at keyboard.c:489:3
    frame #7: 0x00007fc3af171f6e libwayland-server.so.0`wl_signal_emit_mutable + 126
    frame #8: 0x00007fc3af0d8b35 libwlroots.so.12`wlr_keyboard_notify_key(keyboard=0x0000559b934dad40, event=0x00007fff7420b8a0) at wlr_keyboard.c:102:2
    frame #9: 0x00007fc3af171f6e libwayland-server.so.0`wl_signal_emit_mutable + 126
    frame #10: 0x00007fc3af0d8b35 libwlroots.so.12`wlr_keyboard_notify_key(keyboard=0x0000559b937b92b8, event=0x00007fff7420b8a0) at wlr_keyboard.c:102:2
    frame #11: 0x00007fc3af0ae3de libwlroots.so.12`handle_libinput_readable at keyboard.c:54:2
    frame #12: 0x00007fc3af0ae36c libwlroots.so.12`handle_libinput_readable at events.c:165:3
    frame #13: 0x00007fc3af0ae2fb libwlroots.so.12`handle_libinput_readable at backend.c:58:3
    frame #14: 0x00007fc3af0ae2e0 libwlroots.so.12`handle_libinput_readable(fd=<unavailable>, mask=<unavailable>, _backend=0x0000559b92addda0) at backend.c:48:12
    frame #15: 0x00007fc3af1739e2 libwayland-server.so.0`wl_event_loop_dispatch + 162
    frame #16: 0x00007fc3af174197 libwayland-server.so.0`wl_display_run + 39
    frame #17: 0x0000559b9151ab81 sway`main [inlined] server_run(server=<unavailable>) at server.c:332:2
    frame #18: 0x0000559b9151ab4e sway`main(argc=<unavailable>, argv=0x00007fff7420bd68) at main.c:415:2
    frame #19: 0x00007fc3aee10790 libc.so.6`___lldb_unnamed_symbol3140 + 128
    frame #20: 0x00007fc3aee1084a libc.so.6`__libc_start_main + 138
    frame #21: 0x0000559b9151b055 sway`_start + 37

sway version 1.9-dev-7d0351b4 (Feb 6 2023, branch 'master')

edit: updated original post to include for_window [app_id="qalculate-gtk"] move to scratchpad

bretello added a commit to bretello/sway that referenced this issue Jul 17, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

Related: swaywm#6693
bretello added a commit to bretello/sway that referenced this issue Jul 17, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

Related: swaywm#6693
bretello added a commit to bretello/sway that referenced this issue Jul 17, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

fixes swaywm#6693
@bretello
Copy link
Contributor

bretello commented Jul 17, 2023

I've been encountering the issue as well, and I've been able to narrow it down to the following minimal configuration plus reproduction script.

Basically under these conditions, splitting a (visible) scratchpad window and then hiding it results in a segfault (tested on 1.8 and master).

Sway Configuration:

include /etc/sway/config

# define hotkey window criteria
# note that the crash happens on the resize set command, move does not really matter
for_window [app_id="hotkey-terminal"] move to scratchpad, scratchpad show, resize set width 100 ppt height 45 ppt, move position 0 0

Reproduction script:

#!/bin/sh
swaymsg exec -- alacritty --class "hotkey-terminal"

# let alacritty start
sleep 0.5

# split the newly created container
swaymsg split toggle

# try to hide it
swaymsg '[app_id="hotkey-terminal"] scratchpad show, resize set width 100 ppt height 45 ppt'

See the above PR for a fix proposal.

bretello added a commit to bretello/sway that referenced this issue Jul 17, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

fixes swaywm#6693
bretello added a commit to bretello/sway that referenced this issue Jul 18, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

fixes swaywm#6693
bretello added a commit to bretello/sway that referenced this issue Jul 21, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

fixes swaywm#6693
bretello added a commit to bretello/sway that referenced this issue Jul 23, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

fixes swaywm#6693
rpigott pushed a commit that referenced this issue Jul 23, 2023
Splitting and then hiding a scratchpad container results in
a segfault.

fixes #6693
SoumyaRanjanPatnaik added a commit to regolith-linux/sway-regolith that referenced this issue Sep 4, 2023
* root: Try to preserve relative positions of floating containers

This makes the behavior of floating containers more consistent with i3.
The coordinates of the container are scaled when the size of the
workspace it is on changes or when the container is moved
between workspaces on different outputs.

For scratchpad containers, add a new state that preserves the dimensions
of the last output the window appeared on. This is necessary because
after a container is hidden in the scratchpad, we expect it to be in the
same relative position on the output when it reappears. We can't just
use the container's attached workspace because that workspace's
dimensions might have been changed or the workspace as a whole could
have been destroyed.

* root: Set inactive focus when scratchpad is moved to new workspace

Fixes an issue where an already visible scratchpad window being moved due to
'scratchpad show' leaves the entire workspace at the top of the focus stack in
the old workspace. Moving by 'focus output' back to the old workspace would
focus the entire workspace instead of just the last active container.

* Init the damage_ring bounds on output creation

Otherwise the initial bounds would be `INT_MAX` until `handle_mode` or `handle_commit` is called :)

* man: deprecate seat cursor move/set/press/release

The Wayland protocol better serves this purpose, and is supported
by more compositors.

* Add a .mailmap file

* ipc: add LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM entry

This was introduced in the last libinput release.

Fixes the following error:

    ../sway/ipc-json.c:928:17: error: enumeration value 'LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM' not handled in switch [-Werror=switch]
      928 |                 switch (libinput_device_config_accel_get_profile(device)) {
          |                 ^~~~~~

* swaybar: Set opaque region properly

The opaque region is set incorrectly if updated on-the-fly if switching from an opaque to a non opaque background.

* swaybar: Lift background clearing out of main rendering function

This avoids us from using a bogus background_color value that
mutates as swaybar renders things and deciding opacity depending on
that.

Also remove a redundant full surface clear. Just directly write our
desired background color.

* Fix damage-ring bounds not being set when unplugging -> plugging in monitor

swaywm#7524 was a partial fix. Seems like this is still an issue when
unplugging and plugging the monitor back in.

Closes: swaywm#7528

* Remove duplicate wlr_damage_ring_set_bounds() call

We already do this in handle_commit().

* Chase wlroots!4067

* Pass version to wlr_compositor_create()

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3696

* Skip direct scan-out commit when damage is empty

When there is no damage, no need to perform an output commit, even
when direct scan-out is used.

* Set output damage during direct scan-out

During direct scan-out, pass the damaged region to the wlroots
backend.

* Fix old style function definitions

Signed-off-by: Elyes Haouas <ehaouas@noos.fr>

* Introduce output_match_name_or_id()

Reduces code duplication.

* Use all_output_by_name_or_id() in merge_id_on_name()

No need to iterate over the outputs manually.

* Use output_match_name_or_id() in apply_output_config_to_outputs()

* Use output_match_name_or_id() in workspace functions

* Add format_str() and vformat_str()

Simple helpers to allocate and format a string.

* pango: add printf attribute

This allows the compiler to catch mismatches between the format
string and the arguments passed in.

Need to add -Wno-format-zero-length because we pass an empty string
on purpose in swaybar/render.c.

* commands/floating_minmax_size: fix error strings

cmd_results_new() does not take the command name as argument.

* commands: add printf attribute to cmd_results_new()

And fix the resulting build failures.

* config: add printf attribute to config_add_swaynag_warning()

* swaynag: add printf attribute to swaynag_log()

* common/gesture: use format_str()

We already had a similar function in there.

* Use format_str() throughout

* xdg_shell: Fix crash if popup generates while toplevel is in the scratchpad

* render: pass rendering state together in a struct

This lets us easily add rendering state that we need in the future

* render: Don't pass matrix into render_texture

* render: Use wlr_render_pass

* Don't crash if there is no damage during render

* Add support for touch cancel events

* handle_touch_cancel: fix begin default

I forgot to call seatop_begin_default in
e8f7551.

* swaybar: always subscribe to mode and workspace

always subscribe to mode and workspace events, since we might need them
after bar config updates even if we don't need them initially.

* render: Apply clip to rendered texture correctly

The new wlr_render_pass API provides src_box, dst_box and clip
parameters for texture rendition. Rather than clipping the dst_box,
which control the projection matrix and leads to compression, intersect
the damage and clip box and pass these as a clip parameter.

Fixes: swaywm#7579
Regressed by: swaywm#7552

* render: Clear using wlr_output dimensions

Clear was done using sway_output's logical dimensions, instead of the
wlr_output physical dimensions. This meant that when output scaling was
applied, only a part of the screen would be cleared.

Use the wlr_output dimensions instead.

Regressed by: swaywm#7552

* render: fix titlebar texture clipping

We need to provide an unclipped dst_box.

Fixes: swaywm#7573
Regressed by: swaywm#7552

* seatop_down: Call seatop_begin_default after sending touch events

This is consistent with pointer tablet and button events.

Fixes swaywm#7577.

* Fix layer old damage not being offset by the monitor layout coords

* xwayland: don't rely on event source being data

This pattern is being slowly removed from wlroots.

* chore: chase wlroots map logic unification

* lock: listen to the correct map signal

* xwayland: fix mapped state check in OR handlers

* chase wlroots wlr_renderer_begin_buffer_pass change

https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4159

> ../sway/desktop/output.c:618:47: error: too few arguments to function 'wlr_renderer_begin_buffer_pass'
>   618 |         struct wlr_render_pass *render_pass = wlr_renderer_begin_buffer_pass(
>       |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Add support for wlr-layer-shell ON_DEMAND keyboard interactivity

This allows for layer shell surfaces to receive focus while the surface is explicitly focused, i.e allowing
text fields to receive keyboard input just like a regular surface.

* Handle gamma-control-v1 set_gamma events

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4046

* desktop/output: use detached output state for page-flips

This avoids relying on the implicit wlr_output.pending state.

* desktop/output: fix damage bitfield in wlr_output_state

* man: add --inhibited and --no-repeat to bindsym and bindcode usage

* Fix `bindsym --to-code` not respecting input configs

Fixes swaywm#7535

* gamma_control_v1: Reset dirty flag

* gamma_control_v1: handle destroyed output

In case a display is unplugged, the sway output may be removed from the
userdata before the gamma_control can be reset. In this case we can't
schedule a commit on the output, simply return within the function.

backtrace full:

  #0  handle_gamma_control_set_gamma (listener=0x4856a8 <server+616>, data=0x7ffce1ed59c0) at ../sway/desktop/output.c:1105
          server = 0x485440 <server>
          event = 0x7ffce1ed59c0
          output = 0x0
  #1  0x00007f430d1dca0c in wl_signal_emit_mutable ()
     from /nix/store/ky1g6ylzr2m4bq8fy0gzrnqmjr6948k5-wayland-1.22.0/lib/libwayland-server.so.0
  No symbol table info available.
  #2  0x00007f430d142370 in gamma_control_destroy (gamma_control=0x29eb9b0) at ../types/wlr_gamma_control_v1.c:37
          manager = 0x27e33e0
          output = 0x2a10770
          event = {output = 0x2a10770, control = 0x0}
  #3  0x00007f430d14239b in gamma_control_handle_output_destroy (listener=<optimized out>, data=<optimized out>)
      at ../types/wlr_gamma_control_v1.c:59
          gamma_control = <optimized out>
  #4  0x00007f430d1dca0c in wl_signal_emit_mutable ()
     from /nix/store/ky1g6ylzr2m4bq8fy0gzrnqmjr6948k5-wayland-1.22.0/lib/libwayland-server.so.0
  No symbol table info available.
  #5  0x00007f430d12a0e0 in wlr_output_destroy (output=output@entry=0x2a10770) at ../types/output/output.c:384
          cursor = <optimized out>
          tmp_cursor = <optimized out>
          layer = <optimized out>
          tmp_layer = <optimized out>
  #6  0x00007f430d114ecf in disconnect_drm_connector (conn=conn@entry=0x2a10770) at ../backend/drm/drm.c:1757
          __PRETTY_FUNCTION__ = "disconnect_drm_connector"
  #7  0x00007f430d117078 in scan_drm_connectors (drm=drm@entry=0x1eebab0, event=event@entry=0x7ffce1ed5c1c) at ../backend/drm/drm.c:1597
          c = <optimized out>
          wlr_conn = 0x2a10770
          drm_conn = 0x2e760d0
          conn_id = <optimized out>
          index = 4
          i = 4
          res = 0x2e761f0
          seen_len = 5
          seen = {true, true, true, true, true, false}
          new_outputs_len = 0
          new_outputs = 0x7ffce1ed5ab0
          conn = <optimized out>
          tmp_conn = <optimized out>
          index = <optimized out>
  #8  0x00007f430d113425 in handle_dev_change (listener=0x1eebbb0, data=0x7ffce1ed5c18) at ../backend/drm/backend.c:157
          drm = 0x1eebab0
          change = 0x7ffce1ed5c18
  #9  0x00007f430d1dca0c in wl_signal_emit_mutable ()
     from /nix/store/ky1g6ylzr2m4bq8fy0gzrnqmjr6948k5-wayland-1.22.0/lib/libwayland-server.so.0
  No symbol table info available.
  #10 0x00007f430d111696 in handle_udev_event (fd=<optimized out>, mask=<optimized out>, data=<optimized out>)
      at ../backend/session/session.c:213
          event = {type = WLR_DEVICE_HOTPLUG, {hotplug = {connector_id = 0, prop_id = 0}}}
          devnum = <optimized out>
          dev = 0x1ed9460
          session = <optimized out>
          udev_dev = 0x2e70db0
          sysname = 0x2e73c60 "card0"
          devnode = <optimized out>
          action = 0x7f430d6677b5 "change"
          seat = <optimized out>
          __PRETTY_FUNCTION__ = "handle_udev_event"
  #11 0x00007f430d1de8e2 in wl_event_loop_dispatch ()
     from /nix/store/ky1g6ylzr2m4bq8fy0gzrnqmjr6948k5-wayland-1.22.0/lib/libwayland-server.so.0
  No symbol table info available.
  #12 0x00007f430d1dc445 in wl_display_run () from /nix/store/ky1g6ylzr2m4bq8fy0gzrnqmjr6948k5-wayland-1.22.0/lib/libwayland-server.so.0
  No symbol table info available.
  #13 0x000000000041daa5 in server_run (server=server@entry=0x485440 <server>) at ../sway/server.c:338
  No locals.
  #14 0x000000000041cf4d in main (argc=<optimized out>, argv=0x7ffce1ed5fe8) at ../sway/main.c:415
          verbose = false
          debug = false
          validate = false
          allow_unsupported_gpu = false
          config_path = 0x0
        c = <optimized out>

where event->output->data is NULL:

  (gdb) p event->output->data
  $5 = (void *) 0x0

* input/libinput: add scroll_button_lock method

Closes swaywm#6987

Co-authored-by: JJGadgets <git@jjgadgets.tech>
Co-authored-by: DeltaWhy <mike5713@gmail.com>

* render: Use wlroots scale filter

* Use wlr_cursor_set_xcursor()

wlr_xcursor_manager_set_cursor_image() is deprecated.

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4170

* Use wlr_cursor_unset_image()

A bit cleaner.

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4209

* idle-inhibit-v1: simplify with server global

We only have a single running server, no need to keep track of
multiple server instances. Also no need to support multiple
idle inhibit managers.

* swaybar: remove the argument of StatusNotifierHostRegistered

According to
https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierWatcher/
there is no argument for the StatusNotifierHostRegistered signal.

* Use "default" XCursor instead of "left_ptr"

"left_ptr" is the legacy XCursor name. "default" is the cursor
spec name.

* input: Move wlr_pointer_gestures_v1 to sway_input_manager

On multi-seat configurations a zwp_pointer_gestures_v1 global was
created for every seat.

Instead, create the global once in the input manager, to be shared
across all seats.

* swaybar: don't set current workspace as not visible

When `wrap_scroll yes` is configured and there's only one workspace
open, swaybar will mark it as not visible if the user scrolls on it and
eventually incorrectly fail the `active->visible` assert.
Fix this by making sure that new and current workspace aren't the same.

* swaybar: handle wayland-cursor failures

Updating the cursor is not essential, so this change prints
a warning when wl_cursor_theme_load or wl_cursor_theme_get_cursor
fail instead of crashing or exiting.

* Send wl_surface.preferred_buffer_scale

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3696

* Calculate tiled resize amount relative to parent container

sway should shrinks/grows tiled windows according to parent container
for ppt unit for i3 compatibility.

Resolves: swaywm#7593

* chase wlroots 'presentation-time: add separate helper for zero-copy '

https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/67447d6cb407ac5b6405b4dbae01a38567feb111

* swaynag: handle wayland-cursor failures

Same as 92244c8 ("swaybar: handle wayland-cursor failures")
but for swaynag.

Closes: swaywm#7671

* Deprecate seat idle_wake

Sway has two knobs to control idling:

- seat idle_inhibit: when the seat is active (ie. not idle), this
  extends the active state. When the seat is idle, this is
  ignored.
- seat idle_wake: when the seat is idle, this wakes up the seat.
  When the seat is active, this is ignored.

The motivation for the deprecation is two-fold:

- The concept of "seat idle state" is ill-defined. Each idle-notify-v1
  client will pass a different idle timeout. With the old logic, a
  seat was declared idle if and only if all idle-notify-v1 timeouts have
  expired. However, if only a portion of the timeouts have expired,
  then some clients would wake up, and the rest would stay active.
  This is inconsistent with the definition of idle_inhibit/idle_wake:
  idle_inhibit was used for clients which are waking up.
- It never worked properly with the new idle-notify-v1 protocol
  and no-one noticed. Only the legacy KDE idle protocol is taken
  into account, but that protocol is not used anymore.

* Add Georgian README

I am a native Georgian speaker.

I have translated sway's README.md

* fix crash when resizing tiled scratchpad windows

Splitting and then hiding a scratchpad container results in
a segfault.

fixes swaywm#6693

* Add support for cursor-shape-v1

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4106

* swaybar: Implement wp_cursor_shape_v1

* swaynag: Implement wp_cursor_shape_v1

* desktop/output: drop logic to handle backend-applied mode

The wlroots backends no longer magically apply output modes behind
the compositor's back.

* desktop/output: drop handle_mode()

We already perform the exact same logic on transform/scale change.

* desktop/output: fix output manager enabled state

With recent wlroots changes, backends which don't support output
modes can now support being disabled.

We were always marking mode-less outputs as disabled. Stop doing
that, check whether the output takes up some space in the layout
instead.

* output: drop current_mode

This is now unused.

* Rebase all cursors in handle_surface_map

Fix swaylock showing transient cursor after locked.

* Move contrib/ to separate repository

User-contributed scripts are being moved over to this repository:
https://github.com/OctopusET/sway-contrib

* chase wlroots!4316

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4316

* chore: chase wlroots xdg-surface role rework

* Fix typo

* Hide xwayland_shell_v1 from regular clients

Regular clients are not allowed to use this interface. wlroots
already sends a protocol error if a non-Xwayland client tries to
use this interface, but let's remove all temptation by hiding it
completely.

* view: update wlr_toplevel size on client resizes

If a floating client resizes itself, sway updates several of its
internal dimensions to match but not wlr_toplevel. This means that the
next time wlroots sends a toplevel configure event, it can have wrong
coordinates that resize the client back to its old size. To fix this,
let's just use wlr_xdg_toplevel_set_size so the wlr_toplevel has the
same dimensions as sway. Fixes swaywm#5266.

* Revert "view: update wlr_toplevel size on client resizes"

This isn't the right fix for this issue because the xwayland code also
uses this function and updating the wlr_toplevel there doesn't make
sense and also causes problems. Fixes swaywm#7722.

This reverts commit bf44690.

* xdg_shell: update wlr_toplevel size on client resizes

If a floating client resizes itself, sway updates several of its
internal dimensions to match but not wlr_toplevel. This means that the
next time wlroots sends a toplevel configure event, it can have wrong
coordinates that resize the client back to its old size. To fix this,
let's just use wlr_xdg_toplevel_set_size so the wlr_toplevel has the
same dimensions as sway.

Exactly the same as 0183b9d but the
logic is onlly applied to xdg_shell and not xwayland.

* Added support for 'set_from_resource' command

* Made fallback value for set_from_resource optional

* Replaced reference of 'resdb' with 'trawldb'

* Renamed sway to sway-regolith

* Add and adapt debian packaging from https://salsa.debian.org/swaywm-team/sway

* Package rename in changelog

* Remove applied patch

* Add libtrawldb dependency

---------

Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Co-authored-by: Ankit Pandey <anpandey@protonmail.com>
Co-authored-by: Erik Reider <35975961+ErikReider@users.noreply.github.com>
Co-authored-by: Simon Ser <contact@emersion.fr>
Co-authored-by: Ronan Pigott <ronan@rjp.ie>
Co-authored-by: Alexander Orzechowski <orzechowski.alexander@gmail.com>
Co-authored-by: Elyes Haouas <ehaouas@noos.fr>
Co-authored-by: Alexander Orzechowski <alex@ozal.ski>
Co-authored-by: hrdl <31923882+hrdl-github@users.noreply.github.com>
Co-authored-by: Mukundan314 <30190448+Mukundan314@users.noreply.github.com>
Co-authored-by: Kenny Levinsen <kl@kl.wtf>
Co-authored-by: Kirill Primak <vyivel@eclair.cafe>
Co-authored-by: Artturin <Artturin@artturin.com>
Co-authored-by: Shaked Flur <fshaked@gmail.com>
Co-authored-by: 33KK <marko@pepega.club>
Co-authored-by: Rouven Czerwinski <rouven@czerwinskis.de>
Co-authored-by: Cezary Drożak <cezary@drozak.net>
Co-authored-by: JJGadgets <git@jjgadgets.tech>
Co-authored-by: DeltaWhy <mike5713@gmail.com>
Co-authored-by: Hodong <111117126+hodong-kim@users.noreply.github.com>
Co-authored-by: Mark Bolhuis <mark@bolhuis.dev>
Co-authored-by: llyyr <llyyr.public@gmail.com>
Co-authored-by: Manuel Stoeckl <code@mstoeckl.com>
Co-authored-by: nukoseer <uygarkoseer@gmail.com>
Co-authored-by: Nick Kipshidze <96648005+NickKipshidze@users.noreply.github.com>
Co-authored-by: bretello <bretello@distruzione.org>
Co-authored-by: ookami <mail@ookami.one>
Co-authored-by: Leonardo Hernández Hernández <leohdz172@proton.me>
Co-authored-by: luzpaz <luzpaz@users.noreply.github.com>
Co-authored-by: Dudemanguy <random342@airmail.cc>
Co-authored-by: Soumya Ranjan Patnaik <soumyaranjan1812@gmail.com>
Co-authored-by: Regolith Linux <regolith.linux@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Not working as intended
Development

Successfully merging a pull request may close this issue.

3 participants