Skip to content
Xeco edited this page May 23, 2024 · 27 revisions

Welcome to the WhatsApp for Linux wiki!

WhatsApp for Linux is an unofficial WhatsApp desktop application written in C++ with the help of gtkmm and WebKitGtk libraries. It has the abilities that a WhatsApp Web client can do, and some regular desktop application features such as a system tray icon.

Summary

Configuration

Settings

The default settings config file can be located at $HOME/.config/whatsapp-for-linux/settings.conf. It is used to remember application preferences and advised not to modify manually unless you are certain. A key is not saved into the file unless you explicitly change it via the app and a default value in code is used for it instead.

Here are the available options in the settings config file:

[web]
allow-permissions=true
hw-accel=1
min-font-size=0
 
[general]
close-to-tray=false
start-in-tray=false
start-minimized=false
header-bar=true
zoom-level=1
notification-sounds=true

[appearance]
prefer-dark-theme=true

Custom CSS

It's possible to inject a custom CSS to the WebView by adding your file as $HOME/.config/whatsapp-for-linux/web.css

FAQ

Why does the linked device show up as Safari (Mac OS) on my phone?

WebKit is developed by Apple and it's used as a backend for Safari. We are yet unable to trick the WhatsApp server by setting a different user agent.

Why can't I paste images from the clipboard?

This is a known issue with webkit as mentioned here. You can use a patched version of webkit to resolve this i.e. webkit2gtk-imgpaste for Arch Linux. See our related issue.

Why does the application fail to start by giving some unsupported locale error?

This is most probably due to a configuration error on your system which can be resolved by regenerating your locales. See the related issue.

Why does the tray icon not show up or just show three dots?

There are some inconsistencies across DEs about this since it is a pretty old standard and the communities are trying to get rid of it slowly. See the related issue.

Why does the application freeze, stutter, or not respond?

This is probably an upstream issue on WebKit or WhatsApp web since the latter doesn't support the former very well. We are not planning to switch to a different web engine anytime soon. It's advised to set the Hardware Acceleration policy to Never if you experience those issues. See the related issue.

Why doesn't the application remember my settings?

It probably crashes on exit since that is the time frame we save the config file. You can use coredumpctl and then coredumpctl info <pid> to get the dump to attach your issue report.

Contributing

We are really happy you're reading this because we need volunteers to help with this project.

Code

You can contribute by opening issues, and resolving any issue, especially good first issues, improving documentation, adding translations in your language etc.

Translations

Help us translate the project into your language by joining our translation project on POEditor.

Otherwise, you can follow the instructions below to make that happen manually.

Adding your translation

  • Add <langcode> to po/LINGUAS.
  • Copy po/whatsapp-for-linux.pot file to po/<langcode>.po, modify the related fields, and fill in your translations.
  • Add related translations to resource/desktop/com.github.eneshecan.WhatsAppForLinux.desktop.in file as well.

Updating your translation

Whenever the default translation file (whatsapp-for-linux.pot) is updated, run the following in po directory and translate newly added msgids.

intltool-update --dist --gettext-package=whatsapp-for-linux --output-file=<langcode>.po <langcode>

Testing your translation

Install the application to copy translation files into system folders and run;

LANG=<langcode.encoding> ./whatsapp-for-linux

If your system language is set to the desired one, you don't need to set the environment variable.

Submitting changes

Please send a GitHub Pull Request to WhatsApp for Linux with a clear list of what you've done. Read more about Pull Requests.

Donations

Donations are accepted through opencollective, github sponsors, ko_fi and paypal. Money collected via Open Collective is distributed to code contributors.