Skip to content

devlinman/whatsit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mr. Whatsit

Contents

About Whatsit

  • A lightweight, native desktop client for WhatsApp Web built with Qt 6 and Qt WebEngine.
  • Whatsit is NOT Electron-based. It uses system Qt and WebEngine, resulting in significantly lower memory usage, faster startup, and proper KDE/Qt integration.
  • Name Inspired by the series Stranger Things S5.
  • I have tried many Whatsapp web clients, but none of them are fast and light. None of them felt right…
  • My setup is Arch-KDE Plasma-Wayland. If your setup is similar, the app should work well.
  • In v3.0.x, additional features such as memory kill switch and custom app and tray icons, etc. You may call these features bloat, but I like to have those. If you don’t want those, use lower versions of the app.
  • I don’t need a system tray… I don’t need notifications… Turns out, I do need a system tray icon, and notifications. So they are implemented in v2.0.0.
  • If you want the minimal and bare version, use v1.0.1.

Features

  • Native Qt 6 application
  • Qt WebEngine-based (Chromium)
  • Persistent login and chat storage
  • Uses standard XDG directories
  • KDE / Wayland friendly
  • Dark mode support via configuration
  • Very low overhead compared to Electron apps
  • KDE Native Notification support
  • Reduce memory usage & kill switch

Improvements in v 3.0.x

Title bar menu:

System

  • Mute sounds (including notifications and media)

Advanced

  • Use Less Memory - When hidden to tray, app consumes less memory by unloading the webpage.
  • Memory Kill switch - Checks its memory every 30 seconds and quits if memory usage is above the threshold.
  • Customize App Icon, Tray Icon and App URL.

Others

  • Tray icon toggles show/hide window on click.
  • Ctrl+Shift+Q keybinding quits the app completely.

Paths and Storage Locations

Files:

  • debug file at ~/.cache/whatsit/whatsit.log
  • icon at /usr/share/icons/hicolor/256x256/apps/whatsit.png
  • desktop file at /usr/share/applications/whatsit.desktop
  • notifyrc at /usr/share/knotifications6/whatsit.notifyrc
  • binary at /usr/bin/whatsit
  • main config file at ~/.config/whatsit/whatsit.ini
  • customization config file at ~/.config/whatsit/custom.ini

Folders:

  • cache at ~/.cache/whatsit/whatsit
  • profile and cookies at ~/.local/share/whatsit/whatsit

Configuration

  • Main config file located at ~/.config/whatsit/whatsit.ini.
  • It is generated automatically on first run.
  • Example config:
[Advanced]
MemoryLimit=2
UseLessMemory=true

[Debug]
EnableFileLogging=false

[%General]
PreferDarkMode=true
RememberDownloadPaths=true

[System]
AutostartOnLogin=true
MuteAudio=true
StartMinimizedInTray=true
SystemNotifications=true

[Window]
MaximizedByDefault=true
MinimizeToTray=true
RememberWindowSize=true
Size=@Size(1920 1046)
ZoomLevel=1.3
  • If you customize tray icon or app icon, or app url, you will find them at ~/.config/whatsit/custom.ini.
  • If any of the keys are left empty, the app will use fallback values.
[Custom]
AppIcon=WhatsApp
TrayIcon=whatsit_mono
Url=

Install from AUR

  • Now available from AUR - whatsit-git. AUR Package.
  • Builds from latest commit from git on default branch (master).
yay -S whatsit-git

Build

Requirements

  • Linux
  • Qt >= 6.2
  • qt6-base
  • qt6-webengine
  • CMake
  • C++17 compatible compiler

Build from Source

# git clone and cd first.
# Make sure you are in the repository root.
mkdir build
cd build
cmake ..
make -j$(nproc)

# Install the App.
sudo make install
  • Installing the release package on Arch Linux (available in releases): sudo pacman -U <RELEASE_PACKAGE>
  • If you installed the package using pacman, remove with: sudo pacman -R whatsit

PKGBUILD

  • To build using the PKGBUILD file given below, download it, and run: makepkg -si
  • This PKGBUILD builds from latest commit on github (on master branch).
# Created by devlinman
pkgname=whatsit
pkgver=
pkgrel=1
pkgdesc="whatsit"
arch=('x86_64')
license=('MIT')
depends=()
makedepends=('cmake' 'vulkan-headers')
source=("git+https://github.com/devlinman/whatsit")
sha256sums=(SKIP)

build() {
    cmake -S "/media/DATA/SOFTWARE/Programming/Projects/whatsit" -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
    cmake --build build
}

package() {
    DESTDIR="$pkgdir" cmake --install build
}

Notes

  • Some JavaScript is injected to make dark mode and notifications work.
  • For Prefer Dark Mode toggle to work, you need to enable dark theme in Whatsapp first.
    • Go to Whatsapp Settings -> Chats -> Theme and choose Dark.
    • If enabling the menu option is still breaking the view of the webpage, restart the app completely.
  • Notifications will only show when the app is minimized, hidden, or out of view (in a different virtual desktop).
  • If no Size parameter is set, the app defaults to 1200x800.
  • If MaximizeByDefault key is set to ”true”, it overrides RememberPreviousWindowSize key.
  • No support for multiple accounts/profiles.
  • If you opt for use Less Memory, the webpage is temporarily closed. but the app remains in tray. CPU consumption will increase each time the app is opened and the webpage is loaded.
  • When Memory Kill Switch is activated and the threshold is chosen, the app checks for its own memory usage every 30 seconds.

Future updates

  • [ ] Delete debug file on app/profile change.
  • [ ] Option to toggle injection of JavaScript.
  • [ ] Icons for menu buttons and actions.
  • [ ] Notifcations via freedesktop.
  • [ ] Help, About sections.
  • [ ] Command-line info - version, help, etc.

LICENSE

  • This project is licensed under the MIT license.
  • Check Licensing information at LICENSE.
  • Copyright Disclaimer: Whatsapp is not owned by me.
  • The icons used in this project were grabbed off the internet.

tldr;

Use this app at your own risk.

I will not be liable for any damages.

About

Qt6-Webengine based Whatsapp web Desktop client.

Topics

Resources

License

Stars

Watchers

Forks