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

Ghost Monitors: Navigating Invisible Screens in Sway on Regolith #13

Closed
rmasad opened this issue Feb 22, 2024 · 13 comments
Closed

Ghost Monitors: Navigating Invisible Screens in Sway on Regolith #13

rmasad opened this issue Feb 22, 2024 · 13 comments
Labels
bug Something isn't working

Comments

@rmasad
Copy link

rmasad commented Feb 22, 2024

Sway Version:
1.8

Description:
When using Regolith with Sway on a notebook, I encounter the following issue: After turning on the notebook, connecting it to two external monitors, and then closing the notebook's lid, the third monitor (the notebook's own screen) remains active despite not appearing in the Gnome settings monitor list. This situation prevents actions such as using the + Left shortcut to move to the left monitor.

@rmasad rmasad added the bug Something isn't working label Feb 22, 2024
@SoumyaRanjanPatnaik
Copy link
Collaborator

Weird. Can you check if you have regolith-sway-clamshell installed?

@SoumyaRanjanPatnaik
Copy link
Collaborator

Also share the output for swaymsg -t get_outputs

@rmasad
Copy link
Author

rmasad commented Feb 23, 2024

regolith-sway-clamshell was not installed, I installed it and rebooted. It still doesn't work.

I attach a screenshot of the command (swaymsg -t get_outputs) and the Gnome configuration where the discrepancy is seen.

image

@SoumyaRanjanPatnaik
Copy link
Collaborator

With your notebook's lid open, can you try the following command:

swaymsg output eDP-1 disable

Does this turn off your display? Do you still see the same behaviour (ghost monitors as you say)?

@rmasad
Copy link
Author

rmasad commented Feb 24, 2024

It works. When I run swaymsg output eDP-1 disable, the behavior you expect when the lid is closed happens.

How can I make this behavior automatic?

@SoumyaRanjanPatnaik
Copy link
Collaborator

Try executing regolith-sway-clamshell and see if you get the expected lid close behaviour.

@rmasad
Copy link
Author

rmasad commented Feb 26, 2024

It works. There is a no-tricky way to enable in start-up?

@rmasad
Copy link
Author

rmasad commented Feb 26, 2024

Another thing, when I reload regolith, I have to run regolith-sway-clamshell again

kgilmer pushed a commit that referenced this issue Mar 11, 2024
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
@fhchl
Copy link

fhchl commented Mar 13, 2024

Observing the exact same behavior.

@SoumyaRanjanPatnaik
Copy link
Collaborator

It works. There is a no-tricky way to enable in start-up?

It does execute on startup. Can you check if the config to launch clamshell at startup is installed at /usr/share/regolith/sway/config.d/96_clamshell?

@SoumyaRanjanPatnaik
Copy link
Collaborator

SoumyaRanjanPatnaik commented Mar 13, 2024

Try executing regolith-sway-clamshell and see if you get the expected lid close

@fhchl can you verify if this is the case for you as well.

@rmasad
Copy link
Author

rmasad commented Mar 13, 2024

It works. There is a no-tricky way to enable in start-up?

It does execute on startup. Can you check if the config to launch clamshell at startup is installed at /usr/share/regolith/sway/config.d/96_clamshell?

cat /usr/share/regolith/sway/config.d/96_clamshell
# Resource name to override the builtin display connector: wm.clamshell.display
# Resource name to override the lid close action: wm.clamshell.action
exec_always regolith-sway-clamshell

@fhchl
Copy link

fhchl commented Mar 14, 2024

@fhchl can you verify if this is the case for you as well.

Yes, as I meant to say: it behaves exactly the same way. 😄 Also the content of /usr/share/regolith/sway/config.d/96_clamshell is the same.

@rmasad rmasad closed this as completed Nov 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants