A networked control bus and messaging system, with many useful modules
- Link the volume on all your devices
- Automatically start torrents on a different machine
- Trigger on custom events
- Easy access to platform libraries
Svarmr is a simple message bus that is super easy to connect to.
Simple modules can be a few lines long, and there are examples in Go, Racket, Perl, and C.
Svarmr already has some useful modules, that monitor clipboard changes, respond to keys, speak text, and detect notes.
Each module can transmit and receive any events it pleases, but it is useful to break them into sources, sinks, and processors. Sources mainly generate events, sinks wait for events and then do something, and processors wait for events, deal with them and then send new events.
- clipboardWatcher - Broadcasts clipboard changes
- mdnsWatcher - Broadcasts mDNS results
- heartBeat - Broadcasts a regular beat (more useful than it sounds)
- torrentListener - Starts torrents in Deluge
- monitor.c - Prints events to stdout
- monitor.go - Prints events to stdout
- volume - Sets the volume (needs helpers)
- userNotify - Pops up a message on the screen (needs helpers)
- moduleStarter - launches other modules
- imgdisplay - Displays an image
- clipboardProcessor - Choose an action based on clipboard contents
- relay - Connects two computers (network bus)
Not all modules fall into these easy categories, and sometimes it is better to keep related modules together.
- detect/pitchDetect - Listens on the microphone and outputs note pitch
- pitchWrapper - Wraps pitchDetect
- pitchProcessor - Filters pitch results and outputs notes
- noteKeyboard - Turns notes into keypresses and sends them to the active window
- server - The message bus daemon
- svarmr.server - Avahi service definition file
Svarmr relies on a lot of other projects to provide cross platform features. As a result, I package and ship the following programs with svarmr.
- Notifu - Popup messages on windows
- Autohotkey - Intercept keys, and insert keys
- Deluge - Download torrents (linux)
- fswatch - Detect filesystem changes
- imagesnap - Take a picture
- SyntaxNet - Sentence tagging