dwl v0.8 (dwm for Wayland)
  • C 95.4%
  • Roff 2.4%
  • Makefile 2.2%
Find a file
2026-01-24 20:19:32 +00:00
.gitea/issue_template Initial commit 2026-01-23 23:40:29 -03:00
patches Initial commit 2026-01-23 23:40:29 -03:00
protocols Initial commit 2026-01-23 23:40:29 -03:00
systray Initial commit 2026-01-23 23:40:29 -03:00
wallpapers Remove duplicated dir 2026-01-24 01:02:50 -03:00
.gitignore Initial commit 2026-01-23 23:40:29 -03:00
.mailmap Initial commit 2026-01-23 23:40:29 -03:00
CHANGELOG.md Initial commit 2026-01-23 23:40:29 -03:00
client.h Initial commit 2026-01-23 23:40:29 -03:00
config.def.h Update config.def.h 2026-01-24 03:32:19 +00:00
config.mk Initial commit 2026-01-23 23:40:29 -03:00
dbus.c Initial commit 2026-01-23 23:40:29 -03:00
dbus.h Initial commit 2026-01-23 23:40:29 -03:00
drwl.h Initial commit 2026-01-23 23:40:29 -03:00
dwl.1 Initial commit 2026-01-23 23:40:29 -03:00
dwl.c Initial commit 2026-01-23 23:40:29 -03:00
dwl.desktop Initial commit 2026-01-23 23:40:29 -03:00
LICENSE Initial commit 2026-01-23 23:40:29 -03:00
LICENSE.dwm Initial commit 2026-01-23 23:40:29 -03:00
LICENSE.sway Initial commit 2026-01-23 23:40:29 -03:00
LICENSE.tinywl Initial commit 2026-01-23 23:40:29 -03:00
Makefile Initial commit 2026-01-23 23:40:29 -03:00
README.md Update README.md 2026-01-24 20:19:32 +00:00
util.c Initial commit 2026-01-23 23:40:29 -03:00
util.h Initial commit 2026-01-23 23:40:29 -03:00

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 (br layout)
  • 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 - Firefox
  • Super + D - Discord
  • Super + T - Telegram (AyuGram)
  • Super + M - Email (Thunderbird)
  • Super + F - File manager (lf)
  • Super + S - Spotify
  • Super + Print - Screenshot selection
  • Print - 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 launcher
  • foot - Terminal emulator
  • kanshi - Dynamic display configuration (Wayland's autorandr)
  • grim + slurp - Screenshot tools
  • wl-copy - Clipboard manager
  • mako - Notification daemon
  • brightnessctl - Backlight control
  • wireplumber + pipewire - Audio control
  • wbg - Wallpaper

Building

make
sudo make install

Configuration

All configuration is done in config.h. To customize:

  1. Copy config.def.h to config.h (if not already present)
  2. Edit config.h to your preferences
  3. 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.