I have xmonad configured via home-manager like so:
xsession = {
enable = true;
windowManager.xmonad = {
enable = true;
enableContribAndExtras = true;
extraPackages = self: [ self.xmobar ];
};
};
with the following close-to-vanilla xmonad.hs
:
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run
import XMonad.Util.EZConfig
import System.IO
main = do
xmproc <- spawnPipe "xmobar ~/.xmobarrc"
xmonad $ docks def
{ layoutHook = avoidStruts $ layoutHook def
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, modMask = mod4Mask
, terminal = "st"
, focusedBorderColor = "#528b8b"
, borderWidth = 2
, normalBorderColor = "#3a3a3a"
} `additionalKeysP` myKeys
myKeys =
[ ("M-x q", spawn "qutebrowser")
, ("M-S-p", spawn "passmenu")
] ++ xf86Keys
xf86Keys =
[ ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
, ("<XF86AudioMicMute>", spawn "pactl set-source-mute @DEFAULT_SOURCE@ toggle")
, ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-mute @DEFAULT_SINK@ false && pactl set-sink-volume @DEFAULT_SINK@ +2%")
, ("<XF86AudioLowerVolume>", spawn "pactl set-sink-mute @DEFAULT_SINK@ false && pactl set-sink-volume @DEFAULT_SINK@ -2%")
, ("<XF86ScreenSaver>", spawn "echo RELOADAGENT | gpg-connect-agent; physlock")
, ("<XF86MonBrightnessUp>", spawn "light -A 5")
, ("<XF86MonBrightnessDown>", spawn "light -U 5")
]
and I’m having some issues dynamically adding a physical monitor; if I connect an external monitor and reboot my system, xmonad finds it and manages it as expected, but if I add a monitor via xrandr --output <OUTPUT> --right-of LVDS-1 --auto
my primary output is offset like the image below, and I’m not able to spawn any windows on the external monitor. Is there something I’m missing?
Cheers.