Skip to content

Lanshuns/Qwacky

Repository files navigation

Qwacky Logo

Why Qwacky?Β Β β€’Β Β DownloadΒ Β β€’Β Β FeaturesΒ Β β€’Β Β ScreenshotsΒ Β β€’Β Β Security & PrivacyΒ Β β€’Β Β Manual InstallationΒ Β β€’Β Β DevelopmentΒ Β β€’Β Β Support the ProjectΒ Β β€’Β Β Acknowledgments

πŸ¦† Why Qwacky?

DuckDuckGo Email Protection is a great service, but using it requires installing the full DuckDuckGo extension, which comes with some limitations:

  • Tracking protection can only be disabled per website, not globally
  • Your default search engine gets changed to DuckDuckGo
  • No way to use email protection as a standalone feature

Qwacky solves this by providing a lightweight, standalone alternative focused entirely on the email protection service, packed with extra features you won't find in the original extension.

πŸ“₯ Download

Get Qwacky for Chrome Get Qwacky for Firefox

✨ Features

  • Generate and manage private @duck.com email addresses
  • Copy generated addresses to clipboard with one click
  • Auto-fill email fields from context menu or keyboard shortcut (Alt+Shift+Q)
  • Reverse alias support to convert any email into a duck.com address for sending
  • Notes and tags for each generated address with search and filtering
  • My Account page to view profile, email stats, and manage forwarding address
  • Multiple accounts support
  • Backup and restore with selective account export
  • Cross-device sync for addresses, reverse aliases, and session data

Browser Compatibility

Qwacky is designed to work seamlessly on both Chrome and Firefox. The build process automatically handles browser-specific requirements:

  • Chrome: Uses service workers for background scripts (Manifest V3)
  • Firefox: Uses background scripts with polyfill support (Manifest V3)

Both versions maintain feature parity while adhering to each browser's best practices and security models.

πŸ“Έ Screenshots

Qwacky Banner

A big thanks to @m.miriam12398 for contributing by making such a cool designs for the project!

πŸ”’ Security & Privacy

  • Uses minimal permissions required for functionality
  • All data is stored locally on your device
  • No tracking or analytics
  • Manifest V3 for better security
  • Open source for transparency

Permissions

  • Storage: Required to store your generated addresses and settings locally
  • Context Menu Autofill: This toggle enables generating aliases from the context menu, auto-detecting email fields, It requires the following optional permissions:
    • contextMenus: Enables the context menu for quick address generation
    • activeTab: Required to access and inject scripts into the current tab only when you explicitly interact with the extension (e.g., using the context menu to fill email addresses)
    • clipboardWrite: Needed to copy the generated address to the clipboard
    • scripting: Required for programmatically injecting the content script when using the context menu

Browser-Specific Permission Handling and Limitations

Firefox and Chrome differ in how they manage and display extension permissions like contextMenus:

  • Firefox requires contextMenus to be listed in the manifest's permissions block at install time. Unlike Chrome, Firefox does not support requesting contextMenus as an optional permission in Manifest V3. This is because the permission directly affects browser UI elements (like the right-click menu), and Firefox enforces that such changes be explicitly declared up front.
  • Chrome, on the other hand, allows contextMenus to be declared in optional_permissions and requested at runtime. However, even after removing permissions programmatically using chrome.permissions.remove(), they may still appear under chrome://extensions as "granted" - even if they're no longer active.

To maintain compatibility and avoid unexpected behavior:

  • We include contextMenus in the required permissions for Firefox.
  • We still use runtime permission requests for Chrome where possible, in line with its model.

This difference in behavior is a known limitation in Chrome and has been discussed by the Chromium team:

πŸ› οΈ Manual Installation

Chrome

  1. Download the latest release from the GitHub Releases page
  2. Unzip the downloaded file
  3. Open Chrome and go to chrome://extensions/
  4. Enable "Developer mode" in the top right
  5. Click "Load unpacked" and select the unzipped folder

Firefox

  1. Download the Firefox version (.xpi file) from the GitHub Releases page
  2. Open Firefox and go to about:addons
  3. Click the gear icon and select "Install Add-on From File..."
  4. Select the downloaded .xpi file

πŸ’» Development

Prerequisites

  • Node.js (v16 or higher)
  • npm (v7 or higher)

Setup

# 1. Clone the repository
git clone https://github.com/Lanshuns/Qwacky.git
cd qwacky
# 2. Install dependencies
npm install

Development Mode

# For Chrome
npm run dev
# For Firefox
npm run dev:firefox

Production Build

# For Chrome
npm run build
# For Firefox
npm run build:firefox

The built extension will be available in dist_chrome/ or dist_firefox/ respectively.

Note: For development and temporary installation in Firefox, you can use about:debugging method:

  1. Go to about:debugging
  2. Click "This Firefox" in the left sidebar
  3. Click "Load Temporary Add-on"
  4. Select the manifest.json file from the dist_firefox/ folder

πŸ’– Support the Project

There are a few ways you can support Qwacky's development:

  • Star the repository on GitHub it helps others discover the project
  • Leave a review on the Chrome Web Store or Firefox Add-ons it makes a big difference!
  • Donate via cryptocurrency:
Currency Address
Bitcoin (BTC) bc1qmmwwsn4cvpsx39sf53qsqcjyjzsqp90lus365w
Ethereum (ETH) 0x08658772EeC32e72456048Be5D5a52bd3bcb01bc
Litecoin (LTC) LKYDeJWeo3kMG1TbY4cqSi87wFeR6YUXP2
USDT (TRON/TRX) TAhdRW3nJxinWjrdYfSWB31RdjRkQKvkEq
USDT (BEP-20) 0x08658772EeC32e72456048Be5D5a52bd3bcb01bc

If you'd like to be recognized for your donation, feel free to open an issue with your name and transaction ID, and I'll add you to the supporters list!

πŸ™ Acknowledgments

This project is a derivative work based on DuckDuckGo's Email Protection service, which is licensed under the Apache License 2.0. The original work's copyright notice:

Copyright (c) 2010-2021 Duck Duck Go, Inc.

For the full license text, see APACHE-LICENSE.

About

Qwacky is an open source client for DuckDuckGo Email Protection, To manage and generate @duck.com aliases.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages