Skip to content

piec/elecwhat

Repository files navigation

ElecWhat - Simple desktop WhatsApp client for Linux

elecwhat

Features

  • Desktop notifications
  • Tray icon with unread count (aka AppIndicator), custom tray icons.
  • Custom keyboard shortcuts (default)
  • Custom CSS
  • Spellcheck
  • CLI & D-Bus interface to show/hide/toggle window
  • Dock unread count badge
  • Very stable, I have been running it for 1+ year without crash/freeze
  • Can be trusted:
    • Code easy to review - ~800 lines of code currently
    • Automatically built by GitHub Actions (CI)
  • Preserve window position
  • Custom user scripts in ~/.config/elecwhat/user-scripts/*.js
  • Custom tray icons in ~/.config/elecwhat/user-icons/*.png by default

Why?

I created this client after due to recurrent stability issues with other linux clients. Also I just wanted a simple and stable client and thought it could be done without much code with electron.

Install

If you use Gnome, I recommend using this AppIndicator extension in order to show tray icons

Ubuntu/Kubuntu:

Arch Linux:

Debian:

Fedora:

Configuration

~/.config/elecwhat/config.json:

(or for snap: ~/snap/elecwhat/current/.config/elecwhat/config.json)

{
  "log-level": "info",
  "notification-prefix": "elecwhat - ",

  "quit-on-close": false,
  "show-at-startup": false,

  "dbus": true,

  "menu-bar": true,
  "menu-bar-auto-hide": true,

  "keys": {
    "C ArrowDown": {
      "whatsappAction": "GO_TO_NEXT_CHAT"
    }
  },
  "esc-toggle-window": false,

  "css": [
    "span { font-size: small !important; }",
    "https://gist.githubusercontent.com/piec/3f9a198a7694f1df37895ee3faee9b6e/raw/whatsapp-test.css",
    "file://~/mysheet.css"
  ],

  "spellcheck": true,
  "spellcheck-languages": ["en-US", "fr"],

  "user-agent": "...",
  "open-dev-tools": false,

  "scripts": [
    # ~/.config/elecwhat/user-scripts/myscript.js
    "${userData}/user-scripts/myscripts.js"
  ],
  "icons-directory": "..."
}

Custom icons

The naming scheme is based on WhatsApp Web favicon urls:

  • ~/.config/elecwhat/user-icons/app.png during startup
  • ~/.config/elecwhat/user-icons/favicon.png when there is no unread
  • ~/.config/elecwhat/user-icons/f01.png where fXX.png is the number of unread

Not planed

  • Multi account
  • Complex features
  • Other OS support, official apps already exist. Porting would probably be easy though thanks to electron.