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 xmonad
, xmonad-contrib
and xmobar
.
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:
stalonetray, dunst, nitrogen, blueman, mictray, network-manager-applet, redshift, perl-file-mimeinfo
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
You share very informative knowledge with us.