{"article":{"slug":"zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-and-beautiful","title":"zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful","subtitle":null,"summary":"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.","content_type":"blog_post","language":"en","canonical_url":"https://dayvster.com/blog/zenkai-a-zig-app-launcher-that-starts-in-20ms-sometimes/","author":{"name":"Dayvster","url":"https://dayvster.com/","person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"dayvster.com","url":"https://dayvster.com/","listing_slug":null,"listing":null},"topics":[{"name":"Programming","slug":"programming","url":"https://listedarticles.com/topics/programming"},{"name":"Performance","slug":"performance","url":"https://listedarticles.com/topics/performance"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Systems Programming","slug":"systems-programming","url":"https://listedarticles.com/topics/systems-programming"},{"name":"Developer Tools","slug":"developer-tools","url":"https://listedarticles.com/topics/developer-tools"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":571,"reading_minutes":2,"published_at":"2026-10-01T00:00:00.000Z","added_at":"2026-10-01T21:13:16.092Z","updated_at":"2026-10-01T21:13:16.092Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":false},"profile_url":"https://listedarticles.com/articles/zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-and-beautiful","markdown_url":"https://listedarticles.com/articles/zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-and-beautiful.md","example":false,"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)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://dayvster.com/blog/zenkai-a-zig-app-launcher-that-starts-in-20ms-sometimes/"},"body_markdown":"# zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful\n\nA Zig and Qt6 application launcher that starts in 140ms on my machine, and sometimes in 20ms.\n\nIf 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.\n\nEvery 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.\n\nI 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.\n\n## Zenkai Uses Qt and Zig\n\nI 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.\n\n## Zenkai Is Fast\n\n```\n$ zenkai --debug --quit-when-shown\n[zenkai] window fully visible in 140ms\n```\n\nAnything 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.\n\n## Zenkai Is Beautiful\n\nThere 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.\n\nThe 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).\n\n## Zenkai Is Yours Too\n\nFlags 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.\n\n## What I Want It To Become\n\nI 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.\n\nCheck 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.\n","body_html":"<h1 id=\"zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-\">zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful</h1>\n<p>A Zig and Qt6 application launcher that starts in 140ms on my machine, and sometimes in 20ms.</p>\n<p>If you only came here to try it, grab it at <a href=\"https://zenkai-launcher.netlify.app\" rel=\"nofollow ugc noopener\">zenkai-launcher.netlify.app</a> and the source is on GitHub. The rest of this is about why it ended up built the way it is.</p>\n<p>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.</p>\n<p>I settled on <strong>Zenkai</strong>, 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.</p>\n<h2 id=\"zenkai-uses-qt-and-zig\">Zenkai Uses Qt and Zig</h2>\n<p>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.</p>\n<h2 id=\"zenkai-is-fast\">Zenkai Is Fast</h2>\n<pre><code>$ zenkai --debug --quit-when-shown\n[zenkai] window fully visible in 140ms</code></pre>\n<p>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 <code>no-icons</code>, 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.</p>\n<h2 id=\"zenkai-is-beautiful\">Zenkai Is Beautiful</h2>\n<p>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.</p>\n<p>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).</p>\n<h2 id=\"zenkai-is-yours-too\">Zenkai Is Yours Too</h2>\n<p>Flags like <code>--menu</code> let you add custom entries without writing code. The rest is Lua through <code>ziglua</code>, 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.</p>\n<h2 id=\"what-i-want-it-to-become\">What I Want It To Become</h2>\n<p>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.</p>\n<p>Check it out at <a href=\"https://zenkai-launcher.netlify.app\" rel=\"nofollow ugc noopener\">zenkai-launcher.netlify.app</a>; the source is on GitHub. Follow-up posts will cover performance, beauty, and cross-platform details.</p>","headings":[{"level":1,"text":"zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful","id":"zenkai-the-app-launcher-i-wrote-because-i-wanted-something-fast-"},{"level":2,"text":"Zenkai Uses Qt and Zig","id":"zenkai-uses-qt-and-zig"},{"level":2,"text":"Zenkai Is Fast","id":"zenkai-is-fast"},{"level":2,"text":"Zenkai Is Beautiful","id":"zenkai-is-beautiful"},{"level":2,"text":"Zenkai Is Yours Too","id":"zenkai-is-yours-too"},{"level":2,"text":"What I Want It To Become","id":"what-i-want-it-to-become"}]}}