187 lines
4.1 KiB
Markdown
187 lines
4.1 KiB
Markdown
# WayCast
|
|
|
|
A Raycast-like application launcher for Linux with Qt6 and Wayland support. We deserve this.
|
|
|
|
## Features
|
|
|
|
- **Fast fuzzy search** with AVX2 acceleration
|
|
- **Desktop application discovery** via XDG desktop entries
|
|
- **File search** with path-based filtering (e.g., `wallpapers/sunset.jpg`)
|
|
- **Plugin system** for extensible functionality
|
|
- **Modern UI** with Material Dark theme
|
|
- **Wayland native** with layer shell support
|
|
- **Semi-transparent** window
|
|
|
|
## Installation
|
|
|
|
### Quick Install (Nix)
|
|
|
|
```bash
|
|
nix profile install git+https://gitgud.foo/thegrind/waycast
|
|
```
|
|
|
|
### Run Without Installing
|
|
|
|
```bash
|
|
nix run git+https://gitgud.foo/thegrind/waycast
|
|
```
|
|
|
|
### NixOS System-Wide Installation
|
|
|
|
Add to your `flake.nix`:
|
|
|
|
```nix
|
|
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
waycast.url = "git+https://gitgud.foo/thegrind/waycast";
|
|
};
|
|
|
|
outputs = { nixpkgs, waycast, ... }: {
|
|
nixosConfigurations.yourhost = nixpkgs.lib.nixosSystem {
|
|
modules = [
|
|
waycast.nixosModules.waycast
|
|
{
|
|
programs.waycast.enable = true;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|
|
```
|
|
|
|
Then rebuild your system:
|
|
```bash
|
|
sudo nixos-rebuild switch --flake .
|
|
```
|
|
|
|
### Home Manager Installation
|
|
|
|
Add to your home-manager configuration:
|
|
|
|
```nix
|
|
{
|
|
inputs = {
|
|
home-manager.url = "github:nix-community/home-manager";
|
|
waycast.url = "git+https://gitgud.foo/thegrind/waycast";
|
|
};
|
|
|
|
outputs = { home-manager, waycast, ... }: {
|
|
homeConfigurations.youruser = home-manager.lib.homeManagerConfiguration {
|
|
modules = [
|
|
waycast.homeManagerModules.waycast
|
|
{
|
|
programs.waycast.enable = true;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|
|
```
|
|
|
|
Then apply the configuration:
|
|
```bash
|
|
home-manager switch --flake .
|
|
```
|
|
|
|
### Traditional Installation
|
|
|
|
If you're not using Nix, you can build from source:
|
|
|
|
#### Dependencies
|
|
- Qt6 (Core, Gui, Qml, Quick, QuickControls2, Widgets, Wayland)
|
|
- Layer Shell Qt
|
|
- GLib/GIO
|
|
- CMake 3.21+
|
|
- Ninja (recommended)
|
|
- C++20 compiler
|
|
|
|
#### Build
|
|
```bash
|
|
git clone https://gitgud.foo/thegrind/waycast
|
|
cd waycast
|
|
make configure # or: cmake -S . -B build -G Ninja
|
|
make bld # or: cmake --build build
|
|
make install # or: cp ./build/waycast ~/bin/waycast
|
|
```
|
|
|
|
## Usage
|
|
|
|
Launch waycast and start typing:
|
|
|
|
- **Applications**: Type app name (e.g., `firefox`, `kate`)
|
|
- **Files**: Type filename (e.g., `config.txt`)
|
|
- **Path search**: Type path + filename (e.g., `wallpapers/sunset`)
|
|
- **Directory browse**: Type path ending with `/` (e.g., `Documents/`)
|
|
|
|
### Keyboard Shortcuts
|
|
|
|
- `Escape` - Close launcher
|
|
- `↑/↓` - Navigate results
|
|
- `Enter` - Execute selected item
|
|
|
|
## Development
|
|
|
|
### Development Shell
|
|
|
|
```bash
|
|
nix develop git+https://gitgud.foo/thegrind/waycast
|
|
```
|
|
|
|
Or locally:
|
|
```bash
|
|
nix develop
|
|
```
|
|
|
|
Inside the dev shell:
|
|
```bash
|
|
make configure # Configure build
|
|
make bld # Build project
|
|
make run # Run waycast
|
|
make br # Build and run
|
|
```
|
|
|
|
### Architecture
|
|
|
|
- **Plugin system**: `lib/plugins/` - Extensible search providers
|
|
- **Fuzzy search**: `lib/fuzzy.hpp` - AVX2-accelerated string matching
|
|
- **UI**: Qt6 QML with Material Dark theme
|
|
- **File utilities**: `lib/files.hpp` - File system operations
|
|
- **Icon resolution**: `lib/IconUtil.hpp` - System theme integration
|
|
|
|
### Build Systems
|
|
|
|
WayCast supports multiple build systems:
|
|
|
|
- **CMake + Ninja** (recommended): `make configure && make bld`
|
|
- **Zig**: `zig build run`
|
|
- **Nix**: `nix build`
|
|
|
|
## Configuration
|
|
|
|
Currently, WayCast works out of the box with sensible defaults:
|
|
|
|
- **Search directories**: `~/Documents`, `~/Desktop`, `~/Downloads`
|
|
- **Search depth**: 3 levels
|
|
- **File limit**: 1000 files
|
|
- **Ignored directories**: `node_modules`, `.git`, `build`, etc.
|
|
|
|
## Requirements
|
|
|
|
- **Linux** with Wayland compositor (Sway, Hyprland, KDE Plasma, GNOME, etc.)
|
|
- **Qt6** with Wayland support
|
|
- **Layer Shell Qt** for proper window positioning
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create your feature branch
|
|
3. Make your changes
|
|
4. Test with `nix build` and `nix run`
|
|
5. Submit a pull request
|
|
|
|
The development environment includes all dependencies and development tools needed to contribute. |