Files
dotfiles/hypr/hyprland.conf
T

456 lines
12 KiB
Plaintext
Raw Normal View History

2026-01-06 10:20:10 -06:00
source = ~/.config/hypr/colorscheme.conf
2024-06-25 04:13:51 -05:00
# < Start Section >
# monitors
2025-11-21 06:51:41 -06:00
# Main
monitorv2 {
2026-02-07 09:40:24 -06:00
output = DP-3
2026-01-02 13:08:37 -06:00
disabled = no
2026-02-07 09:40:24 -06:00
mode = 3440x1440@144
2026-01-02 13:08:37 -06:00
position = 1920x0 # dual
2025-11-21 06:51:41 -06:00
vrr = true
2026-03-21 12:27:20 -05:00
#icc = /home/trianta/.config/hypr/icm/lg-ultrawide.icm
2026-02-07 09:40:24 -06:00
cm = srgb
2026-03-21 12:27:20 -05:00
bitdepth = 10
2026-02-07 09:40:24 -06:00
sdr_min_luminance = 0.005
2026-03-21 12:27:20 -05:00
sdr_max_luminance = 250
2026-02-07 09:40:24 -06:00
sdrbrightness = 1.1
2026-03-21 12:27:20 -05:00
sdrsaturation = 1.2
2025-11-21 06:51:41 -06:00
}
2024-01-16 18:25:48 -06:00
2025-11-21 06:51:41 -06:00
# Side
monitorv2 {
2026-02-07 09:40:24 -06:00
output = HDMI-A-1
2026-03-21 12:27:20 -05:00
disabled = yes
2025-11-21 06:51:41 -06:00
mode = 3840x2160@60 # alt: disabled
2026-01-02 13:08:37 -06:00
transform = 0
scale = 2
position = 0x0
2026-02-07 09:40:24 -06:00
vrr = false
2025-11-21 06:51:41 -06:00
bitdepth = 10
2026-02-07 09:40:24 -06:00
cm = srgb
sdr_min_luminance = 0.005
sdr_max_luminance = 150 #
sdrbrightness = 1.0
sdrsaturation = 1.0
2025-11-21 06:51:41 -06:00
}
2024-01-16 18:25:48 -06:00
2024-06-25 04:13:51 -05:00
# < End Section >
2024-01-16 18:25:48 -06:00
2024-07-29 03:59:27 -05:00
# < Start Section >
# environment variables
2024-11-19 00:36:14 -06:00
env = XDG_CURRENT_DESKTOP,Hyprland
2024-07-29 03:59:27 -05:00
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = MOZ_ENABLE_WAYLAND,1
2026-02-07 09:40:24 -06:00
env = HYPRCURSOR_THEME, volantes
env = HYPRCURSOR_SIZE, 30
2024-11-19 00:36:14 -06:00
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,qt5ct
2024-07-29 03:59:27 -05:00
2025-02-04 07:23:29 -06:00
#env = HYPRLAND_TRACE,1
#env = AQ_TRACE,1
2024-07-29 03:59:27 -05:00
# < End Section >
2024-06-25 04:13:51 -05:00
# < Start Section >
# startup applications
2024-01-16 18:25:48 -06:00
2024-06-25 04:13:51 -05:00
# environment launches
2024-07-29 03:59:27 -05:00
exec-once = ~/.config/hypr/scripts/resetxdgportal.sh # reset XDPH for screenshare
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
2024-05-09 01:39:11 -05:00
exec-once = dbus-update-activation-environment --systemd --all
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
2024-06-25 04:13:51 -05:00
exec-once = /usr/lib/polkit-kde-authentication-agent-1 # authentication dialogue for GUI apps
exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha'
exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
2026-01-06 10:15:27 -06:00
exec-once = sleep 1 && hyprpm reload
2026-02-07 09:40:24 -06:00
#exec-once = wayvnc --output=DP-3 0.0.0.0
2024-01-16 18:25:48 -06:00
2024-05-09 01:39:11 -05:00
# xrandr settings
2024-07-29 03:59:27 -05:00
exec-once = ~/.config/hypr/scripts/xrandr.sh
# background applications
2024-05-09 01:39:11 -05:00
exec-once = waybar -c ~/.config/waybar/config
exec-once = dunst
2024-07-29 03:59:27 -05:00
exec-once = swww-daemon
2024-05-09 01:39:11 -05:00
exec-once = syncthing --no-browser
2024-06-25 04:13:51 -05:00
exec-once = xwaylandvideobridge
2025-11-21 06:51:41 -06:00
exec-once = pulsemeeter
2024-06-25 04:13:51 -05:00
# main applications
2026-03-21 12:27:20 -05:00
exec-once = thunderbird
2026-01-02 13:08:37 -06:00
#exec-once = obs
#exec-once = vesktop --ozone-platform-hint=auto --enable-webrtc-pipewire-capturer --enable-features=WaylandWindowDecorations
2026-03-21 12:27:20 -05:00
exec-once = commet
exec-once = spotify
exec-once = dopamine
2024-10-26 00:05:20 -05:00
exec-once = alacritty
2026-01-02 13:08:37 -06:00
exec-once = floorp
2025-11-21 06:51:41 -06:00
exec-once = env JAVA_HOME=/usr/lib/jvm/java-17-openjdk bolt > /tmp/bolt-launcher.log 2>&1
2025-03-03 23:09:00 -06:00
# obsidian planner
exec-once = ~/sync/obsidian/Trinote/create-week.sh
# completion alert
exec-once = sleep 5 && pw-play --volume=2.0 ~/.alert/finished.mp3
2024-01-16 18:25:48 -06:00
2025-02-04 07:23:29 -06:00
# first time lock
2026-03-21 12:27:20 -05:00
#exec-once = hyprlock
2025-02-04 07:23:29 -06:00
2024-06-25 04:13:51 -05:00
# < End Section >
2024-01-16 18:25:48 -06:00
2024-06-25 04:13:51 -05:00
# < Start Section >
# workspace rules
2026-01-06 10:15:27 -06:00
# smart gaps
2026-02-07 09:40:24 -06:00
workspace = w[tv1], gapsout:25 725 25 725, gapsin:0
workspace = w[tv1] r[4-5], gapsout:0 0 0 0, gapsin:0
2026-01-06 10:15:27 -06:00
2024-07-29 03:59:27 -05:00
# gaps numbers (top, right, bottom, left)
2026-01-02 13:08:37 -06:00
# Workspaces swapped for ease of use
2026-02-07 09:40:24 -06:00
workspace = 1, monitor:DP-3, persistent:true, default:true
workspace = 2, monitor:DP-3, persistent:true
workspace = 3, monitor:DP-3, persistent:true
workspace = 4, monitor:DP-3, persistent:true
workspace = 5, monitor:HDMI-A-1, persistent:true, gapsout:0
workspace = 6, monitor:DP-3, persistent:true
2026-01-02 13:08:37 -06:00
2024-01-16 18:25:48 -06:00
2024-06-25 04:13:51 -05:00
# < End Section >
# < Start Section >
# variables
general {
2026-01-02 13:08:37 -06:00
gaps_in = 5
gaps_out = 20
2026-01-06 10:15:27 -06:00
border_size = 3
2026-02-07 09:40:24 -06:00
#col.active_border = rgb($yellow)
col.active_border = rgb($fg)
col.inactive_border = rgb($bg)
2026-01-02 13:08:37 -06:00
layout = dwindle
2024-10-26 00:05:20 -05:00
resize_on_border = false
2026-01-02 13:08:37 -06:00
allow_tearing = false
2024-01-16 18:25:48 -06:00
}
2024-06-25 04:13:51 -05:00
decoration {
2026-02-07 09:40:24 -06:00
rounding = 10
2026-01-02 13:08:37 -06:00
rounding_power = 2
2025-03-03 23:09:00 -06:00
shadow {
2026-02-07 09:40:24 -06:00
enabled = true
range = 32
render_power = 2
color = rgba(00000050)
2025-03-03 23:09:00 -06:00
}
2024-10-26 00:05:20 -05:00
dim_special = 0.3
fullscreen_opacity = 1.0
blur {
2026-02-07 09:40:24 -06:00
enabled = true
2024-10-26 00:05:20 -05:00
special = true
2026-01-02 13:08:37 -06:00
size = 3
2026-02-07 09:40:24 -06:00
passes = 4
2024-10-26 00:05:20 -05:00
new_optimizations = true
ignore_opacity = true
2026-02-07 09:40:24 -06:00
xray = true
2026-01-02 13:08:37 -06:00
vibrancy = 0.1696
2024-10-26 00:05:20 -05:00
}
2024-06-25 04:13:51 -05:00
}
animations {
2024-10-26 00:05:20 -05:00
enabled = true
2026-01-02 13:08:37 -06:00
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
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 = zoomFactor, 1, 7, quick
2024-06-25 04:13:51 -05:00
}
input {
2024-10-26 00:05:20 -05:00
kb_layout = us
kb_options = caps:escape
follow_mouse = 2
2025-11-21 06:51:41 -06:00
mouse_refocus = true
2024-10-26 00:05:20 -05:00
force_no_accel = 1
2024-06-25 04:13:51 -05:00
}
group {
2024-10-26 00:05:20 -05:00
col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
2024-06-25 04:13:51 -05:00
}
misc {
2024-10-26 00:05:20 -05:00
disable_hyprland_logo = true
disable_splash_rendering = true
force_default_wallpaper = 0
vrr = 1
vfr = true
middle_click_paste = false
2025-03-03 23:09:00 -06:00
render_unfocused_fps = 15
2024-01-16 18:25:48 -06:00
}
2024-03-18 20:08:42 -05:00
xwayland {
2024-10-26 00:05:20 -05:00
enabled = true
use_nearest_neighbor = true
force_zero_scaling = false
2024-03-18 20:08:42 -05:00
}
2024-06-25 04:13:51 -05:00
cursor {
2025-11-21 06:51:41 -06:00
inactive_timeout = 5
2024-10-26 00:05:20 -05:00
no_warps = false
2025-11-21 06:51:41 -06:00
persistent_warps = true
2026-02-07 09:40:24 -06:00
default_monitor = DP-3
2025-03-03 23:09:00 -06:00
warp_on_change_workspace = false
2024-06-25 04:13:51 -05:00
}
2024-01-16 18:25:48 -06:00
2024-06-25 04:13:51 -05:00
debug {
2024-10-26 00:05:20 -05:00
disable_logs = true
2025-03-03 23:09:00 -06:00
#overlay
2025-11-21 06:51:41 -06:00
full_cm_proto = true
2024-06-25 04:13:51 -05:00
}
render {
2025-11-21 06:51:41 -06:00
direct_scanout = true
2026-03-21 12:27:20 -05:00
#cm_fs_passthrough = 3
#non_shader_cm = 3
2024-07-29 03:59:27 -05:00
}
2024-06-25 04:13:51 -05:00
# < End Section >
2024-05-09 01:39:11 -05:00
2024-06-25 04:13:51 -05:00
# < Start Section >
2024-10-26 00:05:20 -05:00
# master layout
2024-06-25 04:13:51 -05:00
master {
2024-10-26 00:05:20 -05:00
new_status = master
2024-05-09 01:39:11 -05:00
}
2024-06-25 04:13:51 -05:00
# < End Section >
2026-01-02 13:08:37 -06:00
# < Start Section >
# dwindle layout
dwindle {
pseudotile = true
preserve_split = true
smart_resizing = true
}
# < End Section >
2026-01-06 10:15:27 -06:00
# < Start Section >
# plugins
2026-02-07 09:40:24 -06:00
2026-01-06 10:15:27 -06:00
# < End Section >
2024-06-25 04:13:51 -05:00
# < Start Section >
# window rules
# core
2025-11-21 06:51:41 -06:00
windowrule {
name = globals
match:class = ^(.*)$
2026-02-07 09:40:24 -06:00
suppress_event = maximize fullscreen
2025-11-21 06:51:41 -06:00
render_unfocused = true
2026-02-07 09:40:24 -06:00
opacity = 0.75 0.75
2026-01-02 13:08:37 -06:00
pseudo = false
2025-11-21 06:51:41 -06:00
}
2026-03-21 12:27:20 -05:00
windowrule = match:workspace 1, float true
windowrule = match:workspace 2, float true
2025-11-21 06:51:41 -06:00
windowrule = match:class ^(qt5ct)$, float true
windowrule = match:class ^(nwg-look)$, float true
windowrule = match:class ^(pavucontrol)$, float true
windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, float true
2026-02-07 09:40:24 -06:00
windowrule = match:class ^(org.speedcrunch.speedcrunch)$, float true
2024-06-25 04:13:51 -05:00
# main
2026-03-21 12:27:20 -05:00
#windowrule = match:class ^(discord)$, workspace 1 silent
#windowrule = match:class ^(vesktop)$, workspace 1 silent
windowrule = match:class ^(chat.commet.commetapp)$, workspace 1 silent
2025-11-21 06:51:41 -06:00
windowrule = match:class ^(thunderbird)$, workspace 1 silent
windowrule = match:class ^(Dopamine)$, workspace 1 silent
windowrule = match:class ^(spotify)$, workspace 1 silent
2026-03-21 12:27:20 -05:00
windowrule = match:class ^(steam)$, workspace 6 silent
# workspace 2 group
2026-02-07 09:40:24 -06:00
windowrule = match:class ^(floorp)$, workspace 3 silent
2026-01-02 13:08:37 -06:00
windowrule = match:class ^(floorp)$, tile true
2026-03-21 12:27:20 -05:00
windowrule = match:class ^(Alacritty)$, workspace 2 silent
windowrule = match:class ^(Alacritty)$, tile true
windowrule = match:class ^(net-runelite-client-RuneLite)$, opacity 1.00 override 1.00 override
2024-06-25 04:13:51 -05:00
2026-02-07 09:40:24 -06:00
# tag games
windowrule = match:xdg_tag proton-game, tag +game
windowrule = match:title ^(Warframe)$, tag +game
windowrule = match:class ^(org.prismlauncher.PrismLauncher)$, tag +game
windowrule = match:class ^(Minecraft.*)$, tag +game
windowrule = match:class ^(steam_app_.*)$, tag +game
windowrule = match:class ^(steam_proton)$, tag +game
windowrule = match:class ^(cstrike_linux64)$, tag +game
windowrule = match:class ^(dota2)$, tag +game
windowrule = match:class ^(gamescope)$, tag +game
windowrule = match:class ^(wowclassic.exe)$, tag +game
windowrule = match:title ^(World of Warcraft)$, tag +game
windowrule = match:class ^(RuneScape)$, tag +game
2026-03-21 12:27:20 -05:00
#windowrule = match:class ^(bolt.*)$, tag +game
2026-02-07 09:40:24 -06:00
windowrule = match:class ^(Minecraft.*)$, tag +game
2026-03-21 12:27:20 -05:00
#windowrule = match:class ^(net-runelite-client-RuneLite)$, tag +game
2026-02-07 09:40:24 -06:00
# Runelite opacity likes to skip after login
2025-11-21 06:51:41 -06:00
windowrule = match:class ^(net-runelite-client-RuneLite)$, opacity 1.00 override 1.00 override
2026-02-07 09:40:24 -06:00
windowrule {
name = games
match:tag = game
workspace = 4 silent
opacity = 1.00 override 1.00 override
float = true
no_initial_focus = true
suppress_event = maximize
}
2024-06-25 04:13:51 -05:00
# layer rules
2025-11-21 06:51:41 -06:00
layerrule = match:namespace waybar, blur true
layerrule = match:namespace waybar, ignore_alpha 0
2024-06-25 04:13:51 -05:00
# xwaylandvideobridge
2025-11-21 06:51:41 -06:00
windowrule = match:class ^(xwaylandvideobridge)$, opacity 0.0 override
windowrule = match:class ^(xwaylandvideobridge)$, no_anim true
windowrule = match:class ^(xwaylandvideobridge)$, no_initial_focus true
windowrule = match:class ^(xwaylandvideobridge)$, max_size 1 1
windowrule = match:class ^(xwaylandvideobridge)$, no_blur true
2024-06-25 04:13:51 -05:00
# < End Section >
# < Start Section >
# keybinds
# main modifier
$mainMod = SUPER
# passthrough
2026-03-21 12:27:20 -05:00
#bind = , mouse:275, pass, class:^(discord)$
#bind = , mouse:275, sendshortcut, ALT, V, class:^(vesktop)$
#bind = SHIFT, mouse:275, sendshortcut, ALT, V, class:^(vesktop)$
2024-06-25 04:13:51 -05:00
# core binds
2024-10-26 00:05:20 -05:00
bind = $mainMod SHIFT, Q, killactive
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, M, exit
2024-10-26 00:05:20 -05:00
bind = $mainMod, SPACE, togglefloating
bind = $mainMod, C, centerwindow
2024-10-26 00:05:20 -05:00
bind = $mainMod, F, fullscreen
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, L, exec, hyprlock
2024-11-19 00:36:14 -06:00
bind = $mainMod $CONTROL, ESCAPE, exec, killall waybar || waybar -c ~/.config/waybar/config # toggle waybar
2024-06-25 04:13:51 -05:00
# main application shortcuts
bind = $mainMod, RETURN, exec, alacritty
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" - | wl-copy
bind = $mainMod SHIFT, 7, exec, taskset -c 1-7 prismlauncher
bind = $mainMod, S, exec, pkill -x rofi || rofi -show drun
2025-11-21 06:51:41 -06:00
bind = $mainMod, 9, exec, taskset -c 1-7 steam
bind = $mainMod, 0, exec, JAVA_HOME=/usr/lib/jvm/java-17-openjdk bolt --ozone-platform=wayland > /tmp/bolt-launcher.log 2>&1
2024-06-25 04:13:51 -05:00
# generic audio control
binde = , XF86AudioPlay, exec, playerctl play-pause
2024-10-26 00:05:20 -05:00
binde = , XF86AudioStop, exec, playerctl stop
2024-06-25 04:13:51 -05:00
binde = , XF86AudioPrev, exec, playerctl previous
2024-10-26 00:05:20 -05:00
binde = , XF86AudioNext, exec, playerctl next
2024-06-25 04:13:51 -05:00
binde = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
binde = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
binde = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
# custom audio control
binde = $mainMod, F1, exec, playerctl play-pause
binde = $mainMod, F2, exec, playerctl previous
2024-10-26 00:05:20 -05:00
binde = $mainMod, F3, exec, playerctl next
2024-06-25 04:13:51 -05:00
2024-10-26 00:05:20 -05:00
# move focus
2024-06-25 04:13:51 -05:00
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
# 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 SHIFT, 1, movetoworkspace, 1
2025-11-21 06:51:41 -06:00
bind = $mainMod SHIFT, 1, centerwindow
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, 2, movetoworkspace, 2
2025-11-21 06:51:41 -06:00
bind = $mainMod SHIFT, 2, centerwindow
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, 3, movetoworkspace, 3
2025-11-21 06:51:41 -06:00
bind = $mainMod SHIFT, 3, centerwindow
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, 4, movetoworkspace, 4
2025-11-21 06:51:41 -06:00
bind = $mainMod SHIFT, 4, centerwindow
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, 5, movetoworkspace, 5
2025-11-21 06:51:41 -06:00
bind = $mainMod SHIFT, 5, centerwindow
2024-06-25 04:13:51 -05:00
bind = $mainMod SHIFT, 6, movetoworkspace, 6
2025-11-21 06:51:41 -06:00
bind = $mainMod SHIFT, 6, centerwindow
2024-06-25 04:13:51 -05:00
bind = $mainMod ALT, 1, movetoworkspacesilent, 1
bind = $mainMod ALT, 2, movetoworkspacesilent, 2
bind = $mainMod ALT, 3, movetoworkspacesilent, 3
bind = $mainMod ALT, 4, movetoworkspacesilent, 4
bind = $mainMod ALT, 5, movetoworkspacesilent, 5
bind = $mainMod ALT, 6, movetoworkspacesilent, 6
# resizing windows
binde = $mainMod, right, resizeactive, 5 0
binde = $mainMod, left, resizeactive, -5 0
binde = $mainMod, up, resizeactive, 0 -5
binde = $mainMod, down, resizeactive, 0 5
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
2025-02-04 07:23:29 -06:00
# recordings
bind = SUPER, R, pass, class:^(com\.obsproject\.Studio)$
bind = SUPER, F9, pass, class:^(com\.obsproject\.Studio)$
bind = SUPER, F10, pass, class:^(com\.obsproject\.Studio)$
2024-06-25 04:13:51 -05:00
# < End Section >