Terminal user interface for Signal messaging with vim-like navigation and urwid-based interface
scli is a terminal-based client for Signal messaging that provides a text user interface built on urwid. It acts as a frontend to signal-cli, offering vim-like navigation with j/k keys, command entry with :, and optional emacs-like readline bindings. Users can send messages, attachments, reactions, and manage conversations through keyboard shortcuts and commands like :attach for file sharing and :edit for external editor integration.
The application supports essential Signal features including message history, contact management, and conversation filtering via / search. Key bindings can be customized through command-line options, and the interface includes features like message copying with y, local and remote message deletion with d/D, and emoji reactions with e. Configuration is handled through command-line arguments or a config file at ~/.config/sclirc.
scli requires signal-cli (v0.11.0+) as a backend dependency, along with Python 3.7+ and urwid. The tool is primarily useful for developers and power users who prefer terminal-based workflows or need to access Signal on systems without GUI support. Device registration or linking must be completed through signal-cli before using scli, and the application stores message history in plain text when enabled.
# via Git Clone
git clone https://github.com/isamert/scli
# via PyPI
pip install urwid