tREADME - ratox - FIFO based tox client
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
tREADME (5792B)
---
1 __
2 /\ \__
3 _ __ __ \ \ ,_\ ___ __ _
4 /\`'__/'__`\\ \ \/ / __`\/\ \/'\
5 \ \ \/\ \L\.\\ \ \_/\ \L\ \/> </
6 \ \_\ \__/.\_\ \__\ \____//\_/\_\
7 \/_/\/__/\/_/\/__/\/___/ \//\/_/
8 -- by sin and FRIGN
9 ======================================================
10
11
12 What is it?
13 ===========
14
15 ratox is a client implementation of the rather popular tox protocol[0].
16 Unlike other clients relying on GUIs as an interface to the user, ratox is
17 developed with the UNIX-philosophy in mind and allows complete
18 interaction through named pipes.
19
20 There's also a set of scripts[1] developed by various people that build on
21 top of the FIFO interface.
22
23
24 Getting started
25 ===============
26
27 Get the latest version from the git-repository; build and install it.
28 Run ratox in an empty directory and it will create a set of files and
29 folders allowing you to control the client.
30
31
32 File structure
33 ==============
34
35 A typical filesystem structure is shown below along with some comments
36 to help explain the semantics of the individual files.
37
38 .
39 |-- .ratox.data # ratox save file
40 |
41 |-- 0A734CBA717CEB7883D.... # friend's ID excluding nospam + checksum
42 | |-- call_in # 'arecord -r 48000 -c 1 -f S16_LE > call_in' to initiate a call
43 | |-- call_out # 'aplay -r 48000 -c 1 -f S16_LE - < call_out' to answer a call
44 | |-- call_state # (none, pending, active)
45 | |-- file_in # 'cat foo > file_in' to send a file
46 | |-- file_out # 'cat file_out > bar' to receive a file
47 | |-- file_pending # contains filename if transfer pending, empty otherwise
48 | |-- name # friend's nickname
49 | |-- online # 1 if friend online, 0 otherwise
50 | |-- remove # 'echo 1 > remove' to remove a friend
51 | |-- state # friend's user state; could be any of {none,away,busy}
52 | |-- status # friend's status message
53 | |-- text_in # 'echo yo dude > text_in' to send a text to this friend
54 | `-- text_out # 'tail -f text_out' to dump to stdout any text received
55 |
56 |-- 00000000
57 | |-- members # list of people in the conference
58 | |-- invite # 'echo 0A734CBA717CEB7883D.... >invite' to invite
59 | |-- leave # 'echo 1 >leave' to leave the conference
60 | |-- title_in # 'echo new-title >title_in' to update the conference title
61 | |-- title_out # contains the current title
62 | |-- text_in # 'echo blablahumbla >text_in' to message the other conference members
63 | |-- text_out # contains the messages sent so far in the conference
64 |
65 |-- id # 'cat id' to show your own ID, you can give this to your friends
66 |
67 |-- conf # managing conferences
68 | |-- err # conference related errors
69 | |-- in # 'echo 't group title' >in' for creating a new text group
70 | |-- out # 'echo 1 >out/ID_COOKIE' for joining a conference
71 |
72 |-- name # changing your nick
73 | |-- err # nickname related errors
74 | |-- in # 'echo my-new-nick > in' to change your name
75 | `-- out # 'cat out' to show your name
76 |
77 |-- nospam # changing your nospam
78 | |-- err # nospam related errors
79 | |-- in # 'echo AABBCCDD > in' to change your nospam
80 | `-- out # 'cat out' to show your nospam
81 |
82 |-- request # send and accept friend requests
83 | |-- err # request related errors
84 | |-- in # 'echo LONGASSID yo dude add me > in' to send a friend request
85 | `-- out # 'echo 1 > out/LONGASSID' to accept the friend request
86 |
87 |-- state # changing your user state
88 | |-- err # user status related errors
89 | |-- in # 'echo away > in' to change your user state; could be any of {none,away,busy}
90 | `-- out # 'cat out' to show your user state
91 |
92 `-- status # changing your status message
93 |-- err # status message related errors
94 |-- in # 'cat I am bored to death > in' to change your status message
95 `-- out # 'cat out' to show your status message
96
97
98 Features
99 ========
100
101 1 v 1 messaging: Yes
102 File transfer: Yes
103 Group chat: Yes
104 Audio: Yes
105 Video: No
106 DNS discovery: No
107 Chat logs: Yes
108 Proxy support: Yes
109 Offline message: Yes
110 Offline transfers: Yes
111 Contact aliases: No
112 Contact blocking: No
113 Save file encryption: Yes
114 Multilingual: No
115 Multiprofile: Yes
116 Typing notification: No
117 Audio notifications: No
118 Emoticons: No
119 Spell check: No
120 Desktop sharing: No
121 Inline images: No
122 File resuming: No
123 Read receipts: No
124 Message splitting: Yes
125 Changing nospam: Yes
126 toxi URI: No
127
128 NOTE: Some of these features are not intended to be developed
129 in ratox itself but rather in external scripts[1] that are built upon
130 ratox.
131
132 Group chats do not have audio yet.
133
134
135 Examples
136 ========
137
138 SSH over TOX for the practical paranoid
139 ---------------------------------------
140
141 On the sender side (the client):
142 1) cd into the friend's directory (the server)
143 2) nc -lv 1234 > file_in < file_out
144
145 On the receiver side (the server):
146 1) cd into the friend's directory (the client)
147 2) cat < file_out | nc localhost 22 > file_in
148
149 Now on the client run the following:
150 ssh -o ProxyCommand="nc %h 1234" user@localhost
151
152 This can of course be more easily achieved by using
153 [tuntox](https://github.com/gjedeer/tuntox).
154
155 Screencasting using ffmpeg and mplayer
156 --------------------------------------
157
158 On the sender side:
159 ffmpeg -f x11grab -r 10 -s 1366x768 -i :0.0 -vcodec libx264 \
160 -pix_fmt yuv420p -preset fast -tune zerolatency -b:v 500k \
161 -f flv pipe: > file_in
162
163 On the receiver side:
164 mplayer -cache 1024 file_out
165
166 You may have to play about with the cache size.
167
168
169 Portability
170 ===========
171
172 Builds and works on *BSD and Linux. To build on OSX you need
173 to apply a patch[2].
174
175
176 Contact
177 =======
178
179 You can reach us through irc.2f30.org/6697 at #2f30.
180
181 [0] https://tox.chat/
182 [1] https://git.2f30.org/ratox-nuggets/
183 [2] https://ratox.2f30.org/ratox-os_x.patch