i created a whatsapp app based on whatsmeow, which is written in go. unfortunately it is only possible to register as second device, like the browser. it only has minimal saljail permissions out of the box, internet and secrets for storing the registration. one can add contacts permssions or meda files permissions through a command that can be copied to clipboard and edits the desktop file to add or remove these optional permissions. for listening to voice messages you can put the phone to your ear, and sound comes through the earpiece and the display is turned off, if you remove the phone from your ear both are turned back, like in original whatsapp. i used claude "ai" to develop this app. sources are here: https://github.com/smatkovi/harbour-whatsapp i updated whatsmeow and fixed the errors you reported. thanks for all your comments and error reports.
- Presence for the chat you have open, which is kempertom's wish narrowed to
what can be done safely. WhatsApp sends nothing about anyone unless
subscribed to individually, so a page listing who is online would mean one
request per contact - 808 of them here - and a burst of identical requests
across a contact list is precisely the pattern that has already cost this
account two restrictions. Instead one subscription happens when a chat is
opened, and again when a chat is newly started, so it is one request per
deliberate act. The header then shows online, or when the person was last
seen. Reopening the same chat inside ten minutes does not ask again.
Groups and channels are skipped since they have no presence, and nothing
is asked at all while "do not appear online" is on - WhatsApp would send
nothing back, so the request would be pure noise. Eight test cases, under
the race detector, since the event handler writes what the endpoint reads
Comments
aviarus
Fri, 2026/07/17 - 21:00
Permalink
It's a good suggestion, if media access is enabled you have the option to put .nomedia files for different media types
kempertom
Fri, 2026/07/17 - 14:28
Permalink
Sorry, but all permissions are granted. I did the process. But the mic doesn't turn into a timer and on the main page is a message saying: Recording failed ([Errno 13] no permission: 'gst-launch-1.0) grant the microphone permission in Settings and restsart the app
I did before and reststarted the app...even SFOS>Settings>Apps>whatsapp is showing that it has mic permission .... Very strange.
Your App is a micrometer away from being perfect!!!
aviarus
Fri, 2026/07/17 - 20:59
Permalink
Okay it could be that gstreamer1.0-tools wasn't installed. I added it as a dependency and it should install now if you update
kempertom
Fri, 2026/07/17 - 12:17
Permalink
Permissions are granted, but returning to main screen a message is shown, that says that it has no permission
kempertom
Fri, 2026/07/17 - 12:05
Permalink
How to record a voice note?
kempertom
Thu, 2026/07/16 - 22:54
Permalink
I just turned my Motorola G7 Power into my daily driver with SFOS - without Android - because of your work. Only thing missing are Voicenotes
rdomschk
Thu, 2026/07/16 - 18:21
Permalink
Hello, it works perfect. Thanks, Thanks, Thanks. The one problem is, I have to open all Chats separate to reset the counter. I have manny chats, maybe you can made later a menu point to set all chats at readed... But no pressure. A other question is, its possible to activat a notification at the evenscreen to see new messages. BR
aviarus
Thu, 2026/07/16 - 19:33
Permalink
You can activate notifications in settings now and Mark all as read is also available now per chat
rdomschk
Wed, 2026/07/15 - 23:44
Permalink
Hello - you are very diligent every day. Thanks for it. The pin function now works afte restart. One question, how can I see which chat had new messages. I miss a highlighting at the chat names or a othe sign. But no pressure it works perfect in the moment and I could switch off the AppSuport.
aviarus
Thu, 2026/07/16 - 10:02
Permalink
Your wish is my command^^ i made a red counter with unread messages
rdomschk
Tue, 2026/07/14 - 22:04
Permalink
Hello, a big Thanks only 1 day later so many changes - now the first pairing work from desktop file and the new statuspage is also very nice. I have only problems with videos. I cannot open a video with the gallerie. I gave all right for contacts and media in Terminal but the gallery shows 0 byte for each video? What I make false? The contacts names the status header after the command. The pin function for chats lost after reopen the app but this is not so importand.
aviarus
Wed, 2026/07/15 - 00:14
Permalink
oh yes that could be it, did you close the app after the terminal commands and opened it again? the new sailjail permissions only take effect when the app is launched again, otherwise the gallery has no read permissions in the sandbox, but if the app has write permissions to the gallery the gallery can just open it. i could implement a video player in the app though, so people who don't want to give this permission could also watch a video. the pinning i will look into
aviarus
Tue, 2026/07/14 - 23:44
Permalink
I didn't test it yet so much with videos, i will look into it. It could be the media permissions for sailjail or something else. Thanks for pointing it out
rdomschk
Mon, 2026/07/13 - 22:32
Permalink
Hello - nice that you support your good work from last year! For the first pairing the user must start it via terminal "sailfish-support harbour-whatsapp" without this the pairing button not work. After it the app start perfect with the desktop icon. What I miss now is to see the status and a setting option for languages. It a good alternative to stopp the origianal WA service from ASS. Thanks and don't lose your joy of programing on this app. BR
rob_k
Sun, 2026/07/12 - 20:42
Permalink
It appears images in messages from before the pairing, are not shown. New stickers and images are shown properly. I like it!
rob_k
Sun, 2026/07/12 - 16:49
Permalink
Very interesting development! I just installed it, pairing works, list looks good. This is a chance for me not to have Android active all the time. Thanks!PS I see we don't have pictures yet, still very promising
aviarus
Sun, 2026/07/12 - 17:24
Permalink
I tried to implement what i think you meant, but if you specify it i can add it.
aviarus
Sun, 2026/07/12 - 17:08
Permalink
Okay thanks. What do you mean exactly? You cannot open Pictures sent to you or something else?
Manisak
Sat, 2026/04/04 - 10:12
Permalink
I'd rather do a matrix bridge. This one is a construction site. But the will counts.
aviarus
Sun, 2026/07/12 - 21:16
Permalink
Thanks! That's expected: history is only synced once, at pairing time, and versions before 0.4.9 dropped media messages during that import. WhatsApp doesn't re-send history, so media from chats imported with an older version can't be recovered retroactively. If you log out and pair again, the history sync runs with the new importer and old chats will show their media (tap to download). Everything received after the update works without re-pairing.
nkyst
Fri, 2025/12/12 - 11:14
Permalink
Perhaps a beginner's question, but what format should I use to 'pair' the account? I tried several ways to enter my phone numbet such as with or without + of country code etc. Or am I missing anything ?
aviarus
Fri, 2025/12/12 - 16:00
Permalink
with country code but without + and without 00
nkyst
Wed, 2025/12/17 - 10:52
Permalink
If thr numbe is 012345678 and country code is 99 99012345678 correct? 'pair' button seems not to react with the number thought. Also the link to github seems to end up 404
dwad
Thu, 2025/12/18 - 11:53
Permalink
99123 is correct, delete 0 .... and for me on C2 it is only working in Terminal or qCommand Launcher Icon ... sailfish-qml harbour-whatsapp ... and later on I have to delete messages.enc in /home/defaultuser/.local/share/harbour-whatsapp/ again and again because it does not update. Hopefully the App will get some updates.
nkyst
Sun, 2025/12/28 - 11:18
Permalink
It opens and linked to my account. I found a strange number pops up though. When I type any messages in that numbet it comes to my own account chat. Another thing I found so far is all the messages I sent to any chats are also visible in my own chat although official app does not show it in this way
MeeGo
Sat, 2025/12/13 - 10:05
Permalink
On a Xperia pairing works, on my daily driver I cannot pair, on the CLI I get: curl -m 5 http://localhost:8085/status
curl: (7) Failed to connect to localhost port 8085 after 0 ms: Could not connect to server.
What am I doing wrong on my daily driver? What can I do to successfully pair?
I am stuck at this localhost cannot connect
rdomschk
Sun, 2025/12/21 - 08:08
Permalink
Morning,
I have solved now the SilicaListViewproblem. Change or delete line 667+668 in the file usr/share/harbour-whatsapp/qml/harbour-whatsapp.qml and add a timer. So the last Chat bubble is every time visible and you need not to scroll.
The function "posiionViewAtEnd()" not work because the visibleView is not open in the moment fo Completed.
Line 667 add this "//" before or delete // onCountChanged: positionViewAtEnd()
Line 668 add this "//" before or delete // Component.onCompleted: positionViewAtEnd()
add Line 669 Timer {
add Line 670 id: positionTimer
add Line 671 interval: 200
add Line 672 repeat: false
add Line 673 onTriggered: msgList.positionViewAtIndex(view.count - 1, ListView.Beginning)
add Line 674 }
add Line 675 onCountChanged: {positionTimer.start()}
defactofactotum
Sat, 2025/12/06 - 13:59
Permalink
Thanks rdomschk
rdomschk
Sun, 2025/12/21 - 08:14
Permalink
Thy I corrected but I have the problem, that new messages not every time mutch in existing chats and add a new chatfolder...
rdomschk
Thu, 2025/12/04 - 23:43
Permalink
It works without lost register if you change the line 11 in the file /usr\share/harbour-whatsapp/start_backend.py
old line 11 data_dir = os.path.expanduser("~/.local/share/harbour-whatsapp")
new line 11 data_dir = os.path.expanduser("~/.local/share/harbour/harbour-whatsapp")
Pages