I know I shouldn't be surprised that monitor configuration is deeply entwined with a window manager, but switching out to Xmonad caused montor config to fly right out the window. It took a bit of work, but I was able to get something configured that isn't too painful. This is not ideal, and I think I will revisit this topic in the future when I have more time. But what I have for now works.
The challenge
I regularly switch between two monitor configurations on this laptop: standalone and connected to a large monitor on my desk. By default, Xmonad appears to do exactly nothing in response to connecting a monitor. To address this, I installed arandr
, which provides a GUI for writing configuration for the X11 "RandR" plugin. RandR stands for "Resize and Rotate," and is an extension on the X11 protocol which allows you to move the monitors around.
The arandr configuration UI: spartan and functional |
The arandr
tool will allow you to save configuration scripts which can be fed to the xrandr
command-line tool to tell X11 to configure the screen. I saved those scripts to a .screenlayout
directory. By manually running the scripts from the command line, I can set my current monitor configuration.
Automating monitor configuration
Now that I have some configurations set up, I just need to get to them automatically.
There is an autorandr tool, by Stefan Tomanek, which will detect configuration change and intelligently select a layout based on what is plugged in. After installing it (sudo apt-get install autorandr
), I simply had to train it with my configurations. To start, with no monitors plugged in,
autorandr --save mobile
Then, I plugged in the second monitor and ran the script I'd built previously
.screenlayout/xmonad-two-screens.sh
That configured my monitors, and the remaining step was just to save that config
autorandr --save home-docked
Running autorandr
with no options, I see my configs are set:
home-docked (detected) (current)
mobile
And for good measure, I declared to autorandr which of these configs it should default to if it has no idea how to talk to a monitor:
autorandr --default mobile
Now, I'm all configured for one or two monitors. Good stuff! Next on the agenda is Bluetooth and taking screenshots.
No comments:
Post a Comment