diff --git a/README.org b/README.org index 9936d47..6e326f8 100644 --- a/README.org +++ b/README.org @@ -2,7 +2,7 @@ Noise is a Signal Messenger client in Elisp for Emacs powered by https://github.com/AsamK/signal-cli -Its ultimate goal is to provide a fast and efficient user interfae for Signal chats. +Its ultimate goal is to provide a fast and efficient user interface for Signal chats. ** Tech stack The tech stack is Elisp and SQLite (for storing conversations) @@ -22,6 +22,134 @@ We follow Emacs conventions for keybindings with the addition of evil support ou ** User Interface -See the file signal-emacs-ui.html for user interface mockups we're targetting. +See the file signal-emacs-ui.html for user interface mockups we're targeting. + +** Installation + +*** signal-cli + +Install =signal-cli= and start the daemon in JSON-RPC mode: + +#+begin_src shell + # Install signal-cli (example using the official tarball) + wget https://github.com/AsamK/signal-cli/releases/latest/download/signal-cli.tar.gz + tar xf signal-cli.tar.gz + + # Register or link your device + signal-cli link -n "emacs-noise" + + # Start the daemon on default port 9128 + signal-cli daemon --receive-mode=manual +#+end_src + +*** emacs-sqlite3-api + +Noise requires the =emacs-sqlite3-api= library for SQLite access. Install it with your +package manager of choice, then set up Noise itself. + +*** Noise Package + +Below are recipes for several popular Emacs package managers. + +**** elpaca + +#+begin_src elisp + (use-package noise + :ensure (noise + :host github + :repo "git.roo.lol/jbrechtel/noise" + :protocol https) + :config + ;; Optional: set a custom signal-cli address + ;; (setq noise-signal-cli-address "http://localhost:9128") + + ;; Start Noise automatically + (noise-mode 1)) +#+end_src + +Or, if you prefer the =elpaca= recipe directly without =use-package=: + +#+begin_src elisp + (elpaca (noise :host github + :repo "git.roo.lol/jbrechtel/noise" + :protocol https)) + + (require 'noise) + (noise-mode 1) +#+end_src + +**** straight.el + +#+begin_src elisp + (straight-use-package + '(noise :type git :host github + :repo "git.roo.lol/jbrechtel/noise" + :protocol https)) + + (require 'noise) + (noise-mode 1) +#+end_src + +**** Quelpa + +#+begin_src elisp + (quelpa + '(noise :fetcher github + :repo "git.roo.lol/jbrechtel/noise")) + + (require 'noise) + (noise-mode 1) +#+end_src + +**** Manual / package-vc-install (Emacs 29+) + +#+begin_src elisp + (package-vc-install "https://git.roo.lol/jbrechtel/noise") + + (require 'noise) + (noise-mode 1) +#+end_src + +**** Manual clone + +#+begin_src shell + git clone https://git.roo.lol/jbrechtel/noise ~/.emacs.d/manual-packages/noise +#+end_src + +Then in your init file: + +#+begin_src elisp + (add-to-list 'load-path "~/.emacs.d/manual-packages/noise") + (require 'noise) + (noise-mode 1) +#+end_src + +** Usage + +Once signal-cli is running and Noise is installed: + +- =M-x noise-mode= — toggle the Noise client (opens the chat list) +- =M-x noise-check-connection= — test connectivity to signal-cli + +*** Keybindings + +**** Chat list (*signal* buffer) + +| Key | Action | +|-------+---------------------------| +| =n= | Next chat | +| =p= | Previous chat | +| =RET= | Open selected chat | +| =m= | Mark chat as read | +| =g= | Refresh chat list | +| =/= | Filter chats | +| =q= | Quit chat list window | +| =C-x b= | Switch conversation (minibuffer) | + +**** Minibuffer switcher + +=M-x noise-switcher= (or =C-x b= from the chat list) opens a fuzzy +completion interface showing all conversations and contacts. Start +typing to narrow, then press =RET= to open the selected conversation.