Files
dotfiles/.config/hypr/hyprland.conf
Matthias Puchstein 5ee73af33d [feat](auto-start): Add %U argument to Exec line for VeSktop auto-start script, add Terminal=false
[feat](hyprland): Add new workspace for KeePassXC with float, size, and centered properties
[style](hyprland): Add workspace rules for communication applications and system applications
2025-09-22 20:29:29 +02:00

331 lines
9.3 KiB
Plaintext

################
### MONITORS ###
################
source = ~/.config/hypr/monitors.conf
source = ~/.config/hypr/workspaces.conf
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
source = ~/.config/hypr/conf.d/autostart.conf
##############
### COLORS ###
##############
source = ~/.config/hypr/conf.d/theme.conf
#############################
### ENVIRONMENT VARIABLES ###
#############################
# uwsm handles those
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 5,5,5,5
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = $border_active
col.inactive_border = $border_inactive
col.nogroup_border = $border_nogroup_inactive
col.nogroup_border_active = $border_nogroup_active
# 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 = false
layout = master
}
render {
new_render_scheduling = true
}
cursor {
hide_on_key_press = true # Hide cursor when typing
persistent_warps = true # Cursor returns to last position in window
warp_on_change_workspace = true # Move cursor to focused window on workspace switch
inactive_timeout = 0
zoom_factor = 1.0
zoom_rigid = false
enable_hyprcursor = true
sync_gsettings_theme = true
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 5
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
# Dim inactive windows
dim_modal = true
dim_inactive = true
dim_strength = 0.1
shadow {
enabled = false
range = 4
render_power = 3
color = $dec_shadow
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# 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 = 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
animation = specialWorkspace, 1, 1.5, easeOutQuint, slidevert
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], 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]
# 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
smart_split = true
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
orientation = center
center_master_fallback = left
slave_count_for_center_master = 4
mfact = 0.60
new_status = slave
new_on_top = true
new_on_active = after
inherit_fullscreen = true
allow_small_split = false
special_scale_factor = 0.8
drop_at_cursor = true
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
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. :(
vrr = 2
vfr = true
mouse_move_enables_dpms = true
key_press_enables_dpms = true
layers_hog_keyboard_focus = true
mouse_move_focuses_monitor = true
col.splash = $splash_text
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = ultimatekeys
kb_options = caps:escape_shifted_capslock
numlock_by_default = true
repeat_rate = 25
repeat_delay = 600
follow_mouse = 1
mouse_refocus = true
float_switch_override_focus = 2
special_fallthrough = true
touchpad {
disable_while_typing = true
scroll_factor = 1.0
tap-to-click = true
}
}
# 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
#}
###################
### KEYBINDINGS ###
###################
source = ~/.config/hypr/conf.d/keybinds.conf
##############
### Groups ###
##############
group {
auto_group = true
insert_after_current = true
focus_removed_window = true
drag_into_group = 1
merge_groups_on_drag = true
merge_groups_on_groupbar = true
merge_floated_into_tiled_on_groupbar = true
group_on_movetoworkspace = false
col.border_active = $border_group_active
col.border_inactive = $border_group_inactive
col.border_locked_active = $border_grouplocked_active
col.border_locked_inactive = $border_grouplocked_active
groupbar{
enabled = true
height = 12
font_family = InconsolataGo Nerd Font Mono
font_size = 8
font_weight_active = semibold
font_weight_inactive = normal
stacked = false
gradients = true
gradient_rounding = 5
indicator_height = 0
rounding = 0
gradient_round_only_edges = true
text_color = $groupbar_text
col.active = $groupbar_active
col.inactive = $groupbar_inactive
col.locked_active = $groupbar_grouplocked_active
col.locked_inactive = $groupbar_grouplocked_inactive
gaps_out = 0
gaps_in = 0
render_titles = true
scrolling = true
priority = 3
}
}
##############################
### 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)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
## ========== Special Workspaces ==========
workspace = special:keepass, on-created-empty:keepassxc
windowrule = float, class:org.keepassxc.KeePassXC
windowrule = noscreenshare, class:org.keepassxc.KeePassXC
windowrule = size 60%, 60%, class:org.keepassxc.KeePassXC
windowrule = center, class:org.keepassxc.KeePassXC
## ========== Communication ==========
# Mumble & Discord & TeamSpeak
windowrule = workspace 2, class:^(info\.mumble\.Mumble|discord|TeamSpeak|vesktop)$
# Signal & Element
windowrule = workspace 1, class:^(signal|Element)$
## ========== Multimedia ==========
windowrule = workspace 10, class:Spotify
### ========== Development ==========
#windowrulev2 = float, class:jetbrains-webstorm, title:Welcome to WebStorm
#windowrulev2 = size 1080 720, class:jetbrains-webstorm, title:Welcome to WebStorm
## ========== Gaming ==========
# Steam & Battle.net & Lutris
windowrule = workspace 3, class:^(steam|battle\.net\.exe|net\.lutris\.Lutris)$
## ========== System ==========
windowrule = float, class:com.saivert.pwvucontrol
windowrule = float, class:scrrec
windowrule = pin, class:scrrec
windowrule = idleinhibit always, class:scrrec
windowrule = rounding 10, class:scrrec
windowrule = opacity 0.6, class:scrrec
windowrule = noborder, class:scrrec
windowrule = size 300 100, class:scrrec
windowrule = move 1% 1%, class:scrrec
windowrule = monitor 0, class:scrrec
windowrule = noinitialfocus, class:scrrec
windowrule = float, class:com.gabm.satty
windowrule = size >700 >400, class:com.gabm.satty
# Blur swaync
#layerrule = blur, swaync-control-center
#layerrule = blur, swaync-notification-window
#layerrule = ignorezero, swaync-control-center
#layerrule = ignorezero, swaync-notification-window
#layerrule = ignorealpha, swaync-control-center
#layerrule = ignorealpha, swaync-notification-window