Hyprland
Hyprland - тайловый оконный менеджер, который отличается встроенным набором из настроек внешнего вида (анимации, скругления, размытие и прочее никому не нужное =) ). Красивый, современный, быстрый WM.
Конфигурационный файл:
# импортирую файл с правилами окон, в какой-то момент я понял,
# что мне так удобнее
source = ~/.config/hypr/windowrule.conf
###############
### Монитор ###
###############
# Тут я установил только разрешение
monitor = eDP-1, 1920x1200@60, 0x0, 1
#######################################
### Переменные, хранящие приложения ###
#######################################
# Set programs that you use
$terminal = alacritty
$fileManager = nautilus
$menu = ~/.config/rofi/launchers/type-1/launcher.sh
##########################################
### Приложения, запускаемые с системой ###
##########################################
exec-once = hyprctl keyword "device[elan06fa:00-04f3:327e-touchpad]:enabled" false # отключение touchpad-а на hyprland
exec-once = swaybg -i /home/tehop/Изображения/Inkscape_proj/archwall.png
# запускается для fingerprint (отпечаток)
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1O
exec-once = waybar
exec-once = mako
exec-once = hypridle
exec-once = nm-applet
exec-once = mako
exec-once = firefox
exec-once = thunderbird
exec-once = Telegram
exec-once = hiddify
############################
### Переменные окружения ###
############################
# тут я ничего не трогал
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### Внешний вид ###
###################
general {
# внутренние и внешние отступы
gaps_in = 2
gaps_out = 4
# размер рамки вокруг активного окна
border_size = 1
# рамки для активных и неактивных окон
col.active_border = rgba(d8dee999)
col.inactive_border = rgba(2e343de6)
# не трогал
resize_on_border = false
allow_tearing = false
layout = dwindle
}
decoration {
# скругления окон
rounding = 10
# прозрачность активных и неактивных окон
active_opacity = 0.98
inactive_opacity = 0.96
# тени
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# размытие
blur {
enabled = true
size = 3
passes = 1
}
}
# анимации
animations {
enabled = yes, please :)
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# не трогал
dwindle {
preserve_split = true # You probably want this
}
master {
new_status = master
}
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}
########################
### Устройства ввода ###
########################
input {
# настройки клавиатуры (раскладка)
kb_layout = us,ru
kb_variant =
kb_model =
kb_options = grp:alt_shift_toggle
kb_rules =
# настройки мышки
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
# тачпад
touchpad {
natural_scroll = false
}
}
# не трогал
gestures {
gesture = 3, horizontal, workspace
}
device {
name = epic-mouse-v1
sensitivity = -0.5
}
##########################
### Комбинации клавиш ###
##########################
$mainMod = SUPER # клавиша для использования комбинаций (win)
bind = $mainMod, F, exec, hyprctl keyword "device[elan06fa:00-04f3:327e-touchpad]:enabled" false # выключить touchpad
bind = $mainMod, N, exec, hyprctl keyword "device[elan06fa:00-04f3:327e-touchpad]:enabled" true # включить touchpad
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, D, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, layoutmsg, togglesplit, # dwindle
# смена фокуса окон на рабочем пространстве
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, 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 = SUPER, R, submap, resize # (win + r) войти в режим / Esc выйти
submap = resize
binde = , right, resizeactive, 10 0
binde = , left, resizeactive, -10 0
binde = , up, resizeactive, 0 -10
binde = , down, resizeactive, 0 10
bind = , escape, submap, reset
submap = reset
# перемещение окон внутри рабочего пространства
# так же добавил из интернета
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
# пользовательские комбинации клавиш
bindel = $mainMod, T, exec, /opt/Telegram/Telegram
# запуск скриншотов по нажатию на комбинацию клавишь
bindel = $mainMod, P, exec, /usr/bin/flameshot gui
# не трогал, не пробовал
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# смена рабочий пространств зажатием win и скрола
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# изменение размера / перемещение окон с использованием мышки
# win + ПКМ изменение размера / win + ЛКП перемещение
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# настройки мультимедийных клавиш, которые я не трогал
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
Отдельно правила окон:
####################
### Правила окон ###
####################
workspace rules
windowrule {
name = org.gnome.Nautilus # имя приложения, которое вам нравится
match:class = org.gnome.Nautilus # class можно увидеть в списке окон командой (hyprctl clients)
# для удобства можно посмотреть только класс (hyprctl clients | grep class))
float = on # запустить в плавающем режиме
size = 980 800 # запустить с нужными размерами
}
windowrule {
name = firefox
match:class = firefox
workspace = 2 # запустить на втором рабочем столе
no_initial_focus = on # при запуске не фокусироваться на приложении
}
windowrule {
name = thunderbird
match:class = org.mozilla.Thunderbird
workspace = 5
no_initial_focus = on
}
windowrule {
name = telegram
match:class = org.telegram.desktop
workspace = 5
no_initial_focus = on
}
windowrule {
name = telegram media
# если title или class выводятся килиллицей, то оберните в эти символы
match:title = ^(.*Просмотр медиа.*)$ # title можно увидеть в списке окон командой (hyprctl clients)
# для удобства можно посмотреть только заголовок (hyprctl clients | grep title))
float = on
size = 1200 800
}
windowrule {
name = steam
match:class = steam
workspace = 4
no_initial_focus = on
}
windowrule {
name = lutris
match:class = net.lutris.Lutris
workspace = 4
no_initial_focus = on
}
windowrule {
name = pavucontrol
match:class = org.pulseaudio.pavucontrol
float = on
size = 600 400
move = 1055 44 # запустить в нужном положении
}
windowrule {
name = nomasc
match:class = org.nomacs.ImageLounge
float = on
size = 1200 780
}
windowrule {
name = kdenlivestart
match:class = org.kde.kdenlive
float = on
size = 425 402
}
windowrule {
name = galculator
match:class = galculator
float = on
size = 650 900
}
windowrule {
name = celluloid
match:initial_title = Celluloid
float = on
size = 1380 900
}
windowrule {
name = portproton
match:title = PortProton
float = on
size = 1380 900
}
windowrule {
name = tanki
match:title = ^(.*Lesta Game Center*)$
workspace = 4
}
windowrule {
name = calcurse
match:title = calcurse
float = on
size = 655 420
move = 1264 43
}
windowrule {
name = hiddify
match:title = Hiddify
workspace = 6
no_initial_focus = on
}
Сами конфиги можно найти во вкладке с готовыми конфигами.