Way Cooler tiling window manager
way-cooler.org
way-cooler.org
Both are tiling window managers that are extensible through Lua, support D-Bus, etc.
If you want to check out something conceptually similar, but aren’t ready for Wayland, consider trying Awesome.
> Way Cooler comes in two primary flavors: i3 and awesome.
> The i3 flavor is set up like a default i3 install, with the same keybindings and tiling algorithm. The only difference between this flavor and actual i3 is that the primary configuration format is still Lua.
Sounds very good, I'm an i3 user and I had a lot of trouble getting Sway going on my Ubuntu Xenial box, so I'm going to give this a whirl.
Despite i3/xmonad/bspwm/etc/etc I keep going back to ratpoison for two features I haven't found elsewhere:
- chained key commands, a la emacs. E.g., I use C-a b to open a bash terminal. I do use non-chained commands, like Mod4+n to go to the next window, but chained key commands can be much easier to do one-handed, and so far it seems ratpoison is the only to offer built in support for this.
- manual window arrangement. I don't care for the window layouts most tiling WM's since dwm/xmonad seem to use.
Until I see those features in another wm I'll probably remain one of the handful of ratpoison users.
I love them, they can do anything and you have the option of a pop up key map that displays the key function (or whatever you want) once you hit the first key.
Also, how many tiles do you end up having on average on the same window? I'm curious because to me any value higher than 3 doesn't seem practical, I'd rather switch to another window.
Finally, do you save your layouts? It seems like a lot of work if you have a very precise layout and it's discarded when you shut down.
I'm pretty sure writing chained commands would be 2-3 lines of Lua. You're welcome to keep waiting but I invite you to dip your toes in & see what it'd look like. I rather suspect you'd find a community interested in helping you chase your dreams. No need to be bystander and follower on this one.
But having to working under a MS Windows 10 setup now, I was wondering:
Is there anything equivalent for MS Windows?
===
Windows 10 has the ability to tile windows by dragging one of them to the left or right screen edge, or corners (dragging one to the top edge maximize it).
But they can only resize nearby windows when there are a vertical split between two windows.
If i try using a full height window on one side, and two half height on the other, Windows fails to resize the neighbors to match any changes i make.
> Taekwindow is a simple, lightweight and free Windows program that allows you to move and resize windows by dragging them with the Alt key, similar to many X11 window managers.
They're half-way between the minimal snapping built into each OS and a full-blown tiling WM. The keyboard shortcuts for left and right 2:3rds and shortcuts for moving a window to a specific quadrant in Magnet are my most-used, since often I want a terminal and a browser, or two IDE windows, or IDE + browser + docs (dash) + terminal on one screen.
So instead I came up with a number of window positions and sizes that I liked and I use AutoHotKey to invoke each of them with a hotkey. So for example, I have a setting for a full-height, 80% width, window at the left edge, and another one for the same size at the right edge. Now I can put my browser on the right edge, and my ConEmu on the left edge, and while reading HackerNews in the browser I can see when the build I've started in ConEmu is done :-)
Works okay on Windows 10, but has some weird behaviour around the search menu on Windows 10 Enterprise LTSB.
https://github.com/fuhsjr00/bug.n
It worked pretty well but was occasionally buggy, but that's the best that can be expected without replacing the Explorer Shell. I'd recommend trying it out.
WinSplit Revolution (Free, closed source, abandoned)
Can be configured to have shortcuts to place your windows in any position you want. Out-the-box it has numpad shortcuts for a 2x2 or 3x3 grid and you can add as many as you want to it and the keys will cycle through them.You have to download it from cnet because it's not maintained any more and the original website redirects to a paid-for alternative, but it still works for me with Windows 7.
http://download.cnet.com/WinSplit-Revolution/3000-2072_4-109...
Window Grid (Free, closed source, last build 2016-05-17)
Layout windows on a dynamic grid by dragging with the right mouse button. PWT - Python Windows Tiler (Open source)
can remove the unnecessary parts of the windows, such as scrollbars, menu bar, etc..http://iradar.blogspot.co.uk/2011/07/python-windows-tiler-ti...
https://github.com/Tzbob/python-windows-tiler
More suggestions here:
https://news.ycombinator.com/item?id=14307243I haven't personally tried it, but I have heard about it a few times, so I assume it's fairly good. This is the list of supported features, if you are interested: https://github.com/SirCmpwn/sway/issues/2
Shameless plug: I maintain a fork at https://github.com/yjftsjthsd-g/keynav because the original author hasn't been active in a while.
Edit: wrong link :)
Actually even otherwise, it's not like you're earning money so no need to disclaim!
i click 4
e click 5
That said, I may make an effort to document this better.I use i3wm (well, i3-gaps) as the WM. Xdotool is just used to move the cursor with hotkeys: https://github.com/mortie/nixConf/blob/7c12d4215c703de0c6935..., scrot is used both for a print screen button (scrot takes the picture, then it's copied to my server with scp, and the URL is put in the clipboard: https://github.com/mortie/nixConf/blob/master/bin/mshot) and for i3lock (scrot takes the picture, imagemagick pixelates, i3lock shows it: https://github.com/mortie/nixConf/blob/master/bin/mlock).
I also have a project called dedaemon: https://github.com/mortie/dedaemon. That uses udev to listen to events, like displays or input devices being connected or disconnected, and does a preconfigured to them. I for example have these lines, which sets the resolution and frame rate to any connected monitor to the highest possible, and positions it to the left of the primary monitor: https://github.com/mortie/nixConf/blob/7c12d4215c703de0c6935.... I imagine porting that functionality to wayland would be really hard, and probalby require writing custom extensions to each window manager separately.
There's also this other project I have, which isn't really related to wayland, but which I still feel is relevant: mmenu - https://github.com/mortie/mmenu. It just makes dmenu work as a calculator, running the input through python if it doesn't match a program in your $PATH, plus some other features.
Nice github tagline for SirCmpwn ;-)
I've checked the linked issue from time-to-time, looks like it's getting really close to feature complete now. Will probably explore Wayland + Sway after new laptop purchase later this year.
In other news, i3 has been at the very core of my computing experience for 5 years running, absolutely fantastic application.
Do not wait and get a Linux system with i3 tomorrow. You will be so much faster and more structured in your daily workflow than with Alt-Tab.
A nice side effect: Apps feel much faster than on OSX. I don't know why but everything is snappier and just more resonsive despite a much weaker CPU and same hires screen on the Linux system. Especially the terminal rendering and application switching which is instant.
Not trying to start a flame war but once I managed to install it how I liked the entire system felt so cohesive and well designed. (Ifconfig handling wpa for instance) and it turned out to be so much lighter that my laptops battery life went up 20%.
It was an older thinkpad though. So I guess YMMV.
As a long time awesomeWM (and other tiling WM) user, I've found it to be more than acceptable.
Its sadly not actively developed (the latest github commit was 2 years ago), but in my experience, its been very stable and I’ve used it for years without any issues (although I stopped using it almost 2 years ago when I started using a mac for work).
I haven’t tried way cooler, but if it were to let me work like I did in goomwwm (especially manual tiling), I’d be sold. Dbus as the integration mechanism sounds interesting and I like rust and lua too.
[1] I never liked automatic tiling personally
QT allows decorations to be disabled and so works well with a tiling compositor. GTK doesn't. There are various GTK patches and hacks floating around to address this but nothing upstream. Older software generally works well by virtue of pre-dating client-side decorations.
GTK 3 has been downhill usability-wise for me. One of the primary reasons I've stopped as a developer to use it entirely.
Also, the path bar is long gone. It used to support tab completion, which was actually faster than selecting files and/or searching for them. I don't know what they're thinking.
The list of gripes I have with GTK 3 is increasing at each release.
Ordinarily QT will automatically render decorations inside an application's Wayland window, but if the QT_WAYLAND_DISABLE_WINDOWDECORATION environment variable is set, it only renders the content inside the decorations. The window manager can them draw it's own decorations around the outside, when it composites the desktop.
It's not ideal. There's no mechanism for an application to supply hints to the window manager to control it's decorations like in X. Nor can the application draw custom borders like when using client-side decorations. There's really no other way of implementing the stacking and tabbed window layouts which are popular in tiling window managers though. Thankfully it's good enough for most applications and the compositor can have overrides (e.g in a user config file) for special cases.
Oh, brings back memories from when I used to have Sawfish installed.
Way Cooler is designed from the ground up to be secure. Rust
prevents Way Cooler from ever having a data race, dangling
pointers, or a segfault. Large classes of security
vulnerabilities, such as from buffer overruns or use after
free, are a thing of the past.
haha nice selling point. Could add this to any app built with a memory managed language. =PPersonally, I think the statement is too strong. Rust is not immune to these things as the compiler is victim to all the realities of software development that all projects face. But it certainly does dramatically reduce the bug vectors.
BTW, in Java data races do not cause undefined-behaviour. In fact there is no undefined behaviour in Java at all (as specified at least, in practice as you and many others have observed things may work quite differently).
Of course bugs in the JVM, native libraries or things like sun.misc.Unsafe might. But that's no different for rust, once you start using unsafe or use C libraries things might explode.
The Rust compiler is extremely good at preventing undefined behavior in code that's not being written maliciously. You really can't encounter one by accident.
The advantage of desktop components that don't crash is just that, they don't crash-and-restart.
Simply not true, my Linux desktops have an uptime (system and desktop processes) of weeks to months. I've never seen a single Linux distro "ship with watchdogs" perhaps you can provide more details about what you mean.
I know this because I have an unfixed and reproducible crashing bug in gnome-shell:
1) unplug my 4K monitor from HDMI
2) start up the Display tool in system settings
One's experience on the Linux desktop depends on the distro choice, the applications used, and the hardware itself. I once had a Slackware box that ran non-stop as my daily driver with no crashes or odd behavior; I only rebooted it for kernel upgrades. I've had Debian and Ubuntu boxes that were crash-happy turds, but I've also had stable Debian-based machines.
In my experience, the most stable machines are name-brand pro workstations that use fully open source GPU and audio drivers, running stable branches of conservative distros like Slackware. If you're running a bleeding edge distro like Arch on a self-built Kaby Lake or Ryzen beast with the latest and greatest GPU using closed source drivers, yeah you're going to have stability issues.
I think your general observation is correct, though.
Most spurious crashes are likely incorrect combinations of software by the distro that are only very slightly incompatible. This is way more likely on a distro that in principle just ships "the latest of everything".
Many are in software that handles complex formats or interacts with the graphics / audio system. Many/all of the former have a very poor security track record which matches up with the crashes: a parser full of vulnerabilities is more likely to choke on the occasional flipped bit or on a slightly incorrect file.