.dotfiles/.config/hypr/hyprland.conf
2025-10-30 18:33:12 +01:00

483 lines
16 KiB
Text

# #######################################################################################
# AUTOGENERATED HYPR CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
#autogenerated = 1 # remove this line to remove the warning
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiiki.hyprland.org/Configuring/Configuring-Hyprland/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DP-1,2560x1440@165,0x0,1,vrr,2
monitor=DP-2,preferred,auto,1, transform, 1
xwayland {
force_zero_scaling = true
}
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = konsole
$fileManager = nautilus
$menu = wofi --show drun
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = ~/.config/hypr/portal-setup.sh
exec-once = mako
exec-once = /usr/lib/polkit-kde-authentication-agent-1
exec-once = hyprpaper
#exec-once = ~/Capybara/scripts/hyprland_change_bg.sh
exec-once = waybar
exec-once = hypridle
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
exec-once = [workspace 2 silent] qutebrowser
exec-once = [workspace 1 silent] emacs
exec-once = [workspace special:aux silent] konsole
exec-once = vesktop
exec-once = steam
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt5ct
env = STEAM_GAMESCOPE_VRR_SUPPORTED,1
env = WLR_DRM_NO_ATOMIC,1
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 6
gaps_out = 15,10,10,10
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
#col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.active_border = rgb(ffb2ee) rgba(00ff99ee) rgb(FFFFFF) 90deg
col.inactive_border = rgba(ffffff7a) rgba(00ff997a) rgba(ffb2ee7a) 90deg #204, 136, 24
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = true
layout = master
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 10
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 0.96
dim_inactive = true
dim_strength = 0.12
dim_special = 0.1
shadow {
enabled = true
range = 40
render_power = 3
sharp = false
color = rgba(87658aff)
color_inactive = rgba(1a1a1aee)
offset = 5, 2
scale = 1.0
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
xray = false
noise = 0.0117
contrast = 0.8916
brightness = 1.0072
vibrancy = 0.2696
vibrancy_darkness = 0.2696
special = false
popups = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = true
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
# global
# ↳ windows - styles: slide, popin
# ↳ windowsIn - window open
# ↳ windowsOut - window close
# ↳ windowsMove - everything in between, moving, dragging, resizing.
# ↳ layers - styles: slide, popin, fade
# ↳ layersIn - layer open
# ↳ layersOut - layer close
# ↳ fade
# ↳ fadeIn - fade in for window open
# ↳ fadeOut - fade out for window close
# ↳ fadeSwitch - fade on changing activewindow and its opacity
# ↳ fadeShadow - fade on changing activewindow for shadows
# ↳ fadeDim - the easing of the dimming of inactive windows
# ↳ fadeLayers - for controlling fade on layers
# ↳ fadeLayersIn - fade in for layer open
# ↳ fadeLayersOut - fade out for layer close
# ↳ border - for animating the border's color switch speed
# ↳ borderangle - for animating the border's gradient angle - styles: once (default), loop
# ↳ workspaces - styles: slide, slidevert, fade, slidefade, slidefadevert
# ↳ specialWorkspace - styles: same as workspaces
# For animation style popin in windows, you can specify a minimum percentage to start from. For example, the following will make the animation 80% -> 100% of the size:
# animation=windows,1,8,default,popin 80%
# For animation styles slidefade and slidefadevert in workspaces, you can specify a movement percentage. For example, the following will make windows move 20% of the screen width:
# animation=workspaces,1,8,default,slidefade 20%
# For animation style slide in windows and layers you can specify a forced side, e.g.:
# animation=windows,1,8,default,slide left
# You can use top, bottom, left or right.
bezier = pop, 0.05, 0.8, 0.1, 1.10
bezier = layers, 0.25, 0.46, 0, 0.92
animation = windows, 1, 3, pop
animation = windowsOut, 1, 7, default, popin 80%
animation = layersIn, 1, 3, layers
animation = fade, 1, 3, default
animation = border, 1, 8, default
animation = borderangle, 1, 8, default
animation = workspaces, 1, 4, default
animation = workspaces, 1, 4, default, slidefade 40%
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
force_split = 2
smart_resizing = false
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
# no_gaps_when_only = 2
mfact = 0.55
# new_is_master = true
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
font_family = 0x Proto Nerd Font Mono
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. :(
vfr = true #Fullscreen stutter in fullscreen videos with this on, as if VRR was disabled
}
render {
# explicit_sync = 1
# explicit_sync_kms = 1
direct_scanout = false #Important!
}
group {
groupbar {
render_titles = true
font_family = 0x Proto Nerd Font Mono
height = 20
font_size = 10
stacked = false
text_color = rgba(674e69ff)
col.active = rgba(fadbf7ff)
col.inactive = rgba(E1D2CEff)
}
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options = eyy:eyymacs,shift:both_capslock
kb_rules =
accel_profile = flat
follow_mouse = 1
mouse_refocus = false
# 0 - Cursor movement will not change focus.
# 1 - Cursor movement will always change focus to the window under the cursor.
# 2 - Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window.
# 3 - Cursor focus will be completely separate from keyboard focus. Clicking on a window will not change keyboard focus.
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
# workspace_swipe = false
}
cursor {
no_hardware_cursors = true
no_break_fs_vrr = 2
inactive_timeout = 1
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
####################
### KEYBINDINGSS ###
####################
# See https://wiki.hyprland.org/Configuring/Keywords/
#$mainMod = MOD5 # Sets "RAlt" key as main modifier
$mainMod = SUPER
#$emergencyMod = SHIFT # for whenever kbd/evdev is reset, so that I don't have to open another tty
$secondaryMod = LCTRL
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, T, exec, $terminal
bind = $mainMod, F, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, C, pin,
bind = $mainMod, B, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
bind = $mainMod, R, exec, $menu
bind = $secondaryMod $emergencyMod, R, exec, $menu
bind = $secondaryMod, P, pseudo, # dwindle
bind = $secondaryMod, L, togglesplit, # dwindle
bind = $secondaryMod, P, layoutmsg, swapwithmaster # master ;
bind = $secondaryMod, code:47, layoutmsg, orientationnext # master
bind = $secondaryMod, M, layoutmsg, addmaster # master
bind = $secondaryMod, N, layoutmsg, removemaster # master
bind = $secondaryMod, Y, layoutmsg, mfact -0.1 # master
bind = $secondaryMod, U, layoutmsg, mfact +0.1 # master
bind = $secondaryMod, code:60, exec, wofi-emoji #. key
# Group management
bind = $secondaryMod, I, togglegroup,
bind = ALT, Tab, changegroupactive, f
bind = ALT SHIFT, Tab, changegroupactive, b
bind = $secondaryMod, L, moveintogroup, r
bind = $secondaryMod, K, moveintogroup, u
bind = $secondaryMod, J, moveintogroup, d
bind = $secondaryMod, H, moveintogroup, l
bind = $secondaryMod, O, moveoutofgroup, active
#resizeactive moveactive swapwindow movewindow
# Locks and exits
bind = $mainMod, F8, exec, hyprlock
bind = $mainMod, code:59, exec, makoctl dismiss -a #, key
bind = $mainMod, F9, exec, shutdown --no-wall && notify-send "Shutting down in 1 min!"
bind = $mainMod, F10, exec, shutdown --no-wall -c && notify-send "Shutdown aborted"
bind = $mainMod, F11, exit,
# bind = $mainMod, T, exec, hyprctl activewindow | grep pid | tr -d 'pid:' | xargs kill
# bind = $mainMod, C, killactive,
# Move focus
bind = $mainMod, h, movefocus, l
bind = $mainMod, j, movefocus, d
bind = $mainMod, k, movefocus, u
bind = $mainMod, l, movefocus, r
# Switch workspaces with mainMod + [0-9]
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 = $secondaryMod, 1, workspace, 1
bind = $secondaryMod, 2, workspace, 2
bind = $secondaryMod, 3, workspace, 3
bind = $secondaryMod, 4, workspace, 4
bind = $secondaryMod, 5, workspace, 5
bind = $secondaryMod, 6, workspace, 6
bind = $secondaryMod, 7, workspace, 7
bind = $secondaryMod, 8, workspace, 8
bind = $secondaryMod, 9, workspace, 9
bind = $secondaryMod, 0, workspace, 10
#Discord mute
bindln = , Pause, sendshortcut,CTRL SHIFT, m, class:^(vesktop)
# Move active window to a workspace with mainMod + SHIFT + [0-9]
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 = $secondaryMod SHIFT, 1, movetoworkspace, 1
bind = $secondaryMod SHIFT, 2, movetoworkspace, 2
bind = $secondaryMod SHIFT, 3, movetoworkspace, 3
bind = $secondaryMod SHIFT, 4, movetoworkspace, 4
bind = $secondaryMod SHIFT, 5, movetoworkspace, 5
bind = $secondaryMod SHIFT, 6, movetoworkspace, 6
bind = $secondaryMod SHIFT, 7, movetoworkspace, 7
bind = $secondaryMod SHIFT, 8, movetoworkspace, 8
bind = $secondaryMod SHIFT, 9, movetoworkspace, 9
bind = $secondaryMod SHIFT, 0, movetoworkspace, 10
# Special workspaces
bind = $mainMod, Tab, togglespecialworkspace, aux
bind = $mainMod SHIFT, Tab, movetoworkspace, special:aux
bind = $secondaryMod $emergencyMod, Tab, togglespecialworkspace, aux
bind = $secondaryMod, S, togglespecialworkspace, launchers
bind = $secondaryMod SHIFT, S, movetoworkspace, special:launchers
bind = $secondaryMod, D, togglespecialworkspace, comms
bind = $secondaryMod SHIFT, D, movetoworkspace, special:comms
# Scroll through existing workspaces with mainMod + scroll or ^J/^K
bind = $mainMod CTRL, K, workspace, e+1
bind = $mainMod CTRL, J, workspace, e-1
bind = SUPER, mouse_up, workspace, e+1
bind = SUPER, mouse_down, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
# Waybar
bind = $mainMod, Y, exec, pkill -SIGUSR1 waybar
bind = $mainMod, code:51, exec, pkill -SIGUSR2 waybar
bind = $mainMod, code:35, exec, waybar
# screenshot
bind= SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy && wl-paste > ~/Pictures/Screenshots/Screenshot-$(date +%F_%T).png | notify-send "Screenshot of the region taken" -t 3000 # screenshot of a region
bind = , Print, exec, grim - | wl-copy && wl-paste > ~/Pictures/Screenshots/Screenshot-$(date +%F_%T).png | notify-send "Screenshot of whole screen taken" -t 3000 # screenshot of the whole screen
bind = CTRL SHIFT, Print, exec, grim -g "$(slurp)" - | swappy -f - # screenshot of a region, sent to swappy
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
# windowrulev2 = immediate, class:^(StreetFighter6.exe)$
# Games rules
windowrulev2 = immediate, class:^(steam_app_\d+)
windowrulev2 = immediate, class:^(cs2)$
windowrulev2 = workspace 5, class:^(steam_app_\d+)
windowrulev2 = workspace 5, class:^(cs2)$
windowrulev2 = workspace 5, class:^(Bridge_Constructor_Portal.x86_64)$
# Make forked UIs appear on corresponding workspaces
windowrulev2 = workspace special:comms silent, class:^(vesktop)$
windowrulev2 = workspace special:launchers silent, class:^(steam)$
windowrulev2 = workspace special:launchers, class:^(steam)$,title:(^$)
windowrulev2 = workspace special:launchers, class:^(steam)$,title:(^*$)
windowrulev2 = workspace special:launchers, class:^(heroic)$
# Steam bugfix rules
windowrulev2 = nofocus, title:^()$,class:^(steam)$
windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$
# windowrulev2 = stayfocused,class:(steam),title:(^$)
# Steam window rules
windowrule = float,title:^(Create or select new Steam library folder)$
windowrule = float,title:^(Steam Settings)$
windowrule = float,title:^(0_Alert)$
# windowrule = workspace special:game,title:^(Steam Big Picture Mode)$
# windowrule = tile,title:^(Steam Big Picture Mode)$
#No gaps when only substitute
workspace = w[tv1], shadow:false, gapsout:0, gapsin:0
workspace = f[1], shadow:false, gapsout:0, gapsin:0
windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
# Layer rules
layerrule = dimaround, wofi
#layerrule = noanim, selection