[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)