A terminal ui for signal-cli, written in Go.
I have not been keeping up with signal-cli
development. They change the location and format of their local data constantly. If you want your install to work, use signal cli version 0.9.2 until I find time to update.
- vim-style ux
- useful for quick messages or use $EDITOR to compose fancy ones
- emoji support, just use colons, like
:cat:
or the kitty emoji picker - configurable contact colors
- can use fzf to fuzzy-find files to attach
- support for groups! (but not creating new groups)
- quickly filter messages by providing a regex pattern
- signal-cli. (==0.9.2)
siggo uses the dbus daemon feature of signal-cli, so libunixsocket-java
(Debian), libmatthew-java
(Fedora) or libmatthew-unix-java
(AUR) is required. There seems to 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. Alternatively, the siggo link <phonenumber> <devicename>
subcommand has been added to make linking more user-friendly. Be sure to prefix with +
and country code (for example +12345678901
).
When setup is finished, you should be able to run without error:
signal-cli -u +<yourphonenumber> -o json receive
You are now ready to use siggo
.
Some nice features are available if you have fzf
in your PATH.
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 has primarily been tested on Linux.
make build
bin/siggo
If you are updating from a previous version, I recommend deleting your conversation files first. See below.
j
- Scroll Downk
- Scroll UpJ
- Next ContactK
- Previous Contactn
- Move to next conversation with unread messagest
- Use fzf to goto contact with fuzzy matchinga
- Attach file (sent with next message)A
- Use fzf to attach a file/
- Filter conversation by providing a patterni
- Insert ModeCTRL+L
- Clear input field (also clears staged attachments)
I
- Compose (opens $EDITOR and lets you make a fancy message)y
- Yank Modeyy
- Yank Last Message (from current conversation)yl
- Yank Last URL
o
- Open ModeEnter
- Open selected attachmentoo
- Open Last Attachment
l
- Link ModeEnter
- Open selected link in browserll
- Open Last URLy
- Yank selected link to clipboard
p
orCTRL+V
- Paste text/attach file in clipboardESC
- Normal ModeCTRL+Q
- Quit (CTRL+C
should 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 ~/.local/share/siggo/conversations
.
Delete them like this:
rm ~/.local/share/siggo/conversations/*
I've started a wiki here.
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.
Here is a list of things that are currently broken.
- Send read receipts for incoming messages (
signal-cli
limitation, but might be fixed soon)
Here is a list of features I'd like to add soonish.
- Better Attachments Support
- signal-cli seems to delete old attachments after a while. maybe I should move them somewhere where they wont get deleted?
- default color list for contacts instead of white
- better mode indication
- gui configuration
- colors and border styles
- let user re-sort contact list (for example alphabetically)
- 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?