Whatsapp wrapper that looks good in KDE

So, for the past 2-3 days, I was working on creating a good looking wrapper for whatsapp, which fits into the KDE ecosystem. Even though I actively use matrix and other messaging platforms, I cannot quit whatsapp. And the lagging new UI of whatsapp, made me sick. This wrapper was also from an idea, that I often forget, where I downloaded a file from Whatsapp or whether I even downloaded it.

This wrapper is aimed to solve 3 main problems

  1. Allow the users to easily manage the permissions given to the website
  2. Keep a track of all the downloads [WIP]
  3. Allow multiple profiles within the same app (Firefox container works, but lags a lot) [WIP]

Currently to build this app, you’ll need to be on the latest commit of every library that’s being used, atleast Kirigami Addons for sure, as I have fixed a bug
, and implemented a new feature in the MessageDialog component.

The Bugs:

  1. Even though MessageDialog inherits Qt Dialog, it needed some special setup to handle the Don’t show again button. It worked in all the cases, but it was not handling the scenario where the user was Rejecting the dialog (not cancelling). When standard buttons like Dialog.Abort or Dialog.No are pressed, they emit the rejected signal.

  2. I have found another rather odd behavior in the Qt WebEngine. I am using the QWebEngineView QML type to show the webapp. When I am leaving the idle, out of focus, the web view is suddenly turning black. After rigorous search, I found out that this is a very old issue, and has probably popped up again in Qt 6.9.0 update. One can found a bug report of the same here. Surprisingly, if I use the C++ variant, with same settings, this issue doesn’t show up. The current workaround is to disable GPU composting. Let’s see if this gets fixed soon.

The Feature:

This is feature in the same MessageDialog component is the backbone of how permissions are intuitively managed inside the app. Whenever a permission is required, the app creates a popup asking for it without silently allowing it. If the user wants to press yes and don’t want this selection to be saved, then no problem. But the problem arises when the user wants to save their selection for the future reference, that’s when things get complicated. I had my own config inside the app, to manage the permissions. But MessageDialog created its own group inside the config. So, I patched it, to allow passing custom config group name. And thus, I am able to sync the permission that’s selected by the user, and users can undo their choice anytime directly from the app’s settings.

Screenshots

Here are some screenshots of the app

Main Window

Whatsup Asking Permission

Whatsup Settings Page

Building from source:

Right now, you can easily build this app using KDE Builder. If you want to try manually, I’ve written the necessary packages for KDE Neon in README.

So, guys, please give this app a try. Right now, all the features that have been implemented works perfectly. Let me know how you guys think of it.

3 Likes

Hi from a former user of silos-whatsapp and many other WhatsApp clients. Now I just package webapp-manager in my copr and use it to wrap WhatsApp.

A common problem among QtWebEngine based WhatsApp clients is that WhatsApp complains of the browser version being too old. Sometimes this issue is solved by a refresh, but sometimes more drastic changes are needed. One of these drastic changes (often the only change needed for a fix) is to change user agent to latest chrome user agent.

Could you add a config in your app to change the user agent manually, instead of a built-in user agent (I see that you have one in src/main.cpp line 60) or the default user agent of QtWebEngine (too old to run WhatsApp unless you’re on Arch or Fedora)?

2 Likes

Exactly, I also faced the same problem. But I haven’t exposed this yet because of 3 reasons

  1. As I mentioned to support multiple profiles, I still need to figure how can I separately store them.
  2. User Agent is a very Sensitive string, so I need to have some way to validate it if given custom, and also a very beautiful way to expose it.
  3. I am unsure if I should expose it via KConfig, or I should use json or sql database for it.

Very very grateful for your feedback. Please feel free to create an issue in the repo if you can.

Wonderful! I tried so many apps, but only few adapt to Plasma, and even less work for enough time: at some point they stop working and I need either to reset them or to install something else. The most comfortable solution I found until now is an Essential tab in Zen browser, so that I can reach it from any workspace and I can move to Zen with a shortcut and move to the first tab with another shortcut. But having it as a standalone program would be great, most importantly if you are tackling so many of the problems that make other implementations stop working.

1 Like

One suggestion would be making the user able to completely hide the sidebar you created on the left: it seems very useful to find a good view of the app, but they may stop being useful after having decided on the settings.

Hi, this is a design choice that I have made. This side bar will be handy for various different things, not only just changing settings, like I previously said, to manage multiple profiles, to manage the downloads etc. So, I am not sure that it’d best to hide the bar completely. I’ll surely look into your suggestion at a later point of time, after the project matures a bit.

1 Like

I understand, than that seems like a good choice