[HN Gopher] dwm ___________________________________________________________________ dwm Author : tosh Score : 51 points Date : 2022-01-14 21:06 UTC (1 hours ago) (HTM) web link (dwm.suckless.org) (TXT) w3m dump (dwm.suckless.org) | johnnyApplePRNG wrote: | Kind of like ratpoison with a mouse? [0] | | [0] https://www.nongnu.org/ratpoison/ | jchassoul wrote: | just use bspwm! | alfiedotwtf wrote: | Came here to say this. Bspwm is like Emacs - it's the basis to | make _your own_ window manager however you want it! | | I think I'll forever be on bspwm <3 | argc wrote: | Definitely, I use bspwm for my work computer and its great. | kriops wrote: | dwm is not my daily driver, but it's incredibly easy to be | productive with the default config - it's my go-to on my distro | of choice (Fedora) on machines that aren't both mine and | intended for long-term use. | | bspwm is somewhat more painful to install and configure in my | experience (though also great once it's set up), and afaik it | does not have an easy config for the right-side window stack | that is a key selling point of dwm to me. | mcbuilder wrote: | I would say you use DWM for the suckless philosophy of it at | this point, but it is historically important as one of the | major early tiling window managers during this current wave | that starting around the late naugties. deserves some | recognition. It a bit later that bspwm was written, and now it | has gained some traction in the "ricing" community. DWM was | sort of a default choice for the minimal tiling WM. However, it | wasn't for me, I used Subtle for its features and than XMonad | for the Haskell experience. | | Now I've actually settled into enjoying EXWM the most, feels | very natural to have everything to at least appear to be inside | emacs. My point is that there is no right tiling window | manager. | CyberRabbi wrote: | > Because dwm is customized through editing its source code, it's | pointless to make binary packages of it. This keeps its userbase | small and elitist. | | This is the zen of suckless. Unlike other projects that | desperately reach for users anywhere they can get them and then | suffer the resulting bloat, suckless knows exactly who they are | building for. | | It's a tough thing to swallow but embracing the opposite of the | suckless zen is probably a large part of why modern software is | so bad. The more we try to pretend it should be possible for all | people to program or use computers in general, the worse software | becomes. | akkartik wrote: | There are options between those opposites, though. Here's my | preferred point[1] in the space of possibilities: | | It's impossible for all people to effectively use software over | the long term _without learning about its internals._ Software | can help people learn about its internals. | | [1] https://github.com/akkartik/teliva#readme | woodruffw wrote: | Elitist (and not elite) is correct: my experience as an | observer in the *nix "ricing" community is that there's a weak | negative correlation between obsessive suckless tool use and | programming competency. "Fetishistic" users are over- | represented in suckless's userbase. | | Source: dmenu user. | badsectoracula wrote: | > there's a weak negative correlation between obsessive | suckless tool use and programming competency | | So basically what you're trying to say is that the people who | use suckless tools are incompetent programmers? | fouric wrote: | > embracing the opposite of the suckless zen is probably a | large part of why modern software is so bad | | Yes, so don't embrace the opposite of suckless - shoot for a | nice middle-ground. | | The suckless philosophy is antithetical to the _purpose of | computers_ , which is as time-saving, labor-saving, | collaborative automation devices. Here's what I wrote on | Lobsters: | | --------------------------------- | | Unfortunately, the suckless philosophy leads to software that | doesn't do what software is meant to do - alleviate human work | by making the machine do it instead. The suckless philosophy of | "simplicity" translates to "simplistic software that doesn't do | what you would need it to do, so either you waste time re- | implementing features that other people have already written | (or would have written), or you do the task by hand instead". | | If, when required to choose exactly one of "change the software | to reduce user effort" and "make the code prettier", you | consistently choose the latter, you're probably not a software | engineer - you're an artist, making beautiful code art, for | viewing purposes only. You definitely aren't writing programs | for other people to use, whether you think you are or not. | | This philosophy (and the results) are why I switched away from | dmenu to rofi - because rofi provided effort-saving features | that were valuable to me out-of-the-box, while dmenu did not. | (I used dmenu for probably a year - but it only took me a few | minutes with rofi to realize its value and switch) rofi is more | valuable as a tool, as a effort-saving device, than dmenu is, | or ever will be. | | In other words - the suckless philosophy, when followed, | actively makes computers less useful as tools (because, among | other things, computers are communication and collaboration | devices, and the suckless philosophy excludes large | collaborative projects that meet the needs of many users). This | is fine if your purpose is to make art, or to only fulfill your | own needs - just make sure that you clearly state to other | potential users that your software is not meant for them to | make use of. | | Also note that the most-used (and useful) tools follow exactly | the opposite of the suckless philosophy - Firefox, Chromium, | Windows, Libreoffice, Emacs, VSCode, Syncthing, qmk, fish, gcc, | llvm, rustc/cargo, Blender, Krita, GIMP, Audacity, OBS, VLC, | KiCad, JetBrains stuff, and more - not just the ones that are | easy to use, but also ones that are hard to use (Emacs, VSCode, | Audacity, Blender, JetBrains) but meet everyone's needs, and | are extensible by themselves (as opposed to requiring | integration with other simple CLI programs). | | There's a reason for this - these programs are more useful to | more people than anything suckless-like (or built using the | Unix philosophy, which shares many of the same weaknesses). So, | if you're writing software exclusively for yourself, suckless | is great - but if you're writing software for other people | (either as an open-source project, or as a commercial tool), it | sucks. | | To top it off, people writing open-source software using the | suckless philosophy aren't contributing to non-suckless | projects that are useful to other people - so the rest of the | open-source community loses out, too. | foxfluff wrote: | There's a middle ground though. | | I think most people would consider OpenBSD for instance to be | "small." It comes packed full of tools, many of which you might | never use. Many things come with "user friendly" config | formats. I don't think anyone in their right mind would call it | bloated (as far as reasonably modern unixalikes are concerned), | but it's also far from being so minimalistic as to require you | to configure things at source level. | | And in OpenBSD, you find this window manager called cwm. It's | not exactly comparable; hardcore dwm users would no doubt be | very disappointed with it. However, I use both WMs and both | suck & are good in their own ways. cwm has a config format and | you don't need a compiler and the entire toolchain to be able | to configure it. On the other hand, you don't have all the | useful patches people have made for dwm over the years. cwm is | small, and not bloated. | sascha_sl wrote: | userbases ideally drive investment into software too | | the scope of suckless software will always be rather limited. | one of the reasons their distro failed. but judging by how | their elitism is not just tongue in cheek, most of them likely | run LFS anyway. they seem like the kind of people that look at | gentoo and decide that's not enough micromanagement for them. | kjeetgill wrote: | > The more we try to pretend it should be possible for all | people to program or use computers in general, the worse | software becomes. | | I was 100% with you until that last sentence. For me, it's just | an important reminder that software isn't just a commercial | endeavor, or just a job, but can be artistry, hobby, and tool. | And that each of those are vibrant enough to support and serve | their own overlapping communities. | | I definitely miss the heart and aesthetics of software some | days, so I get the cynism! | | Signed - dmenu fan | ziggus wrote: | Before you even ask: yes, there's a port for Wayland: | https://github.com/djpohly/dwl | fouric wrote: | > In contrast to ion, larswm, and wmii [...] dwm has no Lua | integration, no 9P support, no shell-based configuration, no | remote control, and comes without any additional tools, such as | for printing the selection or warping the mouse | | Holy cow, some of these features seem really useful. I should | look at some of those other window managers! | | > customized through editing its source code | | Yikes, this is a very bad idea. This kind of customization is | very hard to split off from the tool, share, version-control, and | verify. Customization in a full, general-purpose imperative | programming language is also a bad idea. Either make the tool a | platform (Emacs) or use a declarative configuration language. | | > Because dwm is customized through editing its source code, it's | pointless to make binary packages of it. This keeps its userbase | small and elitist. | | Suckless tools are developed for the needs (and the benefit) of | their own developers, and nobody else. Remember that. | jovial_cavalier wrote: | >Suckless tools are developed for the needs (and the benefit) | of their own developers, and nobody else. Remember that. | | Another way of putting it is: if you can use it, you become a | suckless developer :) | fouric wrote: | Another way of putting _that_ is "you are required to become | a developer in order to use the tool." Great for developer | community, but not great for the average user (or even the | above-average user - say, 98th percentile) who wants to use | computers for the purpose for which they were intended (and | are amazing at) - labor-saving devices. | | If your goal is to make software that artificially requires | others to invest a lot of needless time and effort in order | to use it, or if you like creating beautiful pieces of code- | art then suckless is for you. | | If your goal is to build software that saves other humans | time and effort, the suckless philosophy is absolutely the | opposite thing of what you want[1]. | | [1] https://news.ycombinator.com/item?id=29941395 | [deleted] | micahcc wrote: | I cycled through dwm at one point. The thing that killed me was | that on my nvidia machine, for some reason it would flash when I | changed desktops, like the draw order was wrong. i3 is the only | tiling window manager that didn't, I think because it uses xcb | instead of xlib. | | I love the magical bullshit in the description. Each line | contains some face palm. | | > dwm doesn't distinguish between layers: there is no floating or | tiled layer. Whether or not the clients of currently selected | tag(s) are in tiled layout, you can rearrange them on the fly. | Popup and fixed-size windows are always floating, however. | | Ok so it does have floating then? | | > Because dwm is customized through editing its source code, it's | pointless to make binary packages of it. This keeps its userbase | small and elitist. No novices asking stupid questions. There are | some distributions that provide binary packages though. | | Ok so you can package then....? | | > dwm is only a single binary, and its source code is intended to | never exceed 2000 SLOC. | | Strange flex but ok. | | > dwm has no Lua integration, no 9P support, no shell-based | configuration, no remote control, and comes without any | additional tools, such as for printing the selection or warping | the mouse. | | It uses x, x warps the mouse. | | > dwm is customized through editing its source code, which makes | it extremely fast and secure - it does not process any input data | which isn't known at compile time, except window titles and | status text read from the root window's name. | | ok so there is input that could hacked (not saying there IS, but | if you process strings or floats from the user those can contain | unexpected values). | | All that said, suckless tools are nice, just think the mindset is | hilarious. | jovial_cavalier wrote: | To package it would defeat the point. | | The point is that the software that you're using to manage your | computer is simple enough that you can read all of it and | understand it -- not that you have to, but you could. | | The official method for "extensions" to DWM is in the form of | Git patches (https://dwm.suckless.org/patches/). You apply the | patch and re-compile. If you had dwm through your package | manager, you wouldn't be able to apply any patches, because you | would just have the binary. | | >Ok so it does have floating then? | | What's meant by the quoted text is that you can cycle through | _all_ windows on your current workspace, including the floating | ones, using only your keyboard. Yes, it does have floating. | | edit: I should also say, the real power move for me is that I | can just fork the dwm git repo on github, and have my exact | desktop configuration available to me 24/7 from anywhere, and I | can deploy it on a potato. | racingmars wrote: | I've used dwm as my window manager for a couple years now, after | switching from i3, and have never looked back (i3 was fine, but | it had a bug that was affecting me too often--I don't even | remember what now). | | For me, the killer feature (aside from tiling vs overlapping) is | that on my three monitors, I can switch virtual desktops | _independently_ on each monitor. After being able to do this, I | don 't understand why every window manager doesn't offer this. | It's not uncommon with tiling WMs that have good multi-monitor | support, but you really can't find it in traditional WMs. There's | an unmaintained patch of openbox--openbox-multihead--that added | the feature, and there's an "experimental" hybrid window manager | written in Go (by the same author of the openbox patch), but no | mainstream window managers appear to have the feature. Apparently | it goes against a requirement/assumption in the EWMH spec and | breaks existing pagers. But that's okay, because I don't use a | pager. | | Anyway, it really is critical to how I work now. I can keep a set | of windows on my right monitor, and flip between virtual desktops | on my center monitor without the right monitor changing at all. | (And no, using the "sticky" feature of other WMs doesn't work for | me because sometimes I do want to flip to a different virtual | desktop on the right monitor and have that set of windows for | whatever context I'm switching to). Along the same lines, the | pertag patch is part of making dwm the perfect windows manager | for me. | | (If you're interested in the particular set of patches I use and | my config, I maintain it at https://github.com/racingmars/dwm) | linkdd wrote: | > It's not uncommon with tiling WMs that have good multi- | monitor support, but you really can't find it in traditional | WMs | | That's because this feature is not a Freedesktop standard. The | X11 root window have a property _NET_NUMBER_OF_DESKTOPS and a | few more[0] to help implement this behavior. | | Most tiling WMs choose to ignore this standard in favor of this | great feature. But the WMs of Gnome, Xfce, KDE, etc... will | probably never implement it just in case some apps don't | support it (like some games that needs to be floating windows | in tiling WMs). [0] - | https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html | badsectoracula wrote: | Freedesktop isn't specifying standards, it just puts out some | specs to help interoperability where that is desired but not | all specs are expected to be followed and really anyone can | propose new specs. It is even in their site: | | https://www.freedesktop.org/wiki/Specifications/ | | > freedesktop.org produces specifications for | interoperability, but we are not an official standards body. | There is no requirement for projects to implement all of | these specifications, nor certification. | | Freedesktop doesn't have any sort of authority, while it does | provide some useful specs (e.g. the .desktop files are in | general useful), not everything they do is like that. | | The reason that this isn't found in floating WMs is simply | that the developers of those WMs didn't found it useful to | implement it, not because of Freedesktop (which BTW could | update EWMH to include such a thing, it isn't like it has to | be written in stone). | ghostpepper wrote: | I use both i3 (actually Sway) and MacOS on a daily basis and | they both support this feature. I agree I could not live | without it. | | I have never used dwm seriously, but as far as I can tell the | main feature it offers over i3 is tagging. I don't really | understand how this meaningfully changes the day to day | workflow, and I'd love to hear what you consider to be the | advantages. | sbysb wrote: | This is something I have come to realize I unconsciously have | gotten very dependent on - MacOS let's you swap virtual | desktops for the monitor you are currently focused on without | swapping any of the others. I never realized how intuitive this | is until switching back to my XFCE linux installation and | getting very frustrated with virtual desktops entirely. I might | have to give dwm a try again on my linux machine if it supports | this. | racingmars wrote: | Yes! Before I went all-in on desktop Linux, I was a Mac user, | and MacOS definitely got virtual desktops exactly right in | this regard. | HellsMaddy wrote: | What's a pager in the context of a window manager? I'm aware of | CLI pagers like less but I've never heard the term used with | WMs. | racingmars wrote: | It's the little desktop "preview boxes," I guess you'd call | them, that you can click on to switch between virtual | desktops. Usually running in the taskbar in most desktop | environments. | skulk wrote: | The zen of dwm is endlessly browsing this list of patches and | eventually adding so many that any new patches cause merge errors | that take a long time to untangle: | https://dwm.suckless.org/patches/ | Lingunixtix wrote: | Dwm has inspired many users to exercise freedom 1 with own | modifications (patches), forks and rewrites in other languages: | for instance Xmonad, awesome, and even a Microsoft Windows port. | And adaptions for emacs, too. Of course. Hell, even for vim! :o ___________________________________________________________________ (page generated 2022-01-14 23:00 UTC)