This repository contains my custom configuration files for a minimal and efficient Arch Linux setup using bspwm as the window manager.
If you're installing Arch Linux from scratch, follow the complete installation guide in arch-install.md. It covers:
- Network setup (Wi-Fi/Ethernet)
- Running
archinstall - Post-installation setup (Git, Yay, Chrome, VS Code, and all required packages)
- Configuration file deployment
- System setup
If you already have Arch Linux installed:
-
Clone this repository:
git clone https://github.com/mahdibm-dev/arch-bspwm.git
-
Install required packages:
sudo pacman -S polybar alacritty thunar flameshot dunst \ network-manager-applet feh i3lock pulseaudio dmenu rofi -
Copy configuration files:
mkdir -p ~/.config cp -r arch-bspwm/.config/* ~/.config/
-
Make scripts executable:
chmod +x ~/.config/bspwm/bspwmrc chmod +x ~/.config/polybar/launch.sh chmod +x ~/.config/feh/fehbg
-
Place a wallpaper in
~/Pictures/Wallpapers/ -
Restart bspwm or log out and log back in
- Purpose: Tiling window manager
- Description: A lightweight, minimal window manager that arranges windows in a binary tree structure
- Config Location:
.config/bspwm/bspwmrc - Features:
- 10 workspaces (B, V, W, 4-10)
- Auto-launches: sxhkd, polybar, dunst, flameshot, nm-applet, feh
- Window rules for Chrome (workspace B) and VS Code (workspace V)
- Purpose: Hotkey daemon
- Description: Simple X hotkey daemon that manages all keyboard shortcuts
- Config Location:
.config/sxhkd/sxhkdrc - Key Bindings:
Super + b- Launch ChromeSuper + v- Launch VS CodeSuper + Shift + f- Launch Thunar file managerSuper + Return- Launch Alacritty terminalSuper + x- Lock screen (i3lock)Super + Space- Application launcher (dmenu)Print- Full screen screenshotSuper + Print- Interactive screenshotSuper + =/-- Volume controlSuper + e- Toggle muteSuper + Alt + q/r- Quit/restart bspwm
- Purpose: Status bar
- Description: Highly customizable status bar for displaying system information
- Config Location:
.config/polybar/config.ini - Modules:
- Workspaces (xworkspaces)
- Window title
- Battery status
- Volume (PulseAudio)
- RAM usage
- CPU usage
- Date & time (with day name)
- System tray (for nm-applet, etc.)
- Launch Script:
.config/polybar/launch.sh
- Purpose: Wallpaper setter
- Description: Lightweight image viewer used for setting desktop wallpapers
- Config Location:
.config/feh/fehbg - Features:
- Automatically loads first image from
~/Pictures/Wallpapers/ - Restores wallpaper on startup
- Automatically loads first image from
- Purpose: Terminal emulator
- Description: GPU-accelerated terminal emulator written in Rust
- Installation:
pacman -S alacritty
- Purpose: Web browser
- Package:
google-chrome-stable - Auto-opens: Workspace B
- Purpose: File manager
- Description: Fast and lightweight file manager for XFCE
- Installation:
pacman -S thunar gvfs - Features: Trash support, file properties, external device management
- Purpose: Screenshot tool
- Description: Powerful and user-friendly screenshot software
- Config Location:
.config/flameshot/ - Features:
- Full screen capture
- Interactive area selection
- Built-in annotation tools
- Auto-saves to
~/Pictures/Screenshots/
- Purpose: Notification daemon
- Description: Lightweight notification system
- Installation:
pacman -S dunst - Features: Displays system and application notifications
- Purpose: Network management
- Description: NetworkManager system tray applet
- Installation:
pacman -S network-manager-applet - Features:
- WiFi network management
- Connection status display
- VPN support
- Appears in Polybar system tray
- Purpose: Screen locker
- Description: Simple screen locker for X
- Installation:
pacman -S i3lock - Usage:
Super + xto lock screen - Features: Unlimited password retry attempts
- Purpose: Sound system
- Description: Network-capable sound server
- Control: pactl commands via sxhkd hotkeys
- Features:
- Volume control (5% increments)
- Mute toggle
- Integrated with Polybar
- Purpose: Code editor
- Package:
code - Auto-opens: Workspace V
- B - Browser (Chrome)
- V - VS Code
- W - WhatsApp (reserved)
- 4-10 - General purpose workspaces
.config/
├── bspwm/ # Window manager configuration
├── sxhkd/ # Keyboard shortcuts
├── polybar/ # Status bar configuration
├── feh/ # Wallpaper settings
└── flameshot/ # Screenshot tool configuration
- Screenshots are automatically saved to
~/Pictures/Screenshots/ - Wallpapers should be placed in
~/Pictures/Wallpapers/ - The setup uses X11 (not Wayland)
- Font size in Polybar: 8pt
- Default terminal: Alacritty
- Application launcher: dmenu
Place any image (jpg/png) in ~/Pictures/Wallpapers/ and it will be automatically applied on next login.
Edit ~/.config/sxhkd/sxhkdrc and reload with Super + Escape
Edit ~/.config/polybar/config.ini and run ~/.config/polybar/launch.sh to reload
Edit the line bspc monitor -d B V W 4 5 6 7 8 9 10 in ~/.config/bspwm/bspwmrc
Personal configuration files - feel free to use and modify.
