MyReviser

AI-powered system tray app that fixes text anywhere on your computer using global hotkeys.

Back to Projects
Built with Go (Fyne UI) and RustView Live

From Copy-Paste Frustration to System-Wide AI Text Revision

The Spark: A Workflow Problem

Writing emails, documentation, or messages often requires quick grammar checks and text improvements. The typical workflow was frustrating: select text, copy it, switch to ChatGPT, paste, wait for the response, copy the result, switch back, and paste. This constant context-switching broke my concentration and slowed down my work. I needed a tool that could revise text instantly, right where I was typing.

The Vision: Invisible AI Assistance

I imagined an application that would sit quietly in the system tray, ready to help at any moment. The interaction would be simple: select any text on your computer, press a hotkey, and watch as the AI-improved version replaces the original. No window switching. No copy-paste gymnastics. Just seamless text enhancement across any application.

See it in Action

MyReviser Demo

Building MyReviser: The Solution

MyReviser is a cross-platform desktop application that brings AI text revision to every corner of your computer. Here's what it offers:

  • Global Hotkey Integration: Two main shortcuts power the workflow:

    • Ctrl+Alt+Space (or Ctrl+Option+Space on macOS): Select all content and revise
    • Ctrl+Super (or Ctrl+Cmd on macOS): Revise only the selected text
  • Multi-Provider AI Support: The application works with OpenAI (GPT-4o, GPT-4o-mini), Claude (claude-3-5 variants), and Gemini models. Users can also configure custom OpenAI-compatible providers for flexibility.

  • Customizable Prompts: Beyond grammar correction, users can set custom prompts for translation, summarization, tone adjustment, or any text transformation they need.

  • Cross-Platform Support: MyReviser runs on Windows, macOS, and Linux, with platform-specific installers and portable options available.

Navigating the Challenges: Cross-Platform Input Handling

The most significant technical hurdle was implementing reliable global hotkey capture across different operating systems. Each platform handles keyboard input differently, and some present unique challenges:

  1. Platform-Specific APIs: Windows, macOS, and Linux each have their own mechanisms for global hotkey registration. Creating a unified interface required careful abstraction.

  2. Wayland on Linux: Modern Linux systems using Wayland have stricter security policies. Users need to join the input group for global hotkey functionality to work, which required clear documentation and user guidance.

  3. Clipboard Operations: Reading and writing to the system clipboard reliably across platforms, especially with different text encodings and formats, demanded robust error handling.

  4. Go + Rust Interoperability: To achieve native performance for system-level operations, I used Rust for the input handling backend. Bridging Go and Rust through CGO required careful memory management and API design.

These challenges pushed me to understand system-level programming at a deeper level and appreciate the complexity hidden behind seemingly simple desktop interactions.

Key Technologies Used:

  • Backend/UI: Go with Fyne UI framework (68.1% of codebase)
  • System Input: Rust for hotkey and clipboard handling (17.6%)
  • Build System: Makefile, CGO for Go-Rust integration
  • AI Integration: OpenAI API, Anthropic Claude API, Google Gemini API
  • License: MIT

Outcomes & Learning

MyReviser started as a personal productivity tool and evolved into a comprehensive cross-platform application. Through this project, I gained valuable experience in:

  • Building cross-platform desktop applications with Go and Fyne
  • Implementing system-level features using Rust for performance-critical code
  • Managing multi-language codebases with Go and Rust interoperability
  • Integrating multiple AI providers with a unified interface
  • Handling platform-specific quirks in input and clipboard management

The result is a tool I use daily, and the skills gained extend to any project requiring native desktop development or system-level programming.

Connect
Let's get in touch