I think patches have 3 approaches. First is use none because they are all bloat. Second is use the least possible. Finally the approach like uses. Apply as many as possible without breaking anything.
@Donald Mickunas Bloat is unnecessary things. What you define as necessary is why there is confusion. I'd say that obviously, the core functionality of the program is necessary. Additional functions can be see as the core functionality of a program, so I'd say they are also necessary. However, core functionality can be implemented in many different ways, and this, imo, is the main source of bloat. Unbloated software, imo, is thus impossible to achieve, just as it is impossible for software to not have bugs. There are only less and more bloated software, just as there are only less and more buggy software. These things must be balanced with ease of use and speed of execution. So, we have bloat, bugs, ease of use, and speed of execution. A perfect balance between all of these will never be achieved, and some users prioritize some things over others.
it is less than 2000 LOC lmao and it was promised it will always be. it takes nothing to compile and you can read it all in an afternoon brilliant software
Luke is going from one extreme to the other. Suckless is neat as a mental exercise and it is good in reminding us that sometimes one can accomplish less with more (think dmenu or tabbed), but maintaining your own fork just for configuration is dumb. BSPWM (Unix way) and StumpWM (Lisp way) a proper hackable window managers. The big issue is not editing config.h, that's really no different from a regular config file, just more work for the user and less for the developer. The real problem is that when you want to add a feature you have to import a patch. Patches grow stale and can conflict with one another. Each patch you add makes it harder to keep up with upstream and weakens the source code integrity. The last thing you want is for your terminal to become a security risk because you wanted scrollback in it. Software written in C is simply not meant to be hackable. BSPWM is a hackable window manager in the Unix way. Your configuration file is an arbitrary executable, from within which you call the bspc program to set up the editor. It can be written in anything, but shell script is probably the most reasonable choice. You get all of the shell's scripting features like if-conditionals or loops. What's more, you can also call bspc at runtime to configure the window manager while it is running. OK, that's nice, but can we also add new features to BSPWM? Yes, we can: the bspc subscribe command prints events from the window manager to standard output, we can then pipe this output into another program which then calls bspc again to affect the window manager. We can use bspc query to get information about the current state of the window manager. Putting all these together, I added a new feature recently: when there is only one window on a desktop I find it distracting to have its border highlighted. So I took the output of bspc subscribe, piped it into an Awk script, within the script I use bspc query to find out the number of nodes when certain events happen, and then I use bspc config to change the active border colour. It's six lines of Awk, much simpler and safer than messing with the source code. StumpWM is written in Common Lisp, so you can alter its source code live as it is running, unlike C which is completely static. You can connect you REPL to a running instance, poke around and hook up to events provided by its API. If you want to use hackable software, use software written in a hackable language.
yeah idk how luke has been using dwm without running into patch conflicts. they're not a big deal if you know C, since suckless' source code is categorically well written and easy to understand, but it is something you have to deal with when every update might require you to modify a bunch of C code.
in that way, qtile is very hackable as well, but the python way. Good reasoning about code getting stale and merging upstream back, really puts words to my feelings
@@anonanon9634 but "time is money" doesn't forbid you from participating in leisure activities does it? I do agree with you but if you enjoy customising new and different things then why not. Just to be clear I am not saying you're wrong I'm just showing another point of view.
I remember times when Luke did not want to try out dwm. I mailed him about it but he did not respond. I asked him to try it out on livestream, he said no. Glad now he is using it
@BronzeKaiser have you seen his script directory? A while slew of things in there that are impossible to implement on Wayland by design. "samedir" for example.
I think this is more of an argument for Free Software rather than suckless per se. An individual sufficiently proficient in C could patch bspwm just as easily as they can dwm.
Sure, but as he said the .h file is meant to be read/modified as a config file, which is different and removes a need for parsing. The argument wasn't "you've got the code, do whatever you want"
@@douwehuysmans5959 Glad someone else thinks that. By the time you've read, re-read, digested and mused bspc and its million options, you could have dwm set up the way you want, probably ten times over.
dwm is definitely easier to patch than the alternatives. whether or not this is a point in dwm's favor largely depends on whether you prefer the idea of patching C code vs. modifying behavior through external scripts vs. just having a bunch of options in the config file.
@@user-lk2vo8fo2q "Suckless" software is a fallacy. The software does not "suck less" than something else purely because it is small and "unbloated". IMO, users should not have to modify the source code in order to change options in the software. This is a huge barrier to another thing that people like from their software, Ease of Use. IMO, the way this should be done is to have a simple config file to enable options, and all optional parts of code should be separated out into shared object files which can be dynamically loaded at runtime based on the config file. Thus, if you don't need or want an option, you just don't use it and don't put it on your machine. This leaves you with an unbloated software with all the ease of use of many of the "bloated" softwares. Btw, "suckless" requires you to have a C compiler installed as well, so add that to your bloat.
"Bspwm is pretty good" - And hangs on 2080Ti, on Threadrippers, on x399 platforms, on RAIDed NVMe, and basically on everything that is not i5 with spinning rust. Out of 3 PC and 1 laptop - only laptop worked. Regarding instability, it's second only to QubesOS as whole - that doesnt even recognize RAM correctly if is 64GB quad channel
@@jonathanhirschbaum6754 I am not quite sure that I have experienced the instabilities that you just mentioned with Bspwm. So far I have found it works flawlessly on 3/3 of the devices I have chosen to install it on (of varying hardware). No issues at all. Personally I have found it strikes the perfect balance for my needs. However, that being said, you use whatever works best for you. I love that there is a DE / WM out there for everyone. :)
Luke says: "There's certain point where you can not modify it anymore, you can't ummm... you know there are so many things there are in their config file" What are those things? I was expecting the examples. I have never reached a moment in where i3 didn't allow me to do what I wanted to do... maybe my imagination is too short. I handle the screen bright from the i3bar with my mouse wheel or a key shortcut, I manage the bluetooth with keystrokes, the system updates from my i3bar as well..... I need to know what is there that I can not do. Well, okay, I don't use gaps, I use regular i3. I don't need nor want gaps. Maybe that's the source of all problems, not having enough features for gaps? :P I don't know. I am totally not convinced, needed real good examples, got none.
gaps is a superset of i3 that adds some additional (unnecessary imo) features, so it's definitely not that. i think the main complaint people have with i3 vs. dwm is that how windows are displayed is pretty rigid. every window in i3 is tied to a particular position in a particular desktop. whereas with dwm windows are more abstract and you can do things like have the same window appear on multiple desktops or dynamically change the way the windows are tiled (without actually changing their place in the abstract window tree). i use i3 currently, but i'm thinking about switching to something else because i don't like having to manually choose where a new program window is going to appear. dwm is more like a stack where when you launch a new program it appears in the "main" window spot (what exactly that means depends on what layout rules you have active at the time) and then you control where the window is displayed by moving it up or down in the stack.
@@anonanon9634 yeah that's a very handy feature. i was talking about something different though. in dwm windows aren't tied to any particular desktop. they exist in an abstract tree and are displayed based on how they're tagged and which window display rules you have set, including the possibility of being displayed on multiple desktops at once.
I know you didn't axe me but, I thought I'd share my experience. The point at which you can't modify it any more is the point where patch conflicts become unresolvable. And that happens relatively quickly depending upon the patches you need and the order in which they are applied. In my case, I got center, fakefullscreen, noborder and then the conflicts began. Scratchpad, dwmc, pertag, xrdb, vanitygaps, swallow, dracula, restartsig all had to be massively reworked after applying the patch (in many case by hand because the diffs are garbage and not well maintained against the current master) to the origin/master and then merging into my own branch. You need to do it this way so you can keep orgin/master clean because any future changes in origin and you'll have to rebase (basically a patch of all your working patches). Its a pain in the peehole getting the workflow down but outside of having to apply crap patches (which should make the patcher ashamed) patching is easy upto the point where your knowledge of c limits your ability to resolve conflicts. And all this just you do a thing that other window managers ALREADY DO! And in most case better. Don't get me wrong, dwm is a fun little tinker toy for precocious newbs but you'd be better of at tty with screen than with dwm. But beyond just using dwm as a learning experience there is no case to be made for using it daily. It is just garbage. fvwm (lol) is better, 2bwm ratpoison all better
Since your video on bspwm, I have been using it. And imo it's one of the few WMs that truly follow the Unix philosophy(ie do one thing and one thing only). The entire bspwm can be configured from terminal, it's also very minimal and works really well out of the box
Even for using hotkey you need an external program, plus writing scripts can be in any language, so If you like C use C, you like python use python, if you like bash(or Posix shell ) write in that. Ultimately following the Unix philosophy at its core. Brilliant
I would gladly use something like bspwm if it came with dwm-style tiling. Tiling based on splits like in i3 or bspwm just always felt extremely clunky to me. I'm sure with some scripting magic it could be emulated but that would just be too much of a hack imo.
bspwm > dwm dont @ me E: To clarify, dwm has an arbitrary LOC length (even though that's basically meaningless because I've seen 3k LOC run faster than 1k LOC) while also being a wm...and a taskbar...and a hotkey daemon.
I also use bspwm, mainly because dwm's gaps were uneven (even literally just copying Luke's build) and I don't really like the tree structure or w/e. bspwm runs a shell script at start and that's it. I'm cool with bspwm+sxhkd+an external status bar. Plus, hell dwm needs a dozen patches in order to get basic features. I don't hate dwm, but it's not for me.
@@bograham6221 gaps are kind of pointless IMO. I don't use gaps. I keep my build pretty vanilla tbh, besides a few extra tiling modes, my preferred keybinds, and mouse warping. It's pretty usable to me, I don't know what else you need. But that just probably goes to illustrate luke's point. Some people may prefer to make it look fancy or give it gaps, I just want something functional that lets me get my work done the way I want to. Also, you could easily remove dwm's status bar and keybinds and opt for sxhkd + an external status bar anyway. Also, the way that dwm manages tags and monitors is really unmatched IMO. You can select multiple tags, group a single window to multiple tags, or any combination thereof. Plus you get an extra set of tags with each monitor, and each monitor can also be in a different tiling mode.
Nice! DWM sounds Awesome! I also think learning C can be really useful for performance enthusiast users. You can code at a lower level, modify Linux even more deeply, and have an easier time learning other languages since so many are "inspired" by C because of their similarities. There's also Game Dev libraries too! ❤️
When you apply patches that weren't necessarily designed to work together you will end up with badly designed software. There's no way around it. That is why people collaborate in open source projects. You may end up with a more or less bloated software but it will definitely be better designed.
@@AZEMBadlen I think karb94 point is that it is more than a flaw. This approach is fundamentally broken. It is great if you can make it work for you, but it will turn into a mess long term. There is a very good reason software development practices have tended towards separating configuration and code. Mixing the two is a seductive anti-pattern.
This. To get tabbed to work the way I wanted, I had to apply 3 or 4 patches, and manually resolve conflicts between them -- literally editing lines of C code, which is too autistic even by my standards. So now I have to keep the patched source code backed up somewhere so I don't have to go through the same process next time.
I guess, if you want this kind of config, then you really need to work with the devs to add the features you want. But, you can separate out those features into shared object files, and dynamically load that code (feature) by editing config files. I don't know why, but I feel like this could be "bloated" in some way too.
oh wow I just 1) found out about Sway, and 2) found out how easy it is to manage 2 monitors: wiki.archlinux.org/index.php/Xrandr#Manage_2-monitors & github.com/Ventto/mons#examples thanks for the comment kind stranger^^
I was doing too much things on my xfce4 and then I just started to use dwm and no complain about my wm anymore. Its beatiful, its good for work and pretty lightweight.
@@cstrovn Yes, but is better to compile first with "make" and then do "sudo make install". Compiling as root can lead to weird situations and is better avoided. For example, suckless programs will generate a config.h if is not present, that config.h will be owned by root and annoy you later on.
@@cstrovn in Lukes build yes, but if you grab dwm from github you will need to make your changes in config.def.h (for Luke uses config.h which is not ideal) or make changes to Make file so that make works properly. In my case I change make file so that "make clean" removes compiler leftovers and config.h. Do this because changes are made to config.def.h as to keep patching simple since most patche diffs are against config.def.h and not config.h. Makes no sense to nuke config.def.h and keep config.h....m,ust be bloat. LOL
I feel like this would have been a little more of an effective PSA if you made a follow up video addressing the patches you like to apply and comparing some of the "WAY BETTER FEATURES" instead of just showing the website. Just a thought.
Ah I see you're using DWM, I use KDE myself. I know these tiling window mangers are supposed to be better, but you know what they say. Old habits, they die hard.
woot woot.. switched from i3 to dwm on my personal machine two days ago.. switched on my work machine today.. stoked.. many thanks to our intrepid unix explorer Luke.. Sincere thanks
You can patch all the WMs around for the features you need. I3-gaps is a fork of i3. DWM makes it easier to modularize the features you need, but it is like artisan work. May work for some who have the time and willingness to try. It is like scrapbooking for computer nerds.
First time seeing Luke's keyboard, though I haven't actively looked for it before. As somone who is really passionate about config management, I highly recommend checking out a 40% keyboard like a planck. There's a lot of efficiency to be gained by having all the keys within reach of your fingers, not moving from the home row position.
Tried dwm a bit it look good but the config file is a bit too hard to understand, I don't even know how to edit a keybinding. i3 is for WM what GNOME is for DE, you can't recommand dwm to everyone.
It's kinda funny that dwm has those kinds of limitations (like 2000 SLOC etc.) while being designed to work under X11 which is arguably one of the most bloated parts of Linux. Time to go Wayland.
i use awm. it's dwm with a bunch of lua scripts on top of it and i like it that way. maybe i'll plunge myself into the dwm meme one day, but i'm good for now
About the first point: "source code is the config file" is definitely nice, but next level on that is the whole Lisp based Emacs paradigm, and WMs like Stumpwm. I mean they used the same idea for space missions to modify the running code for a satellite. Here's the story: "An impressive instance of remote debugging occurred on NASA’s 1998 Deep Space 1 mission. A half year after the space craft launched, a bit of Lisp code was going to control the spacecraft for two days while conducting a sequence of experiments. Unfortunately, a subtle race condition in the code had escaped detection during ground testing and was already in space. When the bug manifested in the wild-100 million miles away from Earth-the team was able to diagnose and fix the running code, allowing the experiments to complete." Same goes for your WM, or your Editor.
After i3 I tried dwm for a year, it was OK but organizing patches is a pain in the ass. Then there where the conflicting patches which sometimes where easy to solve, and sometimes not so easy (Some patches where not updated for the latest dwm etc). In the end I gave up on it when I wanted dwm to do something (can't remember what it was) but could not get it done without substantial changes to its source code which I could not be bothered with. Then I fell in love with bspwm. The fact that you customize it with shell scripting felt a lot more unixy to me. Also the fact that it does one thing and one thing well (no status-bar or keyboard inputs). bspwm is extremely configurable, and I can't think of anything that dwm can do that bspwm can't. And even if there was, just do what you do with dwm and edit the bspwm source code (I really doubt you'll ever need to). For once I think I'm ahead of the curve and bspwm will become the new cool.
What is your dual screen setup for dwm? I'm having trouble setting it up similar to my previous bspwm build where my laptop had all the desktops and main bar, and I used the second screen as a desktop that kept all the windows present as i switched desktops. On dwm, it's treating each tag as a full desktop with different size screens. It doesn't treat the external monitor as a separate desktop. I've tried several xrandr configurations but no luck any suggestion on mimicking the bspwm behavior on dwm? I believe you had a similar bspwm setup.
> considers simple, portable config files "bloat" , muh minimalism > has to git clone, vim edit, make install for minuscule of changes for terminal, window manager, etc > meanwhile package manager has been eternally btfo cause of wandering binaries spitted out by random make installs > muh "spend time to make your setup efficient" (yet switches tools faster than the "brrrr machine") But I like your videos Luke, keep up the good work 😜. Please consider making a video on pdf annotation on linux (Zathura can't do it) and what do you use for managing research papers and ref. management? What do you think of Zotero?
"cause of wandering binaries spitted out by random make installs" You can change (or find out) the path in a Makefile, more often than not it'll be somewhere in /usr/local
I guess it would be pretty easy to hook a package build and install script into the general recompile workflow if you really want the package manager to be aware of suckless stuff.
> Editing source variables less bloated than parsing config files > You don't have to git clone every time wtf > Install directories located in make file > You dont have to do that/no one forced you to do that
You gotta admit, A lot of patches you want get merge conflicts you might fail to resolve. St's ligatures patch is not compatible with scrollback and boxdraw, for instance.
What I am wondering, what happens with your highly configured source base, if there is an update/patch to dem? It would overwrite all customization wouldn't kt?
I doubt it would overwrite the config you would have to go and download the new version and try to patch it to be like your current config at least i would guess
Good arguments. But what about updating? If a new version of the baseline or the patches comes along, how hard is it to update? I imagine it is not as convenient and transparent as pacman -Syu. Can anyone with experience please elaborate on that?
Luke, can you do a video on the vis text editor? What are your thoughts on it? Would you prefer it as a more minimalist alternative to vim given that it doesn't have a built in file manager?
I'm very happy with bspwm. The bspc interface makes adding features very easy, and it doesn't require recompiling or patches. Simple scripts can do the job. (Yes I know its not as extensible as dwm technically, but I have yet to run into a situation where I couldn't make something work using bspc)
The only thing keeping me from dwm is that in some games, cs:go being one them, I get 10% less FPS. I don't know why, the window manager should not matter, I am pretty sure it has to do with monocle, fakefullscreen, or maybe some other patch. I should try vanilla dwm. Bspwm has such sane default configs that it keeps me from customizing. Where as my dwm build was actually really nice, with a lot of work put into the look and feel.
Just switched from from dwm on Arch to Gnome on Fedora. Finally it's time to build actual software, instead of fiddling around with my dots all the goddamn time
I used to be dwm guy but now I've moved to i3 for sake of simplicity and it works out of the box for me. All I do is just tweak a little things here and there (usually keybindings). Guess it all comes down to that, mod-ability vs simplicity and I went with the latter.
@@GreyDeathVaccine I only tried it briefly, but it does seem very nice for people like want a manual tiler. Never used spectrwm, but I think that would also be a good i3 alternative. My favorite window managers are EXWM and dwm, though.
I start using linux for 1.5 years now and i use your i3 config for 1 year. If you do a video for changing the bind and explain it ( i read you man page ) i can try our dwm build buit for now it's a litle hard for a " novice user " to change a lot of code to match like my i3 config
Just try not to depend on config files and read a little bit and write your own . this way i was able to get to a fairly good level i mean i could survive and m using it just 4months now so you should do a better job it aint that hard
I've been considering using awesome, since I'm a programmer and I can set it up completely to my liking while using a more powerful base than dwm... but it takes quite a while :) Currently using sway (the wayland clone of i3)
Is there a good dwm patch to turn it from a dynamic tiler into a manual tiler? Because otherwise, there's no use comparing i3 and dwm. I like the whole deal with window containers. I like being able to designate the left half of my display as a tabbed area and the right side as a tiled area (it's like suckless tabbed but actually sucks way less)
I would use dwm if it didn't have the bar at the top and if it was tree based instead of stacking. Sure, you can edit that in, but at this point you could write the window manager yourself, so I'm using bspwm.
I gave up xfce some months ago for i3wm and liked the experience. But I wanted to try other wms also, so I played with openbox, bspwm, dwm and qtile. Right now I am using qtile and may stick with it. It's actually kind of up in the air between qtile and dwm, but I am more familiar with python than I am with c so I think qtile is going to end being The One
We missed u Vim Diesel
Comment of the year
@@jonasrivers3675 i cant take the credit cuz someone already called him that but its so funny i had to post it again :')
When is he gonna collab with DWMayne "The Rock" Johnson?
This comment gave me a mental breakdown lmao
too bad this joke was shamelessly stolen
Coming up: "Stop using distros, make one yourself"
*chuckles in Linux From Scratch*
Has he switched to gentoo yet?
Stop using computer
Kiss linux
Solder your own pc parts
The weird man of the forest is talking about nerd things I just want to click on a browser icon and see google pop up
based
what is an icon
@@___xyz___ what is technology
What is love
@@-cobalt3223baby don't hurt me
10:12 "Wow! I'm just a professional. Anyways, see you guys ne-"
dwm patches = a choose your own bloat adventure?
I think patches have 3 approaches. First is use none because they are all bloat. Second is use the least possible. Finally the approach like uses. Apply as many as possible without breaking anything.
time to switch to xmonad
@Donald Mickunas Bloat is unnecessary things. What you define as necessary is why there is confusion. I'd say that obviously, the core functionality of the program is necessary. Additional functions can be see as the core functionality of a program, so I'd say they are also necessary. However, core functionality can be implemented in many different ways, and this, imo, is the main source of bloat. Unbloated software, imo, is thus impossible to achieve, just as it is impossible for software to not have bugs. There are only less and more bloated software, just as there are only less and more buggy software. These things must be balanced with ease of use and speed of execution. So, we have bloat, bugs, ease of use, and speed of execution. A perfect balance between all of these will never be achieved, and some users prioritize some things over others.
@@rameynoodles152 Be comfy in your workplace is a real thing, if you need xeyes on top of the screen to get it, you need it. Period. That's linux.
I see you let a bit hair grow heh?
You don't like being called Default Runescape Character. I see
A Ludwig von Mises avatar, you don't see that every day :D
Yeah well now he looks like Eli the computer guy.
Luke “the ego” smith
*doo dooooo doo doo doo dooo doo doo*
Congrats on your first video without sunglasses!
config files are bad - recompile my kernel every time when I add something to PATH
LOL most genius my dude!
I just change pc and make a new linux image using linux from scratch, everything else is bloat
Why not, I used a machine where kernel is done in 6s, boot time was worse, shame I do not own it.
it is less than 2000 LOC lmao and it was promised it will always be.
it takes nothing to compile and you can read it all in an afternoon
brilliant software
hardware is bloat, I just use my imagination
bite the dwm meme
open browser
crash because page had emojis in it
non-readme reading plebs get what the deserve
What browser are you using?
@@zaimwaqar2788 Brave
dude is that why this keeps happening to me
@@saeedbaig4249 le lion shill
Imagine straining your eyes at a computer screen to see things.
This post was made by CHAD Punch Card and Tele Printer GANG.
Luke is going from one extreme to the other. Suckless is neat as a mental exercise and it is good in reminding us that sometimes one can accomplish less with more (think dmenu or tabbed), but maintaining your own fork just for configuration is dumb. BSPWM (Unix way) and StumpWM (Lisp way) a proper hackable window managers.
The big issue is not editing config.h, that's really no different from a regular config file, just more work for the user and less for the developer. The real problem is that when you want to add a feature you have to import a patch. Patches grow stale and can conflict with one another. Each patch you add makes it harder to keep up with upstream and weakens the source code integrity. The last thing you want is for your terminal to become a security risk because you wanted scrollback in it. Software written in C is simply not meant to be hackable.
BSPWM is a hackable window manager in the Unix way. Your configuration file is an arbitrary executable, from within which you call the bspc program to set up the editor. It can be written in anything, but shell script is probably the most reasonable choice. You get all of the shell's scripting features like if-conditionals or loops. What's more, you can also call bspc at runtime to configure the window manager while it is running. OK, that's nice, but can we also add new features to BSPWM? Yes, we can: the bspc subscribe command prints events from the window manager to standard output, we can then pipe this output into another program which then calls bspc again to affect the window manager. We can use bspc query to get information about the current state of the window manager.
Putting all these together, I added a new feature recently: when there is only one window on a desktop I find it distracting to have its border highlighted. So I took the output of bspc subscribe, piped it into an Awk script, within the script I use bspc query to find out the number of nodes when certain events happen, and then I use bspc config to change the active border colour. It's six lines of Awk, much simpler and safer than messing with the source code.
StumpWM is written in Common Lisp, so you can alter its source code live as it is running, unlike C which is completely static. You can connect you REPL to a running instance, poke around and hook up to events provided by its API. If you want to use hackable software, use software written in a hackable language.
didn''t read.
You got my respect. But people say that "bspwm is not for newcommers, but for nerds". Agree?
@@hacerdemirel9833 to be fair, all tiling wms are mostly for nerds. For me I think bspwm is much easier than i3 and dwm.
yeah idk how luke has been using dwm without running into patch conflicts. they're not a big deal if you know C, since suckless' source code is categorically well written and easy to understand, but it is something you have to deal with when every update might require you to modify a bunch of C code.
in that way, qtile is very hackable as well, but the python way. Good reasoning about code getting stale and merging upstream back, really puts words to my feelings
Still going to keep running i3. It does everything I want and I have everything set exactly how I want
yep, that's me
💯
Exactly. I've spent several days trying dwm until I realised I've been trying to achieve what I had in i3 out of the box...
@@anonanon9634 but "time is money" doesn't forbid you from participating in leisure activities does it? I do agree with you but if you enjoy customising new and different things then why not.
Just to be clear I am not saying you're wrong I'm just showing another point of view.
soy
I remember times when Luke did not want to try out dwm. I mailed him about it but he did not respond. I asked him to try it out on livestream, he said no. Glad now he is using it
wow that luke guy sounds like a real jerk.
I was always surprised he didn't use it. I think alot of people that start with i3 have a had time seeing the advantages that dem has.
It seems luke is a little stubborn and independent. So he has to find his own reasons or discover things on his own.
BronzeKaiser what are the advantages over Xorg? I heard security is one thing.
@BronzeKaiser have you seen his script directory? A while slew of things in there that are impossible to implement on Wayland by design. "samedir" for example.
I think this is more of an argument for Free Software rather than suckless per se. An individual sufficiently proficient in C could patch bspwm just as easily as they can dwm.
Sure, but as he said the .h file is meant to be read/modified as a config file, which is different and removes a need for parsing. The argument wasn't "you've got the code, do whatever you want"
YEA good luck modifying that overengineered piece of crap
@@douwehuysmans5959 Glad someone else thinks that. By the time you've read, re-read, digested and mused bspc and its million options, you could have dwm set up the way you want, probably ten times over.
dwm is definitely easier to patch than the alternatives. whether or not this is a point in dwm's favor largely depends on whether you prefer the idea of patching C code vs. modifying behavior through external scripts vs. just having a bunch of options in the config file.
@@user-lk2vo8fo2q "Suckless" software is a fallacy. The software does not "suck less" than something else purely because it is small and "unbloated". IMO, users should not have to modify the source code in order to change options in the software. This is a huge barrier to another thing that people like from their software, Ease of Use. IMO, the way this should be done is to have a simple config file to enable options, and all optional parts of code should be separated out into shared object files which can be dynamically loaded at runtime based on the config file. Thus, if you don't need or want an option, you just don't use it and don't put it on your machine. This leaves you with an unbloated software with all the ease of use of many of the "bloated" softwares. Btw, "suckless" requires you to have a C compiler installed as well, so add that to your bloat.
So I see you're running dwm. You know I am actually on KDE myself.
Underrated quote from Mr. Robot.
@@jonathanhirschbaum6754in what episode?
@@andreffrosa It's the first episode of the first season, when Elliot and Tyrell meet for the first time
@@StrangeIndeed Thanks. Back then I didn't knew what dwm was.
@@andreffrosa And you didn't neeed to, because he said "gnome", not dwm😆. Almost all empty screen and tinny terminals 🤪
Bspwm is pretty good. Works very well, really easy to customize, no compatibility issues, and the modularity is good.
spectrwm run out of the box. all features are inside default config file.
and it has scratch pad out of the box)))
"Bspwm is pretty good" - And hangs on 2080Ti, on Threadrippers, on x399 platforms, on RAIDed NVMe, and basically on everything that is not i5 with spinning rust. Out of 3 PC and 1 laptop - only laptop worked. Regarding instability, it's second only to QubesOS as whole - that doesnt even recognize RAM correctly if is 64GB quad channel
@@jonathanhirschbaum6754 I am not quite sure that I have experienced the instabilities that you just mentioned with Bspwm. So far I have found it works flawlessly on 3/3 of the devices I have chosen to install it on (of varying hardware). No issues at all. Personally I have found it strikes the perfect balance for my needs.
However, that being said, you use whatever works best for you. I love that there is a DE / WM out there for everyone. :)
Next week Luke gets bored patching and goes back to i3
"I'm just a professional"
proceeds to cut before finishing the phrase..
Alright luke, I will use dwm on my arch pc
Luke says: "There's certain point where you can not modify it anymore, you can't ummm... you know there are so many things there are in their config file"
What are those things? I was expecting the examples. I have never reached a moment in where i3 didn't allow me to do what I wanted to do... maybe my imagination is too short. I handle the screen bright from the i3bar with my mouse wheel or a key shortcut, I manage the bluetooth with keystrokes, the system updates from my i3bar as well.....
I need to know what is there that I can not do. Well, okay, I don't use gaps, I use regular i3. I don't need nor want gaps. Maybe that's the source of all problems, not having enough features for gaps? :P I don't know.
I am totally not convinced, needed real good examples, got none.
gaps is a superset of i3 that adds some additional (unnecessary imo) features, so it's definitely not that. i think the main complaint people have with i3 vs. dwm is that how windows are displayed is pretty rigid. every window in i3 is tied to a particular position in a particular desktop. whereas with dwm windows are more abstract and you can do things like have the same window appear on multiple desktops or dynamically change the way the windows are tiled (without actually changing their place in the abstract window tree). i use i3 currently, but i'm thinking about switching to something else because i don't like having to manually choose where a new program window is going to appear. dwm is more like a stack where when you launch a new program it appears in the "main" window spot (what exactly that means depends on what layout rules you have active at the time) and then you control where the window is displayed by moving it up or down in the stack.
@@anonanon9634 yeah that's a very handy feature. i was talking about something different though. in dwm windows aren't tied to any particular desktop. they exist in an abstract tree and are displayed based on how they're tagged and which window display rules you have set, including the possibility of being displayed on multiple desktops at once.
I know you didn't axe me but, I thought I'd share my experience. The point at which you can't modify it any more is the point where patch conflicts become unresolvable. And that happens relatively quickly depending upon the patches you need and the order in which they are applied.
In my case, I got center, fakefullscreen, noborder and then the conflicts began. Scratchpad, dwmc, pertag, xrdb, vanitygaps, swallow, dracula, restartsig all had to be massively reworked after applying the patch (in many case by hand because the diffs are garbage and not well maintained against the current master) to the origin/master and then merging into my own branch. You need to do it this way so you can keep orgin/master clean because any future changes in origin and you'll have to rebase (basically a patch of all your working patches).
Its a pain in the peehole getting the workflow down but outside of having to apply crap patches (which should make the patcher ashamed) patching is easy upto the point where your knowledge of c limits your ability to resolve conflicts.
And all this just you do a thing that other window managers ALREADY DO! And in most case better. Don't get me wrong, dwm is a fun little tinker toy for precocious newbs but you'd be better of at tty with screen than with dwm.
But beyond just using dwm as a learning experience there is no case to be made for using it daily. It is just garbage. fvwm (lol) is better, 2bwm ratpoison all better
polybar > i3bar. You should try it on i3.
I spent an unreasonable amount of time configuring i3 and making scripts for it. I'm not switching this year.
Same here. What are your scripts doing?
@@GreyDeathVaccine He memed me out of i3. Now I'm using dwm. My scrips were mainly to make i3 feel more vim-like.
@@VictorRodriguez-zp2do Ive never seen a man break that quick
You had me until you screamed MOAR LIBERAL
Since your video on bspwm, I have been using it. And imo it's one of the few WMs that truly follow the Unix philosophy(ie do one thing and one thing only). The entire bspwm can be configured from terminal, it's also very minimal and works really well out of the box
Even for using hotkey you need an external program, plus writing scripts can be in any language, so If you like C use C, you like python use python, if you like bash(or Posix shell ) write in that. Ultimately following the Unix philosophy at its core. Brilliant
That bspwmrc file is literally just a chain of commands, is'nt?
@@victornecromancer yes, but what's your point??
@@shubhampawar7921 nothing great xd
I would gladly use something like bspwm if it came with dwm-style tiling. Tiling based on splits like in i3 or bspwm just always felt extremely clunky to me. I'm sure with some scripting magic it could be emulated but that would just be too much of a hack imo.
" I'm a professional. Anyway, see you guys lat- "
bspwm > dwm dont @ me
E: To clarify, dwm has an arbitrary LOC length (even though that's basically meaningless because I've seen 3k LOC run faster than 1k LOC) while also being a wm...and a taskbar...and a hotkey daemon.
Then don't follow the LOC length? It's your own build. That's just to contrain the main build so they don't standardize non-essential features.
can I @ you if I agree?
true
I also use bspwm, mainly because dwm's gaps were uneven (even literally just copying Luke's build) and I don't really like the tree structure or w/e.
bspwm runs a shell script at start and that's it. I'm cool with bspwm+sxhkd+an external status bar.
Plus, hell dwm needs a dozen patches in order to get basic features. I don't hate dwm, but it's not for me.
@@bograham6221 gaps are kind of pointless IMO. I don't use gaps. I keep my build pretty vanilla tbh, besides a few extra tiling modes, my preferred keybinds, and mouse warping. It's pretty usable to me, I don't know what else you need.
But that just probably goes to illustrate luke's point. Some people may prefer to make it look fancy or give it gaps, I just want something functional that lets me get my work done the way I want to. Also, you could easily remove dwm's status bar and keybinds and opt for sxhkd + an external status bar anyway.
Also, the way that dwm manages tags and monitors is really unmatched IMO. You can select multiple tags, group a single window to multiple tags, or any combination thereof. Plus you get an extra set of tags with each monitor, and each monitor can also be in a different tiling mode.
Nice! DWM sounds Awesome! I also think learning C can be really useful for performance enthusiast users. You can code at a lower level, modify Linux even more deeply, and have an easier time learning other languages since so many are "inspired" by C because of their similarities. There's also Game Dev libraries too! ❤️
When you apply patches that weren't necessarily designed to work together you will end up with badly designed software. There's no way around it. That is why people collaborate in open source projects. You may end up with a more or less bloated software but it will definitely be better designed.
Well you need to be careful, what patches you apply, some of them can break each other. That's just a flaw of this kind of mods.
@@AZEMBadlen I think karb94 point is that it is more than a flaw. This approach is fundamentally broken.
It is great if you can make it work for you, but it will turn into a mess long term.
There is a very good reason software development practices have tended towards separating configuration and code. Mixing the two is a seductive anti-pattern.
This. To get tabbed to work the way I wanted, I had to apply 3 or 4 patches, and manually resolve conflicts between them -- literally editing lines of C code, which is too autistic even by my standards. So now I have to keep the patched source code backed up somewhere so I don't have to go through the same process next time.
Exactly & if your willing to edit source code, then why not edit the i3 source code?
I guess, if you want this kind of config, then you really need to work with the devs to add the features you want. But, you can separate out those features into shared object files, and dynamically load that code (feature) by editing config files. I don't know why, but I feel like this could be "bloated" in some way too.
"Let's see how long it takes to compile DWM"> sudo make install
you missed a step mister runespace vim man.
>intended to modify source code
>no documentation
Elitists way
source code IS documentation
@@peeboo Not in C it ain't
And even in very high languages it is basically required to document your stuff.
@@peeboo say that at literally any job and you will be fired
@@snail8720 The problem is not C, it is that dwm's source code is messy (still not as messy as any other wm, you see)
I find compiling dwm satisfying,
programmers will understand.
@meow Look up the definition of programming in a dictionary
Me: cries in Ubuntu GNOME
if you dont like it dont use it?
A FUCKING FOOT
Wait, weren't you switching to bspwm?
Nah. He was just trying it.
No, you're thinking of Luke Smith.
What about bspwm?
No way I'm going back from Wayland to X11. Sway is awesome.
Wayland? You disgust me!
oh wow I just 1) found out about Sway, and 2) found out how easy it is to manage 2 monitors:
wiki.archlinux.org/index.php/Xrandr#Manage_2-monitors & github.com/Ventto/mons#examples
thanks for the comment kind stranger^^
I use dwm for three years now. Most of the patches were already present three years ago. Not just 20 or so. But the fact is that more get added.
I was doing too much things on my xfce4 and then I just started to use dwm and no complain about my wm anymore. Its beatiful, its good for work and pretty lightweight.
man using the emacs argument for dwm
He‘ll get there someday
Rewrite dwm and all the patches in Steel Bank Common Lisp and you basically get the exact same model but better.
You didn’t actually compile dwm. Still, it compiles quickly.
Lol yeah I noticed later. Should've cleaned it. I guess it would've only been a second more.
@@LukeSmithxyz Just to be sure I'm on the same page of you guys "$sudo make clean install" would suffice?
Vinícius de Castro yes. Luke already had it compiled
@@cstrovn Yes, but is better to compile first with "make" and then do "sudo make install". Compiling as root can lead to weird situations and is better avoided. For example, suckless programs will generate a config.h if is not present, that config.h will be owned by root and annoy you later on.
@@cstrovn in Lukes build yes, but if you grab dwm from github you will need to make your changes in config.def.h (for Luke uses config.h which is not ideal) or make changes to Make file so that make works properly. In my case I change make file so that "make clean" removes compiler leftovers and config.h. Do this because changes are made to config.def.h as to keep patching simple since most patche diffs are against config.def.h and not config.h. Makes no sense to nuke config.def.h and keep config.h....m,ust be bloat. LOL
I feel like this would have been a little more of an effective PSA if you made a follow up video addressing the patches you like to apply and comparing some of the "WAY BETTER FEATURES" instead of just showing the website. Just a thought.
You know what I love about your channel, it's opinionated, trusting you makes difficult choices, actually not difficult.
Ah I see you're using DWM, I use KDE myself. I know these tiling window mangers are supposed to be better, but you know what they say. Old habits, they die hard.
Can confirm. Every time we use a normal de, it looks like we‘re hitting random keys to the eyes of DE users
I was just switching over this week. Very auspicious, my Vedic scholar, Luke.
Why would I use a DE that works out of the box when I can spend 10hrs patching a program so that it barely works?
Cuz DE and GUI wastes even more time. Stupid mouse
Arguments in the video sound really convincing, I'm currently using i3, I'll give dwm (and suckless software in general) a shot and see how that goes
I use the suckless terminal (st) and I find it quite good. Also, sometimes I use a tool called tabbed to have tabs in programs that don't have them.
Hi Luke, after a long time, it was one of your very informative videos! Thank you m8
cool. Make a video about growing potatoes and feeding horses.
woot woot.. switched from i3 to dwm on my personal machine two days ago.. switched on my work machine today.. stoked.. many thanks to our intrepid unix explorer Luke.. Sincere thanks
You can patch all the WMs around for the features you need. I3-gaps is a fork of i3. DWM makes it easier to modularize the features you need, but it is like artisan work. May work for some who have the time and willingness to try. It is like scrapbooking for computer nerds.
i3-gaps is a full fork that is packaged separately on most distros because of how much of a hassle it is to actually use otherwise lmao.
First time seeing Luke's keyboard, though I haven't actively looked for it before.
As somone who is really passionate about config management, I highly recommend checking out a 40% keyboard like a planck. There's a lot of efficiency to be gained by having all the keys within reach of your fingers, not moving from the home row position.
Tried dwm a bit it look good but the config file is a bit too hard to understand, I don't even know how to edit a keybinding. i3 is for WM what GNOME is for DE, you can't recommand dwm to everyone.
Man I love your thumbnails. They should end up in a museum in 2100.
You can still do the same thing with i3, just clone the GitHub repository and compile it from source just like dwm
hey Luke nice presentation but some patches are not compatible, even vanille patch with systray/alpha(transparent bar) is not working out of the box
your videos are making my switch easier, thanks Luke.
And I wish there exists patches for annotation on screen / zoom in on anything
It's kinda funny that dwm has those kinds of limitations (like 2000 SLOC etc.) while being designed to work under X11 which is arguably one of the most bloated parts of Linux. Time to go Wayland.
Wayland is garbage
Time to go BSD ;)
@@batemanboi9672 kringe!!!!!!!
@@samzx81 still uses x11
Wayland is as bad, if not worse. DirectFB is the true minimalist solution.
What kind of keyboard is that? looks cool with the trackpoint
Found: www.pckeyboard.com/page/category/EnduraPro
Just as ugly and old style as I thought. No thanks.
The most impressive part of this video is Luke picking up that EnduraPro with one hand.
but...i don't nEED to migrate from i3-gaps to dwm
i use awm. it's dwm with a bunch of lua scripts on top of it and i like it that way. maybe i'll plunge myself into the dwm meme one day, but i'm good for now
About the first point: "source code is the config file" is definitely nice, but next level on that is the whole Lisp based Emacs paradigm, and WMs like Stumpwm. I mean they used the same idea for space missions to modify the running code for a satellite. Here's the story:
"An impressive instance of remote debugging occurred on NASA’s 1998 Deep Space 1 mission. A half year after the space craft launched, a bit of Lisp code was going to control the spacecraft for two days while conducting a sequence of experiments. Unfortunately, a subtle race condition in the code had escaped detection during ground testing and was already in space. When the bug manifested in the wild-100 million miles away from Earth-the team was able to diagnose and fix the running code, allowing the experiments to complete."
Same goes for your WM, or your Editor.
After i3 I tried dwm for a year, it was OK but organizing patches is a pain in the ass. Then there where the conflicting patches which sometimes where easy to solve, and sometimes not so easy (Some patches where not updated for the latest dwm etc).
In the end I gave up on it when I wanted dwm to do something (can't remember what it was) but could not get it done without substantial changes to its source code which I could not be bothered with.
Then I fell in love with bspwm. The fact that you customize it with shell scripting felt a lot more unixy to me. Also the fact that it does one thing and one thing well (no status-bar or keyboard inputs).
bspwm is extremely configurable, and I can't think of anything that dwm can do that bspwm can't. And even if there was, just do what you do with dwm and edit the bspwm source code (I really doubt you'll ever need to).
For once I think I'm ahead of the curve and bspwm will become the new cool.
@moxy How so?
@@emperorpicard6474 moxy is BLOAT (I guess it's just a joke ^^)
What is your dual screen setup for dwm? I'm having trouble setting it up similar to my previous bspwm build where my laptop had all the desktops and main bar, and I used the second screen as a desktop that kept all the windows present as i switched desktops. On dwm, it's treating each tag as a full desktop with different size screens. It doesn't treat the external monitor as a separate desktop. I've tried several xrandr configurations but no luck any suggestion on mimicking the bspwm behavior on dwm? I believe you had a similar bspwm setup.
Minimalist window manager. Largest keyboard possible. Preach it, Luke.
ok i will switch to dwm luke
Great, i had started to use your dwmblocks package and i was waiting for the vid!
> considers simple, portable config files "bloat" , muh minimalism
> has to git clone, vim edit, make install for minuscule of changes for terminal, window manager, etc
> meanwhile package manager has been eternally btfo cause of wandering binaries spitted out by random make installs
> muh "spend time to make your setup efficient" (yet switches tools faster than the "brrrr machine")
But I like your videos Luke, keep up the good work 😜.
Please consider making a video on pdf annotation on linux (Zathura can't do it) and what do you use for managing research papers and ref. management? What do you think of Zotero?
"cause of wandering binaries spitted out by random make installs"
You can change (or find out) the path in a Makefile, more often than not it'll be somewhere in /usr/local
I guess it would be pretty easy to hook a package build and install script into the general recompile workflow if you really want the package manager to be aware of suckless stuff.
> Editing source variables less bloated than parsing config files
> You don't have to git clone every time wtf
> Install directories located in make file
> You dont have to do that/no one forced you to do that
lmk when it's compatible with Wayland
I have only 3 icons in my statusbar :(
Did You have any Idea Color Emoji in Urxvt
Maybe it is not possible
Use st instead urxvt sucks
I see Mr. Smith purchased a new keyboard for the specific use of its green trackpoint.
Looks ugly and old style. If it's not chic-let quiet keys then I want nothing to do with it. I like my keys to be flat and uniform.
You gotta admit, A lot of patches you want get merge conflicts you might fail to resolve. St's ligatures patch is not compatible with scrollback and boxdraw, for instance.
You’ve convinced me, Luke. Suckless software sounds so great by the way you describe it. I’m switching to dwm rn
I still wonder, how suckless interacts with package managers, and how I update their software after adding some patches.
Can I have a Wayland patch for dwm?
What I am wondering, what happens with your highly configured source base, if there is an update/patch to dem? It would overwrite all customization wouldn't kt?
I doubt it would overwrite the config you would have to go and download the new version and try to patch it to be like your current config at least i would guess
Good arguments. But what about updating? If a new version of the baseline or the patches comes along, how hard is it to update? I imagine it is not as convenient and transparent as pacman -Syu. Can anyone with experience please elaborate on that?
This is what i fear 😂
What type of keyboard is that :D why does it have a nipple :D? I want one :D
because you like nipples.
Plugin and patch frameworks are great when the core software is solid. DWM is solid, I just haven't fully moved over yet.
i recently moved on to dwm from i3 and I love it!!! I didn't even applied any patches I just added in my own gaps and its prefect :)
Looks neat. Is this Gnome?
Friendship ended with i3, now dwm is my best friend.
Luke, can you do a video on the vis text editor? What are your thoughts on it? Would you prefer it as a more minimalist alternative to vim given that it doesn't have a built in file manager?
I'm very happy with bspwm. The bspc interface makes adding features very easy, and it doesn't require recompiling or patches. Simple scripts can do the job. (Yes I know its not as extensible as dwm technically, but I have yet to run into a situation where I couldn't make something work using bspc)
Does anybody know what that wallpaper is? I really like it.
The only thing keeping me from dwm is that in some games, cs:go being one them, I get 10% less FPS. I don't know why, the window manager should not matter, I am pretty sure it has to do with monocle, fakefullscreen, or maybe some other patch. I should try vanilla dwm. Bspwm has such sane default configs that it keeps me from customizing. Where as my dwm build was actually really nice, with a lot of work put into the look and feel.
Just switched from from dwm on Arch to Gnome on Fedora. Finally it's time to build actual software, instead of fiddling around with my dots all the goddamn time
I used to be dwm guy but now I've moved to i3 for sake of simplicity and it works out of the box for me. All I do is just tweak a little things here and there (usually keybindings). Guess it all comes down to that, mod-ability vs simplicity and I went with the latter.
Qtile, Awesome, Xmonad! Pick one! Be happy!
Awesome is utter garbage . xmonad is a great choice and far mor better because haskell and shiet . qtile (python no thanks)
You can modify the source of i3wm, the only thing that suckless do different is that they make easier to apply patchs.
Maybe the i3 people would enjoy herbstluftwm.
Great WM. Tons of possibility but poor popup handling. Maybe I will get better.
@@GreyDeathVaccine I only tried it briefly, but it does seem very nice for people like want a manual tiler. Never used spectrwm, but I think that would also be a good i3 alternative. My favorite window managers are EXWM and dwm, though.
I start using linux for 1.5 years now and i use your i3 config for 1 year. If you do a video for changing the bind and explain it ( i read you man page ) i can try our dwm build buit for now it's a litle hard for a " novice user " to change a lot of code to match like my i3 config
Just try not to depend on config files and read a little bit and write your own . this way i was able to get to a fairly good level i mean i could survive and m using it just 4months now so you should do a better job it aint that hard
im not interested on dwm, might try bspwm tho, but, atm, i3gaps fulfills my needs
I've been considering using awesome, since I'm a programmer and I can set it up completely to my liking while using a more powerful base than dwm... but it takes quite a while :) Currently using sway (the wayland clone of i3)
Use awesome :). Just know that lua arrays start from 1 and remind yourself everytime you start working on it
Is there a good dwm patch to turn it from a dynamic tiler into a manual tiler? Because otherwise, there's no use comparing i3 and dwm. I like the whole deal with window containers. I like being able to designate the left half of my display as a tabbed area and the right side as a tiled area (it's like suckless tabbed but actually sucks way less)
I like dwm, and use it as my main driver. Though I am planning on migrating to bspwm.
I would use dwm if it didn't have the bar at the top and if it was tree based instead of stacking. Sure, you can edit that in, but at this point you could write the window manager yourself, so I'm using bspwm.
I gave up xfce some months ago for i3wm and liked the experience. But I wanted to try other wms also, so I played with openbox, bspwm, dwm and qtile. Right now I am using qtile and may stick with it. It's actually kind of up in the air between qtile and dwm, but I am more familiar with python than I am with c so I think qtile is going to end being The One
DUDE I'm TRYING
Are you considering food forests? Seems a good way to defy agriculture
Bee Ess Pee Double-U Emm.
BSPWM.
It's the Unix way.
Meanwhile me with xfce : sure, sure...
Old timer :D Just joking. Most of my Linux time I have spent with Xfce.
@@GreyDeathVaccine Quality time I might add.