All Projects → derricw → Siggo

derricw / Siggo

Licence: gpl-3.0
a TUI for signal messenger, written in Go

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to Siggo

Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+5797.91%)
Mutual labels:  tui
Dunst
Lightweight and customizable notification daemon
Stars: ✭ 2,864 (+1098.33%)
Mutual labels:  dbus
Jquery.terminal
jQuery Terminal Emulator - JavaScript library for creating web-based terminals with custom commands
Stars: ✭ 2,623 (+997.49%)
Mutual labels:  tui
Sway Launcher Desktop
TUI Application launcher with Desktop Entry support. Made for SwayWM, but runs anywhere
Stars: ✭ 188 (-21.34%)
Mutual labels:  tui
Dijo
scriptable, curses-based, digital habit tracker
Stars: ✭ 2,413 (+909.62%)
Mutual labels:  tui
Bb
simple process viewer in rust https://crates.io/crates/bb
Stars: ✭ 212 (-11.3%)
Mutual labels:  tui
Smos
A comprehensive self-management System
Stars: ✭ 179 (-25.1%)
Mutual labels:  tui
Tmux Fzf Url
🚀 Quickly open urls on your terminal screen!
Stars: ✭ 227 (-5.02%)
Mutual labels:  tui
Cuishark
A protocol analyzer like a wireshark on CUI. cuishark is using libwireshark to analyze packets. https://cuishark.slankdev.net
Stars: ✭ 208 (-12.97%)
Mutual labels:  tui
Ali
Generate HTTP load and plot the results in real-time
Stars: ✭ 3,055 (+1178.24%)
Mutual labels:  tui
Goful
Goful is a CUI file manager written in Go.
Stars: ✭ 194 (-18.83%)
Mutual labels:  tui
Qrc
QR code generator for text terminals (ASCII art, Sixel)
Stars: ✭ 200 (-16.32%)
Mutual labels:  tui
Python Omxplayer Wrapper
📺 Control OMXPlayer, the Raspberry Pi media player, from Python
Stars: ✭ 213 (-10.88%)
Mutual labels:  dbus
Cursive
A Text User Interface library for the Rust programming language
Stars: ✭ 2,613 (+993.31%)
Mutual labels:  tui
Dbus Native
D-bus protocol client and server for node.js written in native javascript
Stars: ✭ 225 (-5.86%)
Mutual labels:  dbus
Openvpn3 Linux
OpenVPN 3 Linux client
Stars: ✭ 186 (-22.18%)
Mutual labels:  dbus
Ox
An independent Rust text editor that runs in your terminal!
Stars: ✭ 2,634 (+1002.09%)
Mutual labels:  tui
Vty
A high-level ncurses alternative written in Haskell
Stars: ✭ 237 (-0.84%)
Mutual labels:  tui
S Tui
Terminal-based CPU stress and monitoring utility
Stars: ✭ 2,825 (+1082.01%)
Mutual labels:  tui
Geek Life
The Todo List / Task Manager for Geeks in command line
Stars: ✭ 212 (-11.3%)
Mutual labels:  tui

siggo

GoDoc Go Report Build

A terminal ui for signal-cli, written in Go.

Alt text

Features

  • vim-style ux
  • useful for quick messages or use $EDITOR to compose fancy ones
  • emoji support, just use colons, like 🐱 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

Dependencies

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. 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 +12345678901).

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.

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.

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
  • 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+N - Move to next conversation with unread messages
  • CTRL+Q - Quit (CTRL+C should also work)

Configuration

See the configuration README here.

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.

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 +<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

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)
  • command to go to contact with fuzzy matching
  • 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?
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].