Here is a selection of my free-as-in-freedom Unix
software. I have chosen to list those of my programs that
I think other people may find useful, but if you're
interested to see more of them, feel free to check out my GitHub profile.
watch is a tool for watching file changes, built for operating systems that support kqueue. The interface is simple:
$ watch document.ms other.html
This will watch the files document.ms and other.html for changes, and whenever a change is detected, the respective filename will be printed on standard out.
watch is written in C and is likely as fast as could be.
dwim (“do what I mean”) is a Perl script that emulates some of Plan 9's plumbing system. In short, it performs an action depending on the contents of the currently selected text in X11. For example:
watch.c:21is selected, then watch.c is opened in vi(1) with the cursor on line 21.
http://john.ankarstrom.seis selected, then that address is opened in the web browser.
<stdlib.h>is selected, then /usr/include/stdlib.h is opened with vi(1).
dwim(1)is selected, then the man page dwim, residing in section 1, is opened with man(1).
Because dwim acts on the X11 primary selection, this works with any program. For instance, if you have dwim installed on your system, you can double click any of the examples above, run dwim, and your web browser, text editor or man page viewer would be opened.
I have dwim bound to a global key binding with my window manager.
repl creates a read-eval-print loop for any shell command. It's very common that Unix tools have interfaces like these:
$ git <actual command>
$ ifconfig <actual command>
If you need to run multiple commands in succession, like add, commit, push, you'll find yourself unnecessarily typing git an increasingly annoying number of times:
$ git add x
$ git commit
$ git add y
$ git commit --amend
$ git log
$ git push
This is the problem repl solves:
$ repl git
git > add x
git > commit
git > add y
git > commit --amend
git > log
git > push
Now, repl types
git for you! When
you're done, just press C-c and you'll return
to the normal shell.
t is a simple tool that is very useful to me personally: it opens a terminal in the same directory as the currently focused terminal.
By default, t launches urxvtc – to use
your own terminal emulator, edit the C source code.
This assumes that the window title of your terminal is always set to the path of the current directory. With ksh(1), this can be achieved by adding the following to your shell configuration:
This sets the title to the value of
whenever your prompt is written.
(Note: t requires xtitle(1) to be installed.)