This is my personal configuration. This is not meant as a plug and play configuration.
- Caution
- Prerequisite Knowledge
- About
- Showcase
- Keybindings
- What To Install
- Fonts
- Additional Notes
- Contributing
I have also linked good beginner resources if you need help with any of these.
As I said above, this is meant to be my personal configuration that I can clone on my system and get working instantly so many things are tailored to my personal liking. There may be some things you might want to change to get working to your liking.This config also took a lot of inspiration from adi1090x’s rofi and Axarva’s xmonad configs so check them out.
I needed to use some android apps on my system and couldn’t get anbox working so decided this would be a perfect time to configure a wayland wm for waydroid. I chose hyprland and waybar for this. It’s a bit rough around the edges and needs some more time but most things work. To get the wayland system up and running you need the following. Most but not all xmonad bindings work for hyprland. The wayland setup has only been tested on arch linux. I don’t know if it will run just as smoothly on other distros. If you run into any issues, feel free to open an issue.Keybind | Function |
---|---|
super + shift + c | Recompile xmonad |
super + q | Close window |
super + shift + q | Open rofi powermenu |
alt + F4 | Exit xmonad |
Keybind | Function |
---|---|
super + n | Refresh layouts |
super + space | Cycle through layouts |
super + t | Snap floating window to tiling |
super + up | Increase number of windows in master pane |
super + down | Decrease number of windows in master pane |
super + f ctrl + f | Toggle tile |
super + f shift + f | Toggle bar (polybar) |
super + f f | Fullscreen focused window |
Keybind | Function |
---|---|
super + 1…9 | Move from workspaces 1 to 9 |
super + ctrl + tab | Move focus to next display |
super + k | Move focus to upper window |
super + j | Move focus to down window |
super + . | Warp cursor to focused window |
super + shift + h | Hide focused window |
super + h h | Show last hidden window |
super + tab tab | Move focus to next display |
super + tab shift + tab | Move focus to previous display |
alt + shift + tab tab | Swap with next display |
alt + shift + tab shift + tab | Swap with previous display |
super + m | Swap focused window with master |
super + alt + up | Move window up by 10 pixels |
super + alt + down | Move window down by 10 pixels |
super + alt + left | Move window left by 10 pixels |
super + alt + right | Move window right by 10 pixels |
Keybind | Function |
---|---|
super + shift + 1…9 | Shift to workspaces 1 to 9 |
super + shift + tab tab | Shift to next display |
super + shift + tab shift +tab | Shift to previous display |
super + shift + k | Shift to upper window |
super + shift + j | Shift to down window |
Keybind | Function |
---|---|
super + kp_add | Increase window size by 10 pixels |
super + kp_subtract | Decrease window size by 10 pixels |
super + ctrl + kp_add | Increase window spacing by 10 pixels |
super + ctrl + kp_subtract | Decrease window spacing by 10 pixels |
super + alt + kp_add | Increase screen spacing by 10 pixels |
super + alt + kp_subtract | Decrease screen spacing by 10 pixels |
Keybind | Function |
---|---|
super + e e | Open emacs |
super + e super + enter | Open vterm |
super + e z | Open dired |
Keybind | Function |
---|---|
super + d d | Open rofi drun |
super + d shift + d | Open rofi run |
super + d g | Open screenshot menu |
super + d shift + g | Stop recording(in screenshot menu) |
super + d x | Open mpd widget (rofi) |
super + d s | Open spotify widget (rofi) |
super + d b | Open browser menu(rofi) |
Keybind | Function |
---|---|
super + enter enter | Launch terminal (alacritty) |
super + a z | Open thunar |
super + a shift + z | Open pcmanfm |
super + a b | Open browser (firefox) |
super + p r | Restart bar (polybar) |
Keybind | Function |
---|---|
super + s super + enter | Launch terminal scratchpad (alacritty) |
super + s x | Launch MPD player (ncmpcpp) |
super + s z | Launch filemanager (lf) |
Keybind | Function |
---|---|
XF86Explorer | Launch filemanager (thunar) |
XF86Search | Launch rofi drun |
XF86Calculator | Launch calculator (qalculate) |
XF86Tools | Launch spotify |
XF86AudioNext | Next media (playerctl) |
XF86AudioPrev | Previous media (playerctl) |
XF86AudioPlay | Toggle media (playerctl) |
XF86AudioStop | Stop media (playerctl) |
XF86AudioMute | Volume mute (pactl) |
XF86AudioRaiseVolume | Volume increase (pactl) |
XF86AudioLowerVolume | Volume decrease (pactl) |
- lf
- fzf
- ueberzug++
- trash-cli
- bat
- ffmpegthumbnailer
- imagemagick
- poppler
- epub-thumbnailer
- wkhtmltopdf
- chafa
- i3lock
- Alacritty
- kitty
- Dunst
- Mpv
- Picom Note: Make sure to install the given fork instead of other forks
- Zathura
- unclutter
Note: Used to use i3 before xmonad, that’s why it’s here. Most things work with i3 but I mainly use it as a fallback wm.
Note: Thought of moving all my non-wm related keybindings to sxhkd but found it to be buggy and decided not to do so. You can still use it if you wish as all my bindings are configured.
There are the fonts that are used in my configuratuin for text and icons. Make sure to install them. These are additional notes and instruction you have to follow to get this config up and running. Xmonad with polybar was a bit tricky to get running, I had to use xmonad-log to get things working. I have already put a compiled binary of xmonad-log in.config/polybar/scripts
so no worries there but you do need to install haskell-dbus
manually through your system’s package manager.
Xmonad starts up a lot of things configured for my system, such as rclone
etc. Make sure to disable the ones you don’t need.
Xmonad-ctl is required for exit to login manager with rofi-powermenu. Make sure to use -dynamic
flag when compiling .xmonad/xmonadctl.hs
Make sure to install the language-servers you need on your system.
Define variables for spotify-client-id and spotify-client-secret for counsel-spotify in .emacs.d/env.el
.
(defconst spotify_class_id "yourclassidhere") (defconst spotify_class_secret "yourclasssecrethere")
If you don’t know how to get your spotify client id and secret, refer to this article.
Make sure to set up the following symlinkln -s ~/.emacs.d/yasnippet ~/emacs.d/etc
This is beacuase the no-littering
package change the yas-snippet-dirs
variable to ~/.emacs.d/etc/
instead to ~/.emacs.d
, causing the snippets to not be in included the git repository because ~/.emacs.d/etc
is in my .gitignore
. The symlink fixes the issue.
.Xmodmap
.
You need to set the MONITOR env to your output in .zshrc for polybar to display on the correct output.
You need to make a .env
in your home directory with an OpenWeather API key and the code of the city you want to get the weather of. For more details on how to do this, check out my repo here.
If you see me doing anything inefficiently in this config or you think something would be useful to me or you want to correct some error on my part, feel free to open a pull request.