# Конфиги рабочего стола Bazzite

Эта папка содержит конфигурацию рабочего стола Bazzite для Wayland-сессии на
Niri. Идея в том, чтобы подключать эти файлы в `~/.config` на Bazzite-машине и
держать живую конфигурацию рабочего стола синхронизированной с этим
репозиторием.

## Что здесь настроено

| Путь | Назначение |
|---|---|
| `niri/config.kdl` | Конфиг Niri: ввод, монитор, раскладка окон, автозапуск, правила окон, хоткеи. |
| `waybar/` | Верхняя панель: конфиг, CSS в стиле Catppuccin и custom-модули. |
| `waybar/scripts/gpu.sh` | Модуль Waybar для загрузки и температуры NVIDIA GPU через `nvidia-smi`. |
| `waybar/scripts/weather.sh` | Модуль Waybar с погодой через `wttr.in`. |
| `khal-calendar/` | Rust-версия календарного модуля Waybar. |
| `mail-counter/` | Rust-модуль Waybar для счетчика непрочитанных писем Thunderbird. |
| `fuzzel/fuzzel.ini` | Тема лаунчера Fuzzel на цветах Catppuccin Latte. |
| `btop/btop.conf` | Настройки системного монитора btop. |
| `glow/glow.yml` | Настройки терминального Markdown-viewer Glow. |
| `gtk-3.0/`, `gtk-4.0/` | GTK-настройки и цветовые файлы Breeze/Catppuccin. |
| `xsettingsd/xsettingsd.conf` | Настройки GTK, курсора, иконок, шрифта и DPI для X11/XWayland-приложений. |
| `environment.d/intel-gtk-fix.conf` | Переменная окружения сессии: `GSK_RENDERER=gl`. |
| `autostart/steam.desktop` | Автозапуск Steam через Bazzite Steam wrapper. |
| `wallpapers/image.png` | Текущая картинка рабочего стола для `swaybg`. |

## Как это работает

Niri запускает `swaybg` и `waybar` из `niri/config.kdl`. `swaybg` рисует
wallpaper, Waybar поднимает:

- встроенные Niri-модули для рабочих столов, заголовка окна и раскладки
  клавиатуры;
- системные модули для звука, сети, CPU, памяти, температуры, диска, privacy,
  power profile и tray;
- custom-модули для почты Thunderbird, погоды, NVIDIA GPU и календаря из
  `khal`.

Календарный модуль печатает JSON для Waybar и показывает Pango-tooltip с текущим
месяцем, подсвеченными днями с событиями и ближайшими событиями из `khal`.
Активная реализация сейчас - скомпилированный Rust-бинарник:

```jsonc
"exec": "~/.config/waybar/scripts/khal-calendar"
```

## Ожидаемые программы

Для полной работы конфигурации на Bazzite ожидаются:

- `niri`
- `waybar`
- `fuzzel`
- `btop`
- `glow`
- `xsettingsd`
- `alacritty`
- `swaybg`
- `khal`, `ikhal`, `vdirsyncer`
- `nvidia-smi`
- `curl`
- `cargo` для пересборки `khal-calendar` и `mail-counter`

## Установка

Подключить директории в `~/.config`:

```bash
for dir in niri fuzzel waybar btop glow gtk-3.0 gtk-4.0 xsettingsd environment.d autostart; do
  ln -sfn ~/dotfiles/bazzite/$dir ~/.config/$dir
done
mkdir -p ~/Pictures/Wallpapers
ln -sfn ~/dotfiles/bazzite/wallpapers/image.png ~/Pictures/Wallpapers/image.png
```

Если репозиторий лежит не в `~/dotfiles`, путь нужно поправить.

## Сборка календарного модуля

Собрать и установить Rust-бинарник календаря на Bazzite:

```bash
cd ~/dotfiles/bazzite/khal-calendar
cargo build --release
install -m 755 target/release/khal-calendar ~/.config/waybar/scripts/khal-calendar
```

Исходники остаются в `khal-calendar/`; установленный бинарник лежит в
`~/.config/waybar/scripts/`.

## Сборка почтового модуля

Собрать и установить Rust-бинарник счетчика писем на Bazzite:

```bash
cd ~/dotfiles/bazzite/mail-counter
cargo build --release
install -m 755 target/release/mail-counter ~/.config/waybar/scripts/mail
```

Модуль читает `global-messages-db.sqlite` из профиля Thunderbird и печатает JSON
для `custom/mail` в Waybar.

## Перезагрузка

После изменения конфига или CSS Waybar:

```bash
pkill -SIGUSR2 waybar
```

Если Waybar не подхватил изменения, нужно перезапустить Waybar вручную или
перезапустить Niri-сессию.
