Install Waycast


Nix Installation

Add thegrind-nixpkgs input

  1. Add the input to your flake.nix
inputs = {
    thegrind-nixpkgs.url = "https://gitgud.boo/thegrind/nixpkgs";
};
  1. Add the overlay so packages are available as thegrind.[package name]
pkgs = import inputs.nixpkgs {
  overlays = [
    inputs.thegrind-nixpkgs.overlays.default
  ];
};

Import the Waycast module in your Home Manager configuration.

{
  pkgs,
  config,
  inputs,
  ...
}:

{
  imports = [ inputs.thegrind-nixpkgs.homeManagerModules.waycast ];
  programs.waycast = {
    enable = true;
    # See the configuration page for option breakdown.
    # this is only meant to show the nix shape
    # of the config.
    settings = {
      projects = {
        open_command = "code -n {path}";
        search_paths = [
          "/home/user/projects"
        ];
      };
      files = {
        search_paths = [
          "~/Downloads"
          "~/Documents"
        ];
      };
      ui = {
        item_display_variant = "full";
        window_size = {
          width = 800;
          height = 500;
        };
      };
    };
  };
}

Enabling the module installs Waycast and creates waycast-daemon.service, a systemd user service that starts with graphical-session.target and restarts the background process if it exits. Running waycast from a terminal or window manager keybind then signals the background process to open the UI.

Your desktop environment or window manager must activate the systemd user graphical session. For example, Home Manager’s Hyprland module should have its systemd integration enabled. After applying your configuration, check the service with:

systemctl --user status waycast-daemon.service

And optionally

waycast status

System Wide

The package is also available without the Home Manager module:

# NixOS
environment.systemPackages = [
  thegrind.waycast
];

Or install it into a Nix profile:

nix profile install 'git+https://gitgud.boo/thegrind/nixpkgs#waycast'

Package-only installation does not create the required background service. You must arrange for waycast to start with your graphical session yourself.

Notes for compositors

Hyprland

If you want waycast to start up even faster, remove the default “fade” animation hyprland adds to layer shell windows:

Nix

wayland.windowManager.hyprland = {
  settings = {
    layerrule = [
      "no_anim on, match:namespace Waycast"
    ];
  };
}

Other

In hyprland.conf

layerrule = [
  "no_anim on, match:namespace Waycast"
];