# WHY: # ╭───────────────────────────────────────────────────╮ # │ This is the hyprland configuration file to source │ # │ and setup my hyprland environment │ # ╰───────────────────────────────────────────────────╯ # ╭──────────╮ # │ security │ # ╰──────────╯ # permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow # ╭──────────────╮ # │ Source files │ # ╰──────────────╯ $confDirHyprland = ~/.config/hypr # NOTE: #╭───────────────────────────────────────────────────────────────────────────╮ #│ sources monitors config outside of git repo to let useroptions be a thing │ #│ also sources the following variables: │ #│ > $main <- this should contain the main monitor (e.g. DP-1 or HDMI-A-1..) │ #│ > $secondary <- This is just the second monitor │ #╰───────────────────────────────────────────────────────────────────────────╯ # ─< source hotkeys file for hyprland >────────────────────────────────────────────────────── source = $confDirHyprland/hotkeys.conf source = $confDirHyprland/auto-exec.conf source = $HOME/.monitors.conf # variable for specialworkspace (has to be configured in .monitors.conf like -> 'workspace = name:x, on-created-empty:$terminal') # $terminal = foot # $browser = zen-browser # $secondary = $main # <- Uncomment this, if you only have one monitor # ─< main-workspaces >──────────────────────────────────────────────────────────────────────────── workspace = 1, monitor:$main, persitent:true workspace = 2, monitor:$secondary, persitent:true workspace = 3, monitor:$main, persitent:true workspace = 4, monitor:$secondary, persitent:true, on-created-empty:$browser workspace = 5, monitor:$main workspace = 6, monitor:$main workspace = 7, monitor:$secondary workspace = 8, monitor:$secondary workspace = 9, monitor:$main, persistent:true, allow-tearing:true # ─< Gaming workspace >────────────────────────────────────────────────────────────────────── workspace = 69, monitor:$main, persistent:true, allow-tearing:true, gapsin:0, gapsout:0, rounding:0, border:0 # ────────────────────────────────────────< specials >──────────────────────────────────────── workspace = special:magic, monitor:$main, on-created-empty:$terminal, border:0 # See https://wiki.hyprland.org/Configuring/Environment-variables/ # ╭───────────────────────╮ # │ Environment-variables │ # ╰───────────────────────╯ env = XCURSOR_SIZE,16 env = HYPRCURSOR_THEME,catppuccin-mocha-dark-cursors env = HYPRCURSOR_SIZE,16 env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that env = QT_QPA_PLATFORM,wayland;xcb env = QT_SCALE_FACTOR,1 # env = GTK_THEME,Nordic-darker env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 # ──────────────────────────────────────< windowrules >───────────────────────────────────── windowrule = workspace special:windoof, title:^(.*[Ll]ooking [Gg]lass.*) windowrule = workspace 69, title:^(.*[Ss]team.*) windowrule = workspace 69, title:^(.*GDLauncher.*) # WHY: # ─< smartgaps >───────────────────────────────────────────────────────────────────────────── workspace = w[tv1], gapsout:0, gapsin:0 workspace = f[1], gapsout:0, gapsin:0 windowrule = bordersize 0, floating:0, onworkspace:w[tv1] windowrule = rounding 0, floating:0, onworkspace:w[tv1] windowrule = bordersize 0, floating:0, onworkspace:f[1] windowrule = rounding 0, floating:0, onworkspace:f[1] # ╭───────────────╮ # │ LOOK AND FEEL │ # ╰───────────────╯ # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 1 gaps_out = 4 border_size = 2 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors # col.active_border = rgba(d0d0d0d0) rgba(4f4f4ff4) 45deg col.active_border = rgba(392e89cf) rgba(392ef9cf) 45deg col.inactive_border = rgba(2f2f2fe0) extend_border_grab_area = false resize_on_border = true # layout = master layout = dwindle snap { enabled = true window_gap = 12 monitor_gap = 24 border_overlap = false } allow_tearing = false } windowrule = immediate, class:^(cs2)$ windowrule = immediate, class:^(steam)$ windowrule = immediate, class:^(cemu)$ windowrule = immediate, class:^(GDLauncher)$ windowrule = float, class:^(- CopyQ)$ windowrule = noblur, class:open-joystick-display-transparent windowrule = noborder, class:open-joystick-display-transparent windowrule = noshadow, class:open-joystick-display-transparent windowrule = nodim, initialClass:zen # windowrule = opaque, initialClass:zen windowrule = opaque, initialClass:(Zen Browser), class:^(youtube)$ windowrule = opaque, initialTitle:(Zen Browser), class:^(twitch)$ # windowrulev2 = nodim, class:^zen-browser$ windowrule = opaque, nodim, class:^(youtube)$ # windowrule = immediate, class:^(cs2)$ # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 4 rounding_power = 16 # Change transparency of focused and unfocused windows active_opacity = 0.94 # inactive_opacity = 0.284 fullscreen_opacity = 1 dim_inactive = true dim_strength = 0.4 # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 5 passes = 2 vibrancy = 0.01696 } } # ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ # █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█ animations { enabled = true # Animation curves bezier = linear, 0, 0, 1, 1 bezier = md3_standard, 0.2, 0, 0, 1 bezier = md3_decel, 0.05, 0.7, 0.1, 1 bezier = md3_accel, 0.3, 0, 0.8, 0.15 bezier = overshot, 0.05, 0.9, 0.1, 1.1 bezier = crazyshot, 0.1, 1.5, 0.76, 0.92 bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0 bezier = menu_decel, 0.1, 1, 0, 1 bezier = menu_accel, 0.38, 0.04, 1, 0.07 bezier = easeInOutCirc, 0.85, 0, 0.15, 1 bezier = easeOutCirc, 0, 0.55, 0.45, 1 bezier = easeOutExpo, 0.16, 1, 0.3, 1 bezier = softAcDecel, 0.26, 0.26, 0.15, 1 bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration # Animation configs animation = windows, 1, 1, md3_decel, popin 60% animation = windowsIn, 1, 1, md3_decel, popin 60% animation = windowsOut, 1, 1, md3_accel, popin 60% animation = border, 1, 1, default animation = fade, 1, 1, md3_decel # animation = layers, 1, 2, md3_decel, slide animation = layersIn, 1, 1, menu_decel, slide animation = layersOut, 1, 1, menu_accel animation = fadeLayersIn, 1, 1, menu_decel animation = fadeLayersOut, 1, 1, menu_accel animation = workspaces, 1, 1, menu_decel, slide # animation = workspaces, 1, 2.5, softAcDecel, slide # animation = workspaces, 1, 7, menu_decel, slidefade 15% # animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15% animation = specialWorkspace, 1, 1, md3_decel, slidevert } # https://wiki.hyprland.org/Configuring/Variables/#misc misc { vrr = 2 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. :( enable_swallow = true swallow_regex = ^(ghostty|wezterm-gui|kitty|Alacritty|foot)$ animate_manual_resizes = true animate_mouse_windowdragging = true new_window_takes_over_fullscreen = 2 }