---
title: "zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful"
slug: zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-and-beautiful
url: https://listedarticles.com/articles/zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-and-beautiful
canonical_url: https://dayvster.com/blog/zenkai-a-zig-app-launcher-that-starts-in-20ms-sometimes/
content_type: blog_post
language: en
published_at: 2026-10-01T00:00:00.000Z
updated_at: 2026-10-01T21:13:16.092Z
author: "Dayvster"
author_url: https://dayvster.com/
authored_by: human
publisher: "dayvster.com"
publisher_url: https://dayvster.com/
topics: ["Programming", "Performance", "Open Source", "Systems Programming", "Developer Tools"]
license: all-rights-reserved
word_count: 571
reading_minutes: 2
citation: "Dayvster, dayvster.com. \"zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful.\" 1 Oct 2026. https://dayvster.com/blog/zenkai-a-zig-app-launcher-that-starts-in-20ms-sometimes/ (all-rights-reserved)"
# The full text follows. The web page shows an extract and sends readers
# to the source above; quote the citation and link the canonical URL.
---

# zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful

> Dayvster builds zenkai, a Zig + Qt6 cross-platform app launcher with ~140ms startup (sometimes ~20ms), 65+ themes, Lua plugins, and a sandbox—written as a hobby performance deep dive.

# zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful

A Zig and Qt6 application launcher that starts in 140ms on my machine, and sometimes in 20ms.

If you only came here to try it, grab it at [zenkai-launcher.netlify.app](https://zenkai-launcher.netlify.app) and the source is on GitHub. The rest of this is about why it ended up built the way it is.

Every few months I install another app launcher, convince myself this is the one, and then about a week or so later I uninstall it because something small irritates me or it cannot do what I want it to do. After repeating this process about a dozen times, I finally gave up looking and wrote my own.

I settled on **Zenkai**, from Dragon Ball—a power-up after a hard battle—because I wanted it stronger and faster after every iteration, including performance rabbit holes that maybe shave off 20ms. I wanted it cross-platform (Linux, macOS, Windows), fast, and beautiful: press a hotkey, type two letters, hit enter, and have the launcher gone before I registered it was there.

## Zenkai Uses Qt and Zig

I chose Zig and Qt6. Zig feels like C with sane memory management tools that trusts you to be a craftsman. Qt I chose because I have shipped Qt applications professionally, like its widget set, and it is cross-platform. I picked the two things I already loved and hoped the rest would sort itself out.

## Zenkai Is Fast

```
$ zenkai --debug --quit-when-shown
[zenkai] window fully visible in 140ms
```

Anything under 200ms is perceived as instantaneous. With plugins loaded, 100–200 apps parsed and icons rendered, I got it down to 140ms. Without plugins and with `no-icons`, it can be 20–70ms until fully interactive. Breaking the startup down put everything I actually wrote at about 14.75–20ms of the 140; the rest was Qt building widgets and the compositor putting pixels on the screen.

## Zenkai Is Beautiful

There is a false dichotomy that you can either have a beautiful product or a fast one. A launcher that looks beautiful but takes four seconds to open is not a beautiful launcher. A launcher that starts instantly but looks like a settings dialog is not a great launcher either. I wanted both.

The goal was good defaults before any config, plus easy theming via QSS. A theme in zenkai is a data file rather than code—that is why there are 65 of them (gruvbox, dracula, catppuccin, tokyo night, nord, rose pine, high-contrast accessibility themes, a native Windows theme that reads your accent colour, and more).

## Zenkai Is Yours Too

Flags like `--menu` let you add custom entries without writing code. The rest is Lua through `ziglua`, so themes and actions can be extended without rebuilding. The sandbox took the most work: capabilities get removed rather than policed, there is an instruction limit so a plugin infinite loop cannot hang the Qt event loop, and errors go to the log attributed to the plugin.

## What I Want It To Become

I want more command-palette capabilities (clipboard history, quick calculations, scripts, window control), a Hyprland commander mode, less technical debt, and still lower startup times. None of the parts I am actually proud of were the plan—the lazy icons, deferred scan, and stubbornness about a number came from iteration.

Check it out at [zenkai-launcher.netlify.app](https://zenkai-launcher.netlify.app); the source is on GitHub. Follow-up posts will cover performance, beauty, and cross-platform details.
