We are going to install XMonad in Arch Linux using Cabal from Hackage (Package repository for Haskell). There is already
xmonad package but still we are using hackage because in Arch Linux we may get dependencies problems.
To begin we need to install ghcup first.
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
ghcup is a tool to install all necessary packages to begin with Haskell. Install cabal and all other tool you think you may need. If you don’t know what else you need install everything with ghcup.
While installing ghcup will automatically add path to your active shell. Remember this we need it later.
Now you have cabal installed, so install
cabal install --lib xmonad
cabal install --lib xmonad-contrib
cabal install xmobar --flags="all_extensions" --overwrite-policy=always
Next step is to make
xmonad start and appear in our Display Manager. We are going to use
xinit to start the Xorg display server.
xinit has its default behavior and config so we need to first copy the default
xinitrc in our home directory. If you are already using
xinit before you may be already know what you are going to do here.
cp /etc/X11/xinit/xinitrc ~/.xinitrc
At last there are some line which will execute Twm, xorg-xclock and Xterm. We need to remove these and add our own programs and xmonad. For example if we need to run
<a href="https://wiki.archlinux.org/title/nitrogen">nitrogen</a> also then we may have config like:
nitrogen --restore & exec xmonad
But wait xmonad will not execute from here because we have not added xmonad bin in our path. When installing ghcup you may have been asked to add path in you shell. Copy that line from your shell config before
exec xmonad. If you don’t have it you can manually add like this:
# srouce ghcup-env so that xmonad can be found [ -f "/home/user_name/.ghcup/env" ] && source "/home/user_name/.ghcup/env" # ghcup-env nitrogen --restore & exec xmonad
After this we need to make it able to start session from Display Manager. For this install
xnint-xsession from AUR.
Packages that you may want to use:
Now you are all done. Logout, then you can find
xinitrc session in you display manager. You can find my dotfiles here https://github.com/2shrestha22/dotfiles