This is the first article of a series about my experience with setting up xmonad. The idea is to keep track of my journey and to write some handy guides for either someone who might be curious about xmonad as well and/or my future self.
Installing all the things
What a better place for starting than installing xmonad?
Ideally you want to install the following
xmonad
(duh!)xmonad-contrib
, xmonad extensions (you can't do much without it!)dmenu
, launcher/menu for applicationsxterm
, xmonad default terminal emulator. You can switch to your favourite emulator later, but it's good to have xterm available as a fallback.
For Arch, I installed all the above via Yay/Pacman and then added a Pacman hook to avoid future headaches when updating.
Basic configuration
Next I created a basic config file. You don't necessarily need one, but I wanted to customize a couple of things already from the start.
import XMonad
myModMask = mod4Mask -- Use Super as the mod key
myTerminal = "alacritty"
-- Actions to perform whenever xmonad starts or is restarted
myStartupHook = do
spawn "setxkbmap -layout us"
myConfig = def
{
terminal = myTerminal,
modMask = myModMask,
startupHook = myStartupHook
}
-- Run xmonad with the settings specified above
main :: IO ()
main = xmonad $ myConfig
and saved it into ~/.xmonad/xmonad.hs
.
Note that the above configuration will not work with xmonad<0.17.
It's also worth nothing that the location of the config might vary. According to xmonad doc it should go into ~/.config/xmonad/xmonad.hs
, which however didn't work for me (thankfully I had xterm installed, otherwise I wouldn't have been able to do anything once I logged into xmonad!). Arch wiki tells you instead to place it into ~/.xmonad/xmonad.hs
, which in my case resulted in the config being picked up correctly.
Getting around in xmonad
Next is to log into xmonad and test if the config is loaded correctly.
If Super+Shift+Enter
launches Alacritty, you're good to go. If not, try moving the config to a different location (see above).
Here are a list of useful keybindings to start with
Keybinding | Action |
---|---|
mod shift return | Launch terminal |
mod p | Launch dmenu |
mod shift c | Close the focused window |
mod shift q | Quit xmonad |
mod q | Restart xmonad |