I love StumpWM because it does not force a workflow on me! I have configured it to work the way I want it to! And as far as I know I cannot have this workflow in any other tiling window manager!
If I want to open firefox I press `F9` and then `f`.
Let's start a terminal window... `F9` `t`
Let's open emacs... `F9` `e`
Now I want to go back to firefox... `F9` `f`
Press `F8` if you want to switch between last 2 windows (emacs & firefox)...
F8 ... and I'm back at my emacs window...
Oh, and I forgot to mention that everything is in full screen! 29" of real estate for every app! No tiling or stacking windows.
There are no numbers, tags or anything to remember. Too bad this will never work on a mac... everything starts with an i... just kidding! :)
If you are interested in my stumpwmrc file:
Edit: Actually, most all of this could be implemented in X11 keybindings outside of your window manager. Just the full screen part that the WM is needed for. And that can be implemented in any WM and probably most DE
I'd love to be able to "right-windows o f" right windows is the leader key, o would be open, and f is for firefox. "right-windows o c" to open chrome
You can easily define new commands by using the "defcommand" macro. Here's an example from my config file that creates a floating group (untiled windows) and starts Android Studio in it (or switches to it if it isn't already running):
(defcommand android-studio () ()
"Start Android Studio in its own group"
(select-group-or-create ("Android Studio" :float t)
(run-shell-command "~/src/android-studio/bin/studio.sh" nil)))
As an example, I have built a Dbus integration module for StumpWM. It's a work in progress, but useful for daily work. It's nice to be able to exactly control which notifications are displayed and how long they stay on the screen (I'm looking at you, IDEA compilation notifications).
It runs inside of StumpWM and implements a Dbus notifications provider: https://github.com/lokedhs/dbus-test
The kind of flexibility offered by StumpWM is hard to beat, and combined with the ability to connect SLIME to it in order to have a REPL running in Emacs directly working with the running window manager makes it, in my opinion, better than any alternative.
I could easily replicate this in bspwm+sxhkd with a small script.
But yeah, after switching to tiling WM and configuring it properly there's no going back.
Just in time for Fedora making Wayland the new default :)
Seriously though. Someone please make a good, working Wayland tiling WM.
Wayland is just super nice compared to X11 for enough tasks to justify using it.
Iirc copying between Wayland and X11/xwayland apps didn't work. Any news on improvements in that area?
Why don't you work on it?
As a maintainer and contributor to several projects I already use (and thus see the return on) I already see myself too short on resources to follow up everything I'd like to.
Trying to fix shortcomings in projects which (for me) are not yet production ready just doesn't make it onto my TODO list. I hope someone does help you fix this though.
Really. No harm meant. Hope it didn't come off that way.
So: if there isn't a WM for Wayland that allows their workflow, then they will stick with X.
Given that these issues has persisted for so long and that they seem solved in Gnome and KDE...
Not accusing you of full NIH, but are there any technical reasons for not just reusing/leveraging kwin or whatever Gnome uses, instead of creating your own compositor library where all these issues has to be solved, yet again?
But maybe GNOME's compositor is handling that.
Sway uses another one, which was why I asked.
I'd like to hear what makes it better for you in terms of day-to-day experience. I can look at feature lists, but those often don't give a good picture of the reality that people experience. Given your enthusiasm for Wayland, I'd like to hear it!
Wayland is smoother, does not have graphical glitches and everything performs consistently.
Take this (slightly contrived) example: In Gnome 3 you can "zoom" out to panarama view all your running applications, while you have a HTML5 video running in your browser and everything just runs flawlessly, with almost no system-load, and no tearing or any nonsense. All this while you zoom in and out on whatever app or desktop or workspace you want to focus on.
A less contrived example: Vertically scrolling a document in your browser or whatever should never ever tear. Ever. On X11 it often does. On Wayland it doesn't.
My best simple comparison would be iOS vs Android. There's something about that extra little bit of responsiveness on iOS, that jerkyness you immediately notice on Android when you've gotten used to consistently smooth 60fps interfaces... That difference is something you feel.
After using Wayland for a while, you'll notice that feeling yourself on your desktop too.
I use X11 (StumpWM, actually) on three computers with different graphics cards and system configurations, and I don't have jerkyness, tearing while scrolling, or graphical glitches on any of them.
This works fine with Wayland. With X11 I get tearing. I'm pretty sure this is what everyone else is complaining about too.
Why these things are not enabled by default in the driver i do not know, as it makes X11 seem worse than it really is.
Same with a good compositing X11 window manager. In fact wayland does not dictate gpu accelerated rendering nor compositing. And there is much more to look at when talking about wayland vs X11, many details and a few major things.
But in general, no, wayland is still not ready. The people leading the desktop wayland parade have to all take a step back and think, while nvidia needs to agree with kernel people on how to manage memory. Then we can start thinking about replacing X (start, as there are still many more details).
I use DWM, no graphical glitches, no tearing, no jankiness, absolutely consistently quick (which actually kind of removes "smoothness" from the equation; everything is pretty much instantaneous).
Scrolling a document in Chromium very rarely pauses, but only ever when there's some bad JS blocking the UI, which isn't related to the window manager at all.
It's alpha, but gets extra HN brownie points for being written in Rust.
--> Are there Wayland equivalents to wmctrl and xdotool? Any plans for them? If no, does Wayland provide a complete-enough API to write similar tools for Wayland?
This way you get a nice winwdowing environment but still have tiling wm.
With StumpWM, it's nice in terms of finding where certain functionality is implemented so I can rework it in my ~/.stumpwmrc. Having easily-accessible source code was invaluable for me adding gaps between tiled windows (and has helped me get 90% of the way done with adding a second modeline to hold WindowMaker-style dockapps).
In the last screenshot, what's the header at the top of the screen? Is that from the WM or the program running inside of it just drawing at the top of the screen? (It's too low resolution to tell..)
And is stumpwm autotiled or manually tiled?
I personally don't notice any significant performance issues, even on old single-core 32-bit hardware.
If there are speed problems in an application like Stumpwm with the current Lisp systems, it is definitely not the raw micro-bench speed that's a problem, but more likely something else (architecture, threading, GC, event handling, bugs, ...).
StumpWM handles windows a little differently than i3. In Stump, every new window simply piles on top of the existing windows. There's no stacked/tabbed/split layouts to switch from. You switch windows with a fuzzy-matching text-completion thing.
When you want a split, you give a "split" command, either vertical or horizontal. The top-most (ie visible) window goes into the new split, and the next window down the stack becomes visible in the leftover space. Removing a split is another single command. Pulling a different window into a split is another single command.
Almost the only times I want to split windows is where I need to look at something side-by-side really quickly, for whatever reason. In Stump that's one command to split, and another to remove the split.
In i3, it's "create a split container", "move to another window", "move this window into the split container", do what you need to do, then "move this window up/out of the split container", then "move the original window up/out of the split container". I regularly get tangled up in the various containers, and have a hard time getting out of them.
I freely admit I may be doing it wrong, but I haven't yet figured out how to do it right.
I never used them and always have my windows maximized when working.
The tiling part of it isn't the important bit: what's important is that they keep your windows placed in a useful manner for the task you're performing, tiling in various ways being one of the ways in which they achieve that.
Normal window managers are akin to a desk where everything is tossed around, whereas tiling window managers are like desks that automatically organise whatever is on them.
I do wonder if anything Wayland related will have such staying power.
For me, the advantages of a tiling window manager [xmonad] are:
1. Keyboard control of app switching that is easy to setup in a 'habitual' configuration yet flexible enough to change on the fly.
2. The ability to quickly switch via keystroke to and from full screen views of an application. And when I switch via keystroke from the full screen view to a view of multiple applications the multiple application view is presented in a sane and consistent way right away.
3. The ability to switch via keystroke immediately to a view of two or more applications side by side or one above the other.
There is a learning curve and as with all things that occur up until the year of the linux desktop, there is a configuration curve. But basically, a tiling window manager lets me make my windows dance to whatever tune I choose.
Yes and no. Windows 10 has some tiling wm features, try win-leftarrow, win-rightarrow, win-uparrow and win-downarrow.
Ed: and mouse-drag to resize the split(s).
Ed2: Also try with more than one screen. I actually think ms have struck a tremendous balance between tiling power-user, and basic computer literacy users. I still prefer a pure/proper tiling wm.
It's not xmonad, but it is an improvement.
1. Xmonad's predictability.
2. Xmonad's ability to keyboard shortcut between window configurations.
3. Xmonad utilizing home position keys rather than the arrows for primary manipulation.
Anyway, the alternatives I see mentioned for Windows are based around AutoHotKey.
If you're using OSX, you may want to try Amethyst which provides Xmonad-like experience (at least the tiling part of it, under OSX-specific restrictions) in native Cocoa environment.
- I can completely disable all controls, notifications, status bars and the like. This leaves me with less noise and allow me to focus on the applications at hand. But usability does not suffer, I can display whatever information I like, when I like with a simply shortcut. F.e. If I need to take a look at the date I just hit `C-t d` and it shows up.
- I can assign shortcuts to applications. For example, wherever I am, whatever is on the forefront I can hit `C-t f` and Firefox will show up, I hit it again and it will go to another Firefox window if there is one, terminal is `C-t c` and so on. I stop doing window management altogether and work on higher level.
Note also that StumpWM does manual window management, while it sounds tedious, in fact it is a delight. You have all your stuff exactly as you like it without the WM trying to guess anything.
It will also ruin you for using most standard desktop environments, and I personally burn probably a solid day a year porting my WM config to some new environment. These have been a worthwhile trade-offs for me, but probably something to consider if you have to use systems you don't control very often.
Tiling window managers: open application, and the window manager puts it in a sensible position most of the time. Use shortcuts to quickly correct its placement, if necessary. Typically shortcuts are something like
- switch to master pane (the biggest pane on the screen)
- push left/right/up/down
- push to another desktop or screen
- make fullscreen
But what it is most like (switching to simile) is Emacs window manager...by which I mean that Emacs uses a tiling window manager.
I also have my windows maximized and have each window assigned to a different workspace. Switching is as easy as pressing alt + 1, alt + 2, etc ... (in i3wm)
* You can have two editor windows "maximized" into two halves of your screen, letting you compare things side-by side
* Expanding on the above, my typical development workflow on my laptop is to dedicate one half to an editor window, then split the other half, with the top for git (I use Emacs w/ Magit) and the bottom for a terminal window (usually for actually running my project). I'll then add editor windows to the left half and terminal windows to the bottom-right as needed. All windows are maximized into their little compartments.
* Your "maximize everything" workflow is actually the default in StumpWM (which doesn't split windows unless you tell it to split windows), and is how I typically work when I don't need to be viewing multiple things at once.
Also extremely light-weight when compared to DEs like Unity/Gnome.
I have the habit of maximizing the browser on windows, but on most pages that leaves a lot of empty space to the sides that isn't used anyway.
Under i3 on the other hand I keep the browser on maybe 1/3rd of the screen width because managing the whole layout (not just one window at a time) is so much easier.
And the alternative, overlapping/floating rarely seems useful for me.
I have found that I use 10% and absolutely require 0% of the larger DEs' features, so using a simpler system makes sense.
Your use case seems like it would work well with tiling window managers, since you can just arrange things so that you have a single fullscreen window per workspace.
I think I'll try them :)
I guess the performance impact of these WMs is smaller than with full blown desktop environments?
Basically don't bother if your main objective is for things to be "faster".
These are all about efficient and keyboard-driven UX.
Yes, although with modern processors, GPUs and memory prices that is probably not an issue.