blob: b7f34fa7e148e775dd40263fa44cdb7755cfae0a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# finals
NixOS rice built on **Niri** (Wayland compositor). Minimal boilerplate — extend as needed.
## Stack
| Component | Choice |
|-----------|--------|
| Compositor | [Niri](https://github.com/YaLTeR/niri) (Wayland) |
| Terminal | Alacritty |
| Launcher | Fuzzel |
| Notifications | Dunst |
| Widgets | [Eww](https://github.com/elkowar/eww) (desktop clock) |
| Lock Screen | Swaylock + Swayidle |
| Theme Engine | [Stylix](https://github.com/danth/stylix) |
## Features
- **Custom GLSL window open animation** (`arc.frag` shader from schrottkatze)
- **Desktop clock widget** — big clock overlay, top center on wallpaper via Eww
- **Vim-style keybindings** (hjkl navigation in Niri)
- **Desktop presets** — one-key workspace setup for streaming or coding
## Structure
```
.
├── default.nix # Entry point — imports system + home
├── system.nix # System-level config (Niri, Pipewire, Stylix, fonts)
├── home.nix # Home Manager config (packages, GPG agent)
├── terminal.nix # Alacritty config
├── notifications.nix # Dunst config
├── fuzzel.nix # Launcher config
├── eww.nix # Eww widget engine
├── niri.nix # Niri compositor config (KDL generation)
├── stylix.nix # Theme overrides
├── swayidle.nix # Lock screen integration
├── eww/
│ └── configDir/
│ ├── eww.yuck # Clock widget definition
│ └── eww.css # Clock styling
└── niri/
├── shaders/
│ └── arc.frag # Window open animation shader
├── scripts/
│ ├── preset-streaming.sh # Streaming desktop preset
│ └── preset-coding.sh # Coding desktop preset
└── kdl/ # Niri config modules
├── binds.kdl # Keybindings
├── style.kdl # Window styling
└── input.kdl # Keyboard/mouse/touchpad
```
## Key Bindings
| Bind | Action |
|------|--------|
| `Mod+Return` | Alacritty |
| `Mod+D` | Fuzzel launcher |
| `Mod+N` | Firefox |
| `Mod+hjkl` | Focus window (vim dirs) |
| `Mod+Shift+hjkl` | Move window |
| `Mod+1-5` | Switch workspace |
| `Mod+Ctrl+1-5` | Move to workspace |
| `Mod+F` | Maximize column |
| `Mod+Ctrl+F` | Fullscreen |
| `Mod+Space` | Overview |
| `Mod+F1` | Preset: Streaming |
| `Mod+F2` | Preset: Coding |
## Desktop Presets
| Preset | Main Monitor | Second Monitor |
|--------|-------------|----------------|
| **Streaming** (`Mod+F1`) | Steam, Discord | OBS, btop, easyeffects |
| **Coding** (`Mod+F2`) | nvim, alacritty | Firefox |
## Not Yet Included
- Browser module
- Status bar
- Per-app window rules
- Screen capture privacy rules
|