A terminal gui for signal-cli, written in Go.
- vim-style ux
- useful for quick messages or use $EDITOR to compose fancy ones
- emoji support, just use colons, like
- configurable contact colors
- can use fzf to fuzzy-find files to attach
- signal-cli. (>=0.6.7)
siggo uses the dbus daemon feature of signal-cli, so
libunixsocket-java (Debian) or
libmatthew-unix-java (AUR) is required. There may be a
brew forumla for dbus on MacOS.
Install signal-cli and put it somewhere safe in your path. You will need to follow its instructions to either link or register your device. The
siggo link <phonenumber> <devicename> subcommand has been added to make linking more user-friendly, but has not been tested sufficiently. Be sure to prefix with
+ and country code (for example
When setup is finished, you should be able to run without error:
signal-cli -u +<yourphonenumber> receive --json
You are now ready to use
siggo shells out to
signal-cli, so if that worries you, don't use it, for now. I have lofty goals of eventually replacing this with libsignal.
siggo should build on Linux or MacOS, but it has only been tested on Linux.
j- Scroll Down
k- Scroll Up
J- Next Contact
K- Previous Contact
a- Attach file (sent with next message)
A- Use fzf to attach a file
i- Insert Mode
CTRL+L- Clear input field (also clears staged attachments)
I- Compose (opens $EDITOR and lets you make a fancy message)
y- Yank Mode
yy- Yank Last Message (from current conversation)
yl- Yank Last URL
o- Open Mode
oo- Open Last Attachment
ol- Open Last Link
ESC- Normal Mode
CTRL+N- Move to next conversation with unread messages
CTRL+Q- Quit (
CTRL+Cshould also work)
See the configuration README here.
Message saving is an opt-in feature.
If you enable it, conversations are stored in plain text in
Delete them like this:
Honestly the code is a hot mess right now, and I don't recommend trying to contribute yet. But I will absolutely take a PR if you want to throw one at me.
If you save the output of signal-cli like so:
signal-cli -u +<yourphonenumber> receive --json > example_messages.json
You can then run siggo using it as mock input. This is useful for development and testing.
bin/siggo -m example_messages.json
This way you can test without sending yourself messages.
Similar Projects / Inspiration
Here is a list of things that are currently broken.
- Send read receipts for incoming messages (
signal-clilimitation, but might be fixed soon)
Here is a list of features I'd like to add soonish.
- Better Attachments Support
- Opening attachments (besides the most recent)
- gui configuration
- colors and border styles
- let user re-sort contact list (for example alphabetically)
- command to go to contact with fuzzy matching
- groups support
- use dbus to send instead of signal-cli, to avoid having to spin up the JVM
- there is still some data that i'm dropping on the floor (I believe it to be the "typing indicator" messages)
- weechat/BitlBee plugin that uses the siggo model without the UI
- wouldn't tests be neat?
- signal-cli seems to delete old attachments after a while. maybe I should move them somewhere where they wont get deleted?