whatsapp

Rating: 
3.6
Your rating: None Average: 3.6 (10 votes)

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.

Screenshots: 
Application versions: 
AttachmentSizeDate
File harbour-whatsapp-0.9.183-1.armv7hl.rpm6.99 MB31/07/2026 - 18:56
File harbour-whatsapp-0.9.183-1.i486.rpm7.26 MB31/07/2026 - 18:56
File harbour-whatsapp-0.9.183-1.aarch64.rpm6.83 MB31/07/2026 - 18:56
File harbour-whatsapp-0.9.184-1.i486.rpm7.26 MB31/07/2026 - 19:09
File harbour-whatsapp-0.9.184-1.armv7hl.rpm6.99 MB31/07/2026 - 19:09
File harbour-whatsapp-0.9.184-1.aarch64.rpm6.83 MB31/07/2026 - 19:09
File harbour-whatsapp-0.9.188-1.aarch64.rpm6.84 MB31/07/2026 - 22:22
File harbour-whatsapp-0.9.188-1.armv7hl.rpm6.99 MB31/07/2026 - 22:22
File harbour-whatsapp-0.9.188-1.i486.rpm7.27 MB31/07/2026 - 22:22
File harbour-whatsapp-0.9.189-1.armv7hl.rpm7 MB31/07/2026 - 23:27
File harbour-whatsapp-0.9.189-1.i486.rpm7.27 MB31/07/2026 - 23:27
File harbour-whatsapp-0.9.189-1.aarch64.rpm6.84 MB31/07/2026 - 23:27
File harbour-whatsapp-0.9.193-1.i486.rpm7.28 MB01/08/2026 - 00:52
File harbour-whatsapp-0.9.193-1.armv7hl.rpm7.01 MB01/08/2026 - 00:52
File harbour-whatsapp-0.9.193-1.aarch64.rpm6.85 MB01/08/2026 - 00:52
File harbour-whatsapp-0.9.195-1.armv7hl.rpm7.02 MB01/08/2026 - 01:24
File harbour-whatsapp-0.9.195-1.i486.rpm7.29 MB01/08/2026 - 01:24
File harbour-whatsapp-0.9.195-1.aarch64.rpm6.86 MB01/08/2026 - 01:24
File harbour-whatsapp-0.9.196-1.i486.rpm7.29 MB01/08/2026 - 01:24
File harbour-whatsapp-0.9.196-1.armv7hl.rpm7.02 MB01/08/2026 - 01:24
File harbour-whatsapp-0.9.196-1.aarch64.rpm6.86 MB01/08/2026 - 01:24
File harbour-whatsapp-0.9.198-1.aarch64.rpm6.87 MB01/08/2026 - 10:39
File harbour-whatsapp-0.9.198-1.armv7hl.rpm7.03 MB01/08/2026 - 10:39
File harbour-whatsapp-0.9.198-1.i486.rpm7.3 MB01/08/2026 - 10:39
File harbour-whatsapp-0.9.199-1.i486.rpm7.3 MB01/08/2026 - 11:46
File harbour-whatsapp-0.9.199-1.armv7hl.rpm7.03 MB01/08/2026 - 11:46
File harbour-whatsapp-0.9.199-1.aarch64.rpm6.87 MB01/08/2026 - 11:46
File harbour-whatsapp-0.9.201-1.i486.rpm7.3 MB01/08/2026 - 14:33
File harbour-whatsapp-0.9.201-1.armv7hl.rpm7.03 MB01/08/2026 - 14:33
File harbour-whatsapp-0.9.201-1.aarch64.rpm6.88 MB01/08/2026 - 14:33
File harbour-whatsapp-0.9.206-1.i486.rpm7.31 MB01/08/2026 - 15:37
File harbour-whatsapp-0.9.206-1.armv7hl.rpm7.04 MB01/08/2026 - 15:37
File harbour-whatsapp-0.9.206-1.aarch64.rpm6.88 MB01/08/2026 - 15:37
File harbour-whatsapp-0.9.207-1.i486.rpm7.31 MB01/08/2026 - 20:12
File harbour-whatsapp-0.9.207-1.armv7hl.rpm7.04 MB01/08/2026 - 20:12
File harbour-whatsapp-0.9.207-1.aarch64.rpm6.88 MB01/08/2026 - 20:12
File harbour-whatsapp-0.9.214-1.i486.rpm9.66 MB02/08/2026 - 01:05
File harbour-whatsapp-0.9.214-1.armv7hl.rpm9.39 MB02/08/2026 - 01:05
File harbour-whatsapp-0.9.214-1.aarch64.rpm9.24 MB02/08/2026 - 01:05
File harbour-whatsapp-0.9.215-1.i486.rpm9.67 MB02/08/2026 - 04:55
File harbour-whatsapp-0.9.215-1.armv7hl.rpm9.39 MB02/08/2026 - 04:55
File harbour-whatsapp-0.9.215-1.aarch64.rpm9.24 MB02/08/2026 - 04:55
File harbour-whatsapp-0.9.217-1.armv7hl.rpm9.39 MB04/08/2026 - 17:55
File harbour-whatsapp-0.9.217-1.i486.rpm9.67 MB04/08/2026 - 17:55
File harbour-whatsapp-0.9.217-1.aarch64.rpm9.24 MB04/08/2026 - 17:55
File harbour-whatsapp-0.9.229-1.i486.rpm9.69 MB07/08/2026 - 19:24
File harbour-whatsapp-0.9.229-1.armv7hl.rpm9.42 MB07/08/2026 - 19:24
File harbour-whatsapp-0.9.229-1.aarch64.rpm9.26 MB07/08/2026 - 19:24
File harbour-whatsapp-0.9.230-1.i486.rpm9.7 MB07/08/2026 - 19:42
File harbour-whatsapp-0.9.230-1.armv7hl.rpm9.42 MB07/08/2026 - 19:42
File harbour-whatsapp-0.9.230-1.aarch64.rpm9.27 MB07/08/2026 - 19:42
File harbour-whatsapp-0.9.245-1.i486.rpm9.72 MB11/08/2026 - 22:14
File harbour-whatsapp-0.9.245-1.armv7hl.rpm9.44 MB11/08/2026 - 22:14
File harbour-whatsapp-0.9.245-1.aarch64.rpm9.29 MB11/08/2026 - 22:14
File harbour-whatsapp-0.9.255-1.i486.rpm9.74 MB13/08/2026 - 14:41
File harbour-whatsapp-0.9.255-1.armv7hl.rpm9.47 MB13/08/2026 - 14:41
File harbour-whatsapp-0.9.255-1.aarch64.rpm9.31 MB13/08/2026 - 14:41
Changelog: 

- 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's picture

It's a good suggestion, if media access is enabled you have the option to put .nomedia files for different media types

kempertom's picture

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's picture

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's picture

Permissions are granted, but returning to main screen a message is shown, that says that it has no permission

kempertom's picture

How to record a voice note?

kempertom's picture

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's picture

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's picture

You can activate notifications in settings now and Mark all as read is also available now per chat

rdomschk's picture

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's picture

Your wish is my command^^ i made a red counter with unread messages

rdomschk's picture

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's picture

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's picture

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's picture

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's picture

It appears images in messages from before the pairing, are not shown. New stickers and images are shown properly. I like it!

rob_k's picture

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's picture

I tried to implement what i think you meant, but if you specify it i can add it.

aviarus's picture

Okay thanks. What do you mean exactly? You cannot open Pictures sent to you or something else?

Manisak's picture

I'd rather do a matrix bridge. This one is a construction site. But the will counts.

aviarus's picture

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's picture

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's picture

with country code but without + and without 00

nkyst's picture

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's picture

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's picture

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's picture

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's picture

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's picture

Thanks rdomschk

I just deleted lines 667 and 668 for the moment. The filepath you gave is not exactly right, should be: usr/share/harbour-whatsapp/qml/ harbour-whatsapp.qml
rdomschk's picture

Thy I corrected but I have the problem, that new messages not every time mutch in existing chats and add a new chatfolder... 

rdomschk's picture

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