←back to thread

179 points aurellius | 1 comments | | HN request time: 0.238s | 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

Show context
xn--yt9h ◴[] No.45195217[source]
Installation was easy, and it works as expected without interfering with i3 window controls.

However, the sole reason I'm keeping an eye out for raycast-compatible launchers is the ability to integrate the raindrop.io extension - which seems to be broken when used through Vicinae.

Maybe someone else running raindrop got it to work; "TypeError: Cannot read properties of undefined (reading 'subscribers')".

replies(1): >>45195234 #
aurellius ◴[] No.45195234[source]
what version are you running? I'm currently working on improving extension support but yes, some are still in a broken state.
replies(1): >>45198396 #
aurellius ◴[] No.45198396[source]
the newly released 0.9.4 should fix some of your issues.
replies(1): >>45210230 #
1. xn--yt9h ◴[] No.45210230[source]
Indeed it did. Hats off to you sir! Thanks for the update.