DWL(1)

πŸ“¦ version 0.9, in nixpkgs unstable

πŸ¦‹ 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, dwl writes 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 full wlroots logging, debug info included. maximum yapping, but make it logs πŸ”₯
  • -s β€” pass a command here and dwl starts a shell process running that command on startup. and when it's stopping, it sends SIGTERM to 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 β€” spawn wmenu-run(1).
  • Mod-Shift-Return β€” spawn foot(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 β€” the app_id of the focused window on <monitor> or nothing if there is no focused window.
    • fullscreen β€” prints 1 if the focused window on <monitor> is in fullscreen state, otherwise prints 0. If there is no focused window it prints nothing.
    • floating β€” prints 1 if the focused window on <monitor> is in floating state, otherwise prints 0. If there is no focused window it prints nothing.
    • selmon β€” prints 1 if <monitor> is the selected monitor, otherwise prints 0.
    • 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.

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, including libxkbcommon.
  • DISPLAY, WAYLAND_DISPLAY, WAYLAND_SOCKET β€” tell how to connect to an underlying X11 or Wayland server.
  • WLR_* β€” various variables specific to wlroots.
  • XKB_*, XLOCALEDIR, XCOMPOSEFILE β€” various variables specific to libxkbcommon.
  • 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 to dwl.
  • 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