aboutsummaryrefslogtreecommitdiff
path: root/home/rices/finals/README.md
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