I’m not really interested in defending anything. I tried out plan9port and liked it, but I have to live in Unix land. Here’s how I set that up.
A Warning
The suckless community, and some of the plan9 communities, are dominated by jackasses. I hope that’s strong enough wording to impress the severity. Don’t go into IRC for help. Stay off the suckless email list. The software is great, the people who write it are well-spoken and well-reasoned, but for some reason the fandom is horrible to everyone.
xterm
9term has some really cool ideas. But Unix has a long history of using graphical terminals, and lots of stuff needs VT220 compatibility. xterm is a good compromise.
You can make the xterm scroll bar (and all other Athena scrollbars) prettier with this in your X resources:
*Scrollbar.thickness: 10
*Scrollbar.thumb: None
*Scrollbar.foreground: gray80
*Scrollbar.background: gray50
*Scrollbar.borderWidth: 3
*ScrollBarBorder: 0
This will swap the left and right mouse buttons, to work like acme and 9term:
*Scrollbar.translations: #override\
<Btn1Down>: StartScroll(Backward) \n\
<Btn3Down>: StartScroll(Forward) \n\
<BtnUp>: NotifyScroll(Proportional) EndScroll()
A side note:
if xrdb is never run and your root window doesn’t have a
RESOURCE_MANAGER
property set,
libXaw will read $HOME/.Xdefaults
.
This is supposedly deprecated,
but Xaw is so ancient it will probably never be removed.
9wm
I’m now maintaining the 9wm window manager. If you like rio you should give it a whirl, there are some differences you might prefer. https://github.com/9wm/9wm
sshfs
As a non-root user,
you can mount remote file systems locally with sshfs
.
It’s probably as close as Unix is going to get for a while,
and it’s not awful.
lm
The plan9 lm
command is great:
it’s like apropos
or man -k
but it outputs lines you can
copy and paste into a prompt to pull up the page.
Here’s a script to do the same thing with Unix:
#! /bin/sh
apropos -l "$@" | sed 's/\(.*\) (\(.*\)) * - /man \2 \1 # /'
xdg-open
This is the current Linux notion of how to do things like the plumber. Just about every modern program calls out to it to open files, and it uses whichever one is first in your path, so you can make a little script to do what you want and avoid having to configure all the weirdo files in ~/.config
#! /bin/sh
case "$1" in
*://*)
exec web "$1"
;;
*.pdf)
exec my-pdf-viewer "$1"
;;
esac
mon
Russ Cox uses a program called mon
to watch files and run them whenever they change.
This is pretty handy for iterative debugging,
you don’t have to keep re-running your program every time you
save/compile.
Here’s a start at one. It can be improved.
#! /bin/sh
while true; do
gonow=
stat=$(stat --format=%Y.%Z.%s $1)
if [ "$stat" != "${laststat:-$stat}" ]; then
laststat=$stat
gonow=yes
fi
if [ -n "$gonow" ]; then
echo "[[=== start ===]]"
$@
echo "[[=== done ===]]"
fi
laststat=$stat
sleep 1
done