Install Waycast
Nix Installation
Add thegrind-nixpkgs input
- Add the input to your
flake.nix
inputs = {
thegrind-nixpkgs.url = "https://gitgud.boo/thegrind/nixpkgs";
};
- Add the overlay so packages are available as
thegrind.[package name]
pkgs = import inputs.nixpkgs {
overlays = [
inputs.thegrind-nixpkgs.overlays.default
];
};
Home Manager (recommended)
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"
];