jj is a simple FIFO and filesystem based Jabber/XMPP client. jj is inspired by ii IRC client.
jj is more tool than traditional instant messanger client. It can be easily extended with normal unix tools. It is perfect for bots and notifications. Interaction with jj is done by writing and reading files from the server directory which jj creates.
Latest official jj version is 2. It can be downloaded here.
The development version can be cloned with git from jj's github page.
To compile jj you need loudmouth and glib development libraries. On Debian install these packages:
libloudmouth1-dev libglib2.0-dev
Then you can compile jj with make:
make
Now you should have jj executable. Start it with the line (replace server and user stuff with your own):
./jj -s server.tld -j user@server.tld -u user -p password -m User
It will create server.tld directory that will contain in file used to communicate to jj and out file for the output. Commands recognize at this point are:
/join channel@chat.server.tld /msg username@server.tldfor every joined muc there will be a new directory in server.tld/mucs with its own in and out files. Normal users will get a directory in server.tld directory that works in the same way. After you have some mucs or users in server.tld you can just write to in files and read the outfiles. Unix tool echo is nice way to to write, example:
echo "/join chat@conference.jabber.org" > server.tld/in
Here is an example of the directory tree structure from connection to server.tld.
server.tld |-- in |-- mucs | |-- lobby@conference.server.tld | | |-- in | | `-- out | |-- bar@conference.server.tld | | |-- in | | `-- out | |-- basement@conference.server.tld | | |-- in | | `-- out | `-- backstage@conference.server.tld | |-- in | `-- out |-- out `-- user@server.tld |-- in `-- out
Here is a small usage example that shows basic usage. First start up jj. Then join some mucs and finally follow mucs output with tail.
./jj -s server.tld -j user@server.tld -u user -p password -m User echo "/join lobby@conference.server.tld" > server.tld/in echo "/join bar@conference.server.tld" > server.tld/in echo "/join basement@conference.server.tld" > server.tld/in echo "/join backstage@conference.server.tld" > server.tld/in cd server.tld/mucs tail -f lobby@conference.server.tld/out bar@conference.server.tld/out basement@conference.server.tld/out backstage@conference.server.tld
When chatting to only one person you should first initiate the chat by sending first message to server in -file. After that you should use the directory created for the user
./jj -s server.tld -j user@server.tld -u user -p password -m User echo "/msg petteri@jabber.ru hello" > server.tld/in tail -f server.tld/petteri@jabber.ru/out echo "Petteri are you getting the messages?" > server.tld/petteri@jabber.ru/in
Jj might be best used as a bot. I wrote a short introduction on how I am using it, that will hopefully give some hints on how to build your own bot.
jj's source code is hosted at Github. There is also an issue tracker which can be used to report bugs.
You can also build debug version of jj with make debug, just remember to do make clean first!
You can contact the author by sending email to petteri gmail com