Other dwl 0.6 (dwm for wayland) for wlroots 0.17 is out

dwl the dynamic window manager for wayland (based on dwm) has some new release available

dwl version 0.6 is out and compatible with wlroots 0.17 in the Freebsd quarterly branch

dwl 0.7-rc1 is also out for wlroots 0.18 which is in the Freebsd latest branch

if you are running quarterly you want dwl version 0.6
and if you are running the latest branch you want dwl 0.7-rc1

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, primarily in terms of functionality, and secondarily in terms of philosophy. Like dwm, dwl is:

dwl has independent virtual desktops per display,
this mean if you switch workspace on your laptop it doesnt change the workspace on your external monitors

so for example if you have a video open on your external monitor
and you change workspaces on your laptop the video on the external monitor doesnt move

KDE has a an open bug report going back 20 years requesting separate virtual desktops per display
which it still doesnt support with KDE 6

KDE and labwc (wayland version of openbox) let you pin applications so they appear on all virtual desktops
either using rules or keyboard shortcuts, but that really doesnt work well compared to how dwl handles virtual desktops

i just downloaded dwl-v0.6.tar.gz and installed it on my Dell XPS 15 2019 running Freebsd 14.1 p2

dwl install on freebsd



dwl codeberg


dwl releases


dwl-v0.6


dwl-v0.7


dwl 0.6

Added

Add rootcolor to change the default background color (#544).
Implement the wlr-virtual-pointer-unstable-v1 protocol (#574).
Implement the pointer-constraints and relative-pointer protocols (#317)
Implement the wlr-output-power-management protocol (#599)

Changed

Keyboards are now managed through keyboard groups (#549).
Only the first matched keybinding is executed.
Allow toggling the layout before selecting a different one (#570).
Fullscreen clients are now rendered above wlr_layer_surfaces in the top layer
(#609).
The default menu was changed from bemenu-run to wmenu-run (#553).
The option sloppyfocus now replicates the dwm behavior (#599).
Allow configure position of monitors with negative values. (-1, -1) is
used to auto-configure them (#635).
dwl now kills the entire process group of startup_cmd
The O_NONBLOCK flag is set for stdout.

Removed

The SLOC limit is now removed (#497).

Fixed

Clients not having the correct border color when mapping.
Compliance with the xdg-decoration-unstable-v1 (#546).
dwl no longer sends negative values in xdg_toplevel.configure events.
Crashes with disabled monitors (#472).

dwl screenshot on my Dell XPS 15 2019 running Freebsd 14.1 p2 quarterly branch


20240725_19h50m02s_grim.png


top

Code:
79207 djwilcox      9  20    0   404M   128M select   0   2:08   0.05% dwl
 
I'm just going to mention, that when I worked in an office, as opposed to home, that was one reason I chose dwm (yeah, I know this about dwl, but..). I had 4 moderately sized monitors and with dwm, I could have a different tag on each monitor. If I used openbox, when I went to a different workspace on one monitor, all 4 would go there. But with dwm I could, for example, have a web browser on one monitor, several terminals on another, mail on a third, and irc, which we used for our chat, on the 4th.

Anyway, even if wayland isn't working for me right now with NVidia, I have another laptop with which I use it.
 
the pointer behavior has changed from dwl 0.5 to 0.6
before you could move your mouse over a window and it would give it focus

now you have to click on a window to give it focus

i hate that with a passion
leads to loads of problems typing in the wrong window

have to find out how to get the old pointer behavior back
 
With dwm, (so don't know if this is useful to you at all, but I'd assume it's the same) I can use Mod4 (my choice of mod key) and j or k to move to the next window. The focused window also shows in the title bar. So, I can either use the mouse (which you've already mentioned is the problem), or just do modkey+j or k, and you'll see your window mentioned on top. As you know, I don't have dwl working on this workstation, so can't yet test if that's the same.

For what it's worth, I found the maintainer to be *really* responsive. When I emailed him a question (which I shouldn't have had to ask, but I'm pretty dumb), he emailed me back with an answer the next day. And didn't even point out how unobservant I'd been. (I had missed the mention in the config file that if you use use dwm's MODKEY|ShiftMask in dwl, as stated in the config file, XK_UPPERCASE_SHORTCUT)

EDIT: I just booted my laptop and found that default dwl doesn't have that status bar at top that dwm has, at least not by default. So, my "advice" was useless, I apologize. But I seem to remember that you do use some sort of status bar with your dwl.
 
cheers i know about the keyboard shortcuts

the issue is you now have to click a window to give it focus
instead of the window getting focus when the mouse is over the window

you need to install the dwl bar

Code:
dwlb-s20240516                 Feature-complete bar for DWL
 
dwl 0.6 new sloppy focus makes dwl unusable with multi monitors


issue i raised on the dwl codeberg site

I just updated to dwl 0.6 from 0.5

"The option sloppyfocus now replicates the dwm behavior"

Which means you have to click on windows to focus them,
rather than having the window focused when the mouse is over the window

How do i get the old behavior back so windows are focused when the mouse is over the window

might be a good idea to have a note somewhere with the code to revert the sloppyfocus behavior
back to the old method which was far superior

This new click to focus is awful and means you have to constantly take your hands off the keyboard
to use the mouse to focus windows

This is especially annoying when you are warping the cursor between monitor using keyboard shortcuts

i use wlrctl to switch the cursor between monitors

wlrctl pointer move 1920

with the old behavior the window under the cursor would have focus
now i have to constantly take my hands off the keyboard and use the mouse to click just to focus the window

this is not efficient and has completely ruined dwl with multiple monitors

for a keyboard driven window manager
the sloppyfocus change that requires you to constantly use the mouse makes no sense at all

by all means have a click to focus option for focusing windows
but it should not be the default

this change is an absolute deal breaker for me and means i can no longer use dwl
with its current focus behavior

how do i change sloppyfocus so window are focused when the mouse is over them
and not have to use the mouse to click them

im going to have to login to labwc because dwl is unusable now
 
Are you sure you want to be so confrontational? I know it's not my business, but it is my idle thought that if you are doing something for free, and someone doesn't like part of it and wishes it changed, I'd be more inclined to do so if I were asked nicely.

Again it is NONE of my business, and I do realize that, so please excuse me if you think I'm trying to tell you how to do something that you know how to do. Ok, I'll shutup and try dwlb now. :)
 
your right, but the change in how window focusing is handled completely breaks dwl with multiple monitors
and there isnt an option for the user to change it

dwm never had click to focus for windows

not having windows auto focused and raised when the cursor is over them and having to click the windows
means its impossible to warp the cursor between monitors and have the window focused

so everytime i warp the cursor from my laptop to the external monitor and back again
i have to take my hands off the keyboard to click the mouse and select the window

otherwise i start typing thinking the window is selected and its not and i start typing something in another window
that makes my blood boil

heres how i run dwl with dwlb

Code:
exec dbus-launch --exit-with-session dwl -s 'dwlb -font "monospace:size=16"'
 
Update us, it sounds interesting too, though I'll probably stick to labwc and dwl when I use Wayland for now, especially as it's mostly just playing on laptops (both Linux and FreeBSD).
 
labwc is ok,
but it doesnt have independent virtual monitors per display

im just having a go at creating a river config
setting the keyboard layout, keyboard shortcuts


look like waybar might be the best bar for river

Code:
waybar-0.10.4                  Highly customizable Wayland bar for Sway and wlroots-based compositors
waybar-nopulse-0.10.4          Highly customizable Wayland bar for Sway and wlroots-based compositors
 
Found the fix for dwl

dwl.c

change line 606
from
Code:
case WLR_BUTTON_PRESSED:

to
Code:
case WL_POINTER_BUTTON_STATE_PRESSED:

change Line 627
from
Code:
case WLR_BUTTON_RELEASED:

to
Code:
case WL_POINTER_BUTTON_STATE_RELEASED:

returns the old focus behavior so windows get focus when the cursor is over them
 
tried river and waybar
no good

couldnt set the keyboard with xkb options or create shortcuts to open apps like emacs

waybar doesnt show the workspaces
 
I'm trying to figure out to get the date in dwlb. I can get it to display the date, but I haven't figured out how to get the equivalent of dwm's
Code:
while true; do xsetroot -name "$(date +"%R %F")";sleep 1m;done &
So the date stays static at whatever it was when I run date, then pipe it to dwlb -status-stdin all.
Is that one a simple fix?
I am hijacking your thread, so I apologize (but don't feel guilty enough to cancel my post).
Let me add that this isn't really important for me as the laptop is just for testing, and if it isn't something you know off the top of your head, then please don't spend effort on it.
 
i have only used dwlb installed as package using its default config
with displaying the time or date

looking at the dwlb github page it mentions using another program called someblocks
which isnt in the Freebsd repos so you have to compile it ( which is easy )

but i could never figure out how to run dwl, dwlb and someblocks


Someblocks

To use someblocks, or any program that outputs to stdout, with dwlb, use this one-liner:

Code:
someblocks -p | dwlb -status-stdin all
 
Back
Top