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