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!
Raycast also runs on Windows now, albeit in beta.
Other Linux launchers with extensibility:
> 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]
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
The name is just for identification, as the project's goal is to be a compatible, open-source alternative for the Linux community, a platform they don't currently serve.
That being said, I'll definitely keep it in mind. Thanks for bringing it up!
That’s precisely what they’d dislike about it. You’d be creating “brand confusion” by using their trademark in your own name. You couldn’t make “My Cola (Recreating Coke)” without getting an expensive and inconvenient letter from their legal team.
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?
That said, Linux app launchers are even worse, so I applaud any attempt to improve that situation.
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).
You want some calculation? Run calc and do the calculation, do you save so much time by replacing the "run calc" step with "open launcher" that it's worth adding more software to your setup?
There are good tools for doing each of those things separately. A good launcher that allows you to do any of them with such trivial overhead is a huge time saver.
So, its ctrl-s + c, python, enter, 1 + 2, enter.
Slightly more work but meh.
If I write teams, I want to get a single result that will be the teams app on my computer.
I don't want to get a wikipedia entry about teams, a random text document that has "teams" in it, news about microsoft teams, or the price of the latest shitcoin named TEAMS.
All that does is add cognitive load, regardless of whether the app is the first result, seeing and parsing the other results, takes focus away from the work at hand and contributes to fatigue.
I have a browser with an omnibox for the internet, search on my file explorer, and find and ag[1] in my terminal.
Specialized tools for specific jobs.
[1]. ag is like grep but faster also it's 30% shorter to type than ack the other faster grep alternative.
Raycast can all of do that automatically, and the only shortcut you need to know is Cmd-Space.
I don't get it either.
Yes, of course. The "open launcher" is 1 key press, an action you repeat many times a day. And it has 0 delay.
Your "run calc" can't beat this fluid UX
it's sad to see this core principle being increasingly ignored in linux, but i guess that ship sailed a while ago.
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.