84 points by indigodaddy
a month ago
I really liked AmigaOS 3.x. It was (for the time) pleasant to look at, had decent contrast, and generally got out of your way.
But Windows 95 was better. MUCH higher contrast, very clear delineation between controls, and consistency of operations. Plus you could resize windows from any corner!
Then Windows XP came along and ruined everything. And the Windows UI continued to go downhill from there. At least it came with a "classic" theme for awhile.
Then I switched to MacOS Leopard. It was nice overall, but going back to menus at the top of the screen felt like a step backwards. At least it had contrast and clear delineation between controls, so I was on the whole happy. Then they started to flatten things, reduce contrast, and generally make a pig's breakfast of everything.
Now I've settled on Mate Desktop. It's mostly there, better in some ways, worse in others. But overall it's pleasant to work with, low impact, and gets out of your way.
And at the end of the day that's all I really wanted.
The older I get, the more I get the urge to return to monke, and just use tmux. Maybe on friday I go all out and boot up a GUI with some type of nifty nature wallpapers showing through my terminals.
FVWM is completely legit as well, albeit a little heavy when compared to TWM or my favorite Rio, with Acme of course. Heavy is relative in this sense, I've run FVWM on reprogrammed childrens toys with the processing power of a warm potato.
I went on a wm hunt in the early/mid 90's as well on my (company provided) SPARCStation. I went through all I could find and compile, but I landed on either fvwm or twm; the memory escapes me. I remember an interesting one ("piewm"?) that had its menus originate radially like pie-slices instead of a dropdown to the right; the theory being that you would have to move your mouse less to get to any given option.
I honestly don't understand the OP's hatred of fvwm, but people like different things.
I actually really liked TWM, and thought it was distinctly underrated.
How about a WM-equivalent of tmux, where you can put graphical windows into a detached state, and open them on a different computer?
welcome to plan9, there is cake and napalm at the table by the door.
I remember back in the 90s caring about window managers and playing with Enlightenment and its weird wavy desktop. It was cool because it was different. I used Blackbox throughout university because we were all on a shared server doing remote X sessions and everyone loading KDE at the start of a lesson would slow it to a crawl.
But then I got two monitors and a job and stopped caring. I need virtual desktops, a launcher, and a good settings app. I’ve never tiled windows outside of Emacs, which runs full screen on one monitor opposite a browser on the other monitor. I’m baffled by people who need to have seven terminals open alongside a tiny YouTube video. Either watch the video or do some work.
That's great if that works for you. But for me being productive often includes multiple PDF files or editor windows being open and having them all float or just two next to each other just isn't an option. With a tiling wm I can have 4 or 6 windows PDFs open on a single 24" monitor and that works perfectly.
Just let people decide for themselves how to be productive, it's great your work allows you to be productive on two windows, some other people may need more, some less.
My usage of tiling window managers is quite different from what you describe. For the most part, I only have two windows open. Sometimes I am actually using two applications concurrently. More often than not, the second window exists solely to make the window I'm working in narrower. I formed this habit long before floating window managers could snap windows to the edge of the screen and never felt the desire to move on. Besides, I find an inactive terminal far less distracting than a hole showing the desktop.
I have been using Blackbox for more than a decade now. What I think sets it apart from other window managers and light desktops is that it looks good out of the box: professional and restrained, which is the way I like it. It is also fast and efficient. Other windows managers and light desktops look kind of amateurish to me. I find it strange that software with nice looks is often bloated and inefficient. Designing texts and widgets with proper size, alignment and spacing, and choosing nice colors won't make the software slower.
That's a common argument which is essentially, "I grew up and needed to be productive so that's why I don't use tiling window managers."
It's ironic and silly because I use a tiling window manager to _be_ productive. I have used the same settings, window manager and configuration since 2006. That is exactly why I love it, it's stable as can be and I can rely on it forever (at least until X11 doesn't work anymore, but I will probably be dead by then).
Which window manager? I think only ratpoison, larswm, and Ion existed back then? As for X11, recently changes were added to Xwayland's rootfull mode to allow running a full X environment on Wayland.
Both dwm and wmii existed in 2006.
I use dwm, in particular a Debian netinstall with no desktop environment. Simply install X and dwm. I have my own fork of dwm with my customizations on a separate branch.
I can update dwm by pulling master and rebasing my branch on master. Has worked since 2006. With that being said, dwm hasn't changed much since 2006.
There's configs which make Sway behave (more) like dwm. Sway is config-compatible with i3, so that makes it a good successor as a tiling window manager.
It might sound stupid, but is there a visual equivalent to linux pipes? As in, i have a software that has something iterratable (browser search result, fileexplorer, document) and these result "plop" out into a visual pipe, were they get filtered (either by hand or by some NN-magic or by code) and processed by other pipleline parts. Finally the result drops out into a Folder, a File, a SnyDrive or some CMS system.
I just want to have that factorio overview over my whole workprocess pipeline and everything stuck in it. Inclusive rerouting capability. That would be supersweet. Has that ever been attempted?
I haven't tried it myself yet but https://arcan-fe.com/2021/04/12/introducing-pipeworld/ has been on my radar for a while.
Yeah I think something like Slurp in Plan 9 is that.
It exists. For me, at least, it’s i3. I can’t be productive with anything else. I love it. It’s like vim or git or Linux itself. It just fits the way I think.
I have used gnome pretty much since Fedora/RedHat started packaging it. For the past 2 years or so, I have been using Material Shell (https://material-shell.com/) which gives Gnome tiling functionality and I have been really happy with the overall experience.
But, just recently, a co-worker mentioned Sway. I have to use things that prevent me from using Wayland, so I decided to give i3 a try after touching it and not understanding it many years ago.
The point of my WM life story is, that after all that, I have stuck with i3 for about 3 weeks now and am falling in love with it. There were some gnome things that I missed, but was able to quickly piece things together to get the functionality I wanted. Being a vi guy also, I really like using modes for my keyboard shortcuts too. It definitely helps with my productivity (when I'm not playing with things to increase my productivity anyway :) )
I had various bugs when I used Material Shell, but I did like several things about it, and I should probably give it another try. The Pop! OS shell extension is another good choice for mixing tiling with GNOME.
Sway has some reverse compatability via XWayland. I am curious, is there any feature in particular keeping you on a native X11 desktop?
Specifically I am forced to use the horrible disaster that is MS Teams for work. So far, screensharing on Wayland with electron-based apps doesn't work.
Wayland has some weird issues with screen sharing IME. The last time I used Google Meet with Wayland on Debian no one could see my screen.
This issue has been resolved for me for about 6 months, but YMMV obviously.
I like tools like Magit, or using NixOS, which seem close cousins to this "you put in a bit more effort, and get a better tool" attitude.
I've never looked into window managers. If I prefer to have all windows I'm using maximized on different virtual desktops all the time, is there still much of a benefit to using a WM?
With a tiling WM (like i3), most of the time the whole screen is used. So, currently I have Firefox open full screen. But if I do decide to open another window in this workspace, it'll nicely cut the screen in half and put them side-by-side. So, if you are a mostly-fullscreen person, then the tiling WM workflow might do what you want automatically, more often.
Sometimes it feels sort of like using tmux full screen in a terminal, but some of the panels can be firefox or a PDF reader, haha.
It strongly depends on your workflow. If you generally have a single thing maximized on your primary display then a tiling WM will be a big upgrade. i3 (or the Wayland equivalent: Sway) are a great gateway.
I can't say much about floating WMs, as the above paragraph applies to me. They do exist, Hikari seems to be doing some interesting stuff.
As a NixOS, Magit and i3wm user, I think you should give it a try. I also like to have windows maximized most of the time, but it's nice to have i3 precisely for when I don't want that.
This is the workflow I have in MacOS and I hate it. To each their own. Instead of swiping back and forth I can tile more of what I use on a single monitor. And I can use hot keys to jump to my numbered workspaces.
I'm curious if anyone who has put in enough effort to get familiar with a tiling window manager has ever gone back to a traditional one. IMO tiling window managers are superior in every way.
I did. I used i3wm for a long time, but I always missed having a more comprehensive desktop environment. I didn't like having to install a lot of basic utilities separately. Things like screen shot, network management, display management, audio device management, compositing, etc. Add to that the fact that I mostly have the same handful of windows open, and I didn't feel like I needed a tiling manager. I use 1 terminal window with tmux where all my dev work happens, 4 browser windows, and a discord window. As long as I can have work spaces that I can bind to keyboard shortcuts, I am good. KWM is very customizable too, more than I need honestly.
You don't need to pick one or the other. i3wm being a window manager, not a fully fledged desktop environment, means you can use it with KDE or Gnome for example.
I have gone down that route before too, several times, it is not pretty. The KDE panel and startup splash screen don't play nice with a custom WM. Removing the KDE panel also removes a lot of the kitchen sink functionality I was looking for. The best option for tiling in KDE was using a KWM extension that supported it.
Some good points. Have you tried something like Regolith or pop shell? I forget the name but there's also a toolkit for Sway that includes the kitchen sink. These should give you some of the configurability and tooling of something like Gnome but with tiling.
Pop shell seems really nice, but I am not too into GNOME. I know they are trying to make it an independent desktop environment, so looking forward to that.
Mostly I like i3wm and sway.
I used whatever the default Ubuntu DM is (gnome, not sure the version) for a while, because I got a new computer and didn't feel like messing around with .config stuff. Tuned it a little -- actually the gnome tweaks and plugins system is pretty nice! I had an applet that could control my smart-bulbs, and there's one that will invert a window color (I'm sure this is possible in sway but it would probably involve come obscure program I might need to compile).
But in the end the draw of proper keyboard controls over my WM is too appealing, switched back to sway.
IIRC, one thing that kind of kept me on the floating WM was Zoom. I think the general Zoom workflow depends on drawing a lot of windows of various random sizes, closing and opening them automatically, etc etc. It is a pretty dumb application (but it was mandated from on high, so...).
Agreed, zoom is absolute garbage on a tiling wm. I was able to at least make it useable with some custom config for zoom windows.
I don't really feel a difference in productivity. It's usually browser/vscode/terminal with tmux on full screens anyway.
The biggest difference for me are the aesthetics and a distraction-free minimalist design.
I like to have my pixelspace used with close to no waste.
I've switched to windows because of laziness and need to reconfigure my dotfiles after like 6 years of using i3. This week I'm getting a new m2 disk and will be installing arch to finish my rice.
I used XMonad for about 1 year. Back at FVWM since ca. 8 years, but XMonad influenced the setup quite a bit. The WM is barely noticeable, it manages 2 full screen rxvt/ssh/screen windows, Firefox, Zoom and little else. Keybindings + integration with a self written Plan9 plumber-like tool (edit/modify selection, link to bug db, jira, ... based on selection contents) are the real productivity boosters.
I still use a non-tiled wm for specific use cases.
Openbox is extremely minimalist and customizable. I use it for games, gimp, and occasionally gui application development. You can add directional selection keybindings etc. so it keeps a tiled-esque feel.
I dumped a shellscript in my ~/.zprofile where I can easily switch wms and X configurations without logging out (keep mounts, music, etc). It makes it really painless to switch.
I did. Used i3 for a while, but between how slow adjusting window sizes were (I opened new windows often as part of my workflow), and how you can’t hide windows behind others I ultimately found it too limiting.
I did love the fact that all shortcuts started with the superkey though. That meant no overlap with any ide (I am looking at you, gnome).
If I remember correctly, i3 has a stacking mode that lets you hide windows behind others.
Yup. Stacking is really useful sometimes.
Well you can configure shortcuts to quickly resize windows, and you can hide windows behind each other using tabbing or just different workspaces. I'm curious what your use case is for hiding windows behind each other though.
It was simply that I ended up with a lot of windows: an ide, a browser for the site I was building, the debugger for it (and I wanted to switch between them fast), my music app, the company mandated chat app, browser windows with google searches, file browsers, terminals and so on.
In the end it was much faster to use the switchers in more traditional managers like Gnome and while you can stack/tab windows they still take up space.
Finally, and I think most importantly, while I was using an ultrawide screen at the time, and it was definitely nice to be able to easily split it in two or three windows quickly, I mostly don't need a tileable screen.
Yeah it’s really hackable. That’s what I really like as well.
I tend to ping-pong between (one of my employers for ~5 years was a Mac shop; still use Windows for gaming etc.), but even almost 2 decades since I first used XMonad, nothing else feels like home. I use Sway on Linux these days because I have a mix of DPIs in my displays, so Wayland is semi-mandatory, and _man_ I miss XMonad.
What do you miss from XMonad vs Sway?
they're terrible when you need to float windows (like plots, or gui apps, or gui system utilities). i used to think about how i could merge the two and have floating vs. tiling desktops.
then i realized i could just run a full screen terminal on one desktop and run tmux within it. it can be a little annoying with just one screen but otherwise great.
(incidentally, i also used to be a window maker person, and an actual nextstep person... after those two i ran something extremely lightweight, with small thin window decorations and that's it. i cannot remember the name)
You can float windows in i3.
yeah... but i remember it not being their core focus and it ending up kinda like a mcdonald's salad. you can do it, but there are better places to go for that.
is it good? like if i'm doing something new and something new wants to pop a floating window, can i just keep doing my thing or do i have to start thinking about my window manager?
i find that dedicating a screen to tmux and another screen to a classic desktop environment gives the best of both worlds. (subject to the limitation of becoming dependent on multiple screens)
I’m never going back. And I’ve used them all.
KDE Plasma (of course with kwin :D) is good enough for Linuxes (Kubuntu for me to be precise).
My own jury is still out on how well it works on FreeBSD - which I am more attentive over, but I seen kwin use a lot of CPU for periods of time, spinning up the fans after a resume. But that was before I lowered the scheduling threshold from the recommendation ... but otherwise, it works fine.
But I settled because I really just don't care enough to optimize this part of my computing workflow. I guess the hip thing to describe it now here on HN is to call it "boring" ... to me, it is quite boring. :) I recommended KDE to a co-worker when deciding to use Ubuntu to get a Windows-y feel. So far, he's been happy with it too.
I used to be a huge i3 user (and sometimes I give in to the temptation to load it up and mess with my config). I love tweaking my desktop to make it look like it should be on /r/unixporn. However, there are certain desktop things I don't enjoy messing with at all:
Audio is especially confusing on Linux because there are so many parts to one system. Even after researching PulseAudio, ALSA, Pipewire, Jack, etc. it is super hard for me to know exactly what does what on my Linux machines.
I found that with i3 I often spent more time tweaking my desktop than actually doing work. However, I think that tweaking like this is actually super fun and educational on how Linux display stuff works -- I would never discourage someone from taking the time to mess around with i3, bspwm, or an alternative.
My perfect balance is GNOME plus the Pop! OS shell extension. I'm not a Pop! OS user (and likely never will be) but I loooove having tiling in GNOME and being able to have all the stuff I don't like to manage just work.
EDIT: minor grammar tweak
>there are certain desktop things I don't enjoy messing with at all
One of the advantages of NixOS model.
hardware.pulseaudio.enable = true;
hardware.bluetooth.enable = true;
services.blueman.enable = true; #for systray applet
I'm not saying you're lying (I'm sure you're not), but... colour me skeptical. This sounds too good to be true.
Can you explain how audio and bluetooth works independently of the desktop session? Does it need custom support compiled in to every window manager?
If it's so easy to do it independently of the desktop session, why does Ubuntu etc. make it dependent on the desktop session? I had assumed that it was something like the desktop session needing to set up environment variables so that all your applications knew how to talk to PulseAudio.
From the documentation on the PulseAudio module (the nix term for those 'enable = true' things) :
> Explicit PulseAudio support in applications
> Normally, the system-wide ALSA configuration (/etc/asound.conf) redirects the audio of applications which use the ALSA API through PulseAudio. For this reason, most applications do not need to be PulseAudio-aware. Some NixOS packages can be built with explicit PulseAudio support which is disabled by default. This support can be enabled in all applicable packages by setting:
> nixpkgs.config.pulseaudio = true;
 - https://nixos.wiki/wiki/PulseAudio
From starting up the session on the login manager to the final state of it there're various intermediate steps. Full desktop environments (GNOME and KDE) will load everything needed for you whereas when running a window manager alone you've to do it yourself. Those Nix options set up things (essentially abstracting what you'll have done manually) in some previous step (before starting the window manager).
>why does Ubuntu etc. make it dependent on the desktop session
Because what if you didn't want them? Non-Nix systems don't have this centralized configuration model therefore they cannot provide this flexibility. Therefore they just let each session to load what it needs.
I can't answer your questions about why Ubuntu ties sound to desktop session, but i can say audio and bluetooth in NixOS has been that trivially easy and worked on 8 different machines of mine and friends without issue.
> If it's so easy
Note that the parent is only changing a config option; there may be all sorts of logic behind the scenes which branch on that value, e.g. to splice different text into /etc files, to add compile flags to package builds, etc. ;)
I really like NixOS (I just barely distro-hopped away from NixOS back to Arch). One reason I switched away is because similar to my i3 setup I would find myself tweaking my actual desktop/system more than getting work done. Mostly because I haven't sat down for a few hours to become more familiar with Nix's declarative language -- but I kind of don't Nix's language and think it is far from intuitive for me.
For reference, here's my nixpkgs repo (galaxy-chromebook is my most recent config): https://github.com/heywoodlh/nixpkgs
Maybe Regolith  is something for you. It's an Ubuntu derivative that combines i3 and Gnome. It has sane defaults, a nice app launcher, and everything 'just works': audio, bluetooth, wifi.
I have been using Regolith for half a year now, after 10 years of endless tweaking of XMonad and Gnome under Ubuntu.
I am a very happy Arch (and sometimes NixOS) user but I am thrilled to know that Regolith leverages GNOME and i3 (I knew about Regolith using i3 but I didn't know it combined that with GNOME).
Gets me interested in getting my build setup like that!
I'm on Manjaro-i3-minimal from Mint+i3. Manjaro (Arch-based) seems so far a very good match. Minimal tweaking as most defaults are sane and looks good.
Most of the time was spent just to familiarize with Arch and find packages, which will pay off later.
Regular Manjaro seems newbie friendly as well.
I feel like Manjaro strikes a good balance at providing all the benefits of an Arch-based system without the downsides of stock Arch. For example, Arch's super newbie-unfriendly install process. Hopefully the archinstall script now included in the official Arch ISO eventually becomes a more mainstream method of installing Arch -- but still allows for users like me to do the by-hand installation when I need custom/more flexible configuration.
I would say if someone is curious to give Arch a try but doesn't want to go through the installation process that they should give archinstall a try! In my opinion, the preset profiles (for GNOME, KDE, etc.) really removes a bunch of friction to using Arch if you are a new user or just want to save yourself time.
(I would imagine my views don't reflect the majority of the Arch community as it often seems like deliberate steps are taken to keep Arch as a gated community to those who are elite enough to invest in Arch 100%)
I get Arch. The docs are spot on. It's very polished and you can actually learn quite a bit.
However, for work, I need something not bleeding edge, and hope Manjaros tests and security test, will help in that regard. That it's a positive thing they wait about 2 weeks.
I had to tweak Manjaro a little, but so much worked out of the box. Don't have that dedicated time for ricing, though default installs in Arch seems very sanely configured.
Totally agreed with all these points.
It's interesting (to me at least) because I have ended up using Arch for all my personal servers and workstations and it has been pretty rock solid! Although, I typically use containers for running all the applications I care about -- which might lend to the stability I have seen with my systems.
Theres also the Fedora-i3 spin. Not nearly as plug-and-play as Regolith though, just thought I'd mention it.
I found a lot of stuff became simpler when I switched to FreeBSD. Audio is still OSS, same way it's been for ~30 years. Displays are still X11. Networking is still ifconfig. Admittedly I didn't touch bluetooth, but I'd trust them to get something similarly plain and simple going.
The two blockers I've had with FreeBSD as a workstation:
- huge lack of basic hardware support for things like wifi (or bluetooth) chipsets
- lack of Docker support (I'm one of those that uses Docker as my universal CLI package manager)
Aside from these things, I absolutely love the mentality and philosophies behind FreeBSD and would love to have a FreeBSD workstation!
I can't imagine going back to a desktop after using a tiling manager ...
99% of the time, you just need full screen windows, on dual screens (or even triple screens!), with (OF COURSE) virtual desktops.
Yeah, for me, I find the only parts I care about with a tiling window manager is a minimal looking environment and windows that organize themselves automatically. On GNOME I am able to get all the same workflows and benefits that I care about from a tiling window manager while not worrying about having to tweak something on my work machine when I'm on a Zoom call working on an issue.
Audio is fixed by just using pipewire.
Displays is fixed by using Wayland (sway).
Bluetooth is indeed an unsolved problem. I suppose the skilled hacker types have just declared the whole protocol as broken and use wires.
> Audio is fixed by just using pipewire.
My experience with Pipewire has definitely been excellent.
> Displays is fixed by using Wayland (sway).
I still have some tooling that requires X11 -- but whenever I've used Wayland I feel like there is still a lot that relies on X11. For me, Rofi is one of those tools that I just haven't been able to totally replace in Wayland (even with the Wayland forks of Rofi). Some other day-to-day examples are Zoom and Nvidia graphics cards. While I am aware that these are third parties lagging behind Wayland support and not really an issue with Wayland itself, it still demonstrates how everything is not magically "just fixed" simply because you are on Wayland.
Pipewire “solves”, or at least improves the bluetooth landscape quite a bit.
Do I read parent as saying that these things are best managed through GUI widgets attached to the desktop environment
> Do I read parent as saying that these things are best managed through GUI widgets attached to the desktop environment
100% you are reading my original comment correctly. An example I ran into recently: I start up bluetoothctl, I power on the adapter, start scanning for Blueooth devices and am spammed by a bluetooth device nearby to the point where I can't see the one I am trying to pair to (even after turning off scanning). In contrast, blueman-applet or GNOME's control-center neatly organizes each unique Bluetooth device as individual icons and makes it easy to see each of those. Lots of little papercuts like that can make it frustrating when you're just trying to get work done.
This is also true things like displays -- sure I could take 20 minutes write a script to rearrange my displays the way I prefer -- or I could just open GNOME's control center and take two minutes using the display setting.
There are lots of little things like this that can get in the way when you just need to get something done.
And this is totally subjective to my experience, my opinion and what I currently value so please don't take this like I am saying everyone should prioritize things the way I do. For those more comfortable in i3 or something else -- great! :)
Perhaps my tolerance is just too high again, if my 2nd display is on the wrong side, I just move my mouse cursor via the other direction. It doesn't seem to cause any friction for me.
What would cause friction is if the display plain didn't work, or had bad aspect ratio or fonts. Wayland (in combination with kernel graphics probably) seems to have fixed those problems.
I sometimes use Sway. My approach to Bluetooth was always to use bluetoothctl in a terminal. Then I saw there was an Emacs interface to bluetoothctl and I started using that. A system tray applet for bluetooth would be better (by analogy to nm-applet), but I don't know of one that is currently maintained and working.
Add the following lines to your sway config. It works for me when using Waybar.
exec_always --no-startup-id blueman-applet
exec_always --no-startup-id nm-applet --indicator
Ah, blueman wasn't in my distro's repositories for the longest time, which led me to believe it was unmaintained. Apparently it was incompatible for a while, but that's now been fixed.
VcXsrv + WSL2 means I don't have to care about any of this.
Though note I basically only use Windows as a fat driver layer unless I'm playing games (Wintendo!)
Random anecdote: I use Docker as my universal package manager for a large majority of my tools/workflows. I was so pleased when the Docker + WSL2 integration was released as it made all of my Docker workflows on Linux/MacOS + a POSIX shell (BASH, ZSH, etc.) totally functional on Windows. I'm a big fan of WSL2.
> unless I'm playing games
This is one area I've not been able to completely ditch Windows. Valve is doing some great work to get Windows games running on Linux in Steam but I find myself playing a bunch of games that are not in Steam with an anti-cheat engine that sucks in Proton. I hope more external game launchers/stores and anti cheat engines are motivated by Valve to implement Linux (or emulated) support.
I love being a linux/BSD server admin.
I totally cannot be arsed being a desktop admin for either.
So I use WSL2+Xsrv to give me my -client- environment on windows and then use that to ssh into servers to actually do stuff.
Meanwhile, windows acts as a fat driver layer that provides firefox and my X11 setup and easy access to games.
I am in no way recommending this. But it works for me.
I had the same problem as you. You should look into Manjaro's i3 edition. It's not perfect but it's serviceable.
I use both Sway and GNOME, and have tried various tiling window extensions for GNOME. I absolutely agree with you that the Pop! OS shell extension is a good balance. I also think it's an excellent introduction to tiling window managers for people who might otherwise be afraid to try them.
The thing I care about that a tiling window manager brings me is a way to automatically organize your windows in a minimal looking environment. The way I set up GNOME I am able to achieve that.
My first window manager (on Unix) was Open Look Window Manager (olwm, later olvwm), since this was the default when starting Open Windows on SunOS 4 in 1992. After a few years of mostly using the Open Windows tools, including using MailTool for e-mail, I went through a process of trying to pare down my tooling dependencies to the bare minimum, in order to be able to discover what my actual needs were, so that I could choose better tools appropriately. This included switching from MailTool to Unix mail(1), and using twm(1) as a Window Manager (Not a tiled window manager; the Tab Window Manager, i.e. the basic window manager which was and is included in the standard X11 distribution). I have since switched to more capable mail readers, etc. but I continue to use twm as a window manager to this day. I have found that I simply don’t need anything more than that.
I still <3 sawfish for its fine-grained mouse+keyboard shortcut customization, regex-matching per-window behaviour modification, zoom-to-fill-space, and easy themeing ... but it's rusty, bordering on abandonware, and mate's marco is good enough with the sloppy focus and no-raise-on-focus-or-click that I require.
Sawfish was my favorite all-time wm, but it doesn't work well now. :-(
Wolfgang's channel had an interesting take on it recently:
"Tiling Window Managers suck. Here's why" https://www.youtube.com/watch?v=5n_rl9jWUMo
He makes some great points and I can relate to most of them, but my god do I love my tiling window manager. There is nothing on earth that would convince me to go back to stacking.
IMO, the key thing about tiling window managers is that if you configure it correctly, you always know where everything is, and you're only ever one or two keystrokes (or mouse clicks) away. For example, on my setup, workspace 8 is always Firefox. If I open workspace 8 and Firefox hasn't been launched yet it immediately opens. Workspace 7 is my meassaging app, 6 is discord, 1 is a terminal, and so on. Windows are never hidden behind each other so you never go hunting for anything.
There's also a lot of little customization things that make it feel really nice. Like I can hit a hotkey to size a youtube video to a pixel-perfect, borderless 720p window with other windows filling space around it. Or a global hotkey to hide notifications for the next hour. I have a "get focused" hotkey that will lock the screen and require an admin password if I open the browser.
TWMs are definitely not for everybody. But for me it removes a ton of frustration that I get with stacking window managers, and it lets me customize my own experience in ways that I find super valuable.
I like what you describe here...! I haven't been in Linux-land for awhile as I got a new Windows 11 laptop recentlyish and haven't put Linux on it yet, and my work laptop is Windows..
But for my new upcoming job they should be sending me a Macbook. Does the latest OS X have a workspace concept? If not is there an free application that can implement workspaces/desktops on OS X?
I haven't used macOS as my main OS in a long time, but I think your best bet is https://github.com/ianyh/Amethyst
Also I highly recommend disabling the "Automatically rearrange Spaces based on most recent use" in settings. That always felt like it was just randomly sorting my workspaces so that I had to fling them around until I found what I needed.
OSX has a fantastic workspace implementation.
Then I guess I must be a horrible user since I cannot get them to work for me. Whereas I got the tiling paradigm immediately.
I think the worst offence is how Mac OS conflates full screen with workspace, and how you cannot (I think?) assign keybindings for instantly (=0ms animation) moving focus and windows to workspace x.
Ah cool found the documentation thanks..
I never really utilized it at all last time I used a macbook for work.. :/
I want to like TWMs but they all seem tailored to running single app workspaces on low res screens.
I would absolutely love a TWM that let me place/size windows like Spectacle or Rectangle but also _push_ other windows out of the way to maintain a grid and avoid overlapping. Open terminal, use keybind to place in upper right 1/3rd the screen width and 1/2 height. Open slack, hit same keybind, terminal gets pushed left (or down if there's already something to the left). Open browser, hit center 1/3rd 100% height keybind. Pushes terminal left. Focus slack, hit top right keybind again to expand window to 2/3rd width. Pushes browser down to center 1/3rd bottom 1/2. etc.
What you're describing is what tiling window managers do (or at least very close to what you're describing). Neither Spectacle or Rectangle are actually tiling window managers; they're just window snapping tools. I have never tried this (haven't used macos as my main OS in years), but I've heard it works well, and should give you the tiling window experience: https://github.com/ianyh/Amethyst
I'm a linux desktop user. Today I use pygrid with a couple tweaks to get the Spectacle keybinds. I've used this with gnome and kde and it's fine. I would really like to use it with a wm that supports per-screen workspaces/virtual desktops. As far as I've been able to find, ONLY tiling window managers do this.
I've also used sway quite a bit. And i3... and even pop's tiling.. They are nothing, at all, like I've described.
I've gone so far as to setup sway to float all windows and created swaymsg keybinds to place/size windows like spectacle but discovered that sway has a bug with focus window up/down/left/right keybinds and floating windows.
It works very well indeed. No problem either tiling or stacking when I want one or the other.
This sounds great, actually! I'm personally a fan of maximized windows for most of everything, and would very much like to use something that allows me to pin certain windows to certain workspaces like you describe.
Not sure if Windows 11 has something similar (at least, not with native workspaces - they only "remember" certain windows and not others..)
What distro/TWM do you use? Do you configure all of this via dotfiles? Do you use multiple monitors?
Arch Linux with Sway, yes and yes. Right now I have a main monitor in front of me and a monitor rotated 90 degrees to landscape on my left for messaging apps or documentation.
I can't really speak to the other tiling window managers because I've been using i3 and Sway for years now and never felt any need to switch (i3 and Sway work pretty much the same; Sway is just the more modern Wayland implementation), but browsing r/unixporn is a good place to check out the different setups, and people often post their dotfiles if you want a starting point.
Wolfgang learns just enough about a topic to make poorly reasoned statements about topics he doesn't understand that use some of the correct words.
He says for instance that he quit using tiling window managers because among other things because of the grossly overstated time required to configure screen locker and volume keys and such. However since he seems to have already sunk that 30 whole minutes there is no savings involved.
He explicates reasonably well the argument for a keyboard centric workflow then casually dismisses it by asserting without argument that users endure the great burden of learning scads if keyboard shortcuts for what he asserts is no benefit after he himself articulates the benefit. How hard is it to understand shortcuts per the name are quick ways to perform an operation? He mentions web browsers as if they were some great counter argument to keyboard shortcuts. Yes it's ok if you both pick up the mouse to click something and use shortcuts too.
He says that GUI apps work poorly with tiling window managers because they will be forced to a suboptimal size.
Nobody is making you open 7 apps on your 12" screen. Nothing about tiling window managers keeps you from giving a particular app up to an entire monitor.
This doesn't require writing rules for every app or manually resizing or indeed anything else but switching workspaces.
If you want 1 window alone on one workspace and 3 on the other do you know what complex operation is required?
You open 1 window switch to the second workspace and then open the other 3.
He claims that you won't be able to employ keyboard shortcuts without resolving conflicts as this was a great unsolved problem. Most shortcuts aren't global and application specific shortcuts just can't conflict by nature.
The traditional method for binding non conflicting shortcuts for actually global things like your wm is to bind windows key + foo to global things whereas applications get control shift alt + everything else.
It's so weird to watch him thinking he's being clever and knowledgeable when he's completely talking out of his rear.
If you like me watched the whole thing you know less than you started out knowing if you took him seriously.
It's about preference. With tiling, there needs to be an itch to scratch. Ie. I like tabbing windows on 2 displays, mostly. Others like switching virtual displays all the time.
If you don't have any such itch, tiling may seem pointless.
Agree. Watched for about five minutes, and already got the vibe that you describe so well, so didn’t bother with the rest. You have my sympathies for sticking it out.
I switched to a tiling WM about a year ago, and I went through most of the things he mentions in that video, but I'd say it was likely due to the fact that I had been using regular desktop environments for about 25 years, so everything was completely new to me.
These days I don't need to fiddle with my WM configuration, and I have all the other things (launcher, media controls, keyboard layouts) set up nicely too. I can just boot my system and start using it. It works exactly the way I want it to, and if there's something that doesn't work quite right I have direct access to the source code of the WM. A while back I had trouble with a volume widget that didn't work properly when using PipeWire, so I just went and fixed it myself.
I rarely have to venture out into Windowsland, but when I do I feel incredibly clumsy and slow, which is quite frankly weird after such a short amount of time using a tiling WM. They're definitely not for everybody, but for me it has been a fascinating experience.
"Smart Zones" in Windows Power Toys is not exactly a tiling window manager (it doesn't automatically tile, and you have to manually create and change layouts). But it does reduce the amount of pain when coming from a tiling window manager to Windows.
The title is catchy but the content is well balanced. It actually describe perfectly well my point of view.
Tiling already works well out of the box with regular window managers, without the pain that can come with tiling window managers.
Regular stacked window managers actually come with most useful features of tiling managers like tiling windows on the side or the corner, with the keyboard or the mouse (and since I have a bigger screen I use them more and more like this), while still allowing stacking when it's useful, or using the mouse when it's useful.
I wish KWin allowed to remove shadows when windows take the full screen but this idea has been rejected.
Plus '#ffee66' for http://trout.me.uk/X11/xclus
will result in:
Everybody else's mileage will definitely vary.
("real" GUI wise, I still miss RISC OS ;)
I just need Awesome ported to Wayland, but it's apparently difficult for Wayland reasons I no longer recall.
awesomewm is a fork of dwm with a lua interpreter and a config loader bolted on. almost all of awesomewm's additional features are implemented in lua.
someone has already made dwl, a wayland (wlroots) port of dwm: https://github.com/djpohly/dwl
the dwl codebase is very similar to dwm. some dwm patches can even be applied directly. i currently use dwl, it's part of my custom pure-wayland desktop environment built from suckless ports.
i think the 'difficult' work has already been done.
I don’t think there is anything in wayland that would make the porting hard.
Porting a plain Xlib/xcb window manager to wayland is a mountain of work. Just look at wlroots to get a sense of how much code one has to write (or embrace in the form of wlroots) that an X11 WM largely doesn't need concern itself with.
One does not simply write a window manager in Wayland. In Wayland the display server and window manager are one program, called the compositor, which means the X11 architecture of having a separate window manager is now deprecated. (Insert Daniel Stone talk here about how this is the superior choice and the go-forward solution because people who know a lot more about the graphics architecture than you said so, that's why.)
Wayland's architecture in general is completely different, so you don't so much port a WM as you do rewrite it as a Wayland compositor. There are libraries like wlroots that help with this task but it is not straightforward.
I do know that, but I don’t see how exposing the same functionality as the X11 bindings do for AwesomeWM as too hard of a problem, especially that I believe the majority of the work is done on wlroots already. Perhaps I just don’t know enough about Awesome.
More to the point the choice isn't between writing one or the other it's between doing 1 unit of work to maintain/fix bugs and doing 1000 units of work to start over potentially for little perceptible benefits.
Hm, I might be conflating the only project I was aware of that was trying to do that... with the problems they ran into with Rust/Wayland interop. Wayland has lifecycle assumptions that break Rust's assumptions without a gratuitous amount of unergonomic wrapper code, or something. (Which is concerning in some ways...)
Depends on how tightly coupled the WM is to X. My chosen tiling WM (StumpWM) is not easily portable. The development discussion has been that it's easier to rewrite. I used xmonad for years before that.. Well, it's in the name. It's not getting ported to Wayland. Not easily anyway.
What's hard is rewriting from scratch starting at a lower level.
I think anyone trying to write a Wayland compositor at this point, especially if they are rewriting an X window manager, should be using WLRoots. I don't /think/ writing a compositor with WLRoots is lower level that writing an X wm in, say, XCB.
X has since ages the Xt and Xaw toolkits.
Once I tried dwm, I never looked back.
IMHO bspwm is the Emacs of window managers - it provides you the Lego bricks to build your own personalised window manager. Out of the box it's nothing fancy, but given time, you can make it do whatever you want!
Indeed. I've tried a bunch over the years: i3, Qtile, Xmonad, herbstluftwm, awesome, dwm... And the most popular floating ones: Gnome, KWin, xfwm, Blackbox, etc.
They can pry bspwm+sxhkd out of my cold dead hands. It's a fast, lightweight and rock-solid environment, with simple yet flexible customization. It gets out of my way and works exactly as I want it to. I've been using it for years, and don't have the need to switch to anything else. I'm only hoping that something similar can exist for Wayland. Otherwise I don't see myself switching from X anytime soon.
Please support the author if you have the means: https://github.com/baskerville/bspwm/blob/master/doc/CONTRIB...
Same for me. Using it for years and it's been extremely reliable on my desktop.
Though I have to admit, that I miss a good DE integration for my laptop.
I tried both Plasma and XFCE, but both of them have some quirks while having bspwm as the WM.
Maybe I'll try out GNOME with Pop Shell. Seems pretty nice out of the box.
Is emacs not the emacs of window managers with exwm?
lol, nice :)
Edit: oh that wasn't a joke... this is an actual thing :mindblown:
There are two main things I want from the wm on my workstation: plainness and stability.
I want plainness because the wm is just framing my applications, not the main atteaction.
I want stability because my workstation should not be rearranged without my consent or request.
After a long time looking, I'm happy for a while now.
IMO, other than the small additions of being able to toggle "on top" and virtual desktops, Windows 95 pretty much did it as far as a functional, efficient, and subtly stylish UI. Mac 8 is not bad either, but didn't have the keyboard accessibility.
Whats the best window manager for Mac?
The window manager is part of the UI stack on macOS and can’t be replaced in the way a Linux user would expect.
There are utilities that attempt to provide some alternative window behaviors; they are all hacks — by necessity — because macOS does not support altering window behavior/appearance globally.
> they are all hacks — by necessity
To be clear, though, the "hack" I use (Spectacle) isn't even actively developed anymore, but has worked flawlessly through a decade of macOS upgrades. Zero problems, zero glitches, even with multiple monitors it just works exactly how I expect.
If only non-"hack" Linux GUI software were this stable and perfectly-functioning over such a long time span.
And X-Windows + ICCCM (I39L) isn't a hack??!
And why doesn't X-Windows also support altering menu appearance globally (like supporting pie menus in every app), too? NeWS did, over three decades ago.
NeWS Tab Window Demo (1990)
Ice Cube: The Lethal Weapon
One of the fundamental design goals of X was to separate the window manager from the window server. “Mechanism, not policy” was the mantra. That is, the X server provided a mechanism for drawing on the screen and managing windows, but did not implement a particular policy for human-computer interaction. While this might have seemed like a good idea at the time (especially if you are in a research community, experimenting with different approaches for solving the human-computer interaction problem), it can create a veritable user interface Tower of Babel.
If you sit down at a friend’s Macintosh, with its single mouse button, you can use it with no problems. If you sit down at a friend’s Windows box, with two buttons, you can use it, again with no problems. But just try making sense of a friend’s X terminal: three buttons, each one programmed a different way to perform a different function on each different day of the week — and that’s before you consider combinations like control-left-button, shift-right-button, control-shift-meta-middle-button, and so on. Things are not much better from the programmer’s point of view.
As a result, one of the most amazing pieces of literature to come out of the X Consortium is the “Inter Client Communication Conventions Manual,” more fondly known as the “ICCCM”, “Ice Cubed,” or “I39L” (short for “I, 39 letters, L”). It describes protocols that X clients must use to communicate with each other via the X server, including diverse topics like window management, selections, keyboard and colormap focus, and session management. In short, it tries to cover everything the X designers forgot and tries to fix everything they got wrong. But it was too late — by the time ICCCM was published, people were already writing window managers and toolkits, so each new version of the ICCCM was forced to bend over backwards to be backward compatible with the mistakes of the past.
The ICCCM is unbelievably dense, it must be followed to the last letter, and it still doesn’t work. ICCCM compliance is one of the most complex ordeals of implementing X toolkits, window managers, and even simple applications. It’s so difficult, that many of the benefits just aren’t worth the hassle of compliance. And when one program doesn’t comply, it screws up other programs. This is the reason cut-and-paste never works properly with X (unless you are cutting and pasting straight ASCII text), drag-and-drop locks up the system, colormaps flash wildly and are never installed at the right time, keyboard focus lags behind the cursor, keys go to the wrong window, and deleting a popup window can quit the whole application. If you want to write an interoperable ICCCM compliant application, you have to crossbar test it with every other application, and with all possible window managers, and then plead with the vendors to fix their problems in the next release.
In summary, ICCCM is a technological disaster: a toxic waste dump of broken protocols, backward compatibility nightmares, complex nonsolutions to obsolete nonproblems, a twisted mass of scabs and scar tissue intended to cover up the moral and intellectual depravity of the industry’s standard naked emperor.
Using these toolkits is like trying to make a bookshelf out of mashed potatoes. - Jamie Zawinski
I wrote the following description of how NeWS relates to modern web browsers and "AJAX" in the NeWS article on Wikipedia, and I also worked on TNT (The NeWS Toolkit) at Sun:
>NeWS was architecturally similar to what is now called AJAX, except that NeWS coherently:
>- used PostScript graphics instead of DHTML and CSS for rendering.
>- used PostScript data instead of XML and JSON for data representation.
>The best example of such a library is TNT (The NeWS Toolkit) which Sun released in 1989. Sun also shipped an earlier "Lite" toolkit intended for example purposes and making small programs.
Here's a good example of a TNT application I developed called "PizzaTool" that shipped with Solaris 2 / SVR4 Unix OpenWindows:
>The Story of Sun Microsystems PizzaTool: How I accidentally ordered my first pizza over the internet.
It was meant to be a programming example for TNT, so the object oriented PostScript source code is heavily commented:
And it has a manual page:
Before going to Sun, I also developed an early hypermedia browser and authoring tool called HyperTIES written in NeWS and using UniPress Emacs at the University of Maryland Human Computer Interaction Lab, which supported pie menus and tabbed windows. That is illustrated on both the NeWS and Tab (interface) pages on Wikipedia:
>HyperTIES is an early hypermedia browser developed under the direction of Dr. Ben Shneiderman at the University of Maryland Human Computer Interaction Lab. This screen snapshot shows the HyperTIES authoring tool (built with UniPress's Gosling Emacs text editor, written in MockLisp) and browser (built with the NeWS window system, written in PostScript, C and Forth). The tabbed windows and pie menu reusable components were developed by Don Hopkins, who also developed the NeWS Emacs (NeMACS) and HyperTIES user interfaces. (Sorry about the quality -- this is a scan of an old screen dump printed by a laser printer.)
>Designing to Facilitate Browsing: A Look Back at the Hyperties Workstation Browser
By Ben Shneiderman, Catherine Plaisant, Rodrigo Botafogo, Don Hopkins, William Weiland. Published in Hypermedia, vol. 3, 2 (1991)101–117.
>HyperTIES Discussions from Hacker News: I’m putting this lightly edited archive of a bunch of different discussions and email about HyperTIES, all together in one place here on Medium. Please forgive the rough wall of text and redundancy, but I haven’t yet had time to distill it all down into one sentence. I will just include the email I sent to Ben Shneiderman summarizing the interesting posts and links, for now. Here goes: [...]
And speaking of "good news", there was an even more wonderful user interface toolkit and deeply user customizable window manager for NeWS, like HyperCard with PostScript programming and colorful stencil/paint graphics and networking instead of Hypertalk scripting and black and white bitmap graphics and no networking, which I worked on porting to TNT at the Turing Institute with Arthur van Hoff, first called "GoodNeWS", then "HyperNeWS", then finally "HyperLook", which I used to port SimCity to Unix.
You could use HyperLook's built-in PostScript drawing editor to define the shape and look and feel of any of your windows, drawing arbitrarily shaped scalable window frames and content, and cutting and pasting in scriptable buttons and widgets with graphics, like customizable clocks and custom menus, etc. The Encapsulated PostScript drawing editor itself was a reusable component that other components could incorporate, like the way the customizable clock's property sheet had drawing editors to edit the clock face and hands, so you could edit the clock's appearance.
Decades later there are still no X-Windows window managers (or even Wayland window managers) that are anything like HyperLook.
>SimCity, Cellular Automata, and Happy Tool for HyperLook (nee HyperNeWS (nee GoodNeWS))
>HyperLook was like HyperCard for NeWS, with PostScript graphics and scripting plus networking. Here are three unique and wacky examples that plug together to show what HyperNeWS was all about, and where we could go in the future!
The "perfect" X-Windows or Wayland window manger should be more like HyperLook was 30 years ago, and enable users to easily customize the shape and graphics and behavior of their window frames and contents with a fully featured built-in graphics editor, paste in custom buttons and widgets from a library into those window frames and client applications, or create and script your own, like pie menus and arbitrarily shaped tabs stuck onto any window edge -- not just the top edge, and even edit the properties and graphics of those widgets and tabs and menus, like how the clock face and hands looked.
How would you even begin to implement something like that with X-Windows or Wayland? (It would be a waste of time to do that for X-Windows at this point, but there's a reason nobody's bothered to try in 30 years.)
I really like Rectangle. There’s a ton of apps like it. Some even more complex and some even more simple. Depends on your needs.
I use Yabai. It’s free, open source and works amazing. Need some fiddling around at the start though.
Been using amethyst for years, can't live without it
I must have run fvwm for a decade before switching to xfce. I do kinda miss it, so lightweight. But I really also appreciate a lot of things xfce makes easier.
Lost me at "sloppy focus." I actually quite liked fvwm and use sloppy focus still. I've become too lazy to bother knowing which WM is running on my machine but the lack of sloppy focus is the single feature that has prevented me from using Apple products forever. (I think the UX sucks too but if the focus worked as I wanted and the window management was a multi layered disaster, I could cope.)
For me, it's lack of sloppy focus and the mandatory raise-on-focus. I regularly have small utility windows floating in front of terminals or browsers and I don't want a click on those big windows to pull them in front of the small windows.
I hear iTerm has sloppy focus between its own windows, but ... that's not enough, is it?
WindowMaker does sloppy focus very well.
Please give me a button in the top-bar of every window that will disable all keyboard and mouse input to that window.
Another request (which I know is more difficult to implement) is to have a button in the top-bar that mutes the audio of that window.
I really like tiling window managers but they have too many bugs to be usable... In the meantime I use XFCE and snap windows to quarter, half or full screen
One thing I miss from those times: themes with textures for your windows. I wouldn't use it since they look distracting but they were beautiful.