What is Signal?

According to Wikipedia:

Signal is an encrypted instant messaging and voice calling application for Android and iOS. It uses end-to-end encryption to secure all communications to other Signal users. Signal can be used to send and receive encrypted instant messages, group messages, attachments and media messages. Users can independently verify the identity of their messaging correspondents by comparing key fingerprints out-of-band. During calls, users can check the integrity of the data channel by checking if two words match on both ends of the call.

Signal is developed by Open Whisper Systems. The clients are published as free and open-source software under the GPLv3 license.

How to install Signal in Qubes

If you’re a Signal user on Android, you can now have Signal inside Qubes.

  1. Install the Chromium browser in a TemplateVM.
  2. Shut down the TemplateVM.
  3. Create a new AppVM based on this TemplateVM.
  4. Launch Chromium browser in the new AppVM, type chrome://extensions/ in the address bar, and follow the link to the Chrome app store.
  5. In the app store, search for “Signal Private Messenger” and install the app.
  6. The app launches automatically on first install. Follow the prompts to “link” this app with your phone.
  7. Signal should now work in your AppVM.

Creating a Shortcut in the applications menu

Let’s make Signal a bit more usable by creating a shortcut in our desktop panel that launches Signal directly. This assumes that you’re using KDE or Xfce in Dom0, you use Signal in an AppVM named Signal, and this AppVM uses fedora-23 as its TemplateVM.

  1. Follow these instructions to create a desktop shortcut on the Desktop of your Signal AppVM. Let’s assume the shortcut file you get is /home/user/Desktop/chrome-bikioccmkafdpakkkcpdbhpfkkhcmohk-Default.desktop
  2. Copy this shortcut file to the AppVM’s TemplateVM - in this case, to fedora-23.

    [user@Signal ~]$ qvm-copy-to-vm fedora-23 /home/user/Desktop/chrome-bikioccmkafdpakkkcpdbhpfkkhcmohk-Default.desktop
  3. You’ll also want to copy across an icon for your new shortcut - you can find this at /home/user/.local/share/icons/hicolor/48x48/apps/chrome-bikioccmkafdpakkkcpdbhpfkkhcmohk-Default.png Copy this icon to the fedora-23 TemplateVM in the same way as step 2.
  4. Open a terminal in your fedora-23 TemplateVM and cd to /home/user/QubesIncoming/Signal/. You should find your shortcut and icon files just transferred across from the Signal AppVM. Move these files to the following locations:

     [user@fedora-23 Signal]$ sudo mv chrome-bikioccmkafdpakkkcpdbhpfkkhcmohk-Default.desktop /usr/share/applications/
     [user@fedora-23 Signal]$ sudo mv chrome-bikioccmkafdpakkkcpdbhpfkkhcmohk-Default.png /usr/share/icons/hicolor/48x48/apps/
  5. From a Dom0 terminal, instruct Qubes to synchronize the application menus of this TemplateVM:

     [user@dom0 ~]$ qvm-sync-appmenus fedora-23
  6. Stop both the AppVM (Signal) and its TemplateVM (fedora-23). The Signal VM will now see the desktop file in /usr/share/applications when it is next started.

  7. With your mouse select the Q menu -> Domain: Signal -> Signal: Add more shortcuts Select Signal Private Messenger from the left Available column, move it to the right Selected column by clicking the > button and then OK to apply the changes and close the window.
  8. (optional, only on KDE:) Follow the Q menu once more, right-click on the new Signal: Signal Private Messenger menu item and select Add to Panel.

You can now launch the Signal messenger inside its own dedicated AppVM directly from the desktop.

The same steps should work for any Chrome app.