Matt: Wayland sucks because key binds & screen capture don't work out of the box. Also Matt: Learns the entire Haskell programming language to continue being an Xorg rebel.
what you are probably missing is the fact that xmonad is actually a Haskell library for writing your own window manager... and what is referred to as the xmonad configuration file is actually *the* WM, which gets compiled whenever you change it. xmonad was intended as a project to show that you could write a WM in Haskell with less lines of code than dwm. It all started as a marketing strategy to give Haskell a larger audience. the problem was that such a WM was barely usable, thus the xmonad contrib library was created. I contributed to document the core code, I coded quite a lot of the contrib library in the early stages of development (till the 0.7 release if I remeber correctly) and the documentation. Then I left -- or was dismissed -- because I was pushing for changes in the core library to make coding the contrib library more efficient -- but I was asking for some more code lines and 1000 loc was the upper limit...;-) I'm not surprised that if you do not know Haskell you feel lost, but this is the way it is. ps: I've also authored xmobar, but that was just for fun and because I wanted an Ion-like status bar -- no propaganda involved ...;-)
Nice looking setup (much nicer looking than mine). I started on i3 which I used for years, then I used dwm for a few months and since switching from it I've been on xmonad. The config is hard for sure but not impossible for a motivated user I think. I would actually recommend manually typing your own config file based on someone else's. That way you get a better idea of what each part is and you can tweak the settings too. That's ofc only for ppl who are unsure about their config which was the case for me when I first started using xmonad. Also Haskell is great, the type system and the fact that it's purely functional makes it so nice to work with. The syntax is different, sure, but I think once one adjusts to it it's really nice an minimal. The many ways of doing things in the xmonad config is more of a feature than a bug although I admit that it makes writing your first config harder than on most wms. But you don't really have to understand Haskell to configure xmonad either, stealing someone else's config and just reading through the wiki to change things is how I still would do it. Depending on your tolerance for "unfinished features" and willingness to read a lot and fail a lot, you can get some pretty nice results I think. And you're totally right, there are "gaps" that you can't figure out on your own in practice but then again that's life when you use "unconvential" software.
Unlike Python Haskell is a language in which you need to think before you act in order to solve the problem at hand. That is one of the major things that make the language hard to learn. The other major thing is its mathematical nature. Its built by researchers in computer science. The language is not designed like Python to be easy to learn. It is an experiment in functional programming language design space that turned out to be quite powerful once you put significant time and effort to learn it and its underlying mathematical foundation! And that is one of the reasons most window managers and applications in general do not use general purpose programming languages for configuration, but rely on domain specific language like i3 does.
I'm currently learning Haskell as part of my uni courses on higher concepts of programming. Our Professor put it best when he said "You have like 3 lines of code, and then you run it and you can play an entire first person shooter, and when you look at the code you need 6 hours to understand what the hell is going on". The more I start to use it the more it blows my mind. I've shown this to some of my fellow class mates and they are just blasted away by being able to calculate ridiculous stuff like 6000 factorial in less than a millisecond recursively and completely precise. I used XMonad before attending that course so I had some cursory knowledge of Haskell but it's even crazier once you _really_ understand Haskell's typing system and what the devil a monad actually even is (it's a monoid in the category of endofunctors, not that hard to understand).
I see that no-one mentioned the workspace problem, which is really not a problem at all. In your config, there is a variable called "myWorkspaces" which is set to the list ["1", "2", ... "9"]. What you need to do is simply add more entries to the list, and the workspaces will be automatically created after `xmonad --recompile && xmonad --restart`
yeah, jumping into a language blind without getting familiar with its syntax is one way of going about things. I remember trying to do that with C++ once. It did not go terribly well.
I don't know if anyone else would agree, but I think that configuration files should just be flat text based formats and *not* programming languages. It's fine if a program can extend functionality to have a programming language built-in for plugins and whatnot, but for the configuration file, which is often used by normal users as well as the more pro users, I think it should be something simple like a Win/DOS ini file or a TOML file or something along those lines. I've often felt that if a program has to have a programming language for its configuration that it's an incomplete program anyway. Also, if you're writing a program and you need more structure than an ini file "provides", then just add [section.sub] to your interpretation of the files.
I love Haskell, yet I've never used Xmonad. Tho nowadays I am more interested in inspired languages (like Idris) that both clean up some idiosyncracies and bring some extremely cool new features (like dependent types, or linear resources).
Re your 'twelve ways of doing it', the real problem imo occurs when none of them seems to be 'a proper way'. This is something I think Nix suffers from quite a lot. When I was using it, it often felt like some people have thrown a half-baked hack together to do A and it more or less does the job if you know how to massage it into working for you. Now I'm playing with _censored_ and everything seems way more solid. At least on the tooling level. The packages themselves are still less mature unfortunately.
This may sound silly, but: I love configuring things; I love tiling window managers; but I've been using vanilla dwm with the title bar removed for years, and it is just so perfect. simple, fast, elegant. I know I felt myself pulling towards more features and more customization to make things slightly more efficient for a long time. I used i3, xmonad, bspwm, qtile, awesomewm, openbox, etc for many years. I customized the living heck out of all of them. Sometimes the most efficient workflows evolve out of the simplest setups.
I feel like this is me trying to setup nickelmenu on my ereader...in my defense until you get to the end its not super obvious how things should be typed so i frequently mess it up. XD
FYI, Xmonad has plans to have a Wayland port in the future. I really wish you would consider doing content with Wayland too because there is a huge divide in the Linux community over it, which is silly. I feel like the hate Wayland receives really is not as justified as it is people hopping on the hate train just because bigger voices like yourself express dissent instead of learning and adaptation to alternatives...which is what I thought one of the amazing things Linux is about. Once Redhat stops supporting Xorg, bitrot and being the unsupported display server is inevitable and Wayland IS the future whether we like it or not.
I feel Wayland is the new systemd. People jump into the hate bandwagon to be contrarian, meanwhile all the big corporate distros and corporate sponsored DEs *cough cough Gnome* jump to support it which makes naysayers be even more paranoid about it
thoughts on automatic tilers vs manual tilers? I use DWM and I really enjoy it for the simplicity and manner of configuration, but I've beginning to wonder if I would prefer being able to manually control my tiling (similarly to how i use splits in vim).
My personal thoughts on automatic (dynamic) vs manual tilers. With automatic tilers you know where the next tile (window) will appear. That makes the workflow easy, quicker, because you don't have the aspect of being able to determine its place. But, personally I prefer the manual aspect of the manual tiler. That I can determine where the next tile will appear That is better for my workflow. But even at a manual tiler the next tile also appears automaticly like with a dynamic tiler. The difference is that you have the ability to interrupt that aspect. I us both Herbstluftwm (manual) and I3 (dynamic), btw.
I didn't care for Xmonad, but I prefer easy switch between floating and non floating (works better with my workflow). My favorite Xorg is Openbox and my favorite Wayland is a tie between Wayfire and Hyprland - been running Wayfire for the last few weeks and I think I like it a bit more than Hyprland although they are similar, I really like the Wayfire's super key zoom out to workspaces implementation. Maybe you can do that on other ones, but I've not seen it.
Matt "when people find something they like, I at least want to understand why they like it" Chris "Will you be willing to try emacs in order to understand the reason why we like it?" Matt "Absolutely not" =)
Your comment about trying to understand why people like something. I've done that with music, heavy metal and jazz. Some people really like this stuff so I've spent hours on end trying to work it out, long story short I never worked it out 😂
It'd probably be easier to configure spectrwm, frankenwm or dusk as a backup window manager for qtile and easier than setting up xmonad. If one doesn't already have a dwm config they like.
@@TheLinuxCast Actually, Xmonad is smaller by a factor of 5 in terms of LoC. Dwm has like more than 2000 lines of code, XMonad has less than 400. But that's because Haskell is _INSANE_ at code golfing. You can make things a one liner that would require you to write 40-80 lines of code in C.
Good video. You like challenges... May I set a challenge for you! Learn C Programming to a decent level. Yeah, it will take years but you will get loads of good content out of it and when your done, you won't refer to yourself as a "Noob" anymore. Once you know C, things like Haskell and config files seem effortless. The challenge is "Wizardry in two years". Best of luck! All the best Matt.
@@BenjaminWheeler0510 artificially smoothing text by blurring the edges is akin to artificially adding frames to video to bring it up to 60fps. Fine if you want it, but gross if you know better.
@@gingered But that's how analog cameras and human eyes work tho. The proper way to do rendering would be to use continuous integrals and not some grid sampling.
@@mskiptr then let the human eye do the work. Antialias is for low res displays with raster fonts, your 23" 1920x1080 display with vector fonts don't need AA.
It's hard to digest but you are spiting total BS. If you really understand what xmonad is trying to do from it's core, you'd actually appreciate it. I am xmonad for a very long time and it just works in every scenario.
From the i3 docs: "stacking Only the focused window in the container is displayed." tabbing is different, the same, but different. I think PopOS recently implemented something similar in their tiling feature
Tabs/Stacking are more flexible than monocle (at least the monocle mode I remember from bspwm). Monocle shows only one window on the screen. Stacked/Tabs shows one window per container, but still allows you to have multiple containers (hence multiple windows) on the same screen. Maybe monocle acts like that in other window managers tho?
Haskel is one of the worst decisions for a config file. It's a programming language for the "elite" with the community more toxic than Arch has. Config files must be simple. I understand this choice but don't accept it. There's no point for me to learn Haskel because there's literally no jobs for Haskel programmers. That's why I will never use this WM.
"There's no job for Haskell programmers" You couldn't be more wrong and also the concepts you learn in functional languages directly translate into you becoming a better programmer. Like, even if companies don't have Haskell positions they'd still prefer someone who can code in Haskell because they will just be THAT much better at coding, solving problems from an entirely different angle and especially mathematics.
As someone with a Haskell job I wouldn't state the case for Haskell job availability so strongly. I also think when interviewing for non Haskell jobs that enthusiasm for Haskell can be read in both positive and negative ways. Yes it can be super impressive but it can also be perceived (wrongly IMO) as an indicator that the candidate not practically minded. Being good at Haskell does not automatically make you good at math (even if you mean type theory). @@Finkelfunk
Help me get to 10k followers on Mastodon! fosstodon.org/@thelinuxcast
Matt: Wayland sucks because key binds & screen capture don't work out of the box.
Also Matt: Learns the entire Haskell programming language to continue being an Xorg rebel.
I just love how curious and humble you are. Love all the content you make, keep up the great work!
what you are probably missing is the fact that xmonad is actually a Haskell library for writing your own window manager... and what is referred to as the xmonad configuration file is actually *the* WM, which gets compiled whenever you change it.
xmonad was intended as a project to show that you could write a WM in Haskell with less lines of code than dwm. It all started as a marketing strategy to give Haskell a larger audience. the problem was that such a WM was barely usable, thus the xmonad contrib library was created. I contributed to document the core code, I coded quite a lot of the contrib library in the early stages of development (till the 0.7 release if I remeber correctly) and the documentation. Then I left -- or was dismissed -- because I was pushing for changes in the core library to make coding the contrib library more efficient -- but I was asking for some more code lines and 1000 loc was the upper limit...;-)
I'm not surprised that if you do not know Haskell you feel lost, but this is the way it is.
ps: I've also authored xmobar, but that was just for fun and because I wanted an Ion-like status bar -- no propaganda involved ...;-)
Nice looking setup (much nicer looking than mine). I started on i3 which I used for years, then I used dwm for a few months and since switching from it I've been on xmonad. The config is hard for sure but not impossible for a motivated user I think. I would actually recommend manually typing your own config file based on someone else's. That way you get a better idea of what each part is and you can tweak the settings too. That's ofc only for ppl who are unsure about their config which was the case for me when I first started using xmonad.
Also Haskell is great, the type system and the fact that it's purely functional makes it so nice to work with. The syntax is different, sure, but I think once one adjusts to it it's really nice an minimal. The many ways of doing things in the xmonad config is more of a feature than a bug although I admit that it makes writing your first config harder than on most wms. But you don't really have to understand Haskell to configure xmonad either, stealing someone else's config and just reading through the wiki to change things is how I still would do it. Depending on your tolerance for "unfinished features" and willingness to read a lot and fail a lot, you can get some pretty nice results I think. And you're totally right, there are "gaps" that you can't figure out on your own in practice but then again that's life when you use "unconvential" software.
Unlike Python Haskell is a language in which you need to think before you act in order to solve the problem at hand. That is one of the major things that make the language hard to learn. The other major thing is its mathematical nature. Its built by researchers in computer science. The language is not designed like Python to be easy to learn. It is an experiment in functional programming language design space that turned out to be quite powerful once you put significant time and effort to learn it and its underlying mathematical foundation! And that is one of the reasons most window managers and applications in general do not use general purpose programming languages for configuration, but rely on domain specific language like i3 does.
Thanks for sharing, your videos are really helpful!
Workspace solution: tmux :-)
I think the real question is do you want to use Haskell long term.
We're going to see. It's been more than a week now and I can't say I love it. But I haven't run screaming as I have in the past.
I'm currently learning Haskell as part of my uni courses on higher concepts of programming. Our Professor put it best when he said "You have like 3 lines of code, and then you run it and you can play an entire first person shooter, and when you look at the code you need 6 hours to understand what the hell is going on".
The more I start to use it the more it blows my mind. I've shown this to some of my fellow class mates and they are just blasted away by being able to calculate ridiculous stuff like 6000 factorial in less than a millisecond recursively and completely precise.
I used XMonad before attending that course so I had some cursory knowledge of Haskell but it's even crazier once you _really_ understand Haskell's typing system and what the devil a monad actually even is (it's a monoid in the category of endofunctors, not that hard to understand).
I see that no-one mentioned the workspace problem, which is really not a problem at all. In your config, there is a variable called "myWorkspaces" which is set to the list ["1", "2", ... "9"]. What you need to do is simply add more entries to the list, and the workspaces will be automatically created after `xmonad --recompile && xmonad --restart`
yeah, jumping into a language blind without getting familiar with its syntax is one way of going about things. I remember trying to do that with C++ once. It did not go terribly well.
I don't know if anyone else would agree, but I think that configuration files should just be flat text based formats and *not* programming languages. It's fine if a program can extend functionality to have a programming language built-in for plugins and whatnot, but for the configuration file, which is often used by normal users as well as the more pro users, I think it should be something simple like a Win/DOS ini file or a TOML file or something along those lines. I've often felt that if a program has to have a programming language for its configuration that it's an incomplete program anyway. Also, if you're writing a program and you need more structure than an ini file "provides", then just add [section.sub] to your interpretation of the files.
Excelent, thank you.
Enjoying these WM vids. I still haven't made the switch to try one out long-term yet apart from a short spell on regolith.
goog, you are getting on the right path matt
(btw which theme are you using in neovim?)
custom catppuccin?
Tokyo Night
DT viewing this video with tears of happiness.
He's happy, true. But if Matt ever tries to use emacs, then we'll see tears of happiness from DT!
What about running the plasma 6 alpha?
I will try Plasma 6 when it comes out.
I love Haskell, yet I've never used Xmonad. Tho nowadays I am more interested in inspired languages (like Idris) that both clean up some idiosyncracies and bring some extremely cool new features (like dependent types, or linear resources).
Re your 'twelve ways of doing it', the real problem imo occurs when none of them seems to be 'a proper way'. This is something I think Nix suffers from quite a lot. When I was using it, it often felt like some people have thrown a half-baked hack together to do A and it more or less does the job if you know how to massage it into working for you. Now I'm playing with _censored_ and everything seems way more solid. At least on the tooling level. The packages themselves are still less mature unfortunately.
_censored_ = Guix
This may sound silly, but: I love configuring things; I love tiling window managers; but I've been using vanilla dwm with the title bar removed for years, and it is just so perfect. simple, fast, elegant. I know I felt myself pulling towards more features and more customization to make things slightly more efficient for a long time. I used i3, xmonad, bspwm, qtile, awesomewm, openbox, etc for many years. I customized the living heck out of all of them. Sometimes the most efficient workflows evolve out of the simplest setups.
I feel like this is me trying to setup nickelmenu on my ereader...in my defense until you get to the end its not super obvious how things should be typed so i frequently mess it up. XD
FYI, Xmonad has plans to have a Wayland port in the future. I really wish you would consider doing content with Wayland too because there is a huge divide in the Linux community over it, which is silly. I feel like the hate Wayland receives really is not as justified as it is people hopping on the hate train just because bigger voices like yourself express dissent instead of learning and adaptation to alternatives...which is what I thought one of the amazing things Linux is about. Once Redhat stops supporting Xorg, bitrot and being the unsupported display server is inevitable and Wayland IS the future whether we like it or not.
I feel Wayland is the new systemd. People jump into the hate bandwagon to be contrarian, meanwhile all the big corporate distros and corporate sponsored DEs *cough cough Gnome* jump to support it which makes naysayers be even more paranoid about it
thoughts on automatic tilers vs manual tilers? I use DWM and I really enjoy it for the simplicity and manner of configuration, but I've beginning to wonder if I would prefer being able to manually control my tiling (similarly to how i use splits in vim).
My personal thoughts on automatic (dynamic) vs manual tilers. With automatic tilers you know where the next tile (window) will appear. That makes the workflow easy, quicker, because you don't have the aspect of being able to determine its place. But, personally I prefer the manual aspect of the manual tiler. That I can determine where the next tile will appear That is better for my workflow. But even at a manual tiler the next tile also appears automaticly like with a dynamic tiler. The difference is that you have the ability to interrupt that aspect. I us both Herbstluftwm (manual) and I3 (dynamic), btw.
First! Am fan from Tegucigalpa Honduras, i see all your videos.
Am in arch btw.
I'm from Honduras, too. And I, too, use arch btw lol love your videos as well
You're going to be such a great developer, that you don't even know it. Good job man.
I didn't care for Xmonad, but I prefer easy switch between floating and non floating (works better with my workflow). My favorite Xorg is Openbox and my favorite Wayland is a tie between Wayfire and Hyprland - been running Wayfire for the last few weeks and I think I like it a bit more than Hyprland although they are similar, I really like the Wayfire's super key zoom out to workspaces implementation. Maybe you can do that on other ones, but I've not seen it.
Matt "when people find something they like, I at least want to understand why they like it"
Chris "Will you be willing to try emacs in order to understand the reason why we like it?"
Matt "Absolutely not" =)
Truth. lol
love the DT side-eye
I work xmonad a little different then dt but I like how he calls his stuff at the beginning 😂 looks like I got some stuff to play with
Never thought I will watch whole video consisting mainly of non-moving screenshot of XMonad config and even enjoy it!
Me, neither! It's the rabbit hole, man! Can't get enough configs.
I know you said no to Wayland, but hyprland is the bees knees...
I used xmonad for years, but could never get my head round Haskell
I thought your favorite was DWM? :(
Ages and ages ago.
Your comment about trying to understand why people like something. I've done that with music, heavy metal and jazz. Some people really like this stuff so I've spent hours on end trying to work it out, long story short I never worked it out 😂
00:54 you have sound issues
No, that's just me repeating myself
It'd probably be easier to configure spectrwm, frankenwm or dusk as a backup window manager for qtile and easier than setting up xmonad. If one doesn't already have a dwm config they like.
Not related at all but congratulations. I have moved over to open suse tw. I borked my arch install and i decided to switch partially because of you
openSUSE FTW!
I stick to Xmonad because of its features and its stability. But I agree with you. Learning how to configure it is a pain. :)
Matt do you think Xmonad is more suckless then Dwm is ????, It looks like it to me.
Maybe. But they define suckless by lines of code. And I think that xmonad is probably larger.
@@TheLinuxCast Actually, Xmonad is smaller by a factor of 5 in terms of LoC. Dwm has like more than 2000 lines of code, XMonad has less than 400.
But that's because Haskell is _INSANE_ at code golfing. You can make things a one liner that would require you to write 40-80 lines of code in C.
Do a xmonad speedrun video please
That could be fun. Wouldn't be very speedy though, lol
Doesn't need to be speedy. I kinda see them as tutorials. I did learn dwm and i3 from your speedruns.
Good video. You like challenges... May I set a challenge for you! Learn C Programming to a decent level. Yeah, it will take years but you will get loads of good content out of it and when your done, you won't refer to yourself as a "Noob" anymore. Once you know C, things like Haskell and config files seem effortless. The challenge is "Wizardry in two years". Best of luck! All the best Matt.
I know a bit of C. I wouldn't say I'm proficient at it or anything but I know more than I know Haskell.
Looking at DT's config I noticed "antialias=true" 😨 get monitors with a tighter dot pitch, DT.
what's wrong with anti-aliasing? are we gatekeeping 1080p monitors now??
@@BenjaminWheeler0510 artificially smoothing text by blurring the edges is akin to artificially adding frames to video to bring it up to 60fps. Fine if you want it, but gross if you know better.
@@gingered But that's how analog cameras and human eyes work tho. The proper way to do rendering would be to use continuous integrals and not some grid sampling.
@@mskiptr then let the human eye do the work. Antialias is for low res displays with raster fonts, your 23" 1920x1080 display with vector fonts don't need AA.
Hyprland is life
Surprise. Surprise. Not.
Again?
all you need to do now is actually try to get into emacs.
No thanks.
lol🤣@@TheLinuxCast
it would be a fun video to watch tho @@TheLinuxCast
i3 for life
SwayFx here :)
It's hard to digest but you are spiting total BS. If you really understand what xmonad is trying to do from it's core, you'd actually appreciate it. I am xmonad for a very long time and it just works in every scenario.
If a window manager does not have stacking, move on. Stacking is i3's killer feature--it's like extra virtual desktops
You mean tabs? Because most of the managers actually have that they just called monocle mode.
From the i3 docs: "stacking
Only the focused window in the container is displayed." tabbing is different, the same, but different. I think PopOS recently implemented something similar in their tiling feature
@@barkovurur3043 yeah, that still sounds like monocle layout to me.
Tabs/Stacking are more flexible than monocle (at least the monocle mode I remember from bspwm). Monocle shows only one window on the screen. Stacked/Tabs shows one window per container, but still allows you to have multiple containers (hence multiple windows) on the same screen. Maybe monocle acts like that in other window managers tho?
Haskel is one of the worst decisions for a config file. It's a programming language for the "elite" with the community more toxic than Arch has.
Config files must be simple. I understand this choice but don't accept it.
There's no point for me to learn Haskel because there's literally no jobs for Haskel programmers. That's why I will never use this WM.
Its spelled Haskell.
@@ICopiedJohnOswaldI'm on my phone and Gboard likes to correct me)
"There's no job for Haskell programmers"
You couldn't be more wrong and also the concepts you learn in functional languages directly translate into you becoming a better programmer.
Like, even if companies don't have Haskell positions they'd still prefer someone who can code in Haskell because they will just be THAT much better at coding, solving problems from an entirely different angle and especially mathematics.
As someone with a Haskell job I wouldn't state the case for Haskell job availability so strongly.
I also think when interviewing for non Haskell jobs that enthusiasm for Haskell can be read in both positive and negative ways. Yes it can be super impressive but it can also be perceived (wrongly IMO) as an indicator that the candidate not practically minded.
Being good at Haskell does not automatically make you good at math (even if you mean type theory). @@Finkelfunk
it looks like you are still using vim... good.