Show HN: A Raycast-compatible launcher for Linux

github.com

184 points by ByteAtATime a day ago

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!

runjake a day ago

Looks great! Change the name. The Raycast people are going to (initially) ask you to anyway.

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/

  • WD-42 a day ago

    There is also rofi, wofi, fuzzl, dmenu, and even gnome search providers. No shortage of launchers on Linux, all with varying capabilities.

a022311 a day ago

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])

Keep up the good work!

[0]: https://github.com/sharkdp/numbat

[1]: https://github.com/project-gauntlet/gauntlet

[2]: https://areweguiyet.com/

ksynwa a day ago

From wikipedia

> 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]

mynegation a day ago

Raycast will either hire you or send you a cease-and-desist order. Either way, I would change the name now.

  • ByteAtATime a day ago

    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!

    • sangeeth96 a day ago

      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.

      • rjzzleep 7 hours ago

        They use react-native, no? One of the main issues is that all react-native implementations are half baked and dead.

        • jamil7 4 hours ago

          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.

      • ByteAtATime a day ago

        That makes sense -- I'll go figure something out, thanks for the explanation!

      • benatkin 19 hours ago

        It should matter that it's a non-commercial hobby project. It's nice to see the light pushback.

      • bigyabai a day ago

        > They are within their rights to ask you to get rid of it.

        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,_....

        • heavyset_go 19 hours ago

          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.

        • sangeeth96 a day ago

          But prolly can still go after if you resemble it closely enough in terms of looks? I get the API point though, thanks.

          • kstrauser 20 hours ago

            Eh, probably not. There are any number of things that look like it. The appearance is the natural outcome of its functionality.

    • rafram a day ago

      “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.

    • kstrauser 20 hours ago

      > The name is just for identification

      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.

      • wlonkly 5 hours ago

        It's worse than that -- "Recreating Raycast" is just the blog post title, the project is called "raycast-linux".

        • rmdashrfv 2 hours ago

          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.

        • kstrauser 5 hours ago

          Oh dear. Yeah, that’s guaranteed to end badly.

          OP: please do change this ASAP so that the Raycast gang doesn’t protest the really neat project you’ve made!

    • heavyset_go 19 hours ago

      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.

    • p0w3n3d 14 hours ago

      I propose cast-a-ray (sounds like castaway and goes along with FOSS wink+tonge-in-cheek style). Or maybe waycast?

      • volemo 11 hours ago

        I'm sorry, but in my accent (speech impairment?) "cast-a-ray" sounds almost like "castrate", so I can't back your naming idea. :P

  • sangeeth96 a day ago

    As well as the logo used, name references from all other places and even tweaking the looks a bit.

Imustaskforhelp 5 hours ago

211 MB appimage is wild when your premis is linux

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).

jraph a day ago

Another runner which can be extended and runs on Linux is KRunner, the one that comes with KDE. Should this inspire you.

  • kombine a day ago

    KRunner is great, has a lot of features including currency and unit conversion. I use it almost exclusively now.

Sophira 10 hours ago

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?

flipcoder a day ago

Nice work but change name asap, pivot to something original

imcritic a day ago

I don't really see any value in such combines.

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?

  • herrherrmann a day ago

    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.

  • throwawayffffas 10 hours ago

    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.

  • kstrauser a day ago

    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.

    • throwawayffffas 10 hours ago

      The way I do it is, I type python in a new terminal, the terminal emulator is running at all times.

      So, its ctrl-s + c, python, enter, 1 + 2, enter.

      Slightly more work but meh.

      • rafram 8 hours ago

        Sure, but what does Python return if you type in "$100 in EUR" or "10 pounds in kg"?

        • throwawayffffas 7 hours ago

          That's what your browser is for.

          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.

          • kstrauser 5 hours ago

            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.

  • MisterSandman a day ago

    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.

    • sublinear a day ago

      I just type the same into the browser. Only shortcut is alt-tab or a touchscreen swipe, and it works on any device without installing anything.

      I don't get it either.

      • eviks 14 hours ago

        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)

        • sublinear 13 hours ago

          Not convinced. I challenge you to a duel wtf lmao roflcopter??

          Are we fr splitting hairs now on milliseconds? Yes, and words per minute are a measure of productivity!

          • eviks 13 hours ago

            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?

      • mjmas 14 hours ago

        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.

  • victorbjorklund 13 hours ago

    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

  • eviks 14 hours ago

    > do you save so much time by replacing the "run calc" step with "open launcher"

    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

  • monooso a day ago

    Plenty of people appear to disagree.

  • znort_ a day ago

    "write programs that do one thing and do it well. write programs to work together."

    it's sad to see this core principle being increasingly ignored in linux, but i guess that ship sailed a while ago.

    • jraph a day ago

      A runner that runs "programs" coming from extensions is about as close to this principle as possible, no?

      • kstrauser 20 hours ago

        I think so. It’s basically an ephemeral, extensible GUI shell.

_seiryuu_ 11 hours ago

Great work! It's being a bit weird with cosmic shell (the old, gnome-based one), but seems to work pretty well otherwise.

hiyer 16 hours ago

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.

ddaletski 11 hours ago

Nice work. I started working on a similar project too. Maybe I'd better contribute to this one then

evertedsphere 18 hours ago

honey it's 4pm time for your daily frontpage chatgpt readme

dkarter 19 hours ago

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.

regularjack a day ago

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.

7e 19 hours ago

I never liked Raycast over Alfred or Launchbar. They’re trying way too hard to solve non-existent problems and sucking at it.

That said, Linux app launchers are even worse, so I applaud any attempt to improve that situation.

philjackson 12 hours ago

This is really impressive work.

johng a day ago

Amazing work! I love Raycast as well!

porridgeraisin 14 hours ago

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.