If you type in Vietnamese on Linux, you already know the struggle. Existing Input Method Editors (IMEs) often rely on inefficient pre-edit buffers, leaving behind annoying underline artifacts and constant state desyncs that break your flow.
I wanted a typing experience that felt truly native, fast, and invisible. That frustration sparked the idea for Vietc (also known as Viet+)—a native Vietnamese IME built from scratch for the Linux community.
Here is a look under the hood at how I built the engine, solved the edge cases, and crafted the story to launch it.
The Architecture: Direct Input and Rust Performance
From day one, the goal was uncompromising performance and seamless Wayland/X11 compatibility. To achieve this, I wrote the application in Rust.
Instead of relying on clunky text buffers, Vietc uses a “Direct Input” architecture. I built a Rust-based composition engine paired with a privileged daemon for system-wide injection. The core innovation here is the Backspace-Replay engine. By rapidly simulating backspaces and replaying the correct characters, Vietc eliminates state desync entirely without ever generating those distracting pre-edit underlines.
Powering the language logic is the Bamboo Core transformation engine, allowing smooth handling of both TELEX and VNI input.
Sweating the Details: Edge Cases and CI
Language processing is notoriously tricky, and getting a Vietnamese IME to feel perfect requires obsessing over the edge cases.
Recent development has been heavily focused on refining TELEX input. I spent significant time fixing cluster spacing bugs, ensuring clipboard shortcuts work flawlessly during typing, and dialing in exact tone placements for glides and complex clusters.
One of the features I’m most proud of is the smart auto-restore for English words. We all mix English into our daily typing, and the engine now intelligently restores the original English word even while you are in Vietnamese mode.
To ensure stability across all these complex rules, I set up an automated test suite of 1,000 specific cases. I’ve also integrated Devin AI into the workflow to monitor pull requests and manage CI operations, keeping regressions out of the main branch.
Crafting the Launch: Solo Dev vs. The Machine
Writing the code is only half the battle; bringing it to the community requires a story. Drawing on my background as a Creative Lead, I wanted the promotional rollout to be as polished as the code itself.
The marketing assets are built around a “solo dev vs. the machine” narrative—highlighting the dedication it takes to build core system tools from scratch. For the visual identity, I developed detailed storyboards for a product trailer featuring a dragon mascot to represent the engine’s speed and heritage.
To promote the app on social channels, I drafted punchy, 15-second voiceover scripts. Instead of just listing features, these spots focus heavily on the actual technical advantages that Linux users care about: the invisible Direct Input, the native typing feel, and the smart per-app memory that remembers your input state when switching between windows.
What’s Next?
Vietc is actively in development, and I am continually pushing updates to refine the core editor interactions.
If you want to poke around the Rust architecture, check out the code, or contribute to the project, the repository is public.
Check out the Vietc repository on GitHub

