CLIChatty
A curses-based terminal interface to the chatty messaging app's database. Messages are sent using mmcli, and MMS messages are sent through the mmsd-tng daemon over D-Bus. It is designed to be used via SSH, this way you can message from your computer.
SSH into your phone, then run clic or clichatty to start the program. For
help with keybindings, press H. For help with flags, run clic -h.
Choosing a database
By default clic uses the chatty database at
~/.purple/chatty/db/chatty-history.db. Pass -d/--database PATH to work
with a different one, e.g. to browse a copy of your history or the database of
a second chatty profile:
clic -d /tmp/chatty-history.db
clic -d other.db -a peer -t 20
The database is used for both reading and writing, so messages sent are
recorded in the one you selected. On its own (clic -d other.db) the flag
still starts the curses interface.
MMS
Multimedia messages (pictures, files, group chats) require mmsd-tng to be
running on the phone (Chatty launches it automatically), and gdbus
(part of glib2-utils) on PATH.
- In the compose window,
<c-x>attaches a file and the message is sent as an MMS. Group threads and messages sent with-s/--subjectare also sent as MMS. - From the command line:
clic -a 'alias' -m 'text' -f /path/to/image.jpg -f /path/to/file.txt
Sent and received MMS are recorded and their attachments cached by the Chatty
app itself: mmsd-tng's MessageAdded signal tells Chatty about every MMS
(it saves payloads under $XDG_DATA_HOME/chatty/mms/<tag>/ and writes the
messages/mm_messages/files rows). Clichatty just triggers the send via
mmsd-tng and displays what Chatty stored, so nothing is recorded twice.
Reply-time statistics
Pressing i over a thread shows its message count, member list, and, per
member, two reply-time distributions:
you → member: how long you normally take to reply to them.member → you: how long they normally take to reply to you.
Consecutive messages from the same side are treated as a single "turn", and a reply time is measured from the last message of one turn to the first message of the next turn from the other side. For each direction you get the average and median response time (plus the number of replies it is based on); a second, capped figure recomputes the same stats using only gaps of 24h or less, so multi-day gaps between conversations don't skew the numbers. Gaps with invalid or missing data (clock skew, carrier messages with no sender) are ignored entirely.
Message statistics
The i screen carries more than reply times:
- Volume — how many messages you sent and received, and how long the thread has been going, measured in days active rather than raw span so a two-day burst doesn't read as a month-long trickle.
- Per member — how much each person sent you, as a share of the thread.
- Who opens conversations — a conversation counts as opened by whoever sends the first message after 4h of silence, so a long back-and-forth is attributed to whoever restarted it instead of to whoever typed more.
- Who has the last word — whether their most recent message is still unanswered, and how long each side has been silent.
- When you talk — messages per hour of the day and per weekday, as sparklines, so you can see the hours a thread is actually used in.
S in the thread list shows the same idea across every thread at once:
totals, the busiest thread, and when you talk in aggregate.
The same numbers are available without the interface:
clic --stats
clic --stats -d /path/to/chatty-history.db
Installing
The recommended installation method is with uv:
uv tool install clichatty
Release files for clichatty 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| clichatty-0.7.0.tar.gz | 89.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| clichatty-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 148.2 kB
Release files / clichatty-0.7.0.tar.gz
| Download URL | clichatty-0.7.0.tar.gz |
|---|---|
| Size | 89.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6cbc379b92382baa26c4632a856c0e85f0082d94e86b21b59e561ec934285f5
|
|
BLAKE2b-256 checksum How to use checksums |
5d761f03e8ebefc4ebb1c436dfcf85cb6fb9116e48a59fb517792a2d26e873d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / clichatty-0.7.0-py3-none-any.whl
| Download URL | clichatty-0.7.0-py3-none-any.whl |
|---|---|
| Size | 59.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60304893465a826ab6bf7855592e9d64c2b23ea4c313138c320dead540eaf9f7
|
|
BLAKE2b-256 checksum How to use checksums |
bac23a0dfcbf225823f408e02218c7a94b9058eac3386953afb3444db03fbdc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|