Open-source project
ghost-him/ZeroLaunch-rs avatar
ghost-him/ZeroLaunch-rs

ZeroLaunch-rs is a Windows launcher that survives typos and pinyin

🚀 A lightning‑fast, privacy‑first Windows smart launcher that excels at Pinyin and fuzzy matching — typo‑tolerant and instant. Built with Rust + Tauri + Vue! 🚀一款极速、隐私优先的 Windows 智能启动器,精通拼音与模糊匹配,错字搜词秒速直达。基于 Rust + Tauri + Vue 构建!

573 stars31 forksRustGPL-3.0

At a glance

What is it?
ZeroLaunch-rs is a Tauri 2 desktop launcher for Windows built with Rust and Vue, whose matching engine scores three ways so a mistyped query still ranks the right app first, and whose plugin system splits between inline plugins that take over the input and panel plugins that take over the window. It suits a keyboard-first Windows user, and it is Windows only.
Who is it for?
Adopt ZeroLaunch-rs if you are a keyboard-first Windows user who types fast enough to make mistakes and wants a launcher that ranks the intended application first anyway, particularly if you also type pinyin for Chinese application names. Do not adopt it if you are on macOS or Linux, since the badge and the platform crate make it a Windows tool, and do not adopt it if you need the deep plugin ecosystem of a longer established launcher.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A launcher built around the typo

ZeroLaunch-rs is described as a fast, privacy-first Windows smart launcher that excels at pinyin and fuzzy matching, typo-tolerant and instant, built with Rust, Tauri and Vue. The problem it is built around is stated concretely. Type fast and you will sometimes mistype, and a search for chrome can come out as chorem, and in a launcher that matches literally the result list comes back empty even though the application is installed. The default matching algorithm in ZeroLaunch-rs is written for exactly that case. It gives every result three scores, looking at how many characters differ, how similar the character combinations look, and whether the beginning and middle characters line up. One or two wrong letters, or two letters typed in the wrong order, lower the score rather than dropping it to zero, and because chorem and chrome differ by a single adjacent transposition, Chrome still comes out first. The project is careful not to claim an accuracy percentage, pointing instead at the behaviour you can check yourself by typing a wrong letter and pressing Enter. The default is also pinyin aware, so searching a Chinese application name in pinyin, or an abbreviation such as qqy for a music app, resolves without the launcher needing a separate index.

One input box, two kinds of request

Once summoned, the panel is an input box, and what you type can be either the thing itself or a trigger word plus content. The thing itself is an application name, a folder path, a URL or an arithmetic expression. The trigger word plus content form, for example fy followed by the text to translate, is handed to a plugin. The distinction between the two plugin shapes is the concept you need to understand, because they behave differently. An inline plugin takes over while you type and its result is embedded in the search window, with the search field still there. A panel plugin does not take over the input. It becomes a candidate in the list, and once you select it, the whole window belongs to the plugin and there is no search field left. The documentation gives the operational rule for panel plugins: their trigger word becomes a candidate keyword only, so you type the trigger and stop, and if you keep typing a query word the candidate disappears. The Everything search plugin is the named example of this style, and it can also declare a hotkey, such as Ctrl+E, that opens its panel directly while the search window is open.

The built-in plugins, and what each trigger does

The bundled plugins work without any extra installation and each can be switched off individually in the settings. Application search launches installed applications, including ones installed from the Microsoft Store, plus programs in the start menu and any entries you add yourself, and it opens with the system default program exactly as a double click would. Path and URL handling needs no trigger word at all, and the way you tell it that you mean it is to type a trailing space, for example github.com followed by a space, and a path containing spaces is quoted in full. The calculator evaluates an expression typed with a leading equals sign. The cmd runner executes a command in a command prompt window when the line starts with a greater-than sign, and the window stays open by default so you can read the output, with a setting to close it automatically. Translation triggers on fy, tr, or the word for translate, and it can translate as you type or only on Enter, and it needs a chat model configured in the settings first, either a local Ollama or an OpenAI compatible endpoint, otherwise it returns nothing. Bookmark search reads bookmarks from Chrome, Edge and similar browsers. Built-in commands cover opening the settings, rebuilding the index, re-registering the hotkey, switching to game mode, and quitting. You can also store your own commands and URLs as custom entries.

The scoring system, and how plugins plug into it

The plugin architecture is more than a list of extra commands, and the README describes two ways a plugin can participate. One is providing pipeline components: a plugin can declare that it implements a search engine, a candidate source, an execution action, a scoring rule or a keyword handler, and it is on equal footing with the built-in components. The search engine component is priority-based so only one takes effect, while the others, that is data sources, executors, scoring and keyword handling, stack together, and each can be switched on or off separately in the settings. The other way is bringing its own interaction, which is how the translation and calculator panels work. This is the part that makes the project more interesting than a wrapper around a search index. A plugin that contributes a scoring rule changes the ranking of everything else, not just its own results, and a plugin that declares a keyword handler can take a word out of the query and interpret it. The repository reflects that structure in the Rust workspace, with crates for plugin-api, plugin-protocol, plugin-host, a plugin SDK for Rust and a Windows platform crate, plus a separate zerolaunch-cli crate. The workspace also excludes xtask and plugin-template, and there is a plugin template directory in the tree, which tells you that the intended extension path is a scaffolded project rather than a hand-written integration.

Installing the msi or the portable build

There are two ways to get it and the difference is whether the application leaves anything behind. The first is the installer: go to the Releases page, download the file whose name contains x64 and ends in .msi, and double click it to install, with only ARM laptops needing to pick the file marked arm64. The second is the portable build, where you download the archive whose name contains x64 and ZeroLaunch-portable, unzip it, and run the executable inside. Your data lives in a folder under the Windows user profile named .ZeroLaunch-rs, and in the portable version everything stays next to the executable. The project states that it does not upload your usage data, with the details in PRIVACY.md, and that uninstalling means deleting that folder. The release history shows a steady weekly cadence, with v1.4.0 on 2026-10-09, v1.4.1 on 2026-10-12 and v1.5.0 on 2026-10-19, and the last push to the repository was on 2026-10-20. The package manifest shows a version of 1.5.0 under the name zerolaunch-rs, marked private because it is not published to a registry as a frontend package, and the licence is GPL-3.0-only as stated in the workspace Cargo.toml.

What the Rust and Vue layers are doing

The architecture is a Tauri application, which means the Rust side owns the OS integration and the Vue side owns the window, and the split is visible in the repository. The src-tauri/ directory is the Rust application, crates/ holds the workspace libraries, and src-ui/ holds the frontend, built with Vite and a vue-tsc type check. The frontend dependencies show a fairly conventional Tauri stack: Vue 3, vue-router, pinia for state, vue-i18n for the interface language, naive-ui for components, lucide-vue-next for icons, and the Tauri API plus plugins for deep links, dialogs, notifications and the shell. The Rust dependency list is longer and tells you what the features cost. There is a Windows-specific set, the windows crate, winreg for the registry, uiautomation for UI automation, arboard for the clipboard, whoami and lnk for shortcut handling, plus resvg, usvg and tiny-skia for rendering and fontdb for fonts, which points at custom icon rendering rather than shipping pre-rendered assets. Two libraries stand out for the assistant features: async-openai with rustls for talking to an OpenAI compatible endpoint and ollama-rs with streaming for a local model. The justfile wires the developer workflow together, and the recipes map onto standard cargo commands.

bash
test:
    cargo test --workspace

check:
    cargo check --workspace

A separate ci recipe mirrors the same checks with warnings denied, and a build recipe runs the frontend build followed by a release compile of the Rust side.

The panel takeover model, and its one sharp edge

The documentation is unusually clear about how plugin panels handle the keyboard, and the reason is worth understanding before you install anything. The panel keybindings are declared by the plugin itself, and the host only interprets the keys a plugin has declared, passing everything else through to it. So if a key does nothing in a given panel, the usual explanation is that the plugin did not declare it, which the documentation says is the plugin's own problem and should be reported to that plugin's author. This is a defensible design. A launcher that reserved a fixed set of keys for panels would have to know in advance what every panel needs, and a plugin that wanted a new shortcut would need the host to change. The cost is that the key map of the application is partly defined by third-party code, and two plugins that both want the same key are resolved by priority, with only the higher priority one taking effect. The translation panel takes Enter to copy the result, Ctrl+Enter to copy an existing translation, and Esc to leave; the calculator panel takes Enter to copy the result and Esc to leave; path and URL panels take Enter to open, with other actions such as opening the containing folder left to the mouse. The launcher also lets you configure the summon hotkey, which defaults to Alt+Space and can be changed or switched to a double press of Ctrl, and an Esc behaviour setting that either clears the field first or always hides the window.

Editorial conclusion

Adopt ZeroLaunch-rs if you are a keyboard-first Windows user who types fast enough to make mistakes and wants a launcher that ranks the intended application first anyway, particularly if you also type pinyin for Chinese application names. Do not adopt it if you are on macOS or Linux, since the badge and the platform crate make it a Windows tool, and do not adopt it if you need the deep plugin ecosystem of a longer established launcher. Verify two things before you commit: which plugin keybindings you actually need, because the panel model is full takeover and a key that does nothing in a panel is a plugin that failed to declare it, and which model you will run, since a local Ollama or OpenAI compatible endpoint is what the translation and assistant panels need before they return anything. The practical first step is to install the x64 msi from the releases page, press Alt+Space, type a mistyped application name, and check that the right entry is still first.

Frequently asked questions

What is ZeroLaunch-rs?

It is a Windows smart launcher built with Tauri 2, Rust and Vue, described as fast and privacy-first, with a matching engine that scores results three ways so a mistyped query still ranks the intended application first, plus pinyin support and a plugin system.

How do I install ZeroLaunch-rs?

Download the .msi file whose name contains x64 from the Releases page and double click it, choosing the arm64 file only on ARM laptops, or download the portable archive containing ZeroLaunch-portable, unzip it and run the executable. Data is stored in a .ZeroLaunch-rs folder under the user profile.

How does ZeroLaunch-rs handle mistyped searches?

It scores every result three ways, on how many characters differ, how similar the character combinations look, and whether the beginning and middle characters line up, so one or two wrong letters or a swapped pair lower the score rather than zero it. A query for chrome typed as chorem still ranks Chrome first.

What is the difference between inline and panel plugins in ZeroLaunch-rs?

An inline plugin takes over while you type and its result is embedded in the search window with the field still present. A panel plugin does not take over the input; it becomes a candidate, and once selected it takes over the whole window with no search field left.

What do the built-in ZeroLaunch-rs plugins do?

They cover application search, path and URL opening, a calculator, a cmd runner, translation, bookmark search from Chrome and Edge, and built-in commands for settings, index rebuild, hotkey re-registration, game mode and quitting. Each can be switched off individually in the settings.

What does the translation plugin need before it works?

A chat model configured in the settings, either a local Ollama instance or an OpenAI compatible endpoint, otherwise it returns no result. The Rust side depends on the async-openai and ollama-rs crates for this.

Official sources

  1. ghost-him/ZeroLaunch-rs on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ghost-him-zerolaunch-rs.svg)](https://hysenlabs.com/projects/ghost-him-zerolaunch-rs)

Was this useful?