# ~/.config/home-manager/desktop/hyprland/hyprland.conf
# Актуализированная конфигурация Hyprland (v0.34.0+)
# --- Мониторы ---
# Автоопределение обычно работает для одного монитора. Используй hyprctl monitors для имен.
monitor=,preferred,auto,1
# monitor=DP-1,1920x1080@144,0x0,1 # Пример
# --- Автозапуск ---
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland # Важно для D-Bus
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # Важно для systemd --user
exec-once = hyprpaper & # Запуск обоев
exec-once = waybar & # Запуск панели
exec-once = dunst & # Запуск демона уведомлений (используем dunst вместо mako)
exec-once = wl-paste --watch cliphist store & # Запуск истории буфера обмена
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & # Агент Polkit (путь может отличаться в NixOS, но пакет установлен)
exec-once = nm-applet --indicator & # Апплет NetworkManager
# --- Переменные Окружения ---
# Устанавливаются через home.sessionVariables, но можно дублировать для надежности
env = XCURSOR_SIZE,24
env = HYPRCURSOR_THEME, capitaine-cursors # Пример темы курсора (нужно установить пакет)
env = HYPRCURSOR_SIZE,24
# env = LIBVA_DRIVER_NAME,nvidia # Уже должно быть из sessionVariables
# env = GBM_BACKEND,nvidia-drm # Уже должно быть из sessionVariables
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia # Уже должно быть из sessionVariables
# env = WLR_NO_HARDWARE_CURSORS,1 # Уже должно быть из sessionVariables
env = QT_QPA_PLATFORMTHEME,qt5ct # Для тем Qt, если используешь qt5ct
# env = QT_STYLE_OVERRIDE,kvantum # Если используешь Kvantum
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
# --- Ввод ---
input {
kb_layout = us,ru
kb_options = grp:alt_shift_toggle,ctrl:nocaps # Alt+Shift переключает, Caps Lock как Ctrl
kb_rules =
follow_mouse = 1 # Фокус следует за мышью
numlock_by_default = true
repeat_rate = 50
repeat_delay = 250
touchpad {
natural_scroll = no
disable_while_typing = true
clickfinger_behavior = true # Клик одним пальцем = ЛКМ
middle_emulation = false # Клик двумя пальцами = ПКМ (если true)
}
sensitivity = 0.0 # [-1.0; 1.0], 0 = по умолчанию
accel_profile = flat # 'adaptive' или 'flat'
}
# --- Основные Настройки ---
general {
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(81A1C1ee) rgba(5E81ACee) 45deg # Nord Frost 2 & 1
col.inactive_border = rgba(4C566Aaa) # Nord Polar Night 3
layout = dwindle
allow_tearing = false # Обычно false лучше
}
# --- Декорации ---
decoration {
rounding = 10
# Тени
drop_shadow = yes
shadow_range = 15
shadow_render_power = 3
col.shadow = rgba(2E344088) # Nord Polar Night 1 (полупрозрачный)
# Размытие (опционально, влияет на производительность)
blur {
enabled = true
size = 8
passes = 4 # 3-4 обычно достаточно
new_optimizations = on
ignore_opacity = true # Размывать даже если окно прозрачное
xray = false # Не "просвечивать" размытые окна
}
# Затемнение неактивных окон
dim_inactive = true
dim_strength = 0.15
}
# --- Анимации ---
animations {
enabled = yes
# Анимации окон, границ, затухания, рабочих столов
bezier = linear, 0.0, 0.0, 1.0, 1.0
bezier = smoothOut, 0.36, 0, 0.66, -0.56
bezier = smoothIn, 0.25, 1, 0.5, 1
animation = windows, 1, 5, smoothOut, slide
animation = windowsOut, 1, 5, smoothIn, slide
animation = border, 1, 10, linear
animation = borderangle, 1, 30, linear, loop # Вращение градиента рамки
animation = fade, 1, 5, smoothIn
animation = fadeDim, 1, 5, smoothIn # Анимация затемнения
animation = workspaces, 1, 6, smoothOut, slidevert # Слайд вверх/вниз
}
# --- Тайлинг ---
dwindle {
pseudotile = yes
preserve_split = yes
force_split = 0 # 0=auto, 1=right, 2=down
no_gaps_when_only = false # Оставлять отступы, даже если окно одно
}
master {
new_is_master = true
no_gaps_when_only = false
}
# --- Жесты ---
gestures {
workspace_swipe = true # Свайп 3 пальцами для переключения столов
workspace_swipe_fingers = 3
workspace_swipe_distance = 300
workspace_swipe_invert = true # Инвертировать направление
}
# --- Разное ---
misc {
disable_hyprland_logo = true
disable_splash_rendering = true # Отключить сплеш
vfr = true # Перерисовка по необходимости
vrr = 0 # 0=off, 1=on, 2=fullscreen (для Adaptive Sync)
enable_swallow = true # Поглощение терминала при запуске GUI из него
swallow_regex = ^(kitty|alacritty|foot)$ # Какие терминалы могут поглощаться
focus_on_activate = true # Передавать фокус приложению, которое его запросило
force_default_wallpaper = -1 # Не устанавливать обои по умолчанию
}
# --- Бинды ---
$mainMod = SUPER
# Основные действия
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, Q, exit, # Выход
bind = $mainMod, F, togglefloating, # Плавающий режим
bind = $mainMod SHIFT, F, fullscreen, 0 # Полный экран
bind = $mainMod, P, pseudo, # Псевдо-тайлинг
bind = $mainMod, J, togglesplit, # Смена разделения
# Запуск приложений
bind = $mainMod, RETURN, exec, kitty # Терминал
bind = $mainMod, D, exec, wofi --show drun -I -p "Run:" # Лаунчер (drиn = приложения)
bind = $mainMod, B, exec, firefox # Браузер
bind = $mainMod, E, exec, kate # Редактор
# Перемещение фокуса
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d # Переопределяем J для фокуса вниз
# Перемещение окон
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
# Переключение столов
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Перемещение окон на столы
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Скроллинг столов
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Перемещение/изменение размера мышью
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Скриншоты (grim + slurp)
bind = , Print, exec, grim - | wl-copy # Весь экран в буфер
bind = SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy # Область в буфер
bind = $mainMod, Print, exec, grim ~/Pictures/Screenshots/$(date +'%Y-%m-%d_%H%M%S').png # Весь экран в файл
bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +'%Y-%m-%d_%H%M%S').png # Область в файл
# Буфер обмена (cliphist + wofi)
bind = $mainMod, V, exec, cliphist list | wofi --dmenu -p "Clipboard" | cliphist decode | wl-copy
# Блокировка
bind = $mainMod CTRL, L, exec, swaylock -f -c 000000
# Управление звуком (wpctl)
bindle=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ # Повысить громкость (le = lock + execute)
bindle=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- # Понизить
bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # Выкл/Вкл звук (l = lock)
# Управление яркостью (brightnessctl)
bindle=, XF86MonBrightnessUp, exec, brightnessctl set 5%+ # Увеличить яркость
bindle=, XF86MonBrightnessDown, exec, brightnessctl set 5%- # Уменьшить
# --- Правила для Окон ---
# Плавающие окна
windowrulev2 = float, class:^(pavucontrol|blueman-manager|nm-connection-editor|org\.kde\.ark|file-roller)$
windowrulev2 = float, title:^(Calculator|File Operation Progress|Confirm|Save As|About)$
windowrulev2 = float, class:^(xdg-desktop-portal-.*)$
# Задать размер некоторым плавающим окнам
windowrulev2 = size 800 600, class:^(pavucontrol|nm-connection-editor)$
windowrulev2 = center, class:^(pavucontrol|nm-connection-editor)$
# Задать прозрачность терминалу Kitty
windowrulev2 = opacity 0.9 0.8, class:^(kitty)$
Can you please edit your post and add proper codefences?
```nix
# your code
```
One way to achieve this is to select all the code and then hit the </>
button.
format seems to have changed at some point for shadow
# for eg. this should work now
shadow {
enabled = true
range = 8
render_power = 2
color = rgba(00000044)
}
similarly look for other option related errors in the docs site I linked above.