diff --git a/README.md b/README.md index 69c798d..6cb5554 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,24 @@ ### Experimental +## What is this? + +I am experimenting with the idea of a distributed shell history. The goal is to +be able to search your shell history across different bash processes easily. +And potentially different computers. + +This uses UNIX Domain Sockets to communicate with a server written in Racket. +Each Racket thread corresponds to a shell process, and they receive shell +commands as messages. If you want to get the history for a given process, you +simply send a message to a thread and then it sends you back the history. + +Unix Domain Sockets are ideal for this, as they are less likely to conflict +with other services running on the machine (you specify a path, not a port). As +well, they are more robust than FIFOs because they can handle multiple +concurrent connections easily. + +At some point in the future, part of this may be rewritten in C, Pony, or +Erlang, or a combination of all three. + 1. Compile `server.rkt` with `raco exe server.rkt` 2. Run `./server` 3. Run `source shelltalk.sh`