Skip to content

Latest commit

 

History

History

.xmonad

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

My xmonad setup

laptop screenshot home workspace

goals: high density, high contrast, low friction, low latency; non-goals: eye candy

Overview

  • 24 workspaces named 1…12, W1…W12, bound to Alt-F1…12, Win-F1…F2

  • dynamic workspace names/descriptions using X.A.WorkspaceNames; dynamic per-workspace workdirs using X.L.WorkspaceDir; tied together with ~/bin/rofi-git-all-repos (screenshot) to get dynamic topic/project workspaces

  • two most used layouts: X.L.ResizableTile with tabs using X.L.SubLayouts (minimal decoration, window titles are in xmobar); Full (with window titles in xmobar this resembles fullscreen tabbed)

  • top xmobar on primary screen shows workspaces, weechat notifications, urgents on the left; batteries, temperature, CPUs, net throughput and datetime on the right; commonly used words are replaced with icons to increase density

  • bottom xmobar on each screen shows layout, workdir and window titles (like a tmux status line or screen hardstatus); plus trayer on primary screen

  • do-not-disturb mode that hides chat notifications and defers urgency requests; together with an xmobar widget and a timer (started from xmonadctl) this acts as a "pomodoro timer"

  • program launching, layout selection, emoji typing, password typing via rofi (see bindings and scripts in ~/bin)

  • media keys bound to liskin-media, a script that handles controlling the right media player and bluetooth volume

  • screen locking via xss-lock + xsecurelock (more robust than xscreensaver, integrated with systemd-logind, can handle media keys)

  • xrandr automation via layout-auto and xrandr-smart (xrandr-smart --output 'eDP-*' --auto --output '!(eDP-*)' --auto --above 'eDP-*')

  • automatic time tracking via arbtt (guided by workspace names, see categorize.cfg), visualisaton via arbtt-chart, daily summary in mail

Sources

Build

Built using stack and make:

X desktop “manager” and X session

TL;DR: startx in .bash_profile, xmonad as graphical-session.target in user systemd, support for multiple X sessions (primary on intel, temporary on nvidia dGPU).

Details:

See also