feat: update README and add documentation for installation, configuration, usage, and plugin development
This commit is contained in:
81
README.md
81
README.md
@@ -1,56 +1,41 @@
|
||||
# K-Launcher
|
||||
# k-launcher
|
||||
|
||||
K-Launcher is a lightweight, GPU-accelerated command palette for Linux (Wayland/X11), macOS, and Windows. It reimagines the "Spotlight" experience through the lens of Frutiger Aero—focusing on gloss, glass, and skeuomorphism—powered by a non-blocking, multi-threaded Rust kernel.
|
||||
|
||||
## Core Philosophy
|
||||
|
||||
- Zero Webview: No Chromium, no Electron. Every pixel is rendered via WGPU (Iced) for sub-5ms input-to-render latency.
|
||||
|
||||
- Async-First: Search queries never block the UI. If the file-searcher is indexing, the calculator still feels instant.
|
||||
|
||||
- The "Aero" Standard: Deep support for Gaussian blur (via Layer Shell), linear gradients, and high-gloss textures.
|
||||
|
||||
## High-Level Architecture
|
||||
|
||||
We are utilizing a "Hub-and-Spoke" model within a Cargo Workspace. The k-launcher-kernel acts as the central hub, dispatching user input to various "Spokes" (Plugins).
|
||||
|
||||
### The Crate Hierarchy
|
||||
|
||||
| Crate | Responsibility | Key Dependencies |
|
||||
| -------------------------- | --------------------------------------------------------- | -------------------------------------- |
|
||||
| **`k-launcher`** | The entry-point binary. Glues everything together. | `k-launcher-ui`, `k-launcher-kernel` |
|
||||
| **`k-launcher-ui`** | The Iced-based view layer. Handles animations/theming. | `iced`, `lyon` (for vector paths) |
|
||||
| **`k-launcher-kernel`** | The "Brain." Manages state, history, and plugin dispatch. | `tokio`, `tracing` |
|
||||
| **`k-launcher-os-bridge`** | OS-specific windowing (Layer Shell for Wayland, Win32). | `iced_layershell`, `raw-window-handle` |
|
||||
| **`plugins/*`** | Individual features (Calc, Files, Apps, Web). | `plugin-api` (Shared traits) |
|
||||
|
||||
## Data & Communication Flow
|
||||
|
||||
K-Launcher operates on an Event loop.
|
||||
A lightweight, GPU-accelerated command palette for Linux (Wayland/X11). Zero Electron — every pixel rendered via WGPU. Async search that never blocks the UI.
|
||||
|
||||
```
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant UI as k-launcher-ui
|
||||
participant Kernel as k-launcher-kernel
|
||||
participant Plugins as plugin-file-search
|
||||
|
||||
User->>UI: Types "p"
|
||||
UI->>Kernel: QueryUpdate("p")
|
||||
par Parallel Search
|
||||
Kernel->>Plugins: async search("p")
|
||||
Plugins-->>Kernel: List<SearchResult>
|
||||
end
|
||||
Kernel->>UI: NewResults(Vec)
|
||||
UI-->>User: Render Glass Result List
|
||||
[screenshot placeholder]
|
||||
```
|
||||
|
||||
## Technical Specifications
|
||||
## Quick Start
|
||||
|
||||
To ensure "Plug and Play" capability, all features must implement the `Plugin` trait. This allows the user to swap the default `file-searcher` for something like `fzf` or `plocate` without recompiling the UI.
|
||||
```bash
|
||||
git clone https://github.com/GKaszewski/k-launcher
|
||||
cd k-launcher
|
||||
cargo build --release
|
||||
./target/release/k-launcher
|
||||
```
|
||||
|
||||
To achieve the 2000s aesthetic without a browser:
|
||||
## Keybinds
|
||||
|
||||
- Background Blur: On Wayland, we request blur through the org_kde_kwin_blur or fractional-scale protocols.
|
||||
- Shaders: We will use Iced’s canvas to draw glossy "shine" overlays that respond to mouse hovering.
|
||||
- Icons: We will prefer .svg and .png with high-depth shadows over flat icon fonts.
|
||||
| Key | Action |
|
||||
| --------- | --------------- |
|
||||
| Type | Filter results |
|
||||
| `↑` / `↓` | Navigate |
|
||||
| `Enter` | Launch selected |
|
||||
| `Escape` | Close |
|
||||
|
||||
## Built-in Plugins
|
||||
|
||||
| Trigger | Plugin | Example |
|
||||
| ----------------- | ------ | -------------- |
|
||||
| (any text) | Apps | `firefox` |
|
||||
| number/expression | Calc | `2^10 + 5` |
|
||||
| `>` prefix | Shell | `> echo hello` |
|
||||
| `/` or `~/` | Files | `~/Documents` |
|
||||
|
||||
## Docs
|
||||
|
||||
- [Installation](docs/install.md)
|
||||
- [Usage & Keybinds](docs/usage.md)
|
||||
- [Configuration & Theming](docs/configuration.md)
|
||||
- [Plugin Development](docs/plugin-development.md)
|
||||
|
||||
Reference in New Issue
Block a user