Files
dotfiles/.config/hypr/hyprland.conf
2025-11-30 12:25:25 -08:00

298 lines
9.3 KiB
Plaintext

# 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=DP-1,2560x1440@144,0x0,1
# monitor=DP-3,2560x1440@144,2560x0,1
# vrr 3 enables vrr if application is fullscreen and video or game content
# monitor = DP-1, 3440x1440@240,0x0,1,vrr,3
monitorv2 {
output = DP-1
mode = 3440x1440@240
position = 0x0
scale = 1
vrr = 3
}
source = ~/.config/hypr/keybindings.conf
source = ~/.config/hypr/macchiato.conf
# unscale XWayland
xwayland {
force_zero_scaling = true
}
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = uwsm app -- ghostty
$fileManager = uwsm app -- thunar
$menu = rofi -show drun -run-command "uwsm app -- {cmd}"
# $notification_daemon = dunst
$notification_daemon = uwsm app -- swaync -c ~/.config/swaync/config.json
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = uwsm app -sb -- hyprpm update -nn
exec-once = uwsm app -sb -- hyprpm reload -nn
exec-once = $notification_daemon
exec-once = $terminal
exec-once = uwsm app -sb -S both -t scope -- hyprpm update -nn
exec-once = uwsm app -sb -S both -t scope -- hyprpm reload -nn
exec-once = uwsm app -sb -t service -- nm-applet
exec-once = uwsm app -sb -t service -- waybar -c ~/.config/waybar/catppuccin-macchiato/config.jsonc -s ~/.config/waybar/catppuccin-macchiato/style.css
exec-once = uwsm app -sb -t service -- hyprsunset
exec-once = uwsm app -sb -t service -- /usr/lib/polkit-kde-authentication-agent-1
exec-once = uwsm app -sb -t service -- variety
exec-once = ~/.local/bin/aria
# exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
# env = XCURSOR_SIZE,24
# env = HYPRCURSOR_SIZE,24
# done in ../uswm/env and ../uswm/env-hyprland
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 8
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
# col.active_border = rgba($blueAlphaee) rgba($mauveAlphaee) 45deg
col.active_border = rgba($mauveAlphaee) 45deg
col.inactive_border = rgba($overlay0Alphaaa)
# 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 = 0.88
# active_opacity = 1.0
inactive_opacity = 0.88
# inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba($surface0Alphaee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 7
passes = 2
xray = true
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
# slide, slidevert, fade, slidefade, slidefadevert
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 = windowsIn, 1, 4.1, easeOutQuint, slide
animation = windowsOut, 1, 1.49, linear, slide
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, slidefade
animation = workspacesIn, 1, 1.21, almostLinear, slidefade
animation = workspacesOut, 1, 1.94, almostLinear, slidefade
}
# 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
# 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
}
# 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 = pc86
kb_options = caps:escape_shifted_capslock
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 {
# workspace_swipe = false
}
# 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
}
render {
# explicit_sync = true
}
misc {
font_family = JetBrainsMono Nerd Font
}
# {{{ WORKSPACES
# workspace = name:,monitor:DP-1
# workspace = 2,monitor:DP-1,defaultName:
# workspace = 2,monitor:DP-1,persistent:false
# workspace = 3,monitor:DP-1,persistent:false
# workspace = 4,monitor:DP-1,persistent:false
# workspace = 5,monitor:DP-1,persistent:false
# workspace = 6,monitor:DP-3,persistent:false,default:true
# workspace = 7,monitor:DP-3,persistent:false
# workspace = 8,monitor:DP-3,persistent:false
# workspace = 9,monitor:DP-3,persistent:false
# workspace = 10,monitor:DP-3,persistent:false
# }}}
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# windowrule = match:class my-window, border_size 10
windowrule = float on, match:class discord
windowrule = float on, match:class mpv
windowrule = float on, match:class steam
windowrule = float on, match:class anki
windowrule = float on, match:class python, match:title Import
windowrule = match:float 1, center on
windowrule = workspace 10 silent, match:class discord
windowrule = workspace 9 silent, match:class steam
windowrule = workspace 8 silent, match:class anki
windowrule = size 2118 1182, match:class anki
# windowrule = opacity 0.88, match:class .* fullscreen:0
windowrule = opacity 1.0 override, match:class mpv
windowrule = opacity 1.0 override, match:title (.*)asbplayer
windowrule = tile on, match:title (.*)asbplayer
windowrule = opacity 1.0 override, match:class ^(remote-viewer)$
windowrule = opacity 1.0 override, match:class com.obsproject.Studio
windowrule = opacity 1.0 override, match:title (.*)(- YouTube(.*))
windowrule = opacity 1.0 override, match:class zen, match:title (.*)YouTube TV(.*)
windowrule = opacity 1.0 override, match:class anki
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppress_event maximize, match:class .*
# Fix some dragging issues with XWayland
windowrule = no_focus on,match:class ^$,match:title ^$,match:xwayland 1,match:float 1,match:fullscreen 0,match:pin 0
# {{{ Screen sharing workaround: https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/#xwayland
windowrule = opacity 0.0 override, match:class ^(xwaylandvideobridge)$
windowrule = no_anim on, match:class ^(xwaylandvideobridge)$
windowrule = no_initial_focus on, match:class ^(xwaylandvideobridge)$
windowrule = max_size 1 1, match:class ^(xwaylandvideobridge)$
windowrule = no_blur on, match:class ^(xwaylandvideobridge)$
windowrule = no_focus on, match:class ^(xwaylandvideobridge)$
# }}}
debug {
disable_logs = true
enable_stdout_logs = false
}