Show HN:Linux兼容Raycast兼容发射器
Show HN: A Raycast-compatible launcher for Linux

原始链接: https://github.com/ByteAtATime/raycast-linux

这个开源项目旨在将Raycast体验带到Linux,并提供用于启动,命令和QuickLinks的命令调色板。它支持射线播放扩展,努力争取兼容性,同时确认特定于MACOS的限制。关键功能包括由带有单元和货币转换的SoulverCore提供的计算器,剪贴板历史记录,带有动态占位符的片段以及通过OpenROUTER的AI集成。 该项目提供了带有执行和热键绑定的说明的适应性发布。从源建造需要Rust,Node.js,PNPM,Tauri先决条件和计算器的快速工具链。建议Wayland用户启用UDEV规则。 该项目承认其灵感来自Raycast和SoulverCore的使用,并特别感谢Accualia的Zac。它是根据MIT许可证获得许可的。

一位15岁的开发人员Byteatatime为Linux建立了与Raycast兼容的启动器,旨在为欣赏Raycast功能的Linux用户弥合差距。该项目由Tauri,Rust和Svelte建立,重点是与Raycast扩展程序的互操作性,该扩展涉及创建自定义React Render渲染器和API。 Hacker News的用户称赞了这项工作,指出了该项目的令人印象深刻的性质,尤其是考虑到开发人员的年龄。讨论强调了由于Raycast的商标问题而引起的潜在命名问题,并提出了替代方案的建议。也有建议改进项目,例如使用DENO进行更快的扩展启动和Numbat进行计算器实现。一些评论者质疑了此类发射器的必要性,而另一些评论者则捍卫了他们在简化工作流程中的效率和价值。总体而言,该项目获得了积极的反馈和鼓励,用户提出了潜在的贡献和改进。
相关文章

原文

An open-source, Raycast-inspired launcher for Linux.

For more background on this project, I have a post here.

GIF of Raycast Linux, showing off its main features

Disclaimer: This is a hobby project and is not affiliated with, nor endorsed by, the official Raycast team.

This launcher aims to recreate most of Raycast's core features on Linux:

  • Extensible Command Palette: The core of the application. Search for and launch applications, run commands, execute quicklinks, and more.
  • Extension Support: Run extensions built Raycast's API. Features a built-in store to browse and install extensions from the official Raycast Store.
  • Powerful Calculator: A smart calculator integrated directly into the search bar, powered by SoulverCore. It handles unit conversions, currency, and complex math expressions.
  • Clipboard History: A searchable history of everything you've copied, with support for text, images, links, and colors.
  • Snippets: Create and manage text snippets that can be expanded anywhere on your system. Supports dynamic placeholders for dates, clipboard content, and more.
  • AI Integration: Connects to OpenRouter to bring the power of various AI models directly into the launcher.
  • And more to come!

🧩 Extension Compatibility

While the goal is to support a wide range of Raycast extensions, there are some inherent limitations due to the differences between macOS and Linux. Common reasons an extension might not work include:

  1. macOS-specific APIs: Many extensions rely on native macOS features like AppleScript (runAppleScript), hardcoded paths (/Applications/), or specific system libraries that do not exist on Linux.
  2. Native Binaries: Extensions that bundle pre-compiled binaries for macOS will not work. Similarly, extensions that use Swift to interact with the operating system won't work either.
  3. Assumed Permissions: Extensions may assume they have access to macOS-specific permissioned data (like Contacts or Calendars) which have no direct equivalent.

You can download the latest release from the GitHub Releases page.

Currently, only an .AppImage is provided. After downloading, make it executable:

chmod +x <downloaded-file-name>.AppImage
./<downloaded-file-name>.AppImage

This will open a long-running process in the background. To toggle the visibility of the window, simply run it again.

Depending on your environment, you may be able to bind the script to a hotkey. For example, on Hyprland:

bind = ALT, Space, exec, /path/to/raycast-linux.AppImage

The application requires glibc version 2.38, which is installed by default on Ubuntu 24.04, Fedora 40, and recent versions of Arch Linux.

Wayland users: For the global snippet expansion feature to work, the application needs permission to read keyboard events. The recommended and most secure method is to add a udev rule.

  1. Create the udev rule file:

    sudo nano /etc/udev/rules.d/99-raycast-linux.rules
  2. Add the following line to the file: This rule grants the user at the physical console access to keyboard devices.

    KERNEL=="event*", ENV{ID_INPUT_KEYBOARD}=="1", TAG+="uaccess"
    
  3. Reload the udev rules to apply the changes:

    sudo udevadm control --reload-rules && sudo udevadm trigger

🛠️ Building from Source

If you prefer to build the project from its source code, you'll need to set up the development environment.

  • Rust: Install via rustup.
  • Node.js: Use a recent LTS version. pnpm is the package manager for this project (npm i -g pnpm).
  • Tauri Prerequisites: Follow the official Tauri guide to install system dependencies.
  • Swift Toolchain: The calculator feature uses a Swift wrapper around SoulverCore.
  1. Clone the repository:

    git clone https://github.com/ByteAtATime/raycast-linux.git
    cd raycast-linux
  2. Install dependencies: This project uses a pnpm workspace. Install all dependencies from the root directory.

  3. Build the Node.js sidecar binary: This step compiles the JavaScript plugin host into a binary that Tauri can execute.

    pnpm --filter sidecar build
  4. Run in development mode: This command will launch the Tauri application with hot-reloading for the frontend.

This project stands on the shoulders of giants:

  • A huge thank you to the team behind the original Raycast.
  • The powerful calculator is powered by SoulverCore by Acqualia. Special thanks to Zac for getting me a Linux build -- on his vacation, no less!

This project is licensed under the MIT License.

联系我们 contact @ memedata.com