Show HN: A Raycast-compatible launcher for Linux (github.com)
Hey HN!
I'm a huge fan of Raycast, but as a Linux user, I was always disappointed it wasn't available on my main OS. This summer, I decided to just build it myself. This project has the goal of being interoperable with Raycast itself, including a majority of the extensions.
It's built with Tauri and Rust on the backend, with a Svelte frontend. The biggest challenge was getting it to run existing Raycast extensions, which required building a custom React renderer as well as making a custom API.
I also wrote a quick post, which I hope to expand on in the future, about this project. You can find it here: https://byteatatime.dev/posts/recreating-raycast
The project is still very rough, but I'm sharing it now to get any feedback you may have!
18 comments
[ 2.8 ms ] story [ 34.2 ms ] thread> Raycast is an application launcher and productivity software developed for macOS and by Raycast Technologies Ltd. It offers fast access to applications, dictionaries, files, text snippets, clipboard, and more.[2] Raycast is an alternative to the macOS's built-in Spotlight function, with a richer interface and the option to install extensions, providing additional ways to display varied content.[3]
Raycast also runs on Windows now, albeit in beta.
Other Linux launchers with extensibility:
KRunner: https://userbase.kde.org/Plasma/Krunner
Albert: https://albertlauncher.github.io/
The most impressive part is probably your age, because this isn't an easy project even for senior devs!
I haven't tried it yet, but I can't wait to find some time for that.
I've researched applications like this for Linux quite extensively and I think you might find the following tips of interest: - For the slow extension startup issue you mentioned, consider Deno as a runtime as it has a better sandbox and is faster than Node overall. There may be some compatibility issues, but if I remember correctly most stuff is handled by the special Raycast extension libraries which you implement manually anyway. - I'd consider Numbat [0] for replacing the calculator implementation you have now. As far as I can tell, it should have feature parity with SoulverCore and it's also written in Rust, so interfacing with it should be much easier and won't require the FFI work you're doing now. - Project Gauntlet [1] is another project which has gotten quite close to implementing a full-featured Raycast alternative and might be worth taking inspiration from. It would certainly be very cool if you can make the UI rendering native at some point (although I guess Rust isn't perfect for native UI at the moment [2])
Keep up the good work!
[0]: https://github.com/sharkdp/numbat
[1]: https://github.com/project-gauntlet/gauntlet
[2]: https://areweguiyet.com/
That said, Linux app launchers are even worse, so I applaud any attempt to improve that situation.
I have something to say about the (future? didn't find it in the readme) file search feature.
Similar to how fluent search can defer to the everything.exe search index, maybe this app can defer to the fsearch search index, which already has lots of users.
It will save effort and also onboard fsearch users(like me) easily.
My understanding was that a major touted benefit to Wayland was that it prevents processes from being able to read the keyboard when not focused, unlike on X11, making keyloggers and such a thing of the past.
Doesn't adding a udev rule like this completely bypass that protection?
What surprises me here is that tauri is supposedly meant for smaller sizes but it doesn't seem to be the case here.
Also, this could be better an issue but shoot, here I go. ./raycast-linux_0.1.0_amd64.AppImage WebSocket server listening on ws://127.0.0.1:7265 Starting initial file index build. Spotlight shortcut: HotKey { mods: Modifiers(ALT), key: Space, id: 65598 } [Snippets] Wayland detected, using evdev for snippet expansion. Updating currency rates... Soulver calculator initialized and currency provider has started updating. Could not create default EGL display: EGL_BAD_PARAMETER. Aborting... Successfully updated 175 currency rates.
Andd it doesn't work.
I personally use something like dmenu (fuzzel) except with my own scripts and keybinds (hyprland).