my dwl setup
Go to file
Devin J. Pohly c37aa00aec consistent naming for coordinate variables
x and y are reserved (inasmuch as it's dwl's choice) for coordinates
relative to the layout.  ox and oy are used for output-relative
coordinates.  sx and sy are surface-relative.  dx and dy are deltas.

figuring this out the first time was kind of a Thing... just don't pay
attention to what happens in render and you should be fine.
2020-04-21 19:42:21 -05:00
.gitignore add *.o to ignore 2020-04-11 21:33:47 -05:00
config.h add spawn and termcmd 2020-04-12 00:59:29 -05:00
dwl.c consistent naming for coordinate variables 2020-04-21 19:42:21 -05:00
LICENSE Start with tinywl 2020-04-11 17:27:19 -05:00
Makefile make Makefile a bit more my style 2020-04-11 20:17:20 -05:00
README.md Start with tinywl 2020-04-11 17:27:19 -05:00

dwl

This is the "minimum viable product" Wayland compositor based on wlroots. It aims to implement a Wayland compositor in the fewest lines of code possible, while still supporting a reasonable set of features. Reading this code is the best starting point for anyone looking to build their own Wayland compositor based on wlroots.

Building dwl

dwl is disconnected from the main wlroots build system, in order to make it easier to understand the build requirements for your own Wayland compositors. Simply install the dependencies:

  • wlroots
  • wayland-protocols

And run make.

Running dwl

You can run dwl with ./dwl. In an existing Wayland or X11 session, dwl will open a Wayland or X11 window respectively to act as a virtual display. You can then open Wayland windows by setting WAYLAND_DISPLAY to the value shown in the logs. You can also run ./dwl from a TTY.

In either case, you will likely want to specify -s [cmd] to run a command at startup, such as a terminal emulator. This will be necessary to start any new programs from within the compositor, as dwl does not support any custom keybindings. dwl supports the following keybindings:

  • Alt+Escape: Terminate the compositor
  • Alt+F1: Cycle between windows

Limitations

Notable omissions from dwl:

  • HiDPI support
  • Any kind of configuration, e.g. output layout
  • Any protocol other than xdg-shell (e.g. layer-shell, for panels/taskbars/etc; or Xwayland, for proxied X11 windows)
  • Optional protocols, e.g. screen capture, primary selection, virtual keyboard, etc. Most of these are plug-and-play with wlroots, but they're omitted for brevity.
  • Damage tracking, which tracks which parts of the screen are changing and minimizes redraws accordingly.