docs: added readme #5

Merged
pyrschtjag merged 1 commits from add_readme into main 2026-04-04 01:49:16 +04:00
8 changed files with 78 additions and 8 deletions
+71 -1
View File
@@ -1,2 +1,72 @@
# dotfiles-hypr
# Hyprland Dotfiles
Кастомное окружение рабочего стола для **Hyprland**, сфокусированное на производительности и глубокой интеграции с системными событиями через **Eww**. Обновление интерфейса происходит мгновенно по сигналу от системы, а не по тяжелым таймерам.
## Стек
| Компонент | Технология | Описание |
| :--- | :--- | :--- |
| **Window Manager** | Hyprland | Wayland-композитор с динамическими воркспейсами. |
| **Widget system** | Eww | Отрисовка баров и виджетов на базе GTK. |
| **State Management** | Python / Socat | Скрипты-демоны для обработки IPC-событий. |
| **Notification** | Dunst | Легковесный демон уведомлений. |
| **Application Launcher** | Rofi | Переписанный под Wayland лаунчер с кастомной темой. |
---
## Архитектурные особенности
### 1. unified workspace management (ipc)
В отличие от стандартных модулей, здесь используется `UnifiedWorkspaceManager` на Python.
* **Механизм:** Скрипт подключается к Unix-сокету Hyprland (`.socket2.sock`) и слушает поток событий (`openwindow`, `closewindow`, `activewindow`).
* **Оптимизация:** Обновление json-состояния происходит только при изменении структуры окон, что сводит нагрузку на cpu к минимуму.
* **Визуализация:** Поддержка динамических иконок приложений и индикация состояния `urgent` (через css-анимацию `pulse-lavender`).
<video src="assets/eww_left.mkv" width="100%" autoplay loop muted></video>
### 2. Системный мониторинг и управление
Комплекс виджетов в правой части панели разделен на независимые модули:
* **Audio Subsytem:** Использует `pactl subscribe`. Виджет мгновенно отражает изменения громкости, сделанные горячими клавишами, без опроса системы в цикле.
* **Hardware Stats:** Мониторинг cpu (avg), ram и nvidia gpu temp. Реализована логика визуального предупреждения: при достижении критических температур (75°C+) или нагрузки (90%+), виджет переходит в состояние `.alert`, меняя визуальный стиль.
* **Keyboard LED Monitor:** Реализован через прямую прослушку `/dev/input/` с использованием библиотеки `evdev`. Позволяет отображать состояние Caps/Num Lock даже если они переключаются внешними скриптами.
<video src="assets/eww_right.mkv" width="100%" autoplay loop muted></video>
## Dunst & Rofi Integration
Уведомления и лаунчер полностью синхронизированы по цветам и радиусам скругления с основным баром, создавая единое визуальное пространство.
<details>
<summary>Превью Dunst и Rofi</summary>
#### Dunst (Notifications)
<video src="assets/dunst.mkv" width="80%" autoplay loop muted></video>
#### Rofi (App Launcher)
<video src="assets/rofi.mkv" width="80%" autoplay loop muted></video>
</details>
## Зависимости
Установите необходимые пакеты через ваш менеджер пакетов:
```Bash
# core & ipc
eww socat
# audio & input
pactl python-evdev
# telemetry (nvidia)
nvidia-smi
```
## Инициализация
Для корректной инициализации слоев используйте open-many в конфиге Hyprland:
```Conf
exec-once = eww daemon && eww open-many bar_0 bar_1 wallpaper_0 wallpaper_1
```
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+5 -5
View File
@@ -1,14 +1,14 @@
[global]
font = Inter, FiraCode Nerd Font 11
format = "<b>%s</b>\n%b" // заголовок жирным, переход на строку, тело
format = "<b>%s</b>\n%b"
alignment = left
vertical_alignment = center
word_wrap = yes // перенос длинных строк
word_wrap = yes
width = (0, 350)
height = (0, 110)
offset = (35, 65)
origin = top-right
follow = keyboard // на мониторе, где фокус клавиатуры
follow = keyboard
corner_radius = 10
padding = 15
horizontal_padding = 15
@@ -24,8 +24,8 @@
progress_bar_max_width = 320
icon_position = mouse_left_click
max_icon_size = 64
mouse_left_click = do_action, close_current // лкм: действие и закрыть
mouse_right_click = close_all // пкм: закрыть все
mouse_left_click = do_action, close_current
mouse_right_click = close_all
[urgency_low]
background = "#363a4fe6"
+2 -2
View File
@@ -166,7 +166,7 @@ separator {
.stats-pill {
padding: 0 6px;
.slide-wrapper { transition: all $t-fase ease-in-out; }
.slide-wrapper { transition: all $t-fast ease-in-out; }
&.alert {
border-color: $red;
@@ -188,7 +188,7 @@ separator {
@extend .capsule;
.icon { margin-right: 14px; }
.slide-wrapper { transition: all $t-fase ease-in-out; }
.slide-wrapper { transition: all $t-fast ease-in-out; }
&.muted {
border-color: #444;