- C 95.4%
- Roff 2.4%
- Makefile 2.2%
| .gitea/issue_template | ||
| patches | ||
| protocols | ||
| systray | ||
| wallpapers | ||
| .gitignore | ||
| .mailmap | ||
| CHANGELOG.md | ||
| client.h | ||
| config.def.h | ||
| config.mk | ||
| dbus.c | ||
| dbus.h | ||
| drwl.h | ||
| dwl.1 | ||
| dwl.c | ||
| dwl.desktop | ||
| LICENSE | ||
| LICENSE.dwm | ||
| LICENSE.sway | ||
| LICENSE.tinywl | ||
| Makefile | ||
| README.md | ||
| util.c | ||
| util.h | ||
dwl - dwm for Wayland
Note
As of August 2025, dwl is currently unmaintained.
About This Build
This is a personal configuration of dwl, a compact Wayland compositor based on wlroots. It includes several patches to extend the base functionality while maintaining the suckless philosophy.
Applied Patches
This build includes the following patches from the patches/ directory:
- bar.patch - Add a bar identical to dwm's bar (adds tllist, fcft and pixman as extra dependencies)
- bar-systray-0.7.patch - System tray support for the bar (depends on the bar patch and libdbus)
- alwayscenter.patch - Centers floating windows automatically
- attachbottom.patch - New clients attach at the bottom of the stack
- hide_vacant_tags.patch - Hides empty tags from the bar
- minimalborders.patch - Dynamically adjusts the borders between adjacent windows to make them visually merge (stale, to be removed)
- pertag.patch - Per-tag layout configuration
- rotate-clients.patch - Rotate clients on current monitor with keybidings
- simpleborders-v0.7.patch - Don't put borders when there is only one window on the screen
- swallow.patch - Window swallowing for applications (not used, to be removed)
- unclutter.patch - Auto-hide cursor after timeout
Key Configuration Changes
Compared to the default dwl configuration:
- Keyboard Layout: Brazilian ABNT2 (
brlayout) - Border Width: 3px with minimal borders enabled
- Status Bar: Enabled with system tray support
- Font: Hack size 9
- Color Scheme: Custom Tokyo Night inspired colors
- Modifier Key: Super/Windows key (MODKEY)
- Auto-swallow: Enabled by default for terminal windows
Custom Keybindings
Notable keybindings added:
Super + Space- Launch application menu (mew-run)Super + W- FirefoxSuper + D- DiscordSuper + T- Telegram (AyuGram)Super + M- Email (Thunderbird)Super + F- File manager (lf)Super + S- SpotifySuper + Print- Screenshot selectionPrint- Full screenshot- Media keys for volume and brightness control
Dependencies
Standard dwl dependencies plus:
- wlroots (with libinput backend)
- wayland-protocols
- make
- tllist (for bar)
- fcft (for bar)
- pixman (for bar)
- libdbus (for system tray)
Optional runtime dependencies:
mew- Application launcherfoot- Terminal emulatorkanshi- Dynamic display configuration (Wayland'sautorandr)grim+slurp- Screenshot toolswl-copy- Clipboard managermako- Notification daemonbrightnessctl- Backlight controlwireplumber+pipewire- Audio controlwbg- Wallpaper
Building
make
sudo make install
Configuration
All configuration is done in config.h. To customize:
- Copy
config.def.htoconfig.h(if not already present) - Edit
config.hto your preferences - Rebuild with
make clean && make
Running
dwl
Or with a startup script:
dwl -s /path/to/startup-script
Running with aslstatus
Create ~/.local/bin/dwl-status:
#!/bin/sh
STATUS_FIFO="/tmp/dwlstatus"
# Safely create FIFO
[ -p "$STATUS_FIFO" ] || mkfifo "$STATUS_FIFO"
# Run aslstatus feeding FIFO
aslstatus -s > "$STATUS_FIFO" &
# Start dwl with autostart commands
exec dwl -s "wbg ~/.config/wm/dwl/wallpapers/oneshot.png & \
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=wlroots & \
foot -s & mako & kanshi &" < "$STATUS_FIFO"
Make it executable:
chmod +x ~/.local/bin/dwl-status
Then launch with:
dwl-status
Note: The dbus-update-activation-environment line is required for screen sharing to work properly in Wayland.
License
See LICENSE files for details. This project inherits licenses from dwl, dwm, tinywl, and sway components.
Acknowledgements
Based on dwl by the dwl developers. Patches sourced from the dwl-patches repository and the dwl community.