#+title: XMonad
#+author: Emmet

* What is XMonad?
[[https://xmonad.org/][XMonad]] is a tiling window manager written and configured in Haskell. Since I have built up my own XMonad config over a few years, it is extremely efficient for me to operate (since it can be managed fully with the keyboard).

[[xmonad.png]]

With my XMonad setup, there are several auxiliary utilities required to make it a "full desktop environment." A few of these packages include:
- [[https://codeberg.org/xmobar/xmobar][xmobar]] - Status bar
- [[https://github.com/davatorium/rofi][rofi]] - App launcher
- [[https://github.com/sagb/alttab][alttab]] - Window switcher
- [[https://feh.finalrewind.org/][feh]] - Wallpaper utility
- pavucontrol and pamixer - Sound and volume control
- [[https://github.com/firecat53/networkmanager-dmenu][networkmanager_dmenu]] - Internet connection control
- brightnessctl - Screen brightness control
- [[https://www.umaxx.net/][sct]] - Adjust screen color temperature
- xkill and killall - Better than hitting Ctrl+Alt+Delete and waiting a few minutes

* My Config
This directory includes my XMonad configuration, which consists of:
- [[./xmonad.hs][xmonad.hs]] - Main configuration
- [[./startup.sh][startup.sh]] - Startup script called by XMonad on startup
- [[./lib/Colors/Stylix.hs.mustache][lib/Colors/Stylix.hs.mustache]] - Mustache template used to generate color library to theme XMonad with Stylix
- [[./xmobarrc.mustache][xmobarrc.mustache]] - Mustache template used to generate my xmobar config themed with Stylix
- [[./xmonad.nix][xmonad.nix]] - Loads XMonad and my configuration (along with any necessary packages for my config) into my flake when imported

My full config is a [[./xmonad.org][literate org document (xmonad.org)]].
