xmonad-config is my xmonad configuration was inspired by Vic Fryzel, gilbertw1 and Ethan Schoonover
If you are unfamiliar with xmonad, it is a tiling window manager that is notoriously minimal, stable, beautiful, and featureful. If you find yourself spending a lot of time organizing or managing windows, you may consider trying xmonad.
However, xmonad can be somewhat difficult to configure if you’re new to Haskell or even to xmonad itself.
This project contains a completely working and very usable xmonad configuration “out of the box”. If you are just starting out with xmonad, this will give you a configuration that I personally use every day. Thought it has been put into the colors, key bindings, layouts, and supplementary scripts to make life easier.
This project is also recommended for advanced xmonad users, who may just not want to reinvent the wheel. All source provided with this project is well documented and simple to customize.
- xmonad
- xmonad-contrib
- xmobar
- stalonetray
- rofi
Installing requirements on Arch Linux
sudo pacman -S xmonad xmonad-contrib xmobar stalonetray \ xcompmgr rofi
Installing requirements on Ubuntu Linux
sudo aptitude install xmonad libghc-xmonad-contrib-dev xmobar stalonetray \ rofi
Installing xmonad-config is a matter of backing up any xmonad configuration you may already have, cloning the git repository, and updating your PATH.
cd mv .xmonad .xmonad.orig git clone https://github.com/randomthought/xmonad-config.git .xmonad
Once xmonad-config is installed, you also need to ensure you can actually start xmonad. The mechanism to do this varies based on each environment, but here are some instructions for some common login managers.
ln -s ~/.xmonad/bin/xsession ~/.xsession # Logout, login from lightdm/xdm/kdm/gdm
ln -s ~/.xmonad/bin/xsession ~/.xinitrc # Logout, login from slim
After starting xmonad, use the following keyboard shortcuts to function in your new window manager. I recommend you print these out so that you don’t get stranded once you logout and back in.
Key Binding | Action |
---|---|
Win+Shift+Return | Start a terminal |
Win+Ctrl+0 | Lock screen |
Win+p | Start dmenu. Once it comes up, type the name of a program and enter |
Win+Shift+p | Take screenshot in select mode. Click or click and drag to select |
Win+Ctrl+Shift+p | Take fullscreen screenshot. Supports multiple monitors |
Win+Shift+c | Close focused window |
Win+Space | Change workspace layout |
Win+r | Rotates a split between vertical and horizontal BinarySpacePartition layout |
Win+s | Swaps to sibling nodes BinarySpacePartition layout |
Win+Shift+Space | Change back to default workspace layout |
Win+n | Resize viewed windows to the correct size |
Win+Ctrl+Left | Tab current focused window with the window to the left |
Win+Ctrl+Right | Tab current focused window with the window to the right |
Win+Ctrl+Up | Tab current focused window with the window above |
Win+Ctrl+Down | Tab current focused window with the window below |
Win+Ctrl+u | Ungroup the current tabbed windows |
Win+Ctrl+m | Merge all windows in the current workspace to one tabbed window |
Win+Tab | Focus next tabbed window |
Win+Left | Focus on window to the Left |
Win+Right | Focus on window to the Right |
Win+Up | Focus on window above |
Win+Shift+Left | Swap adjacent window to the left |
Win+Shift+Right | Swap adjacent window to the right |
Win+Shift+Up | Swap adjacent window above |
Win+Shift+Down | Swap adjacent window below |
Win+Ctrl+Left | Expand / Shrink window to the left |
Win+Ctrl+Left | Expand / Shrink window to the right |
Win+Ctrl+Up | Expand / Shrink window to the up |
Win+Ctrl+Down | Expand / Shrink window to the down |
Win+h | Shrink master window area |
Win+l | Expand master window area |
Win+m | Focus master window |
Win+Return | Swap focused window with master window |
Win+t | Push floating window back into tiling |
Win+, | Increment number of windows in master window area |
Win+. | Decrement number of windows in master window area |
Win+q | Restart xmonad. This reloads xmonad configuration, does not logout |
Win+Shift+q | Quit xmonad and logout |
Win+[1-9] | Switch to workspace 1-9, depending on which number was pressed |
Win+Shift+[1-9] | Send focused window to workspace 1-9 |
Win+w | Focus left-most monitor Xinerama screen 1 |
Win+e | Focus center-most monitor Xinerama screen 2 |
Win+r | Focus right-most monitor Xinerama screen 3 |
Win+Shift+w | Send focused window to workspace on left-most monitor |
Win+Shift+e | Send focused window to workspace on center-most monitor |
Win+Shift+r | Send focused window to workspace on right-most monitor |
Win+Left Mouse Drag | Drag focused window out of tiling |
Win+Right Mouse Drag | Resize focused window, bring out of tiling if needed |
Win+Right Mouse Drag | Resize focused window, bring out of tiling if needed |
Once cloned, xmonad-config is laid out as follows.
All xmonad configuration is in ~/.xmonad/xmonad.hs. This includes things like key bindings, colors, layouts, etc. You may need to have some basic understanding of Haskell in order to modify this file, but most people have no problems.
Most of the xmobar configuration is in ~/.xmonad/xmobar.hs.
All scripts are in ~/.xmonad/bin/. Scripts are provided to do things like take screenshots, start the system tray, start dmenu, or fix your multi-head layout after a fullscreen application may have turned off one of the screens.
Colors set in the xmobar config and dmenu script are meant to coincide with the IR_Black terminal and vim themes.