aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2023-11-08-scli.md
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-01-08 20:11:17 -0600
committerChristian Cleberg <hello@cleberg.net>2024-01-08 20:11:17 -0600
commit25945b8fead989cca09a23983623b63ce36dcc0c (patch)
tree0dfc869ce8b028e04ce9da196af08779780915ce /content/blog/2023-11-08-scli.md
parent22b526be60bf4257c2a1d58a5fad59cf6b044375 (diff)
downloadcleberg.net-25945b8fead989cca09a23983623b63ce36dcc0c.tar.gz
cleberg.net-25945b8fead989cca09a23983623b63ce36dcc0c.tar.bz2
cleberg.net-25945b8fead989cca09a23983623b63ce36dcc0c.zip
feat: total re-write from Emacs org-mode to Zola markdown
Diffstat (limited to 'content/blog/2023-11-08-scli.md')
-rw-r--r--content/blog/2023-11-08-scli.md157
1 files changed, 157 insertions, 0 deletions
diff --git a/content/blog/2023-11-08-scli.md b/content/blog/2023-11-08-scli.md
new file mode 100644
index 0000000..d3b26a7
--- /dev/null
+++ b/content/blog/2023-11-08-scli.md
@@ -0,0 +1,157 @@
++++
+date = 2023-11-08
+title = "Installing scli on Alpine Linux (musl)"
+description = "Learn how to properly configure scli for musl-based systems."
++++
+
+[scli](https://github.com/isamert/scli) is a command-line tool that
+allows you to connect to your Signal messenger account. This program
+utilizes a two-pane display that shows you chats on the left and the
+focused conversation on the right.
+
+This guide will show you how to install `scli` and its
+dependencies on Alpine Linux, which requires some extra work due to
+musl.
+
+If you're using a non-musl system, you can likely following the
+`scli` README and download the packaged binaries for an
+easier installation process.
+
+## Dependencies
+
+In order to use `scli`, you need a few dependencies:
+
+- `openjdk17-jre` - Used as a dependency for the
+ `signal-cli` tool. Version may vary.
+- `signal-cli` - Used as the backbone of the
+ `scli` tool.
+- `findutils` - Replaces the standard Busybox version of
+ `xargs`.
+- `urwid` - A console user interface library for Python.
+- `urwid-readline` - For GNU emacs-like keybinds on the
+ input line.
+- `qrencode` - Displays a QR code in the terminal to link
+ the device using your phone. Not necessary if you're only linking
+ on desktop and can copy/paste the connection URL.
+
+Let's start by installing the packages available via Alpine's
+repositories. Be sure to install the latest version of
+`openjdk`. If you run into Java-related issues, uninstall
+`openjdk` and install an older version.
+
+```sh
+doas apk add openjdk17-jre findutils qrencode
+```
+
+Next, let's install `signal-cli`. Be sure to export the
+version of `signal-cli` that you want. I use version
+`0.12.4` below, but that may be outdated by the time you're
+reading this.
+
+```sh
+export VERSION="0.12.4"
+wget https://github.com/AsamK/signal-cli/releases/download/v"${VERSION}"/signal-cli-"${VERSION}".tar.gz
+doas tar xf signal-cli-"${VERSION}".tar.gz -C /opt
+doas ln -sf /opt/signal-cli-${VERSION}"/bin/signal/cli /usr/local/bin
+```
+
+Finally, install the `urwid` packages using the Python
+packaging utility.
+
+```sh
+pip3 install urwid urwid-readline
+```
+
+## Installation
+
+Now that we have all of the dependencies we need, we can install
+`scli`. Start by simply cloning the repository.
+
+```sh
+git clone https://github.com/isamert/scli
+```
+
+When I cloned this repository on 2023-11-08, I found a bug in the logic
+that required a fix. You must edit the `scli` file and
+replace the one instance of `RLIMIT_OFILE` with
+`RLIMIT_NOFILE`.
+
+```sh
+cd scli
+nano scli
+```
+
+Once complete, you can move this program to anywhere on your
+`$PATH`. I chose the following directory.
+
+```sh
+doas mv scli /usr/local/bin/scli
+```
+
+## Initial Setup
+
+Now that everything is installed, we can login and configure the client.
+Start by generating a connection link.
+
+```sh
+signal-cli link -n "YOUR-DEVICE-NICKNAME" | tee >(xargs -L 1 qrencode -t utf8)
+```
+
+This will generate a connection link and related QR code for you to use
+to link the devices together. Once complete, **wait patiently** for the
+connection process to finish.
+
+Once it completes, it will exit and return you to the prompt. From here,
+you need to perform an initial `receive` command to start
+things off. The `USERNAME` variable should be your phone
+number, such as `+15551237890`.
+
+```sh
+signal-cli -u USERNAME receive
+```
+
+Also be sure to test the daemon to ensure it works properly. If no
+errors occur, it's working. If you run into errors because you're not
+running a DBUS session, see my notes below.
+
+```sh
+signal-cli -u USERNAME daemon
+```
+
+Once the initial reception is complete, you are ready to use
+`scli`.
+
+This process will differ depending on your desktop environment (DE). If
+you are running a DE, you likely have a DBUS session running already and
+can simply launch the program.
+
+However, if you're like me and running your computer straight on the
+TTY without a DE, you'll need to start a DBUS session for this program.
+
+```sh
+# If you're not running a DBUS session yet, you need to start one for scli
+dbus-run-session -- scli
+
+# OR - If you're already running a DBUS session, simply run scli
+scli
+```
+
+## Configuration
+
+Lastly, there are a number of configuration options that you can pass
+via the command or in the `~/.config/sclirc` file. See the
+Github README for more information on configuration options.
+
+```sh
+nano ~/.config/sclirc
+```
+
+```conf
+# ~/.config/sclirc
+
+wrap-at = 80
+enable-notifications = true
+```
+
+That's it! Following this guide, I have a functional `scli`
+program that successfully sends messages to my contacts and myself!