A desktop application that provides instant AI-powered translation with a simple double Ctrl/Cmd+C shortcut, similar to DeepL.
- ⚡ Instant Translation - Double Ctrl/Cmd+C to translate any selected text
- 🌍 Multi-Language Support - 26 built-in languages plus custom language support
- 🤖 Multiple AI Models - Support for Claude, GPT, Gemini, and custom models
- 💬 Two Display Modes - Notification with auto-copy or interactive popup window
- 🎨 Customizable - Custom instructions, languages, and translation rules
- 🪶 Lightweight - Minimal resource usage, lives in your system tray
Download the latest version from GitHub Releases.
Windows:
Honyo-{version}.exe- Windows installer (recommended)Honyo-{version}-win.zip- Portable version (no installation required)
macOS:
- Apple Silicon (M1/M2/M3 Macs):
Honyo-{version}-arm64.dmg- DMG installer (recommended)Honyo-{version}-arm64-mac.zip- ZIP archive
- Intel Macs:
Honyo-{version}.dmg- DMG installer (recommended)Honyo-{version}-mac.zip- ZIP archive
Linux:
Honyo-{version}.AppImage- Universal Linux package (recommended)Honyo-{version}.deb- Debian/Ubuntu packageHonyo-{version}.rpm- Red Hat/Fedora packageHonyo-{version}.tar.gz- Generic Linux archive
-
Download the appropriate version for your Mac from the downloads section above
-
For DMG files:
- Open the DMG file
- Drag Honyo.app to your Applications folder
-
For ZIP files:
- Extract the zip file
- Move
Honyo.appto your Applications folder
-
Remove quarantine attribute (required for unsigned apps):
xattr -cr /Applications/Honyo.app
-
First launch: Right-click (or Control-click) on Honyo.app and select "Open", then click "Open" in the security dialog
-
Grant accessibility permissions:
- Open System Preferences > Security & Privacy > Privacy > Accessibility
- Add and enable Honyo.app
Download and run Honyo-*.exe
Download and run Honyo-*.AppImage
To use the translation features, you need to configure API keys for your preferred AI provider:
- Click on the system tray icon
- Select "Settings..."
- In the "API Keys" tab, enter your API keys for the providers you want to use:
- Anthropic: Get your key from console.anthropic.com
- OpenAI: Get your key from platform.openai.com
- Google AI: Get your key from makersuite.google.com
- Click "Save"
The app automatically detects your system language and sets appropriate defaults:
- If your system is in English: Primary → English, Secondary → Japanese
- If your system is in Japanese: Primary → Japanese, Secondary → English
- Other languages: Primary → System language, Secondary → English
You can change these settings from the system tray menu:
- Click on "Primary: [Language]" to select your primary translation target
- Click on "Secondary: [Language]" to select your fallback language
Supported Languages (26): English, Japanese, Chinese (Simplified), Chinese (Traditional), Korean, Spanish, French, German, Italian, Portuguese, Russian, Arabic, Hindi, Thai, Vietnamese, Indonesian, Malay, Filipino, Dutch, Polish, Turkish, Ukrainian, Swedish, Danish, Norwegian, Finnish
You can add custom instructions that will be included in all translations:
- Click on the system tray icon
- Select "Settings..."
- Go to the "Custom Prompt" tab
- Enter your custom instructions (e.g., terminology guidelines, tone preferences, specific translation rules)
- Click "Save"
Examples of custom instructions:
- Use formal language
- Keep product names in English
- Maintain consistent terminology
- Follow specific industry standards
Use any AI model not included in the default list:
- Open Settings → "Custom Model" tab
- Enter the model name (e.g.,
gpt-4-1106-preview,claude-3-opus-20240229) - Select the provider (Anthropic, OpenAI, or Google AI)
- Click "Save"
- Select "Custom Model" from the AI Model menu
Add languages not included in the default list:
- Open Settings → "Custom Languages" tab
- Enter language names, one per line (e.g., Esperanto, Sanskrit, Klingon)
- Click "Save"
- Your custom languages will appear in the Primary/Secondary language menus
Configure popup window and translation display behavior:
- Open Settings → "Display" tab
- Auto-close on blur: Enable this option to automatically close the popup window when it loses focus
- Enable streaming: Enable this option to see translations appear progressively as the AI generates them (popup mode only)
- Click "Save"
Display Modes:
- Notification & Copy: Translation result appears as a system notification and is automatically copied to clipboard
- Popup Window: Translation result appears in a floating window with additional features:
- Real-time streaming (when enabled)
- Copy button and keyboard shortcuts (Enter to copy, Escape to close)
- Right-click context menu for copying selected text or all text
- Auto-return focus to previous application when closed
- Select any text in any application
- Press Ctrl+C (Windows/Linux) or Cmd+C (macOS) twice quickly
- Depending on your display mode:
- Notification mode: Translation appears as notification and is copied to clipboard
- Popup mode: Translation appears in a floating window
- In popup mode:
- Press Enter or click "Copy" to copy and close
- Press Escape or click "×" to close without copying
- Right-click the text for copy options
The app intelligently determines the translation direction:
- If the source text matches your primary language → translates to secondary language
- If the source text is any other language → translates to primary language
- For mixed-language text → detects the language with highest word count ratio
Access these options by clicking the system tray icon:
- Primary/Secondary Language: Set your translation language preferences (26+ built-in languages + custom)
- Display Mode: Choose between notification and popup window
- AI Model: Choose which AI model to use for translations (Claude 4.5, GPT-5, Gemini 2.5, or custom)
- Settings: Configure API keys, custom instructions, models, languages, and display settings
- Pause Translation: Temporarily disable the translation feature
- Stop Current Translation: Cancel ongoing translation
- Check for Updates: Check for new versions with progress display
- Quit: Exit the application
- Ctrl/Cmd+C (twice): Trigger translation
- Enter (in popup): Copy and close
- Escape (in popup): Close without copying
Honyo automatically checks for updates on startup and every hour:
- Update available: Choose to Download, remind Later, or Skip the version
- Downloading: Progress displayed in menu (e.g., "Downloading Update (45%)...")
- Downloaded: Option to restart and install or install later
- Skipped versions: Won't be notified again until a new version is released
- Manual check: Use "Check for Updates" from the menu
You can also set API keys via environment variables:
ANTHROPIC_API_KEYOPENAI_API_KEYGOOGLE_API_KEY
Create a .env file in the project root:
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
GOOGLE_API_KEY=your_key_here- Node.js >= 23.6.0
- npm
git clone https://github.com/rot1024/honyo.git
cd honyo
npm installnpm start| Command | Description |
|---|---|
npm start |
Run the app in development mode |
npm test |
Run tests with Vitest |
npm run test:ui |
Run tests with Vitest UI |
npm run typecheck |
Type check with TypeScript |
npm run lint |
Lint with ESLint |
npm run lint:fix |
Fix lint errors |
npm run format |
Format with Prettier |
npm run dist |
Build and package for current platform |
npm run dist:mac |
Build and package for macOS |
npm run dist:win |
Build and package for Windows |
npm run dist:linux |
Build and package for Linux |
src/
├── main.ts # Entry point
├── models.ts # AI model definitions
├── app/ # App lifecycle, updater, accessibility
├── config/ # Configuration management
├── keyboard/ # Keyboard event handling (uiohook-napi)
├── language/ # Language detection and constants
├── translation/ # AI translation (Vercel AI SDK)
└── ui/ # Tray, menu, popup, settings windows
- Electron - Desktop app framework
- TypeScript - Language
- Vercel AI SDK - AI provider integration (Anthropic, OpenAI, Google)
- uiohook-napi - Global keyboard hooks
- electron-builder - Packaging
- Vitest - Testing
- ESLint + Prettier - Linting and formatting
npm run release # Auto version bump based on commits
npm run release:patch # Patch release (0.0.x)
npm run release:minor # Minor release (0.x.0)
npm run release:major # Major release (x.0.0)This updates version, generates CHANGELOG.md, and creates a git tag. Push the tag to trigger the GitHub Actions release workflow.
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
