Files
dotfiles/README.md
2026-07-25 12:38:39 +03:00

130 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dotfiles
Личный репозиторий конфигураций Neovim и Linux desktop-сессии на Fedora.
## Структура
Сейчас в репозитории поддерживаются два рабочих слоя:
- `nvim/` — конфигурация Neovim 0.11+;
- `fedora/` — основной профиль Fedora с Niri и QuickShell.
Новые полноценные системные профили добавляются отдельными каталогами верхнего
уровня: `arch/`, `debian/`, `laptop/` и т. п. Файлы текущего профиля не нужно
смешивать между системами.
Основные части профиля Fedora:
| Путь | Назначение |
| --- | --- |
| `fedora/niri/config.kdl` | Композитор, автозапуск, правила окон и хоткеи. |
| `fedora/quickshell/control-center/` | Bar, control center, media popup, OSD и notifications. |
| `fedora/quickshell/scripts/` | Скрипты погоды и NVIDIA GPU для QuickShell. |
| `fedora/systemd/user/` | User unit для QuickShell. |
| `fedora/khal-calendar/` | Rust-модуль календаря. |
| `fedora/mail-counter/` | Rust-счётчик непрочитанных писем Thunderbird. |
| `fedora/wallpapers/wallpaper.png` | Канонический wallpaper профиля. |
| `fedora/packages.txt` | Список пакетов Fedora. |
| `install.sh` | Переносимая установка ссылок и Rust-бинарников. |
Скрытые каталоги вроде `.git`, `.claude` и `.serena` относятся к инструментам
разработки, а не к desktop-профилю.
## Установка Fedora
Установить зависимости из [fedora/packages.txt](fedora/packages.txt):
```bash
sudo dnf install -y $(grep -vE '^[[:space:]]*(#|$)' fedora/packages.txt)
```
Для GPU нужен настроенный NVIDIA-драйвер с рабочим `nvidia-smi`. Затем запустить
установщик из любой директории:
```bash
./install.sh
```
Скрипт определяет свой корень автоматически, подключает конфигурации Fedora и
Neovim через ссылки в `$HOME/.config`, создаёт
`$HOME/.local/bin`, подключает QuickShell и systemd unit, создаёт ссылку
`$HOME/.config/wallpaper.png`, собирает оба Rust-модуля и устанавливает их в
`$HOME/.local/bin`.
Обычные файлы конфигурации не должны молча затираться установщиком: если на
месте ссылки уже лежит реальный файл или каталог, скрипт остановится и сообщит
об этом.
## QuickShell
Niri запускает `quickshell-control-center.service`, а unit запускает shell из
стабильной ссылки `$HOME/.config/quickshell/control-center`. После изменения
QML применить конфигурацию можно так:
```bash
systemctl --user daemon-reload
systemctl --user restart quickshell-control-center.service
```
Ручной запуск и IPC:
```bash
qs -p "$HOME/.config/quickshell/control-center"
qs ipc -p "$HOME/.config/quickshell/control-center" call controlcenter toggle
qs ipc -p "$HOME/.config/quickshell/control-center" call controlcenter close
qs ipc -p "$HOME/.config/quickshell/control-center" call osd volume_up
```
Bar показывает погоду, загрузку GPU, CPU, память, root filesystem, раскладку,
аудиовход, календарь и остальные интерактивные индикаторы. Температурные пороги
настраиваются в control center; отдельная старая панель больше не используется.
## Rust-модули
Установщик выполняет сборку автоматически. Для ручной пересборки:
```bash
mkdir -p "$HOME/.local/bin"
cargo build --release --manifest-path fedora/khal-calendar/Cargo.toml
install -m 755 fedora/khal-calendar/target/release/khal-calendar "$HOME/.local/bin/khal-calendar"
cargo build --release --manifest-path fedora/mail-counter/Cargo.toml
install -m 755 fedora/mail-counter/target/release/mail-counter "$HOME/.local/bin/mail-counter"
```
Календарь использует `khal`, а mail-counter читает Thunderbird
`global-messages-db.sqlite` и отдаёт JSON, который читает QuickShell.
## Neovim
Конфигурация использует lazy.nvim, native LSP API и встроенный Treesitter.
Leader — Space. Поддерживаемые языки: Rust, Zig, TypeScript/JavaScript и C/C++.
LSP-серверы:
- `rust-analyzer` через rustaceanvim;
- `clangd` и `ts_ls` через Mason;
- `zls` устанавливается отдельно в системе.
Первый запуск Neovim установит плагины. Затем можно установить парсеры:
```vim
:TSInstall rust zig typescript javascript tsx c cpp lua json yaml toml html css markdown bash
```
Если нужно подключить только Neovim вручную:
```bash
ln -sfn "$PWD/nvim" "${XDG_CONFIG_HOME:-$HOME/.config}/nvim"
```
## Правила работы с репозиторием
- Сначала читать этот `README.md`, затем целевой конфиг.
- `fedora/` — текущий source of truth для Fedora, Niri и QuickShell.
- Незакоммиченные правки пользователя сохранять; несвязанные файлы не откатывать.
- Проверять runtime-конфигурацию, если поведение системы расходится с текстом
checkout.
- Не добавлять секреты, токены, кэши, логи и машинный мусор.
- Markdown-документация живёт только в корневом `README.md`; новые инструкции
добавлять туда, а не создавать отдельные README.