/xmonad-aloysius

Aloy :heart: XMonad

Primary LanguageHaskellMIT LicenseMIT

A multi-themed XMonad configuration by Aloysius.

Contents

Newest addition

Say hello to clickable window decorations!

Next tasks

  • Move a the non-critical parts of this README into the wiki
  • Sort out the screenshots for the missing themes

Details

This XMonad configuration is my attempt at making it feel more like a desktop environment. This means a lot more mod-cons than you typically find in a tiling WM. You will also need my polybar configuration, available in my nix-overlay, as well as all of the supporting scripts available here.

My personal setup looks like:

  • OS: nixOS
  • WM: XMonad
  • Terminal: kitty
  • Launcher: dmenu2
  • Editor: doom emacs
  • Browser: firefox

See below for how to change these for your preferred options. If the build instructions do not seem to work on your preference of OS then please raise an issue. As the build uses a nix-shell then it should "just work".

Latest Previews

NOTE: these are old and new images are pending, they're not far from what you will experience but not completely accurate currently.

Main desktop
Screenshot
Named scratchpad popup
Screenshot
Lock screen
Screenshot

Quick-start

In order to access everything once you get into the WM make use of the following keybinds until you find your way around. You'll notice immediately that Aloysius makes use of key sequences instead of key chords. This means you press your Windows key, let go of it, then press Return to spawn a terminal, or similarly press M, then a, then q to quit an app.

Key Binding Action
M Return Launch terminal
M p Spawn dmenu to launch applications
M q q Quit XMonad
M 1..8 Change to workspace 1 thro' 8
M a q Close application

Dependencies

Here are all of the things which this setup needs to work. If you install all of them you should be able to have the intended experience out of the box. If you are content editing the configuration files (which you will have to do eventually) then all of the following should be easily replaceable.

If you notice any missing dependencies please raise an issue so that this table can update.

Dependency Description Why/Where is it needed?
xmonad v0.17+ Window manager self-explanatory
xmonad-contrib Contributed additional functionality for xmonad Everywhere, so much of the code base is these extras
dzen2 General purpose messaging and notification program Power menu
dmenu2 General purpose menu Application launcher, jump to window, bring window
xsettingsd Loads X related settings Loading gnome theme, other X settings
xset User preference utility for X Enabling/Disabling DPMS and screensaver
feh Image viewer and wallpaper setter Wallpaper
polybar Status bar Workspace info, layout info, launchers, DPMS toggling, mpris2 info, time, volume, power
compton Compositor Shadows and glitz
i3lock-color Screen locking self-explanatory
dunst Notification daemon self-explanatory
pulseaudio Sound system Liberal use made of pacmd and pactl, anything audio related
M+ Font used widely across the theme, get it here self-explanatory
Iosevka Custom Fonts (see here) self-explanatory
Deadhead Script Lock screen font (here) self-explanatory
FontAwesome Icons self-explanatory
nix A purely functional package manager Compilation of the xmonad binary
fd A replacement for find It is in the build script to find the compiled xmonad version

For the polybar configuration files please see here. It uses home-manager and contains an overlay for nixpkgs with additional software. You also need my custom scripts directory available here.

I have not mentioned here that the preferred login manager here is lightdm in order to get access to dm-tool to enable user switching. If you do not use lightdm then you will need to edit the polybar configuration and change the user switching module into one which suits your preference.

Default applications

This setup is pretty opinionated. I have some explicit applications named in ./lib/App/Alias.hs which you may wish to change to your own preferences.

Function Choice
Terminal kitty
Browser firefox
Mail geary
Music spotify
IDE emacs

If you prefer other apps then edit the variables in this file. At some point you will probably need to be doing this anyway and it helps you to get familiar with the structure of my environment.

Installation instructions

In order to compile this you need to have nix-shell and zsh in your $PATH but once you have this it should be pretty automatic

git clone https://gitlab.com/karetsu/xmonad-aloysius
cd xmonad-aloysius
./build -h

This will print the build help documentation. Follow the options presented to build the binary to your needs.