Hyprland

 

Waybar – Highly Customizable Status Bar for LinuxHyprland - тайловый оконный менеджер, который отличается встроенным набором из настроек внешнего вида (анимации, скругления, размытие и прочее никому не нужное =) ). Красивый, современный, быстрый 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
}

Сами конфиги можно найти во вкладке с готовыми конфигами.