I've run into a strange problem where sometimes, my monitors are forced to DPMS off and moving the cursor or pressing keys does not free it. I suspect this is a bug in my SwayWM configuration or a bug in Swaylock, but it resolves itself if I wait until the device again locks, which causes a second Swaylock instance to appear.
In any case, if you get yourself stuck and need to recover, you might want to be able to run swaymsg
remotely. If you do, you might run into strange issues. swaymsg
calls sway --get-socketpath
to get the IPC socket, which... just returns the value of the SWAYSOCK
environment variable. In my case, this also has the funny side-effect of starting a dbus session and SSH agent each time its invoked, because it is calling the NixOS-wrapped SwayWM binary. Probably should patch the NixOS version to explicitly call the unwrapped binary!
In order to recover the SWAYSOCK
, one approach that should be relatively easy and does not require root (assuming you don't have a more locked-down system than I do) is to simply scan for other processes that do have a Sway IPC connection and steal it out of their environment. Here's a quick one-liner that does it for swaybg
. Thanks to @niklasw for an improved snippet using GNU awk.
export SWAYSOCK=$(gawk 'BEGIN {RS="\0"; FS="="} $1 == "SWAYSOCK" {print $2}' /proc/$(pgrep -o swaybg)/environ)
After having done this, swaymsg
should work. Now you can, for example, do this:
swaymsg "output * dpms on"
@lucrus73 this script works for me for turning the monitor off over ssh