Stop copying text between
windows and just translate

One click. Instant translation. Auto-copied to clipboard. 30+ languages. Zero hassle. Built for GNOME Shell.

500k Free chars/month
30+ Languages
1-click To translate
Get It Now - It's Free See Technical Details

What makes translation less annoying

Because your time is worth more than tab-switching hell

🎯

Lives in your panel

Native GNOME integration. No new windows, no browser tabs. Just click the icon and get your translation. Stays out of your way.

Works with selection

Just highlight text and click. No need to copy it first. Clipboard text works too if nothing's selected, but selection is faster.

🧠

Figures out what you want

Auto-detects language and direction. Reading Spanish? Goes to English. Writing in English? Goes to your target language. Zero manual switching.

📋

Auto-copy means one less step

Translation hits your clipboard automatically. Translate → Paste. That's it. Configurable per language if you want control.

✓ Open Source ✓ MIT Licensed ✓ Zero Telemetry

Installation

Takes about 2 minutes. Seriously.

Requirements

  • GNOME Shell 48+
  • DeepL API key (free tier: 500,000 characters/month)
  • libsecret (usually pre-installed on GNOME systems)

Installation Commands

# Download the extension package
wget https://github.com/juan-de-costa-rica/gnome-automagic-panel-translator/releases/latest/download/automagic-panel-translator@juan-de-costa-rica.zip

# Install (--force overwrites any existing version)
gnome-extensions install --force automagic-panel-translator@juan-de-costa-rica.zip

# Log out and log back in (required for GNOME to discover the extension)

# Enable the extension
gnome-extensions enable automagic-panel-translator@juan-de-costa-rica

Note: The logout/login step is required on Wayland. GNOME Shell needs to restart to discover new extensions.

Get Your API Key

Sign up for a free DeepL API account at deepl.com/pro-api. Make sure you get the free API key, not the Pro tier key (they're different).

Once you have the key, right-click the extension icon in your panel → Preferences → paste your API key. The extension stores it encrypted in GNOME Keyring.

Ready to stop wasting time on translations?

Get the extension installed in under 2 minutes and start translating smarter.

Download Now

How to Use

1. Configure Your Languages

Set your main language (default: English) and pick which secondary languages you want as quick buttons in the panel menu.

The extension will auto-detect the source language and translate in the right direction based on what it detects.

2. Translate Text

Either select text with your mouse, or copy text to clipboard (Ctrl+C).

Click the extension icon in the panel. If you have text selected, it uses that. Otherwise it uses whatever's on your clipboard.

3. Pick Target Language

Click one of the language buttons in the popup menu. Translation happens instantly and appears in the popup.

4. Auto-Copy & Paste

Translation is automatically copied to your clipboard (configurable in settings). Just paste it wherever you need it.

Translation Logic

The extension detects the source language automatically:

  • If source ≠ main language → translates to main language (e.g., Spanish → English)
  • If source = main language → translates to selected secondary language (e.g., English → Spanish)

No need to manually switch modes or directions. It just figures it out.

Settings

Setting What It Does
API Key Your DeepL API key (stored encrypted in GNOME Keyring)
Main Language Your primary language (default: EN)
Available Languages Comma-separated language codes that appear as buttons
Auto-copy to Main Auto-copy when translating to main language
Auto-copy to Secondary Auto-copy when translating to secondary language

Technical Details

For the developers who actually care about what's under the hood.

Architecture

  • extension.js - Main UI and extension logic (22KB)
  • translator.js - DeepL API wrapper with input validation
  • prefs.js - Preferences dialog
  • lib/keyring.js - Secure storage wrapper for libsecret
  • lib/languageMap.js - Shared language code/name mappings

Code Quality

  • Modern async/await patterns throughout (no callback hell)
  • Memory leak prevention via Gio.Cancellable for all async operations
  • Input validation on all user inputs and API calls
  • ESLint configuration enforced (zero errors/warnings)
  • Comprehensive JSDoc documentation on all public APIs
  • Proper Soup.Session cleanup with abort() on destroy

Security

API keys are stored using libsecret (GNOME Keyring), which provides encryption at rest. The extension never stores the API key in plain text. If you previously used an older version, the extension will automatically migrate your key from dconf to encrypted storage on first run.

Dependencies

Library Purpose
Soup 3 HTTP requests to DeepL API
libsecret Encrypted keyring storage
Gio, GLib, St, Clutter Standard GNOME platform libraries

API Usage

Calls api-free.deepl.com when you click "Translate". No telemetry, no tracking. Your text is only sent to DeepL's API when you explicitly request a translation.

Supported Languages

All DeepL-supported languages: EN, ES, FR, DE, IT, PT-BR, PT-PT, NL, DA, SV, NB, FI, PL, CS, SK, HU, RO, BG, SL, LT, LV, ET, UK, RU, TR, EL, JA, ZH, KO, ID, AR

Development

Repository: github.com/juan-de-costa-rica/gnome-automagic-panel-translator

Report issues: GitHub Issues

License: MIT

Support Development

If you find this extension useful, consider supporting its continued development and maintenance.

Ethereum

0x55DE05974F8590ee9F4d013E1b63FcC68661136E