dotfiles/.config/hypr/hyprland.conf

463 lines
12 KiB
Plaintext
Raw Permalink Normal View History

2026-03-09 00:07:31 -04:00
# ========
# ========
# !!MONITORS!! #
# --------------------------------------------------------------------------------- #
# !!MONITORS!! #
# run `hyprctl monitors all` to see all your monitors!!!
source = $XDG_CACHE_HOME/wal/colors-hyprland
source = $XDG_CONFIG_HOME/hypr/monitors.conf
source = $XDG_CONFIG_HOME/hypr/wallpaper.conf
exec-once = systemd-timer-notify &
exec-once = [workspace special:magic silent] discord
$fileManager = thunar
$menu = rofi -combi-modi window,drun -show combi -show-icons -theme-str 'window {width: 15%; height: 42%;}'
$browser = rofi -show file-browser-extended -show-icons -theme-str 'window {width: 20%; height: 32%;}'
# $emoji = rofi -modi "emoji:rofimoji" -show emoji -theme-str 'window {width: 20%; height: 12%;}'
# $calc = rofi -show calc -no-show-match -no-sort -theme-str 'window {width: 20%; height: 10%;}'
$screenshot = slurp | grim -g - - | wl-copy
$scripts = $XDG_CONFIG_HOME/hypr/scripts
$power = $scripts/power.sh
$notes = $scripts/notes.sh
$move = $scripts/move.sh
$actions = $scripts/actions.sh
# $picker = hyprpicker -a 2>/dev/null
$notifications = swaync-client -t
# Environment variables
env = ELECTRON_OZONE_PLATFORM_HINT,auto
env = XCURSOR_SIZE,24
env = XCURSOR_THEME,Posy_Cursor
env = HYPRCURSOR_SIZE,24
env = HYPRCURSOR_THEME,Posy_Cursor
$swpw_name = `(echo -n '90' && (hyprctl activeworkspace -j | jq -r '.name')) | sed 's/9090//g' | tr -d '\n'`
$special_workspace_per_workspace = hyprctl dispatch workspace $swpw_name
$move_to_special_workspace_per_workspace = hyprctl dispatch movetoworkspace $swpw_name
# Special Workspace per Workspace bindings
# !!INPUT!! #
# --------------------------------------------------------------------------------- #
# !!INPUT!! #
render = {direct_scanout=1}
# READ https://wiki.hyprland.org/Configuring/Variables/#input IF CONFUSED!
# Example keyboard/mouse input settings.
input {
kb_layout = us
# Set as needed
kb_rules =
kb_variant =
kb_model =
accel_profile = flat
follow_mouse = 1
force_no_accel = true
# Range is -1.0 to 1.0 | 0 means no modification to sensitivity.
sensitivity = 0
touchpad {
natural_scroll = false
}
}
cursor {
no_hardware_cursors = true
}
# !!DESIGN!! #
# --------------------------------------------------------------------------------- #
# !!DESIGN!! #
animations {
enabled = true
bezier = myBezier, 0, 1, 0.18, 1.0
animation = windows, 1, 1.5, myBezier
animation = windowsOut, 1, 2, myBezier, popin 95%
animation = border, 1, 12, myBezier
animation = borderangle, 1, 5, default
animation = fade, 1, 6, default
animation = workspaces, 1, 6, default
}
# The gaps between windows, as well as border colors.
# proportional to the taskbar values.
general {
# Inner and Outer gaps between windows.
gaps_in = 5
gaps_out = 20 14 20 20
# I prefer a thin border
border_size = 2
# Border colors.
col.active_border = $color0
col.inactive_border = $color1
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true
layout = dwindle
# READ https://wiki.hyprland.org/Configuring/Tearing/ BEFORE TURNING ON!
allow_tearing = false
}
# Window Decorations! Shadow, Blur, etc.
decoration {
rounding = 12
active_opacity = 1
inactive_opacity = 1
# Window Shadow
shadow:enabled = true
shadow:range = 16
shadow:render_power = 5
shadow:color = rgba(0,0,0,0.35)
# Transparent Window Blur
blur{
enabled = true
size = 2
passes = 3
vibrancy = 0.1696
}
}
# Read https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more info on dwindle layout.
dwindle {
pseudotile = true
preserve_split = true
}
# Read https://wiki.hyprland.org/Configuring/Master-Layout/ for more info on master layout.
master {
new_status = master
}
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
enable_anr_dialog = false
}
# No need for gestures unless you have a touch display.
gestures {
}
# !!KEYBINDS!! #
# --------------------------------------------------------------------------------- #
# !!KEYBINDS!! #
$mainMod = SUPER
bind = $mainMod Shift, L, exit
bind = $mainMod, Return, exec, $TERMINAL
bind = $mainMod, Q, killactive,
bind = $mainMod, G, exec, $screenshot
bind = $mainMod SHIFT, E, exec, $fileManager
bind = $mainMod, V, togglefloating
bind = $mainMod, F, fullscreen
bind = $mainMod, P, pseudo
bind = $mainMod, T, togglesplit
bindr = $mainMod, Tab, exec, pkill rofi || $menu
# bindr = $mainMod Shift, P, exec, pkill hyprpicker || $picker
# bindr = $mainMod Shift, C, exec, pkill rofi || $calc
bindr = $mainMod Shift, T, exec, pkill rofi || $toggles
bindr = $mainMod Shift, R, exec, pkill rofi || $power
bindr = $mainMod, E, exec, pkill rofi || $browser
bindr = $mainMod, N, exec, pkill rofi || $notes
# bindr = $mainMod Shift, M, exec, pkill rofi || $emoji
bindr = $mainMod Shift, Y, exec, pkill rofi || $scripts/runner
bindr = $mainMod, D, exec, pkill rofi || $actions
bindr = $mainMod Shift, W, exec, $move
bindr = $mainMod, W, exec, $move --same
bind = $mainMod, M, exec, pkill rmpc || kitty +kitten panel --edge center --layer overlay --focus-policy on-demand --margin-top 60 --margin-bottom 800 --margin-right 1200 --margin-left 22 rmpc
bind = $mainMod Shift, N, exec, $notifications
bind = $mainMod, A, exec, $special_workspace_per_workspace
bind = $mainMod SHIFT, A, exec, $move_to_special_workspace_per_workspace
# Switch current 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 a focused 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
# 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
bind = $mainMod, h, movefocus, l
bind = $mainMod, j, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, l, movefocus, d
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 and Resize windows with mainMod + LMB/RMB and dragging, drag on edges to resize.
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@ 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%-
# !!WINDOW RULES!! #
# --------------------------------------------------------------------------------- #
# !!WINDOW RULES!! #
# Read https://wiki.hyprland.org/Configuring/Window-Rules/ for more info
# Read https://wiki.hyprland.org/Configuring/Workspace-Rules/ for more info
layerrule {
name = layerrule-1
blur = on
match:namespace = rofi
}
layerrule {
name = layerrule-2
ignore_alpha = 0.01
match:namespace = rofi # This is so entirely transparent things aren't blurred.
}
# Add blur to waybar, for same reason as above. Since we have two versions
# of the waybar design, one with translucency.
layerrule {
name = layerrule-3
blur = on
blur_popups = on
match:namespace = waybar
}
layerrule {
name = layerrule-4
ignore_alpha = 1.0
match:namespace = waybar # this is so entirely transparent things aren't blurred.
}
# Add blur to eww widgets
layerrule {
name = layerrule-5
blur = on
blur_popups = on
ignore_alpha = 0.01
match:namespace = eww
}
# Fix dragging issues with XWayland
windowrule {
name = windowrule-1
no_focus = on
match:class = ^$
match:title = ^$
match:xwayland = 1
match:float = 1
match:fullscreen = 0
match:pin = 0
}
# -------------CUSTOMIZE BELOW------------------------
# Discord
windowrule {
name = windowrule-2
float = on
size = 1200 800
move = (200) (100)
workspace = special:magic
no_screen_share = on
match:class = ^(discord)$
}
# File manager + archiver
windowrule {
name = windowrule-3
float = on
center = on
size = 971 670
opacity = 0.8 0.7
match:class = .*(?i)(thunar)$
}
windowrule {
name = windowrule-4
float = on
center = on
size = 971 670
opacity = 0.8 0.7
match:class = ^(xarchiver)$
}
windowrule {
name = windowrule-5
float = on
center = on
size = 568 138
match:title = ^(File\ Operation\ Progress)$
}
windowrule {
name = windowrule-6
float = on
center = on
size = 971 670
opacity = 0.8 0.7
match:title = ^(Open.*)$
}
# XDG Portal
windowrule {
name = windowrule-7
float = on
center = on
size = 971 670
opacity = 0.8 0.7
match:class = ^(xdg-desktop-portal-gtk)$
}
# Runelite
windowrule {
name = windowrule-8
float = on
match:title = ^(RuneLite)$
}
# Notes dmenu app
windowrule {
name = windowrule-9
float = on
center = on
size = (monitor_w*0.2) (monitor_h*0.25)
opacity = 0.8 0.7
match:class = ^(notes)$
}
# Opacity rules
windowrule {
name = windowrule-10
opacity = 0.8 0.7
match:class = ^(kitty)$
}
windowrule {
name = windowrule-11
opacity = 0.8 0.7
match:class = ^(steam)$
}
windowrule {
name = windowrule-12
opacity = 0.8 0.7
match:class = ^(PrismLauncher)$
}
windowrule {
name = windowrule-13
float = on
match:class = ^(steam)$
match:title = ^(Friends\ List)$
}
windowrule {
name = windowrule-14
float = on
opacity = 0.8 0.7
match:class = ^(io.lampnet.*)$
}
windowrule {
name = windowrule-15
float = on
size = 1496 790
match:title = ^(System Update)$
}
windowrule {
name = windowrule-16
float = on
match:class = ^(mpv)$
}
windowrule {
name = windowrule-17
float = on
match:class = ^(feh)$
}
windowrule {
name = windowrule-18
border_size = 0
no_blur = on
no_shadow = on
match:class = ^(DeskPet)$
}
windowrule {
name = windowrule-19
float = on
move = 2240 54
match:title = ^(Photo\ Gallery)$
}
windowrule {
name = windowrule-20
float = on
move = 2240 54
match:title = ^(Music\ Controller)$
# no_blur = on
# no_shadow = on
}