veil
Veil is a high-performance Wayland compositor built to run standalone on bare TTYs or nested inside existing terminals and compositors. Features dwindle tiling, full input integration, bidirectional clipboard sync, and direct GPU hardware rendering.
Quick Install (Arch Linux / AUR)
yay -S veil-host-bin velogin-bin
Key Features
Dwindle Tiling
Dynamic 2×2 grid layout. Resize, swap, rotate splits with Super keybinds.
Kitty Graphics
Pixel-perfect rendering via Kitty Graphics Protocol on Kitty and WezTerm.
32MB Memory Footprint
Ultra-lean RAM consumption built on Smithay & Rust.
DRM/KMS Output
Direct TTY framebuffer rendering without requiring a terminal emulator.
Multi-Compositor Nesting
Run Niri and Hyprland simultaneously as separate nested windows.
GPU Pipeline
Vulkan GPU compute shader encoding for low-latency rendering.
Installation
Curl Script (Recommended)
curl -fsSL https://viewerofall.pages.dev/install/veil/install.sh | bash
Manual Download
curl -fsSL https://github.com/viewerofall/veil/releases/download/v2.0.0/veil-host-x86_64.tar.gz | tar xz
sudo install -m755 veil-host /usr/local/bin/
Usage & Keybinds
# Launch an app inside Veil
veil-host run firefox
# Append another app to running compositor instance
veil-host append nautilus
Keybindings
| Keybind | Action |
|---|---|
Super + H / J / K / L | Focus left / down / up / right |
Super + = / - | Resize window (grow / shrink) |
Super + S | Swap focused window |
Super + R | Rotate split axis |
Super + Q | Exit Veil |
Ctrl + C | Terminate active app |
Abyss (Velogin) Login Manager
Graphical TTY login manager running on bare DRM/KMS with PAM auth and session management.
sudo systemctl enable seatd.service
sudo systemctl disable getty@tty1.service
sudo systemctl enable abyss.service
Architecture
App (Firefox, Nautilus, etc.)
↓ Wayland Protocol
veil-host (Smithay compositor)
├─ Dwindle layout engine
├─ GPU compute pipeline (wgpu Vulkan)
└─ DRM/KMS or Terminal escape rendering
Configuration
Create ~/.config/veil/config.lua:
keybinds = {
mod_key = "super",
focus_left = "h",
focus_right = "l",
focus_up = "k",
focus_down = "j",
quit = "q",
}
render_mode = "auto"
gpu_encode = true
Roadmap
- done Dwindle tiling & DRM/KMS framebuffer
- done GPU compute shader pipeline
- planned Floating windows & interactive shell prompt
- planned App launcher & workspace sidebar