Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/derricw/siggo
a TUI for signal messenger, written in Go
https://github.com/derricw/siggo
dbus signal-cli signal-messenger tui
Last synced: about 1 month ago
JSON representation
a TUI for signal messenger, written in Go
- Host: GitHub
- URL: https://github.com/derricw/siggo
- Owner: derricw
- License: gpl-3.0
- Archived: true
- Created: 2020-04-03T04:42:34.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-09-27T17:36:44.000Z (almost 2 years ago)
- Last Synced: 2024-04-21T11:16:19.660Z (3 months ago)
- Topics: dbus, signal-cli, signal-messenger, tui
- Language: Go
- Homepage:
- Size: 278 KB
- Stars: 316
- Watchers: 7
- Forks: 9
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-tuis - siggo - cli, written in Go (Table of Contents)
- awesome-five23 - siggo
- awesome-stars - derricw/siggo - a TUI for signal messenger, written in Go (Go)
README
# siggo
[![GoDoc](https://godoc.org/github.com/derricw/siggo?status.svg)](https://godoc.org/github.com/derricw/siggo)
[![Go Report](https://goreportcard.com/badge/github.com/derricw/siggo)](https://goreportcard.com/badge/github.com/derricw/siggo)
![Build](https://github.com/derricw/siggo/workflows/Test/badge.svg)A terminal ui for signal-cli, written in Go.
![Alt text](media/screenshot.jpg?raw=true "Screenshot")
### Unable to keep pace with `signal-cli`
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.
### Features
* 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](https://sw.kovidgoyal.net/kitty/kittens/unicode-input.html)
* configurable contact [colors](config/README.md#configure-contact-colors)
* can use [fzf](https://github.com/junegunn/fzf) to fuzzy-find files to attach
* support for groups! (but not creating new groups)
* quickly filter messages by providing a regex pattern### Dependencies
* [signal-cli](https://github.com/AsamK/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](https://formulae.brew.sh/formula/dbus) 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](https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)) or [register](https://github.com/AsamK/signal-cli#usage) your device. Alternatively, the `siggo link ` 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 + -o json receive
```
You are now ready to use `siggo`.#### Optional Dependencies
* [fzf](https://github.com/junegunn/fzf)
Some nice features are available if you have `fzf` in your PATH.
### Security
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](https://github.com/signalapp/libsignal-protocol-c).
### Build
siggo should build on Linux or MacOS, but has primarily been tested on Linux.
```
make build
```### Run
```
bin/siggo
```### Updating
If you are updating from a previous version, I recommend deleting your conversation files first. See below.
### Keybinds
* `j` - Scroll Down
* `k` - Scroll Up
* `J` - Next Contact
* `K` - Previous Contact
* `n` - Move to next conversation with unread messages
* `t` - Use fzf to goto contact with fuzzy matching
* `a` - Attach file (sent with next message)
* `A` - Use fzf to attach a file
* `/` - Filter conversation by providing a pattern
* `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
* `Enter` - Open selected attachment
* `oo` - Open Last Attachment
* `l` - Link Mode
* `Enter` - Open selected link in browser
* `ll` - Open Last URL
* `y` - Yank selected link to clipboard
* `p` or `CTRL+V` - Paste text/attach file in clipboard
* `ESC` - Normal Mode
* `CTRL+Q` - Quit (`CTRL+C` _should_ also work)### Configuration
See the configuration README [here](config/README.md).
### Message History
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/*
```### Troubleshooting
I've started a wiki [here](https://github.com/derricw/siggo/wiki/Troubleshooting).
### Development
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 + 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
* [signal-curses](https://github.com/jwoglom/signal-curses)
* [scli](https://github.com/isamert/scli)### Roadmap
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?