{"id":13436067,"url":"https://github.com/derricw/siggo","last_synced_at":"2025-03-18T12:31:09.447Z","repository":{"id":44458511,"uuid":"252634154","full_name":"derricw/siggo","owner":"derricw","description":"a TUI for signal messenger, written in Go","archived":true,"fork":false,"pushed_at":"2022-09-27T17:36:44.000Z","size":285,"stargazers_count":320,"open_issues_count":14,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-27T19:01:51.597Z","etag":null,"topics":["dbus","signal-cli","signal-messenger","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/derricw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-03T04:42:34.000Z","updated_at":"2024-10-08T06:29:17.000Z","dependencies_parsed_at":"2023-01-18T17:47:10.838Z","dependency_job_id":null,"html_url":"https://github.com/derricw/siggo","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derricw%2Fsiggo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derricw%2Fsiggo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derricw%2Fsiggo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derricw%2Fsiggo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derricw","download_url":"https://codeload.github.com/derricw/siggo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244222253,"owners_count":20418478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dbus","signal-cli","signal-messenger","tui"],"created_at":"2024-07-31T03:00:43.061Z","updated_at":"2025-03-18T12:31:09.441Z","avatar_url":"https://github.com/derricw.png","language":"Go","funding_links":[],"categories":["Go","tui","\u003ca name=\"chat\"\u003e\u003c/a\u003eChat and instant messaging","Table of Contents"],"sub_categories":[],"readme":"# siggo\n[![GoDoc](https://godoc.org/github.com/derricw/siggo?status.svg)](https://godoc.org/github.com/derricw/siggo)\n[![Go Report](https://goreportcard.com/badge/github.com/derricw/siggo)](https://goreportcard.com/badge/github.com/derricw/siggo)\n![Build](https://github.com/derricw/siggo/workflows/Test/badge.svg)\n\nA terminal ui for signal-cli, written in Go.\n\n![Alt text](media/screenshot.jpg?raw=true \"Screenshot\")\n\n### Unable to keep pace with `signal-cli`\n\nI 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.\n\n### Features\n\n* vim-style ux\n* useful for quick messages or use $EDITOR to compose fancy ones\n* emoji support, just use colons, like `:cat:` or [the kitty emoji picker](https://sw.kovidgoyal.net/kitty/kittens/unicode-input.html)\n* configurable contact [colors](config/README.md#configure-contact-colors)\n* can use [fzf](https://github.com/junegunn/fzf) to fuzzy-find files to attach\n* support for groups! (but not creating new groups)\n* quickly filter messages by providing a regex pattern\n\n### Dependencies\n\n* [signal-cli](https://github.com/AsamK/signal-cli). (==0.9.2)\n\nsiggo 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.\n\nInstall 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 \u003cphonenumber\u003e \u003cdevicename\u003e` subcommand has been added to make linking more user-friendly. Be sure to prefix with `+` and country code (for example `+12345678901`).\n\nWhen setup is finished, you should be able to run without error:\n\n```\nsignal-cli -u +\u003cyourphonenumber\u003e -o json receive\n```\nYou are now ready to use `siggo`.\n\n#### Optional Dependencies\n\n* [fzf](https://github.com/junegunn/fzf)\n\nSome nice features are available if you have `fzf` in your PATH.\n\n### Security\n\nsiggo 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).\n\n### Build\n\nsiggo should build on Linux or MacOS, but has primarily been tested on Linux.\n\n```\nmake build\n```\n\n### Run\n\n```\nbin/siggo\n```\n\n### Updating\n\nIf you are updating from a previous version, I recommend deleting your conversation files first. See below.\n\n### Keybinds\n\n* `j` - Scroll Down\n* `k` - Scroll Up\n* `J` - Next Contact\n* `K` - Previous Contact\n* `n` - Move to next conversation with unread messages\n* `t` - Use fzf to goto contact with fuzzy matching\n* `a` - Attach file (sent with next message)\n* `A` - Use fzf to attach a file\n* `/` - Filter conversation by providing a pattern\n* `i` - Insert Mode\n  * `CTRL+L` - Clear input field (also clears staged attachments)\n* `I` - Compose (opens $EDITOR and lets you make a fancy message)\n* `y` - Yank Mode\n  * `yy` - Yank Last Message (from current conversation)\n  * `yl` - Yank Last URL\n* `o` - Open Mode\n  * `Enter` - Open selected attachment\n  * `oo` - Open Last Attachment\n* `l` - Link Mode\n  * `Enter` - Open selected link in browser\n  * `ll` - Open Last URL\n  * `y` - Yank selected link to clipboard\n* `p` or `CTRL+V` - Paste text/attach file in clipboard\n* `ESC` - Normal Mode\n* `CTRL+Q` - Quit (`CTRL+C` _should_ also work)\n\n### Configuration\n\nSee the configuration README [here](config/README.md).\n\n### Message History\n\nMessage saving is an opt-in feature.\n\nIf you enable it, conversations are stored in plain text in `~/.local/share/siggo/conversations`.\n\nDelete them like this:\n\n```\nrm ~/.local/share/siggo/conversations/*\n```\n\n### Troubleshooting\n\nI've started a wiki [here](https://github.com/derricw/siggo/wiki/Troubleshooting).\n\n### Development\n\nHonestly 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.\n\nIf you save the output of signal-cli like so:\n\n```\nsignal-cli -u +\u003cyourphonenumber\u003e receive --json \u003e example_messages.json\n```\nYou can then run siggo using it as mock input. This is useful for development and testing.\n```\nbin/siggo -m example_messages.json\n```\nThis way you can test without sending yourself messages.\n\n### Similar Projects / Inspiration\n\n* [signal-curses](https://github.com/jwoglom/signal-curses)\n* [scli](https://github.com/isamert/scli)\n\n### Roadmap\n\nHere is a list of things that are currently broken.\n* Send read receipts for incoming messages (`signal-cli` limitation, but might be fixed soon)\n\nHere is a list of features I'd like to add soonish.\n* Better Attachments Support\n  * signal-cli seems to delete old attachments after a while. maybe I should move them somewhere where they wont get deleted?\n* default color list for contacts instead of white\n* better mode indication\n* gui configuration\n  * colors and border styles\n* let user re-sort contact list (for example alphabetically)\n* use dbus to send instead of signal-cli, to avoid having to spin up the JVM\n* there is still some data that I'm dropping on the floor (I believe it to be the \"typing indicator\" messages)\n* weechat/BitlBee plugin that uses the siggo model without the UI\n* wouldn't tests be neat?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderricw%2Fsiggo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderricw%2Fsiggo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderricw%2Fsiggo/lists"}