dotfiles/dot_config/hypr/hyprland.conf
2026-03-29 22:48:41 +03:00

315 lines
8.5 KiB
Text

################
### MONITORS ###
################
monitor=DP-2,3840x2160@160,0x0,1.5
xwayland {
force_zero_scaling = true
}
###################
### MY PROGRAMS ###
###################
$terminal = uwsm app -- kitty
$browser = uwsm app -- zen-browser
$hyprlock = uwsm app -- hyprlock
$hyprshot = uwsm app -- hyprshot
$menu = uwsm app -- fuzzel
#################
### AUTOSTART ###
#################
exec-once = uwsm app -- udiskie
exec-once = uwsm app -- waybar
exec-once = uwsm app -- dunst
exec-once = uwsm app -- wl-paste --watch cliphist store
exec-once = uwsm app -- hypridle
exec-once = uwsm app -- hyprpaper
exec-once = uwsm app -- hyprsunset
exec-once = [workspace 1] $terminal
exec-once = [workspace 2 silent] $browser
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
# Environment variables stored in ~/.config/uwsm/env and ~/.config/uwsm/env-hyprland
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 0
gaps_out = 0
border_size = 1
col.active_border = rgba(00dd00ff) rgba(006600ff) 90deg
col.inactive_border = rgba(646464ff)
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = true
layout = dwindle
snap {
enabled = true
window_gap = 4
monitor_gap = 6
respect_gaps = true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 0
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = false
range = 4
render_power = 3
color = rgba(151515ee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = false
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
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 = windows, 1, 1, quick
animation = windowsOut, 1, 0.5, linear, slide
animation = layers, 1, 1, quick
animation = fade, 0, 2, linear
animation = fadeDpms, 1, 4, linear
animation = fadeLayersOut, 0, 1, almostLinear
animation = workspacesIn, 1, 0.5, quick
animation = workspacesOut, 1, 0.7, quick
}
# Smart gaps: https://wiki.hyprland.org/Configuring/Workspace-Rules/#smart-gaps
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
preserve_split = true
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
disable_hyprland_logo = true
vfr = true
vrr = 2
enable_swallow = true
swallow_regex = ^(kitty)$
swallow_exception_regex = ^(xev|wev|vkcube|glxgears|kitty).*
allow_session_lock_restore = 1
on_focus_under_fullscreen = 1
}
ecosystem {
enforce_permissions = true
}
permission = /usr/bin/grim, screencopy, allow
permission = /usr/(lib|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = ee
kb_variant =
kb_model =
kb_options = fkeys:basic_13-24
kb_rules =
follow_mouse = 1
sensitivity = -0.05 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
scroll_factor = 0.6
disable_while_typing = false
}
}
device {
name = falbatech-redox
kb_layout = us
kb_options = fkeys:basic_13-24
}
device {
name = falbatech-redox-mouse
sensitivity = -0.5
accel_profile = flat
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
gesture = 3, horizontal, workspace
gesture = 3, up, mod: SUPER, fullscreen
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, Q, exec, $browser
bind = $mainMod, W, killactive,
bind = $mainMod CTRL SHIFT, Q, exit,
bind = $mainMod, C, togglefloating,
bind = $mainMod, SPACE, exec, $menu
bind = $mainMod SHIFT, J, togglesplit, # dwindle
bind = $mainMod, F, fullscreen, 1
bind = $mainMod SHIFT, F, fullscreen, 0
# Hyprlock
bind = $mainMod SHIFT, L, exec, $hyprlock
# Cliphist
bind = $mainMod, V, exec, cliphist list | fuzzel -d -w 75 --select-index 1 | cliphist decode | wl-copy
# Hyprshot
bind = $mainMod SHIFT, S, exec, $hyprshot -m region --clipboard-only
bind = $mainMod SHIFT CTRL, S, exec, $hyprshot -m window --clipboard-only
bind = $mainMod SHIFT ALT, S, exec, $hyprshot -m output --clipboard-only
bind = $mainMod SHIFT, B, exec, bluetoothctl -- connect "$(bluetoothctl -- devices Paired | cut -f2- -d ' ' | fuzzel -d -l 8 | cut -f1 -d ' ')"
bind = $mainMod SHIFT, A, exec, ~/scripts/select-audio-sink.sh
# Move focus
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
bind = $mainMod, period, layoutmsg, move +col
bind = $mainMod, comma, layoutmsg, move -col
# Switch workspaces
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
# Move active window to a workspace
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 SHIFT CTRL, TAB, movecurrentworkspacetomonitor, +1
# Move/resize windows
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ && ~/scripts/volume-control.sh
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- && ~/scripts/volume-control.sh
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && ~/scripts/volume-control.sh
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
# Laptop lid
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "HDMI-A-1, 1920x1080@120, 0x0, 1"
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, 1920x1080@60, 0x0, 1.25"
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "HDMI-A-1, disable"
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# No border when only 1 window or window is fullscreen
windowrule = match:workspace w[1], match:class negative:^(steam)$, match:title negative:Steam, border_size 0
windowrule = match:workspace f[1-2], border_size 0
windowrule {
name = pavucontrol-float
match:class = ^(org.pulseaudio.pavucontrol)$
match:title = ^(Volume Control)$
float = 1
center = 1
size = (0.35*monitor_w) (0.4*monitor_h)
}
windowrule {
name = showmethekey-float
match:class = ^(showmethekey-gtk)$
float = 1
border_size = 0
}
windowrule {
name = steam-popup-float
match:class = ^(steam)$
match:title = negative:Steam
float = 1
}
windowrule {
name = gaming
match:class = ^(steam_app_\d+|cs2)$
workspace = 10
immediate = 1
fullscreen = 1
}