{"id":13576099,"url":"https://github.com/hoehermann/purple-gowhatsapp","last_synced_at":"2026-04-18T21:09:14.365Z","repository":{"id":43878538,"uuid":"173812198","full_name":"hoehermann/purple-gowhatsapp","owner":"hoehermann","description":"Pidgin/libpurple plug-in for WhatsApp.","archived":false,"fork":false,"pushed_at":"2026-03-28T21:17:37.000Z","size":763,"stargazers_count":351,"open_issues_count":32,"forks_count":41,"subscribers_count":18,"default_branch":"whatsmeow","last_synced_at":"2026-03-29T00:19:25.333Z","etag":null,"topics":["instant-messaging","libpurple","libpurple-plugin","pidgin","pidgin-plugin","pidgin-plugins","whatsapp","whatsapp-api","whatsapp-web"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hoehermann.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"hoehermann"}},"created_at":"2019-03-04T19:58:51.000Z","updated_at":"2026-03-28T21:16:15.000Z","dependencies_parsed_at":"2024-01-04T21:24:57.373Z","dependency_job_id":"1103555a-46a9-4628-a12f-0a278f3a3564","html_url":"https://github.com/hoehermann/purple-gowhatsapp","commit_stats":{"total_commits":299,"total_committers":5,"mean_commits":59.8,"dds":0.02341137123745818,"last_synced_commit":"8166dbee3f9516c5463ba3d3f3d3afdf6c4a1c25"},"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/hoehermann/purple-gowhatsapp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-gowhatsapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-gowhatsapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-gowhatsapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-gowhatsapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoehermann","download_url":"https://codeload.github.com/hoehermann/purple-gowhatsapp/tar.gz/refs/heads/whatsmeow","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoehermann%2Fpurple-gowhatsapp/sbom","scorecard":{"id":467359,"data":{"date":"2025-08-11","repo":{"name":"github.com/hoehermann/purple-gowhatsapp","commit":"6eb33d398142e5791cf065026b542ad5b0596007"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/linux.yml:1","Warn: no topLevel permission defined: .github/workflows/windows.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"28 commit(s) and 21 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/linux.yml/whatsmeow?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/linux.yml/whatsmeow?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/linux.yml/whatsmeow?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/linux.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/linux.yml/whatsmeow?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/windows.yml/whatsmeow?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/windows.yml/whatsmeow?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/windows.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/windows.yml/whatsmeow?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/windows.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/hoehermann/purple-gowhatsapp/windows.yml/whatsmeow?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact nightly-6eb33d398142e5791cf065026b542ad5b0596007 not signed: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/235458289","Warn: release artifact nightly-ed4c5ccf80aa09c60dc11f3bc21d530a69e43bf0 not signed: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/226833013","Warn: release artifact nightly-911e1cb0c9a8a14d4e63166a60f4ec9acacd1257 not signed: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/223753606","Warn: release artifact nightly-2b848588cbfa449e3ed433f4c8b9cd15883c8057 not signed: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/219355356","Warn: release artifact nightly-aca36309494aa8f2834c6f7205632649bb8fd3ed not signed: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/217858114","Warn: release artifact nightly-6eb33d398142e5791cf065026b542ad5b0596007 does not have provenance: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/235458289","Warn: release artifact nightly-ed4c5ccf80aa09c60dc11f3bc21d530a69e43bf0 does not have provenance: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/226833013","Warn: release artifact nightly-911e1cb0c9a8a14d4e63166a60f4ec9acacd1257 does not have provenance: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/223753606","Warn: release artifact nightly-2b848588cbfa449e3ed433f4c8b9cd15883c8057 does not have provenance: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/219355356","Warn: release artifact nightly-aca36309494aa8f2834c6f7205632649bb8fd3ed does not have provenance: https://api.github.com/repos/hoehermann/purple-gowhatsapp/releases/217858114"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'whatsmeow'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T12:52:45.372Z","repository_id":43878538,"created_at":"2025-08-19T12:52:45.372Z","updated_at":"2025-08-19T12:52:45.372Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31984680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["instant-messaging","libpurple","libpurple-plugin","pidgin","pidgin-plugin","pidgin-plugins","whatsapp","whatsapp-api","whatsapp-web"],"created_at":"2024-08-01T15:01:06.978Z","updated_at":"2026-04-18T21:09:14.357Z","avatar_url":"https://github.com/hoehermann.png","language":"C","funding_links":["https://ko-fi.com/hoehermann"],"categories":["C"],"sub_categories":[],"readme":"# purple-gowhatsapp\n\nA libpurple/Pidgin plugin for WhatsApp powered by [whatsmeow](https://github.com/tulir/whatsmeow). whatsmeow is written by Tulir Asokan.\n\n![Instant Message](/docs/instant_message.png?raw=true \"Instant Message Screenshot\")\n\n### Features\n\nStandard features:\n\n* Connecting to existing account via QR code or 8-character code.\n* Receiving messages, sending messages.\n* Receiving files (image, video and note, audio and voice, document, sticker).\n* Received images are displayed in the conversation window (optional).\n* Sending JPEG images as image messages.\n* Sending opus audio files as voice messages.\n* Sending mp4 video files as video messages.\n* Sending other files as documents.\n* Replying to a specific message.\n* Fetching all contacts from account, showing friendly names in buddy list, downloading profile pictures ([Markus \"nihilus\" Gothe](https://github.com/nihilus) for [Peter \"theassemblerguy\" Bachmaier](https://github.com/theassemblerguy)).\n* Sending receipts (configurable).\n* Displaying reactions.\n* Displaying polls (but no participating in them).\n* Support for socks5 proxies.\n* Reasonable support for group chats by [yourealwaysbe](https://github.com/yourealwaysbe).\n* Under the hood: Reasonable callback mechanism thanks to [Eion Robb](https://github.com/EionRobb).\n* Note: Although the name of the project suggests otherwise, this is not a perfect drop-in replacement for the plug-in with the obsolete gowhatsapp back-end. For this reason, it has a different ID: `prpl-hehoe-whatsmeow`\n\nOther improvements:\n\n* Contact presence is regarded (buddies are online and offline).\n* Typing notifications are handled.\n* Logging happens via purple.\n* Messages which only consist of a single URL may be sent as media messages (disabled by default).\n* Account can be logged out via purple action.\n* Reactions are displayed as messages.\n* There is an \"away\" state.\n  * For compatibility with the auto-responder plug-in.\n  * Other devices (i.e. the main phone) display notifications while plug-in connection is \"away\".\n  * WhatsApp does not send contact presence updates while being \"away\".\n  * Caveat emptor: Other side-effects may occur while using \"away\" state.\n\nKnown issues:\n\n* Contacts:\n  * If someone adds you to their contacts and sends you the very first message, the message will not be received. WhatsApp Web shows a notice \"message has been delayed – check your phone\". This notice is not shown by the plug-in.\n* Group Chats:\n  * Purple prior to 2.14.0 cannot send files to groups.\n  * No notification when being added to a group (the chat will be entered upon receiving a message).\n  * The list of participants is not updated if a participants leaves the chat (on Pidgin, closing the window and re-entering the chat triggers a refresh).\n* Stickers:\n  * A [webp pixbuf loader](https://github.com/aruiz/webp-pixbuf-loader) must be present at runtime.\n  * GDK pixbuf headers must be available at build time else presence of loader cannot be checked.\n  * Stickers may or may not appear animated depending on loader.\n* Special messages:\n  * Voice calls are not supported (a warning is displayed).\n  * Other special messages are ignored silently.\n* No support for mark-up in outgoing messages.  \n  Note: Due to the internal use of [purple_markup_strip_html](https://docs.imfreedom.org/pidgin2/util_8h.html#a0f02bb7e180bb04fb74c8f39564902ee), you need to use a br-tag instead of newline. Pidgin does that automatically, but other clients might not.\n* Emojis:\n  WhatsApp supports many emojis in text message bodies and reactions. The smiley themes shipped with Pidgin do not cover all emojis. You can install a smiley theme or a font which does, for example the [Google Noto Color Emoji](https://fonts.google.com/noto/specimen/Noto+Color+Emoji) font. On Ubuntu, this is provided by the `fonts-noto-color-emoji` package. There is currently no experience if that works on Windows as well. Feedback is welcome.\n\nOther planned features:\n\n* Support [WhatsApp formatting](https://faq.whatsapp.com/539178204879377/).\n* Display receipts in conversation window.\n* Join group chat via link.\n* View group icon.\n* Gracefully handle group updates.\n* Action to refresh groups.\n* Support [sending mentions](https://github.com/tulir/whatsmeow/discussions/259).\n\nThese features will not be worked on:\n\n* Accessing microphone and camera for recording voice or video messages.  \n  To prepare a voice message, you can use other tools for recording. I like to use [ffmpeg](https://ffmpeg.org/download.html):\n  \n      ffmpeg -f pulse -i default -ac 1 -ar 16000 -c:a libopus -y voicemessage.ogg # on Linux with PulseAudio\n\n### Building\n\nLook at the [build instructions](./docs/BUILDING.md). This project is being developed on Ubuntu 24.04. Support for other distributions and operating systems is community effort.\n\n\n### Installation\n\n* Place the binary in your Pidgin's plugin directory (on Linux, that is `~/.purple/plugins`).\n\n#### Set-Up\n\n* Create a new account  \n  You must enter your phone's internationalized number followed by `@s.whatsapp.net`.  \n  Example: `123456789` from Germany would use `49123456789@s.whatsapp.net`.\n\n* Upon login, a QR code and the 8-character code is shown in a Pidgin request window.  \n  Using your phone's camera, scan the code within 20 seconds or enter the 8-character code on your main device – just like you would do with WhatsApp Web.  \n  *Note:* On headless clients such as Spectrum, the QR code will be wrapped in a message by a fake contact called \"Logon QR Code\". You may need to temporarily configure your UI to accept messages from unsolicited users for linking purposes.  \n  Wait until the connection has been fully set up. Unfortunately, there is no progress indicator while keys are exchanged and old messages are fetched. Usually, a couple of seconds is enough. Some power users with many groups and contacts reported the process can take more than a minute. If the plug-in is not yet ready, outgoing messages may be dropped silently (see issue #142).\n\n**You probably want to have a look at the documentation of all the [settings](./docs/SETTINGS.md) the plug-in offers.**\n\nSome in-depth documentation about obscure details can be found in the [notes](./docs/NOTES.md). **Read this if you want to send files.**\n\n#### Acknowledgements\n\n* [Gary 'grim' Kramlich](https://www.twitch.tv/rw_grim/) for developing Pidgin and purple\n* [Eion Robb](https://github.com/EionRobb/) for sharing his invaluable purple advice\n* [Peter \"theassemblerguy\" Bachmaier](https://github.com/theassemblerguy) for initiating the re-write\n* [yourealwaysbe](https://github.com/yourealwaysbe) for proper group chats, support and tests against [bitlee](https://github.com/bitlbee/bitlbee)\n* [vitalyster](https://github.com/vitalyster) for support, packaging and adjustments for [spectrum2](https://github.com/SpectrumIM/spectrum2)\n* Martin Sebald from [hot-chilli.net](https://jabber.hot-chilli.net/) for extensive stress-testing \n* [JimB](https://stackoverflow.com/users/32880/jimb) for golang insights\n* [HVV](https://www.hvv.de/) for providing free wifi at their stations\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoehermann%2Fpurple-gowhatsapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoehermann%2Fpurple-gowhatsapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoehermann%2Fpurple-gowhatsapp/lists"}