DWL(1)
π¦ dwl(1) π¦
okay bestie, so this is the General Commands Manual page for dwl, and I'm gonna walk you through literally every single thing in it, no skips, no cap. grab a snack π
πΈ NAME πΈ
dwl β it's giving dwm, but for Wayland π
β¨ SYNOPSIS β¨
dwl [-v] [-d] [-s startup command]
π DESCRIPTION π
dwl is a Wayland compositor built on top of wlroots. The whole point? It's meant to fill the exact same niche in the Wayland world that dwm fills over in X11-land. same energy, different protocol, iykyk π¦
-vβ when you pass this,dwlwrites its name and version to standard error and then exits unsuccessfully. yes bestie, unsuccessfully, that's what it says, don't come for me π-dβ this one turns on fullwlrootslogging, debug info included. maximum yapping, but make it logs π₯-sβ pass a command here anddwlstarts a shell process running that command on startup. and when it's stopping, it sendsSIGTERMto the child process group and waits for it to exit. clean exit, iconic behavior π
Users are encouraged to customize dwl by editing the sources, especially config.h. so like, the source is the config, that's the vibe. The default key bindings go a little something like this:
Mod-[1-9]β show only all windows with a tag.Mod-Ctrl-[1-9]β show all windows with a tag.Mod-Shift-[1-9]β move window to a single tag.Mod-Ctrl-Shift-[1-9]β toggle tag for window.Mod-pβ spawnwmenu-run(1).Mod-Shift-Returnβ spawnfoot(1).Mod-[jk]β move focus down/up the stack.Mod-[id]β increase/decrease number of windows in master area.Mod-[hl]β decrease/increase master area.Mod-Returnβ move window on top of stack or switch top of stack with second window.Mod-Tabβ show only all windows with previous tag.Mod-Shift-cβ close window.Mod-tβ switch to tabbed layout.Mod-fβ switch to floating layout.Mod-mβ switch to monocle layout.Mod-Spaceβ switch to previous layout.Mod-Shift-Spaceβ toggle floating state of window.Mod-eβ toggle fullscreen state of window.Mod-0β show all windows.Mod-Shift-0β set all tags for window.Mod-,β move focus to previous monitor.Mod-.β move focus to next monitor.Mod-Shift-,β move window to previous monitor.Mod-Shift-.β move window to next monitor.Mod-Shift-qβ quit dwl.
heads up bestie: these might differ depending on your keyboard layout π
π±οΈ Mouse commands
Mod-Button1β move focused window while dragging. Tiled windows will be toggled to the floating state. sneaky little state change, love that for you πMod-Button2β toggle focused window between floating and tiled state.Mod-Button3β resize focused window while dragging. Tiled windows will be toggled to the floating state. again with the toggling β¨
π STATUS INFORMATION π
dwl writes its status information to standard output. BUT β if you gave it the -s option, that status information gets written to the standard input of the child process instead. plot twist π
Said information has the following format:
<monitor> <component> <data>
<monitor>β is the name given to the output.<component>β is one of (in order)title,appid,fullscreen,floating,selmon,tags,layout.<data>β changes depending on<component>:titleβ the title of the focused window on<monitor>or nothing if there is no focused window.appidβ theapp_idof the focused window on<monitor>or nothing if there is no focused window.fullscreenβ prints1if the focused window on<monitor>is in fullscreen state, otherwise prints0. If there is no focused window it prints nothing.floatingβ prints1if the focused window on<monitor>is in floating state, otherwise prints0. If there is no focused window it prints nothing.selmonβ prints1if<monitor>is the selected monitor, otherwise prints0.tagsβ prints four bitmasks in the following order:- Occupied tags of
<monitor>. - Selected tags of
<monitor>. - Tags of the focused window on
<monitor>. - Tags where a window on
<monitor>requested activation or has urgency hints.
- Occupied tags of
The bitmasks are 32-bit unsigned decimal integers π’
layoutβ prints the symbol of the current layout.
π Examples
When there is a selected window:
HDMI-A-1 title ~/source/repos/dwl > man -l dwl.1
HDMI-A-1 appid footclient
HDMI-A-1 fullscreen 0
HDMI-A-1 floating 0
HDMI-A-1 selmon 1
HDMI-A-1 tags 271 4 4 0
HDMI-A-1 layout [T]
When there is no selected window:
HDMI-A-1 title
HDMI-A-1 appid
HDMI-A-1 fullscreen
HDMI-A-1 floating
HDMI-A-1 selmon 1
HDMI-A-1 tags 271 512 0 0
HDMI-A-1 layout [T]
see how the empty ones just stop dead? that's not a typo, that's the format π
π± ENVIRONMENT π±
These environment variables are used by dwl:
XDG_RUNTIME_DIRβ a directory where temporary user files, such as the Wayland socket, are stored.XDG_CONFIG_DIRβ a directory containing configuration of various programs and libraries, includinglibxkbcommon.DISPLAY,WAYLAND_DISPLAY,WAYLAND_SOCKETβ tell how to connect to an underlying X11 or Wayland server.WLR_*β various variables specific towlroots.XKB_*,XLOCALEDIR,XCOMPOSEFILEβ various variables specific tolibxkbcommon.XCURSOR_PATHβ list of directories to search for XCursor themes in.HOMEβ a directory where there are always dear files there for you. waiting for you to clean them up. π₯Ί (yes that's really what it says, and honestly? felt.)
These are set by dwl:
WAYLAND_DISPLAYβ tell how to connect todwl.DISPLAYβ if using Xwayland, tell how to connect to the Xwayland server.
π₯ EXAMPLES π₯
Start dwl with s6 in the background:
dwl -s 's6-svscan <&-'
look at that redirect, so clean, so demure π
π SEE ALSO π
dwm(1), foot(1), wmenu(1), xkeyboard-config(7)
π BUGS π
All of them.
like. all of them. every last one. iconic honesty fr fr π
and that's the whole page bestie!! this one's from Debian, dated January 8, 2021 β go forth and tile your windows πβ¨π«Ά
π¦ where this page comes from
- nixpkgs unstable: dwl 0.9
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms