Select text anywhere, press a hotkey, get an AI-powered translation via Anthropic Claude or Google Gemini. Reads the primary selection when you trigger the shortcut you assign in Preferences (no default shortcut is set), and copies a result to the clipboard only when you click it in the history menu.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
extension.js:50
St.Clipboard.get_default()
indicator.js:118
St.Clipboard.get_default()
LinguistAI lets you translate or explain any selected text on your desktop without leaving what you're doing. Select text in any application — a browser, a terminal, a chat window, a PDF — press a hotkey, and the translation appears as a desktop notification and in the panel dropdown. A second hotkey explains the meaning of a word or phrase instead of translating it: useful for idioms, slang, or unfamiliar references. Features: • Choose between Anthropic Claude or Google Gemini as the translation provider, with a selectable model for each • Configurable source and target languages (source can be left on auto-detect) • Customizable keyboard shortcuts for both translate and explain actions • Recent translations kept in a short history in the panel dropdown, with one-click copy • API keys are stored in the GNOME Keyring via libsecret — never written to disk in plain text or saved in dconf/gsettings You'll need your own API key from the Anthropic Console or Google AI Studio, entered once in the extension's preferences. Privacy: selected text is sent only to the provider you've configured (Anthropic or Google) over HTTPS when you trigger a translation. LinguistAI itself collects no telemetry and makes no other network requests. Source code: https://github.com/vgrigolaia/linguistai
1. Please remove the git URL from description. 2. Please add to the description that this extension is using clipboard: [EGO Review Guidelines: Clipboard](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#clipboard-access-must-be-declared) 3. You cannot create instance o objects in global scope and leave it there after disable which breaks two rules: - line 3 `keyring.js` - line 7 `providers/httpClient.js` - [EGO Review Guidelines: Initialization](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#only-use-initialization-for-static-resources) - [EGO Review Guidelines: Destroy](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#destroy-all-objects) 4. You should call `abort()` on disable or destroy (line 7 `providers/httpClient.js`): [`Soup.Session.abort()`](https://gjs-docs.gnome.org/soup30~3.0/soup.session#method-abort) If you need any help with your extension you can ask us on: - [GNOME Extensions Matrix Channel](https://matrix.to/#/#extensions:gnome.org) - IRC Bridge: irc://irc.gimpnet.org/shell-extensions