Today, after months of work, I'm finally releasing the first macOS version of Vicinae, with full feature parity with the Linux version!
From a technical standpoint, it is still a Qt/C++ app with a Node.js powered extension runtime (like Raycast). Something as deeply system-integrated requires calling a lot of native APIs, and when I started the port I wasn't quite sure how easy it would be. Turns out it went a lot smoother than I expected.
I was able to use Objective-C++ to interface with most macOS native APIs, and a bit of Swift (through C FFI) where that wasn't enough. Thanks to that, Vicinae has a fully "liquid glass" look by default!
The main thing that required real thought was permissions. macOS gates a lot behind TCC, and the trickiest one is Full Disk Access: without it, file search (through Spotlight) will silently omit a lot of user protected files. FDA remains fully optional though, users that don't want to use Vicinae for file search don't need to grant it (although extensions may need it as well, such as for accessing Apple Notes)
Qt/QML worked pretty much as expected on macOS, with no notable issues. Even my custom shaders get compiled to Metal automatically, without configuring anything. And the bundle, once trimmed, ended up very small: 24MB compressed in a .dmg, with all the Qt libraries included!
On the performance side I'm also extremely satisfied, it feels very snappy. It's also very lightweight when it comes to RAM usage. Around ~100MB if we exclude the node process required to run third party extensions (technically optional, as none of the core features rely on it). Definitely a breath of fresh air when we see what happened to Raycast V2 :-)
Had a lot of fun porting this, and it reinforced my love for Qt even more.
Vicinae is fully open source (GPLv3). Happy to answer questions about the port!
schromp•5m ago
now i have not benchmarked it but i feel like vicinae is also a lot faster than raycast