Awesome work! I've been dreaming of this project myself with a very similar stack (basically React instead of Svelte), but I'm very excited to finally have a Raycast alternative for Linux that has both consistent UI and extension compatibility.
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])
> 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]
Fair point! I've actually thought about that before; I've tried to be extremely clear in the project's README with a disclaimer that this is a non-commercial hobby project and is not affiliated with the official Raycast team in any way.
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 shouldn't matter. They might even have a Linux version in the works, given they are doing Windows now. They are within their rights to ask you to get rid of it. You also seem to be using their brand assets like the logo. I get your intention and love what you were able to accomplish but if you intend for this to grow, you are better off doing this now.
The launcher UI is AppKit while the extension APIs allow third-party developers to write them in TS and a React subset. They have a custom renderer for React that turns that into AppKit primatives. So similar in concept but custom and specific to their usecase.
True, but a cease & desist will likely include the demand that they cease all operations, and they might be willing to fight that in court, possibly seek damages, etc however likely or unlikely it is that it would hold up. They can pay for a few hours of a lawyer's time to intimidate the OP.
“Just for identification” is the point — the name Raycast identifies their product, and it’s their trademark. You can’t use it without permission, even with a disclaimer in the readme.
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.
It's also worse than that. It uses the Raycast logo directly in the launcher itself. Which is odd because just above this, OP says:
"I've actually thought about that before; I've tried to be extremely clear in the project's README with a disclaimer that this is a non-commercial hobby project and is not affiliated with the official Raycast team in any way."
Clearly a bright kid, but that's quite a fumble. Among my ideas for being extremely clear about not being affiliated with Raycast I would have to say using their name and using their logo together would be the worst way to communicate that.
I've had to look into for my own side projects, you don't want to include brand names, trademarks, etc in your own projects' names and you should be very wary about how you use them in your marketing if you choose to do so at all.
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).
The readme suggests that Wayland users should add a udev rule to enable direct keyboard access to the user at the physical console (read: to any process spawned by the user at the physical console).
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?
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?
Have you ever tried a launcher as powerful as Raycast? I can only recommend it. I use it for quick calculations, currency conversions, file lookups, translations, looking up http status codes, joining meetings, finding emojis, quickly checking my calendar, etc. etc. – so, perhaps a singular function might not warrant a launcher, but the sum of functions and keyboard-centric UI make it very valuable for me in my daily workflows.
The reason I don't use this kind of thing, is the time spent parsing the results.
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.
On a Mac, opening the launcher means pressing cmd-space at any time, getting a popup text entry field, typing "1+2", seeing the answer, and hitting esc to dismiss it. That's the entire workflow for operating a calculator, launching an app, searching Google, locating a file, or whatever. I challenge you to do that operation with a separate app more (or even as) efficiently.
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.
My main problem with that kind of launcher is that if I write "gimp" on my launcher there is only one correct answer, launching gimp. Everything else is just noise.
The choice to offer all that other functionality detracts from the main one.
Launchers compete on their smartness. One that didn’t show Gimp as the top result wouldn’t have users very long. You can also turn off the results you don’t like.
Do you remember the command line command to convert 5:30 IST to PDT? Or convert $70 USD to SGD? Or what 17.3 years in seconds is? Or how many days are between 2024-12-30 and 2025-06-17?
Raycast can all of do that automatically, and the only shortcut you need to know is Cmd-Space.
If you ignore inefficiencies you won't get why the alternative is efficient.
Of course it's not the only shortcut. First, you might need to press tab several times and also pay attention to pick the right element from the app list (no need to do that with a launcher h
Then you need to open a new tab not to lose your current one (guess, this one can be avoided with extra config)
Then you need to wait for the network and hope your query is interpreted correctly by a very general search engine which are increasingly likely to push hallucinations as answers instead (for a calculator plugin you can learn syntax to have guaranteed match)
You'll never be convinced because you continue to distort reality to match your fantasy. Why did you convert seconds into milliseconds? Why did you ignore the non-time-based inefficiency of the workflow?
For search you then have at least 3 roundtrips back and forth to the server, plus processing at either end, which for me is at least 400ms for Google, though ping being 17ms suggests the time is mainly spent on processing at the other end.
I use Alfred which is similar. I can do a lot of things with just the launcher. From small things like typing uuid and getting a uuid to open a dev project and launching all the tools needed for it by just typing p [name] where name is autocompleted. Could I open the terminal and do it there instead? Sure. But that is slower than just getting an instant launcher
This is amazing! I was working on something like this myself, but I've not reached anywhere near this level of functionality or polish. Looks like I'll drop it and see if I can contribute to this instead.
Amazing! one of the few reasons keeping me from using Linux as a daily driver is lack of Raycast support. It has become a huge part of how I use my computer.
I'm not one to care for age usually, but I think it's worth mentioning that OP is 15 years old. Well done, great work, please keep building and writing.
I am a big user of launchers. Used fluent search on windows, raycast on my work mac, but used a disparate set of tools on linux till now. This will be great to try.
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.
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/
> 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 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!
Only the logo and name. The functionality side should be perfectly fine, there are oodles of precedent for reversing a workable program from someone's commercial API: https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_....
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.
"I've actually thought about that before; I've tried to be extremely clear in the project's README with a disclaimer that this is a non-commercial hobby project and is not affiliated with the official Raycast team in any way."
Clearly a bright kid, but that's quite a fumble. Among my ideas for being extremely clear about not being affiliated with Raycast I would have to say using their name and using their logo together would be the worst way to communicate that.
OP: please do change this ASAP so that the Raycast gang doesn’t protest the really neat project you’ve made!
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).
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?
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?
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.
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.
My main problem with that kind of launcher is that if I write "gimp" on my launcher there is only one correct answer, launching gimp. Everything else is just noise.
The choice to offer all that other functionality detracts from the main one.
Raycast can all of do that automatically, and the only shortcut you need to know is Cmd-Space.
I don't get it either.
Of course it's not the only shortcut. First, you might need to press tab several times and also pay attention to pick the right element from the app list (no need to do that with a launcher h
Then you need to open a new tab not to lose your current one (guess, this one can be avoided with extra config)
Then you need to wait for the network and hope your query is interpreted correctly by a very general search engine which are increasingly likely to push hallucinations as answers instead (for a calculator plugin you can learn syntax to have guaranteed match)
Are we fr splitting hairs now on milliseconds? Yes, and words per minute are a measure of productivity!
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.
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.