vim-keybindings-everywhere-the-ultimate-list
vim-keybindings-everywhere-the-ultimate-list copied to clipboard
"Window Managers" section needs refining
Problem
Most of the tiling(which i think is assumed the Window Managers section) window managers have vim-like keybindings and even if some don't, they support configuring that. So listing just a few window managers here has the following problems:
- New tiling window managers are being abandoned and crated continuously and, as i mentioned, each of them will fit in this list. So the Window Managers will never be exhaustive.
- At the moment list doesn't cover Microsoft Windows and mostly not MacOS. I believe that these 2 OSes will never rival Linux in this matter, but some people have no option but to use these and list should also mention software for them.
Also among all the currently listed WMs only
Swayandi3are maintained (and maybeAppGrid). (Fun fact,howmis mentioned twice in the section)
So without any hints, just from the tip of my head i can name hyprland i3 sway qtile bspwm dwl dwm niri stumpwm xmonad which is just a tip of the iceberg (though these are among the most popular).
We can't mention every one out there and listing only a few will make the list incomplete.
Proposed solution
I don't know if it fits well in the "philosophy" of this list, but the best thing i could think of is leaving links to dedicated lists that would best cover all three platforms.
- For MacOS, the best i could find is https://github.com/jaywcjlove/awesome-mac#window-management
- For Microsoft Windows (and Linux) there is a great Wikipedia page: https://en.wikipedia.org/wiki/Tiling_window_manager. But honestly, due to the nature of MS Windows, there will never be many options. My 2 only recommendations for our list are GlazeWM and komorebi. On the other hand, "the continuous problem" i've mentioned is still applicable, so it still will be the best to point to a dynamic list.
- For Linux, aforementioned Wikipedia page seems exhaustive, but i find it a bit messy. ArchWiki in that regard seems unbeatable: https://wiki.archlinux.org/title/Window_manager
What do ya think?
If lazily linking to other resources isn't an option, i can make up a list for Linux and MS Windows myself but it will take up half of the whole list in space :P (Haven't ever used MacOS so will need to also do some research). Given how fundamental a tiling WM is in every self-respecting vimmer's workflow, i think this section should really be decent. There will certainly be people who will come across this concept for the first time and will be cool if they go and dive in after watching our list.
Hello, thank you for your thoughts and concerns. You have some valid points there with your experience WMing!
As you say, it might not make sense to list all WMs in the world, assuming that most can be configured to be vim-like. However, I think this list here would support Vim-people good by:
- Noting WMs that work exceptionally well to vim-trained fingers, by default config maybe even
- Or links or hints on how to configure a VM in a vim-like way e.g. ,a link to a reputable config for that VM, or a blogpost detailing the subject.
- For all other VMs, it could suffice to link to an external resource and just say "Most VMs in this external resource can likely also be configured to be vim-like".
What do you think about this middle way?
From my experience, the only (and the most important) keybindings that are (by default or can be configured to be) Vim-like are those that have something do with directions (up/down/right/left). And it basically boils down to 1) focusing windows 2) resizing windows 3) moving windows. Any tiling window manager supports these operations so if vim keys are not default it is as simple as
- [copy and] open default config file
- change all occurences of words "up right down left" to "h j k l"
These are how defaults look like for some WMs
i3:
$mod+j left
$mod+k down
$mod+l up
$mod+; right
sway:
set $left h
...
bindsym $mod+$left focus left
...
qtile:
Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"),
hyprland:
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
Even in case of Qtile, with it being configured in python, the steps to change keys to vim-like are very intuitive. Btw, in these examples qtile and sway have hjkl by default, i3 has j k l ; and with hyprland you get arrows.
The default config file can be found a) in the docs b) in the git repo c) it will appear in the ~/.config automatically.
In any case, there is no way not to find the config file.
Noting WMs that work exceptionally well to vim-trained fingers, by default config maybe even
The reason i find it not the best to highlight only some WMs based on good default config is that this factor does not make any Window Manager superior to another. A good example is tmux (though it's not a WM): the default prefix key is C-b which people rebind most of the time(i guess for a reason). The simple and only reason for the prefix being C-b:
the prototype of tmux was originally developed inside screen and C-b was chosen not to clash with the screen meta key.
Due to the nature of tiling WMs, any user that decides to go this road is expected to get their hands dirty. So using something of a kind and never touching the config is very unlikely scenario. Also good default keybindings won't save somebody's favorite game from not working with that window manager (or wayland compositor). By this i mean that when it comes to Linux, there is also a factor to consider when choosing a WM such as whether Wayland is a wanted thing or not. (the ArchWiki page covers this matter).
Or links or hints on how to configure a VM in a vim-like way e.g. ,a link to a reputable config for that VM, or a blogpost detailing the subject.
Again, it's hard to think about anything other than 1) 2) and 3) to be vim-like. So it's just a minute of work, as easy as 1. -> 2. -> done.
Let's keep this open for other's to drop in some thoughts :)