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β
βββ
β
βDWMβ
βββ
β
β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
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
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
sudo zypper install libX11-devel libXinerama-devel libXft-devel imlib2-devel libxcb-devel unzip flameshot lxappearance feh mate-polkit meson ninja-build gnome-keyring
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
- 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
- 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.
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
sudo zypper install kitty alacritty kvantum-manager fish neovim rofi fastfetch dunst picom starship bash zsh
- 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:
bash <(curl -L https://raw.githubusercontent.com/harilvfs/dwm/refs/heads/main/setup.sh)
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 explains how to remove SDDM
, set up TTY login for DWM
, configure .xinitrc/.xsession
, install dependencies, and add security using slock
.
To completely remove sddm
and use TTY login for dwm
, run:
sudo systemctl disable sddm
sudo systemctl stop sddm
sudo pacman -Rns sddm
Warning
This will remove SDDM completely. You will now need to log in via TTY and start dwm
manually.
Before proceeding, ensure you have the required packages installed:
sudo pacman -S xorg-server xorg-xinit dmenu
Tip
dmenu
is commonly used for launching apps in dwm
, but you can also use rofi
as an alternative. Install either to avoid issues.
Create or edit ~/.xinitrc
:
vim ~/.xinitrc
Note
You can also use nano
as an alternative text editor.
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
.
Now, after logging into TTY (Ctrl + Alt + F3
), start dwm
with:
startx
Tip
If startx
fails, check logs using:
cat ~/.local/share/xorg/Xorg.0.log | grep "(EE)"
If you want to automatically log in to TTY (no password required), create a systemd override:
sudo mkdir -p /etc/systemd/system/[email protected]
sudo vim /etc/systemd/system/[email protected]/autologin.conf
Note
You can also use nano
as an alternative text editor.
Add the following:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin your_username --noclear %I 38400 linux
Replace your_username
with your actual username.
Then, reload systemd:
sudo systemctl daemon-reexec
Warning
Auto-login bypasses password authentication. Anyone with access to your machine can log in.
Edit ~/.bash_profile
~/.bashrc
(or ~/.zprofile
~/.zshrc
if using Zsh):
vim ~/.bash_profile
Note
You can also use nano
as an alternative text editor.
Add this at the bottom:
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
Tip
This ensures dwm
starts automatically only on TTY1.
To lock the screen after inactivity or manually, install slock
:
sudo pacman -S slock xautolock
Edit ~/.xinitrc
to auto-lock after 5 minutes:
xautolock -time 5 -locker slock &
π To manually lock the screen, press
Mod+u
or run:slock
If you enabled auto-login but want to remove it, delete the config file:
sudo rm -rf /etc/systemd/system/[email protected]
Then reload systemd:
sudo systemctl daemon-reexec
Note
This will restore normal login behavior and require a password.
Restart your system to apply changes:
sudo reboot
Now, after reboot:
β
Log in via TTY (no display manager).
β
Run startx
to launch dwm
.
β
Auto-login or security settings (if enabled) should work.
By following this, you have successfully:
β
Removed SDDM and switched to TTY login.
β
Configured .xinitrc
to launch dwm
manually or automatically.
β
Enabled/Disabled auto-login as needed.
β
Added security with slock
(if required).
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: [email protected]
Thank you to all contributors! Your efforts and input are truly invaluable. π