Prevent `exec`/`exec-once` processes which terminate very early (before Hyprland declares that it does not want to reap zombies) from getting stuck as zombie processes.
341 lines
9.9 KiB
Text
341 lines
9.9 KiB
Text
# This is an example Hyprland config file.
|
|
# Refer to the wiki for more information.
|
|
# https://wiki.hyprland.org/Configuring/
|
|
|
|
# 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=HEADLESS-1,1920x1080@60,auto-right,1
|
|
monitor=HEADLESS-2,1920x1080@60,auto-right,1
|
|
monitor=HEADLESS-3,1920x1080@60,auto-right,1
|
|
monitor=HEADLESS-4,1920x1080@60,auto-right,1
|
|
monitor=HEADLESS-5,1920x1080@60,auto-right,1
|
|
monitor=HEADLESS-6,1920x1080@60,auto-right,1
|
|
monitor=HEADLESS-PERSISTENT-TEST,1920x1080@60,auto-right,1
|
|
|
|
monitor=,disabled
|
|
|
|
|
|
###################
|
|
### MY PROGRAMS ###
|
|
###################
|
|
|
|
# See https://wiki.hyprland.org/Configuring/Keywords/
|
|
|
|
# Set programs that you use
|
|
$terminal = kitty
|
|
$fileManager = dolphin
|
|
$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 = sleep 0 # Terminates very quickly
|
|
# exec-once = $terminal
|
|
# exec-once = nm-applet &
|
|
# exec-once = waybar & hyprpaper & firefox
|
|
|
|
|
|
#############################
|
|
### ENVIRONMENT VARIABLES ###
|
|
#############################
|
|
|
|
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
|
|
|
env = XCURSOR_SIZE,24
|
|
env = HYPRCURSOR_SIZE,24
|
|
|
|
|
|
#####################
|
|
### LOOK AND FEEL ###
|
|
#####################
|
|
|
|
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
|
|
|
# https://wiki.hyprland.org/Configuring/Variables/#general
|
|
general {
|
|
gaps_in = 5
|
|
gaps_out = 20
|
|
|
|
border_size = 2
|
|
|
|
snap {
|
|
enabled = true
|
|
window_gap = 8
|
|
monitor_gap = 10
|
|
respect_gaps = false
|
|
border_overlap = false
|
|
}
|
|
|
|
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
|
col.inactive_border = rgba(595959aa)
|
|
|
|
# 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 = dwindle
|
|
}
|
|
|
|
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
|
decoration {
|
|
rounding = 10
|
|
rounding_power = 2
|
|
|
|
# Change transparency of focused and unfocused windows
|
|
active_opacity = 1.0
|
|
inactive_opacity = 1.0
|
|
|
|
shadow {
|
|
enabled = true
|
|
range = 4
|
|
render_power = 3
|
|
color = rgba(1a1a1aee)
|
|
}
|
|
|
|
# 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 = 0
|
|
|
|
# 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
|
|
}
|
|
|
|
device {
|
|
name = test-mouse-1
|
|
enabled = true
|
|
}
|
|
|
|
# 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
|
|
split_bias = 1
|
|
}
|
|
|
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
master {
|
|
new_status = master
|
|
}
|
|
|
|
# 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. :(
|
|
}
|
|
|
|
|
|
#############
|
|
### INPUT ###
|
|
#############
|
|
|
|
# https://wiki.hyprland.org/Configuring/Variables/#input
|
|
input {
|
|
kb_layout = us
|
|
kb_variant =
|
|
kb_model =
|
|
kb_options =
|
|
kb_rules =
|
|
|
|
follow_mouse = 1
|
|
|
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
|
|
touchpad {
|
|
natural_scroll = false
|
|
}
|
|
}
|
|
|
|
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
|
gestures {
|
|
|
|
}
|
|
|
|
# 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
|
|
}
|
|
|
|
debug {
|
|
disable_logs = false
|
|
}
|
|
|
|
|
|
###################
|
|
### KEYBINDINGS ###
|
|
###################
|
|
|
|
# See https://wiki.hyprland.org/Configuring/Keywords/
|
|
$mainMod = SUPER # Sets "Windows" key as main modifier
|
|
|
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
bind = $mainMod, Q, exec, $terminal
|
|
bind = $mainMod, C, killactive,
|
|
bind = $mainMod, M, exit,
|
|
bind = $mainMod, E, exec, $fileManager
|
|
bind = $mainMod, V, togglefloating,
|
|
bind = $mainMod, R, exec, $menu
|
|
bind = $mainMod, P, pseudo, # dwindle
|
|
bind = $mainMod, J, togglesplit, # dwindle
|
|
|
|
# Move focus with mainMod + arrow keys
|
|
bind = $mainMod, left, movefocus, l
|
|
bind = $mainMod, right, movefocus, r
|
|
bind = $mainMod, up, movefocus, u
|
|
bind = $mainMod, down, movefocus, d
|
|
|
|
# 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
|
|
|
|
# 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
|
|
|
|
# Example special workspace (scratchpad)
|
|
bind = $mainMod, S, togglespecialworkspace, magic
|
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
|
|
|
# Scroll through existing workspaces with mainMod + scroll
|
|
bind = $mainMod, mouse_down, workspace, e+1
|
|
bind = $mainMod, mouse_up, workspace, e-1
|
|
|
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
bindm = $mainMod, mouse:272, movewindow
|
|
bindm = $mainMod, mouse:273, resizewindow
|
|
|
|
# Laptop multimedia keys for volume and LCD brightness
|
|
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @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
|
|
|
|
##############################
|
|
### 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.
|
|
windowrulev2 = suppressevent maximize, class:.*
|
|
|
|
# Fix some dragging issues with XWayland
|
|
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
|
|
|
# Workspace "windows" is a smart gaps one
|
|
workspace = n[s:window] w[tv1], gapsout:0, gapsin:0
|
|
workspace = n[s:window] f[1], gapsout:0, gapsin:0
|
|
windowrulev2 = bordersize 0, floating:0, onworkspace:n[s:window] w[tv1]
|
|
windowrulev2 = rounding 0, floating:0, onworkspace:n[s:window] w[tv1]
|
|
windowrulev2 = bordersize 0, floating:0, onworkspace:n[s:window] f[1]
|
|
windowrulev2 = rounding 0, floating:0, onworkspace:n[s:window] f[1]
|
|
|
|
gesture = 3, left, dispatcher, exec, kitty
|
|
gesture = 3, right, float
|
|
gesture = 3, up, close
|
|
gesture = 3, down, fullscreen
|
|
|
|
gesture = 3, down, mod:ALT, float
|
|
|
|
gesture = 3, horizontal, mod:ALT, workspace
|
|
|
|
gesture = 4, up, dispatcher, sendshortcut, ctrl, d, activewindow
|
|
gesture = 4, left, dispatcher, movecursortocorner, 1
|
|
|
|
windowrule = float, pin, class:wr_kitty
|
|
windowrule = size 200 200, class:wr_kitty
|
|
windowrule = unset pin, class:wr_kitty
|