From 41bd0ad58e44244fe67cb36e066d4bb68738516f Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Fri, 29 Mar 2024 01:30:23 -0500 Subject: massive re-write from org-publish to weblorg --- content/blog/2023-11-08-scli.org | 145 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 content/blog/2023-11-08-scli.org (limited to 'content/blog/2023-11-08-scli.org') diff --git a/content/blog/2023-11-08-scli.org b/content/blog/2023-11-08-scli.org new file mode 100644 index 0000000..8b55ac1 --- /dev/null +++ b/content/blog/2023-11-08-scli.org @@ -0,0 +1,145 @@ +#+title: Installing scli on Alpine Linux (musl) +#+date: 2023-11-08 +#+description: Learn how to properly configure scli for musl-based systems. +#+filetags: :linux: + +[[https://github.com/isamert/scli][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. + +#+begin_src sh +doas apk add openjdk17-jre findutils qrencode +#+end_src + +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. + +#+begin_src 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 +#+end_src + +Finally, install the =urwid= packages using the Python packaging +utility. + +#+begin_src sh +pip3 install urwid urwid-readline +#+end_src + +* Installation +Now that we have all of the dependencies we need, we can install =scli=. +Start by simply cloning the repository. + +#+begin_src sh +git clone https://github.com/isamert/scli +#+end_src + +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=. + +#+begin_src sh +cd scli +nano scli +#+end_src + +Once complete, you can move this program to anywhere on your =$PATH=. I +chose the following directory. + +#+begin_src sh +doas mv scli /usr/local/bin/scli +#+end_src + +* Initial Setup +Now that everything is installed, we can login and configure the client. +Start by generating a connection link. + +#+begin_src sh +signal-cli link -n "YOUR-DEVICE-NICKNAME" | tee >(xargs -L 1 qrencode -t utf8) +#+end_src + +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=. + +#+begin_src sh +signal-cli -u USERNAME receive +#+end_src + +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. + +#+begin_src sh +signal-cli -u USERNAME daemon +#+end_src + +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. + +#+begin_src 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 +#+end_src + +* 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. + +#+begin_src sh +nano ~/.config/sclirc +#+end_src + +#+begin_src conf +# ~/.config/sclirc + +wrap-at = 80 +enable-notifications = true +#+end_src + +That's it! Following this guide, I have a functional =scli= program that +successfully sends messages to my contacts and myself! -- cgit v1.2.3-70-g09d2