DWM is a lightweight and dynamic window manager based on X11. It is minimalistic, efficient, and designed to be customized by editing its source code. β¨
β
βDependenciesβ
βββ
β
βFontsβ
βββ
β
βWallpapersβ
βββ
β
βConfigsβ
βββ
β
βTmuxβ
βββ
β
βPicomβ
βββ
β
βSystrayβ
βββ
β
βSDDMβ
βββ
β
βGrubβ
βββ
β
βInstallβ
βββ
β
βTTYβ
βββ
β
βContributingβ
β
Note
This guide features DWM patches from Chris Titus Tech, tweaked to suit my personal workflow while remaining simple for anyone to use.
sudo pacman -S --needed --noconfirm base-devel libx11 libxinerama libxft imlib2 libxcb git unzip flameshot lxappearance feh mate-polkit meson libev uthash libconfig meson ninja gnome-keyring thunar trash-cli
sudo apt install -y build-essential libx11-dev libxinerama-dev libxft-dev libimlib2-dev libx11-xcb-dev libfontconfig1 libx11-6 libxft2 libxinerama1 libxcb-res0-dev git unzip flameshot lxappearance feh mate-polkit meson ninja-build gnome-keyring thunar trash-cli
sudo dnf install -y libX11-devel libXinerama-devel libXft-devel imlib2-devel libxcb-devel unzip flameshot lxappearance feh mate-polkit meson ninja-build gnome-keyring thunar trash-cli
sudo zypper install libX11-devel libXinerama-devel libXft-devel imlib2-devel libxcb-devel unzip flameshot lxappearance feh mate-polkit meson ninja-build gnome-keyring thunar trash-cli
Nerd Fonts enhance font rendering and ensure proper alignment of icons in slstatus
. For this setup, the MesloLGS Nerd Font is recommended.
sudo pacman -S --needed --noconfirm ttf-meslo-nerd noto-fonts-emoji ttf-joypixels ttf-cascadia-mono-nerd ttf-cascadia-code-nerd ttf-jetbrains-mono-nerd ttf-jetbrains-mono
- Download from: nerdfonts.com
- Place the font files in
~/.fonts
or~/.local/share/fonts
. - Refresh font cache:
fc-cache -vf
Store wallpapers in ~/Pictures/wallpapers
. Use the following command to clone a curated wallpaper collection:
git clone https://github.com/harilvfs/wallpapers ~/Pictures
Preconfigured package settings are included in this repository under the config
folder. These settings enhance the DWM experience and can be installed based on your workflow and distribution.
- Install the necessary packages for your distribution.
- Copy the preconfigured files to your
~/.config
directory.
sudo pacman -S --needed --noconfirm kitty alacritty kvantum dunst fastfetch fish helix neovim picom rofi starship bash zsh ghostty
- BetterDiscord: Install as an AppImage or via AUR using
paru
oryay
.yay -S betterdiscord-installer
sudo dnf install kitty alacritty kvantum dunst fastfetch fish helix neovim picom rofi bash zsh
- Starship: Install using the official script:
curl -sS https://starship.rs/install.sh | sh
- BetterDiscord: Download the AppImage from the official website.
Ghostty: Download Ghostty Terminal
dnf copr enable pgdev/ghostty dnf install ghostty
sudo apt install -y kitty alacritty qt5-style-kvantum fish neovim rofi dunst picom bash zsh
- Fastfetch: Download the appropriate
.deb
package from Fastfetch's release page and install it:sudo dpkg -i fastfetch-linux-<architecture>.deb
- Helix: Install from source using the Helix documentation.
- BetterDiscord: Download the AppImage from the official website.
- Starship: Install using the official script:
curl -sS https://starship.rs/install.sh | sh
Ghostty: Download Ghostty Terminal
echo 'deb http://download.opensuse.org/repositories/home:/clayrisser:/bookworm/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:clayrisser:bookworm.list curl -fsSL https://download.opensuse.org/repositories/home:clayrisser:bookworm/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_clayrisser_bookworm.gpg > /dev/null sudo apt update sudo apt install ghostty
sudo zypper install kitty alacritty kvantum-manager fish neovim rofi fastfetch dunst picom starship bash zsh ghostty
- BetterDiscord: Download the AppImage from the official website.
Once the required packages are installed, copy the preconfigured files to your .config
directory:
cp -r config/* ~/.config/
Important
If you donβt have a preconfigured setup, itβs recommended to use the provided configurations for better compatibility with the DWM patches.
Install Tmux for terminal multiplexing.
sudo pacman -S tmux
sudo apt install tmux
sudo dnf install tmux
sudo zypper install tmux
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
mkdir ~/.config/tmux
wget -O ~/.config/tmux/tmux.conf https://raw.githubusercontent.com/harilvfs/dwm/refs/heads/main/config/tmux/tmux.conf
cd ~/.tmux/plugin/tpm/scripts/ &&
chmod +x install_plugins.sh &&
./install_plugins.sh
cd ~/.tmux/plugins/tpm &&
chmod +x tpm &&
./tpm
cd ~/.tmux/plugin/tpm/scripts/ &&
chmod +x update_plugin.sh &&
./update_plugin.sh
Picom provides window transparency and animations.
- Config File: Picom Config
- Animations: Check out FT-LABS.
Install system tray applets for network, Bluetooth, and sound management.
- Packages:
Install the necessary packages for your distribution:
sudo pacman -S --needed --noconfirm network-manager-applet blueman pasystray
sudo dnf install network-manager-applet blueman pasystray
sudo apt install network-manager-applet blueman pasystray
sudo zypper install NetworkManager-applet blueman pasystray
Notes π : For other distributions, refer to the respective package manager documentation.
The setup uses the Astronaut Theme for SDDM.
- Installation:
Clone the theme repository and follow the instructions to install:
Keyitdev/sddm-astronaut-theme
Customize your bootloader appearance with GRUB themes.
- Explore themes from ChrisTitusTech's repository:
Top-5-Bootloader-Themes
Note: Ensure GRUB customization aligns with your workflow and is applied carefully to avoid bootloader issues.
For a simplified setup process, run the script:
Note
Before running this script, make sure fzf
, figlet
, and curl
are installed.
For Arch-based distros:
sudo pacman -S fzf figlet curl --noconfirm
For Fedora-based distros:
sudo dnf install fzf figlet curl -y
After that, run this command in your terminal.
bash <(curl -L https://chalisehari.com.np/dwm)
Note
This script is optimized for Arch Linux. Manual installation is recommended for other distributions or customized setups.
Clone and install DWM:
git clone https://github.com/harilvfs/dwm ~/
cd ~/dwm
sudo make clean install
Install slstatus
cd ~/dwm/slstatus
sudo make clean install
Add this to your ~/.xinitrc
& ~/.xsession
exec dwm
Important
After installation, remember to adjust some keybindings in config.h
to fit your use case.
Note
Default keybinding for terminal is mod + x
and for rofi is mod + r
.
Note
Some distributions may require additional dependencies or configuration.Feel free to explore your distributionβs community for guidance on missing dependencies.
This guide walks you through removing SDDM, enabling TTY login, auto-starting dwm
, and setting up optional auto-login and screen locking.
sudo systemctl disable sddm
sudo systemctl stop sddm
sudo pacman -Rns sddm
β οΈ Youβll now log in through a TTY (e.g. Ctrl + Alt + F3).
sudo pacman -S xorg-server xorg-xinit dmenu
dmenu
is used indwm
for launching apps. You can swap it withrofi
if you prefer.
Create or edit ~/.xinitrc
:
vim ~/.xinitrc
Add this:
#!/bin/sh
exec dwm
Then, make it executable:
chmod +x ~/.xinitrc
Note
If using a display manager, .xsession
should also contain exec dwm
.
After logging into TTY:
startx
If it fails:
cat ~/.local/share/xorg/Xorg.0.log | grep "(EE)"
Create override config:
sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
sudo vim /etc/systemd/system/getty@tty1.service.d/autologin.conf
Add the following:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin your_username --noclear %I 38400 linux
Replace your_username
. Then reload:
sudo systemctl daemon-reexec
β οΈ Auto-login skips the password β only use on trusted machines.
Edit ~/.bash
(or ~/.zsh
for Zsh):
vim ~/.bash
Add this at the bottom:
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
Install slock
:
sudo pacman -S slock
To lock after 5 minutes, add to .xinitrc
before exec dwm
:
xautolock -time 5 -locker slock &
π Manually lock with:
slock
Delete config:
sudo rm -rf /etc/systemd/system/getty@tty1.service.d
Then reload systemd:
sudo systemctl daemon-reexec
Restart your system to apply changes:
sudo reboot
After reboot:
β
Login via TTY
β
startx
launches dwm
β
Auto-login and lock work if enabled
For more detailed contribution guidelines, please check our CONTRIBUTING.md.
We aim for a welcoming environment for all contributors. Please read our Code of Conduct for a better experience.
For questions or suggestions, feel free to reach out via:
- π§ Email: harilvfs@chalisehari.com.np
Thank you to all contributors! Your efforts and input are truly invaluable. π