In xfce, I can run Settings -> Display to change my preferred output monitor. What I haven't found an option for is to have it automatically adjust to a change in available outputs.
For example, if I'm using a DVI display, but undock my laptop, XFCE will not automatically realize that I no longer have a working display and change the output. Gnome did do this, though I'm not sure through what service. I'd like to have some way of making sure I always have at least one working output automatically.
SIDE NOTE: This is related to another question of mine, If I just use a window manager and not a desktop environment, how do I get automatic dock/undock resolution updates?, but is for xfce, not any generic window manager.
From xrandr man page:
--auto: For connected but disabled outputs, this will enable them using their preferred mode (or, something close to 96dpi if they have no preferred mode). For disconnected but enabled outputs, this will disable them.
This question is answered on Unix StackExchange: https://unix.stackexchange.com/questions/101809/how-can-i-automatically-update-my-monitor-layout-in-xfce/120945#120945 However, since it's not possible to mark this question as a duplicate of a question on another site, I'm just going to copy the answer here.
One way is to create an udev rule, but as I wanted something more portable, I have this bash script. It relies on inotifywait support, does not have some kind of loops and is considered efficient.
external-lcd.sh
Don't forget to make the file executable (
chmod +x external-lcd.sh
). Then just start it whenever you launch your DE.I am using this on archlinux so I think it should work. You can change xrandr parameters or swap it to use arandr configurations.
There is no such option since the technology behind desktop agnostic hardware event detection (
udev
) is rather new for a hobbyist project like xfce.You might get some good results digging into
D-Bus
andudev
. Have a look at udev not running remove events for starters.