I’ve forgone tmux and screen because (at least tmux) adds noticeable input lag, and I find neovim’s terminal emulator more convenient (one set of keys for managing windows, unified “clipboard” vim registers). If I really need a detachable session, I wrote another simple tool for that.

I’m not sure if it’s the only input lag you were noticing, but the biggest annoyance in this respect for me goes away if you add

set -s escape-time 0

to your .tmux.conf. By default tmux pauses for a half-second after ESC before sending it through, in order to allow using ESC+key as equivalent to Meta+key for tmux bindings (like emacs does). Which is probably fine if you don’t use vim, but is very annoying in vim. Setting the delay to 0 does of course mean that you can’t use ESC+key sequences for tmux bindings.

Remember when being Unix-like meant “everything was a file”? It was nice.

Linux is still better than most, honestly (sysctl talks to /sys, for example, instead of being its own thing) but Linux still has netlink and other stuff that aren’t files.

Of course, it’s easy to judge, but X and Wayland solve hard problems: it’s not enough to write to a file to put pixels on the screen, you have to multiplex/mediate access, allow for manipulation of potentially broken clients, etc.

Plan 9 was really the only one who got it right, and even then it got a few things wrong.

I hate Linux’s “everything is a virtual filesystem” approach. Looking at mount output on a modern Linux box just feels disgusting. 12 lines (!) of cgroups spam, and then devpts pstore securityfs debugfs configfs hugetlbfs OMGWTFfs. And how could I forget the infamous efivarfs!

Also, most files in sysfs are text, so you have the overhead of parsing strings just to read system information.

Sure, but then when you want to do something less ad-hoc with it, it becomes a pain. The canonical source of that information shouldn’t be text, it should be structured data that can be dumped to text when necessary.