boxdot / gurk-rs

Signal Messenger client for terminal
GNU Affero General Public License v3.0
495 stars 38 forks source link

gurk 🥒

ci chat

Signal Messenger client for terminal.

screenshot

Installation

Pre-compiled binary

Download a pre-compiled binary from Releases for following targets:

From source (using cargo)

Prerequisites:

cargo install --git https://github.com/boxdot/gurk-rs gurk

Arch Linux

Packaged in the AUR: gurk-git and gurk-bin

Nix/NixOS

Either per user:

$ nix-env --install gurk-rs

or system-wide:

environment.systemPackages = with pkgs; [ gurk-rs ];

Usage

Run

gurk

On the first run, it will open a QR code in your favorite image viewer, such that you can link the client as a new device. This will also create a configuration file at the default config location. For the configuration directives, see src/config.rs.

Note: The binary cannot be published on crates.io, because it depends on several official Signal libraries that are not available on crates.io.

Chat

chat-qr

Key bindings

Default keybindings

Custom keybindings

The default keybindings can be overwritten at startup by configuring keybindings in gurk.toml using the format keybindings.<mode>.<keycombination> = "<command>". Valid commands are anywhere, normal, message_selected, channel_modal, multiline, and help. Valid key combination specifiers are e.g. left, alt-j, ctrl-f, backspace, pagedown. The default keybindings can be disabled by setting default_keybindings = false. An empty command removes an existing binding if it exists in the given mode. Configuration troubleshooted by running RUST_LOG=gurk=trace,presage=trace,libsignal=trace gurk --verbose and examining the resulting gurk.log.

Supported commands

help
quit
toggle_channel_modal
toggle_multiline
react
scroll help up|down entry
move_text previous|next character|word|line
select_channel previous|next
select_channel_modal previous|next
select_message previous|next entry
kill_line
kill_whole_line
kill_backward_line
kill_word
copy_message selected
beginning_of_line
end_of_line
delete_character previous
edit_message
open_url

Example configuration

default_keybindings = true

[keybindings.anywhere]
ctrl-c = ""
ctrl-q = "quit"

[keybindings.normal]
ctrl-j = ""
ctrl-k = "kill_line"
ctrl-n = "select_channel next"
ctrl-p = "select_channel previous"
alt-c = "toggle_channel_modal"
up = "select_message previous entry"
down = "select_message next entry"

[keybindings.channel_modal]
ctrl-j = ""
ctrl-k = ""
ctrl-n = "select_channel_modal next"
ctrl-p = "select_channel_modal previous"

[keybindings.message_selected]
alt-y = ""
alt-w = "copy_message selected"

License

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this document by you, as defined in the AGPL-3.0-only license, shall be licensed as above, without any additional terms or conditions.