Compare commits

..

7 commits
v0.8 ... main

Author SHA1 Message Date
Diego Viola
a2d03cf618 Remove trailing whitespace from README 2026-03-02 02:13:43 +01:00
Diego Viola
cb4cc3ae8f Fix typos 2026-02-25 02:38:09 -03:00
thanatos
9b76ee8e90 Updated README to clarify branch roles
This change effectively reverts DWL to the prior development model, where development of DWL itself happens against the current wlroots release, and changes in anticipation of the next wlroots release are made on a separate branch.
2026-02-21 19:50:17 +01:00
thanatos
908a73da82 Corrected README 2026-02-21 16:53:19 +01:00
thanatos
227cdf0128 Added Matrix to README 2026-02-21 16:46:08 +01:00
Guido Cella
ca4123072d add support for the data control protocol
Enables the protocol documented at
https://wayland.app/protocols/ext-data-control-v1

It is the upstreamed version of the old wlr_data_control.

It is used e.g. by mpv to read and write the clipboard.
2026-02-12 01:47:40 +01:00
fauxmight
a8915224e8 Remove "unmaintained" notice from README
User @thanatos has offered to take on the lead developer role for dwl.
2026-02-09 08:06:25 +01:00
2 changed files with 18 additions and 19 deletions

View file

@ -1,15 +1,8 @@
# dwl - dwm for Wayland # dwl - dwm for Wayland
2025-08-16: Join us on our [Discord server]
dwl IS CURRENTLY UN-MAINTAINED. Or Matrix: [#dwl-official:matrix.org]
AT THE PRESENT TIME, I (@fauxmight) DO NOT HAVE Or on our IRC channel: [#dwl on Libera Chat]
THE TIME OR CAPACITY TO KEEP UP WITH [wlroots] CHANGES.
IF YOU ARE INTERESTED IN TAKING ON LEAD DEVELOPER RESPONSIBILITIES,
SEE ISSUE [#1166](https://codeberg.org/dwl/dwl/issues/1166).
---
Join us on our IRC channel: [#dwl on Libera Chat]
Or on the community-maintained [Discord server].
dwl is a compact, hackable compositor for [Wayland] based on [wlroots]. It is dwl is a compact, hackable compositor for [Wayland] based on [wlroots]. It is
intended to fill the same space in the Wayland world that [dwm] does in X11, intended to fill the same space in the Wayland world that [dwm] does in X11,
@ -31,11 +24,13 @@ with each release on the [release] page
### Development branch [main] ### Development branch [main]
Active development progresses on the `main` branch. The `main` branch is built Active development progresses on the `main` branch. The `main` branch is built
against a late (and often changing) git commit of wlroots. While the adventurous against the latest release of [wlroots]. PRs should target this branch unless they
are welcome to use `main`, it is a rocky road. Using `main` requires that the depend on functionality that is not in the current release of `wlroots`.
user be willing to chase git commits of wlroots. Testing development pull
requests may involve merging unmerged pull requests in [wlroots]' git repository ### Preview branch [wlroots-next]
and/or git commits of wayland. The `wlroots-next` branch is built against the git version of [wlroots], which
is unstable and changes frequently. PRs requiring functionality from the git
version of `wlroots` should target this branch.
### Building dwl ### Building dwl
dwl has the following dependencies: dwl has the following dependencies:
@ -210,6 +205,7 @@ inspiration, and to the various contributors to the project, including:
[dwl-patches]: https://codeberg.org/dwl/dwl-patches [dwl-patches]: https://codeberg.org/dwl/dwl-patches
[list of useful resources on our wiki]: https://codeberg.org/dwl/dwl/wiki/Home#migrating-from-x [list of useful resources on our wiki]: https://codeberg.org/dwl/dwl/wiki/Home#migrating-from-x
[main]: https://codeberg.org/dwl/dwl/src/branch/main [main]: https://codeberg.org/dwl/dwl/src/branch/main
[wlroots-next]: https://codeberg.org/dwl/dwl/src/branch/wlroots-next
[release]: https://codeberg.org/dwl/dwl/releases [release]: https://codeberg.org/dwl/dwl/releases
[runit]: http://smarden.org/runit/faq.html#userservices [runit]: http://smarden.org/runit/faq.html#userservices
[s6]: https://skarnet.org/software/s6/ [s6]: https://skarnet.org/software/s6/
@ -217,3 +213,4 @@ inspiration, and to the various contributors to the project, including:
[wiki]: https://codeberg.org/dwl/dwl/wiki/Home#compatible-status-bars [wiki]: https://codeberg.org/dwl/dwl/wiki/Home#compatible-status-bars
[Discord server]: https://discord.gg/jJxZnrGPWN [Discord server]: https://discord.gg/jJxZnrGPWN
[Wayland]: https://wayland.freedesktop.org/ [Wayland]: https://wayland.freedesktop.org/
[#dwl-official:matrix.org]: https://matrix.to/#/#dwl-official:matrix.org

8
dwl.c
View file

@ -24,6 +24,7 @@
#include <wlr/types/wlr_data_device.h> #include <wlr/types/wlr_data_device.h>
#include <wlr/types/wlr_drm.h> #include <wlr/types/wlr_drm.h>
#include <wlr/types/wlr_export_dmabuf_v1.h> #include <wlr/types/wlr_export_dmabuf_v1.h>
#include <wlr/types/wlr_ext_data_control_v1.h>
#include <wlr/types/wlr_fractional_scale_v1.h> #include <wlr/types/wlr_fractional_scale_v1.h>
#include <wlr/types/wlr_gamma_control_v1.h> #include <wlr/types/wlr_gamma_control_v1.h>
#include <wlr/types/wlr_idle_inhibit_v1.h> #include <wlr/types/wlr_idle_inhibit_v1.h>
@ -585,7 +586,7 @@ arrangelayers(Monitor *m)
arrange(m); arrange(m);
} }
/* Arrange non-exlusive surfaces from top->bottom */ /* Arrange non-exclusive surfaces from top->bottom */
for (i = 3; i >= 0; i--) for (i = 3; i >= 0; i--)
arrangelayer(m, &m->layers[i], &usable_area, 0); arrangelayer(m, &m->layers[i], &usable_area, 0);
@ -2133,7 +2134,7 @@ powermgrsetmode(struct wl_listener *listener, void *data)
if (!m) if (!m)
return; return;
m->gamma_lut_changed = 1; /* Reapply gamma LUT when re-enabling the ouput */ m->gamma_lut_changed = 1; /* Reapply gamma LUT when re-enabling the output */
wlr_output_state_set_enabled(&state, event->mode); wlr_output_state_set_enabled(&state, event->mode);
wlr_output_commit_state(m->wlr_output, &state); wlr_output_commit_state(m->wlr_output, &state);
@ -2455,7 +2456,7 @@ setup(void)
wlr_log_init(log_level, NULL); wlr_log_init(log_level, NULL);
/* The Wayland display is managed by libwayland. It handles accepting /* The Wayland display is managed by libwayland. It handles accepting
* clients from the Unix socket, manging Wayland globals, and so on. */ * clients from the Unix socket, managing Wayland globals, and so on. */
dpy = wl_display_create(); dpy = wl_display_create();
event_loop = wl_display_get_event_loop(dpy); event_loop = wl_display_get_event_loop(dpy);
@ -2518,6 +2519,7 @@ setup(void)
wlr_export_dmabuf_manager_v1_create(dpy); wlr_export_dmabuf_manager_v1_create(dpy);
wlr_screencopy_manager_v1_create(dpy); wlr_screencopy_manager_v1_create(dpy);
wlr_data_control_manager_v1_create(dpy); wlr_data_control_manager_v1_create(dpy);
wlr_ext_data_control_manager_v1_create(dpy, 1);
wlr_primary_selection_v1_device_manager_create(dpy); wlr_primary_selection_v1_device_manager_create(dpy);
wlr_viewporter_create(dpy); wlr_viewporter_create(dpy);
wlr_single_pixel_buffer_manager_v1_create(dpy); wlr_single_pixel_buffer_manager_v1_create(dpy);