←back to thread

179 points aurellius | 3 comments | | HN request time: 0s | source

Hi HN!

I’ve always been a fan of application launchers, and I was impressed by the approach the Raycast team took — especially their extension system. About six months ago I started building something similar for Linux, aiming to integrate deeply at the OS level and give extensions a lot of power.

Vicinae is written in C++ with Qt Widgets. I chose Widgets over QML for more imperative control of the UI, especially around extension handling. So far that’s worked well — modern C++ is great.

To support my goals I built a number of custom widgets, including a fully virtualized list that can efficiently render tens of thousands of items. That gave me a lot of respect for Qt — it’s a powerful framework that mostly stayed out of my way.

A key feature is support for Raycast extensions (React + TypeScript), most of which can be installed and used directly inside the launcher (though not all features are implemented yet). There’s also a native API package (@vicinae/api) for writing Vicinae-specific extensions with additional capabilities. This required writing a custom React reconciler — surprisingly straightforward, though still unpolished.

Like Raycast, Vicinae ships with powerful built-in modules, but the goal isn’t to make a clone. I want it to grow into its own project that fits the FOSS model better, while staying compatible with the Raycast ecosystem. I also plan to bring it to other OSes eventually.

I’d love feedback on the technical approach, and suggestions for what would make this useful to you. Contributions are very welcome — I’ve already been pleasantly surprised by how quickly people started helping.

Docs: https://docs.vicinae.com Repo: https://github.com/vicinaehq/vicinae

1. mgrandl ◴[] No.45237611[source]
Insanely cool. I wrote my own raycast inspired launcher a while ago and never got around to adding proper extension support. There is also https://github.com/project-gauntlet/gauntlet which also has react extensions, but not raycast compatible afaik.
replies(1): >>45237640 #
2. aurellius ◴[] No.45237640[source]
did you open source it? I know about gauntlet and tried it before, great project!
replies(1): >>45278616 #
3. mgrandl ◴[] No.45278616[source]
https://github.com/MatthiasGrandl/loungy