Waycast

A launcher for Wayland that doesn't suck. Think Raycast but for Linux.

I already ordered the programmer socks.

What is this?

Waycast is an application launcher built for Wayland desktops. It's fast, extensible, and designed to get out of your way while helping you find what you need.

Current features:

  • Search and launch desktop applications
  • Search files in your home directories (Documents, Pictures, Music, Videos)
  • Fuzzy search that actually works
  • Fast startup with background file indexing
  • GTK4 with proper layer shell integration

Planned features:

  • Background daemon for instant launches
  • Plugin system for extensions
  • Calculator, clipboard history, system controls
  • Terminal UI for SSH sessions
  • Web search integration

Development

This is a Cargo workspace with three main crates:

  • waycast-core - The launcher engine (traits, logic, no UI)
  • waycast-plugins - Plugin implementations (desktop apps, file search)
  • waycast-gtk - GTK4 UI and main binary

Common Commands

make help           # See all available commands
make quick          # Format code + compile check
make test           # Run tests (that I don't have yet)
make build-all      # Build everything
make install        # Install to system

Project Structure

waycast/
├── waycast-core/           # Core launcher logic
├── waycast-plugins/        # Plugin implementations
└── waycast-gtk/           # GTK UI (main app)

The core is deliberately minimal and UI-agnostic. Plugins depend on core. UI depends on both core and plugins. Nothing depends on the UI.

Why Another Launcher?

Linux desktop launchers are either too basic (dmenu, wofi) or too bloated (some KDE thing with 47 configuration tabs). Raycast nailed the UX on macOS, but there's no good equivalent for Linux.

Waycast aims to be:

  • Fast - Sub-100ms search responses, instant startup
  • Clean - Good defaults, minimal configuration needed
  • Extensible - Plugin system for custom functionality
  • Native - Proper Wayland integration, not an Electron app

Installation

Nix Flakes

Add to your flake.nix inputs:

waycast.url = "git+https://gitgud.foo/thegrind/waycast";

Install as package:

environment.systemPackages = [ inputs.waycast.packages.${system}.default ];
# or for home-manager:
home.packages = [ inputs.waycast.packages.${system}.default ];

With Home Manager module (recommended):

imports = [ inputs.waycast.homeManagerModules.default ];

programs.waycast = {
  enable = true;
  config = {
    plugins.projects = {
      search_paths = ["/absolute/path/to/search"];
      skip_dirs = [ "node_modules" "target" ".git" ];
      open_command = "code -n {path}";
    };
    plugins.file_search = {
      search_paths = ["/absolute/path/to/search"];
      ignore_dirs = ["scripts", "temp"]; # Just directory names here
    };
  };
  css = ''
    window {
      background: rgba(0, 0, 0, 0.8);
      border-radius: 12px;
    }
  '';
};

Contributing

TBA

License

TBA

Description
No description provided
Readme 1.1 MiB
v0.0.3 Latest
2025-09-12 12:26:16 -06:00
Languages
Rust 86.5%
Nix 6%
Makefile 5.2%
CSS 2.3%