source = ~/.config/hypr/mocha.conf # Catppuccin colorscheme # < Start Section > # monitors # Main monitorv2 { output = DP-1 disabled = no # 3440x1440@160 # mode = 3440x1440@160 # 3440x1440@155 # mode = modeline 1177.50 3440 3744 4128 4816 1440 1443 1453 1578 -hsync +vsync # 3440x1440@120 mode = modeline 889.75 3440 3736 4120 4800 1440 1443 1453 1545 -hsync +vsync # position = 0x0 # single position = 1920x0 # dual vrr = true bitdepth = 10 cm = auto #sdr_min_luminance = 0.005 #sdr_max_luminance = 250 # #supports_wide_color = true #supports_hdr = true #sdrbrightness = 1.1 #sdrsaturation = 1.1 } # Side monitorv2 { output = HDMI-A-4 disabled = no mode = 3840x2160@60 # alt: disabled transform = 0 scale = 2 position = 0x0 vrr = true bitdepth = 10 cm = auto #sdr_min_luminance = 0.005 #sdr_max_luminance = 150 # #sdrbrightness = 1.0 #sdrsaturation = 1.0 } # < End Section > # < Start Section > # environment variables env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland env = MOZ_ENABLE_WAYLAND,1 env = HYPRCURSOR_THEME, rose-pine-hyprcursor env = HYPRCURSOR_SIZE, 24 env = QT_AUTO_SCREEN_SCALE_FACTOR,1 env = QT_QPA_PLATFORM,wayland;xcb env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_QPA_PLATFORMTHEME,qt5ct #env = HYPRLAND_TRACE,1 #env = AQ_TRACE,1 # < End Section > # < Start Section > # startup applications # environment launches 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 exec-once = dbus-update-activation-environment --systemd --all exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP 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' exec-once = sleep 1 && hyprpm reload #exec-once = wayvnc --output=DP-1 0.0.0.0 # xrandr settings exec-once = ~/.config/hypr/scripts/xrandr.sh # background applications exec-once = waybar -c ~/.config/waybar/config exec-once = dunst exec-once = swww-daemon exec-once = syncthing --no-browser exec-once = xwaylandvideobridge exec-once = pulsemeeter # main applications #exec-once = thunderbird #exec-once = obs #exec-once = vesktop --ozone-platform-hint=auto --enable-webrtc-pipewire-capturer --enable-features=WaylandWindowDecorations #exec-once = spotify exec-once = alacritty exec-once = floorp exec-once = env JAVA_HOME=/usr/lib/jvm/java-17-openjdk bolt > /tmp/bolt-launcher.log 2>&1 # obsidian planner exec-once = ~/sync/obsidian/Trinote/create-week.sh # completion alert exec-once = sleep 5 && pw-play --volume=2.0 ~/.alert/finished.mp3 # first time lock exec-once = hyprlock # < End Section > # < Start Section > # workspace rules # smart gaps workspace = w[tv1], gapsout:0 650 0 650, gapsin:0 workspace = w[tv1]5, gapsout:0 0 0 0, gapsin:0 # gaps numbers (top, right, bottom, left) # Workspaces swapped for ease of use workspace = 1, monitor:DP-1, persistent:true, default:true workspace = 2, monitor:DP-1, persistent:true workspace = 3, monitor:DP-1, persistent:true workspace = 4, monitor:DP-1, persistent:true workspace = 5, monitor:HDMI-A-4, persistent:true, gapsout:0 workspace = 6, monitor:DP-1, persistent:true # < End Section > # < Start Section > # variables general { gaps_in = 5 gaps_out = 20 border_size = 3 col.active_border = rgb(CCB8C8) col.inactive_border = rgb(CCB8C8) layout = dwindle resize_on_border = false allow_tearing = false } decoration { rounding = 0 rounding_power = 2 shadow { enabled = false range = 4 render_power = 3 color = rgba(1a1a1aee) } dim_special = 0.3 fullscreen_opacity = 1.0 blur { enabled = false special = true size = 3 passes = 1 new_optimizations = true ignore_opacity = true xray = false vibrancy = 0.1696 } } animations { enabled = true 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 } input { kb_layout = us kb_options = caps:escape follow_mouse = 2 mouse_refocus = true force_no_accel = 1 } group { 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 } misc { disable_hyprland_logo = true disable_splash_rendering = true force_default_wallpaper = 0 vrr = 1 vfr = true middle_click_paste = false render_unfocused_fps = 15 } xwayland { enabled = true use_nearest_neighbor = true force_zero_scaling = false } cursor { inactive_timeout = 5 no_warps = false persistent_warps = true default_monitor = DP-1 warp_on_change_workspace = false } debug { disable_logs = true #overlay full_cm_proto = true } render { new_render_scheduling = false direct_scanout = true cm_fs_passthrough = 2 cm_enabled = true } # < End Section > # < Start Section > # master layout master { new_status = master } # < End Section > # < Start Section > # dwindle layout dwindle { pseudotile = true preserve_split = true smart_resizing = true } # < End Section > # < Start Section > # plugins plugin { hyprbars { enable = true bar_height = 25 bar_color = rgb(05027D) bar_text_align = left bar_part_of_window = true bar_precedence_over_border = true hyprbars-button = rgb(CCB8C8), 18, X, hyprctl dispatch killactive hyprbars-button = rgb(CCB8C8), 18, , hyprctl dispatch fullscreen 1 hyprbars-button = rgb(CCB8C8), 18, , bar_padding = 15 } } # < End Section > # < Start Section > # window rules # core windowrule { name = globals match:class = ^(.*)$ suppress_event = maximize render_unfocused = true opacity = 1.00 1.00 pseudo = false } 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 windowrule = match:workspace 4, float true # main windowrule = match:class ^(discord)$, workspace 1 silent windowrule = match:class ^(vesktop)$, workspace 1 silent windowrule = match:class ^(thunderbird)$, workspace 1 silent windowrule = match:class ^(Dopamine)$, workspace 1 silent windowrule = match:class ^(spotify)$, workspace 1 silent windowrule = match:class ^(Alacritty)$, workspace 2 silent windowrule = match:class ^(Alacritty)$, tile true windowrule = match:class ^(floorp)$, workspace 2 silent windowrule = match:class ^(floorp)$, tile true windowrule = match:class ^(steam)$, workspace 4 silent windowrule = match:class ^(org.prismlauncher.PrismLauncher)$, workspace 4 silent windowrule = match:class ^(Minecraft.*)$, workspace 4 silent windowrule = match:class ^(steam_app_.*)$, workspace 4 silent windowrule = match:class ^(steam_proton)$, workspace 4 silent windowrule = match:class ^(cstrike_linux64)$, workspace 4 silent windowrule = match:class ^(dota2)$, workspace 4 silent windowrule = match:class ^(gamescope)$, workspace 4 silent windowrule = match:class ^(steam)$, workspace 6 silent # development windowrule = match:class ^(VirtualBox.*)$, float true windowrule = match:title ^(SnakePlusPlus)$, float true windowrule = match:title ^(SnakePlusPlus)$, center true windowrule = match:title ^(SnakePlusPlus)$, opacity 0.4 windowrule = match:title ^(TetrisPlusPlus)$, center true windowrule = match:class ^(aquamarine)$, workspace 2 silent windowrule = match:class ^(aquamarine)$, fullscreen true # games # 16:9 windowed - 1920 1080 # 21:9 windowed - 2580 1080 # 32:9 windowed - 3200 900 # theoretical mix - 3200 1100 # alternative - 2660 1140 # world of warcraft classic windowrule = match:class ^(wowclassic.exe)$, opacity 1.00 override 1.00 override windowrule = match:class ^(wowclassic.exe)$, workspace 4 silent # world of warcraft windowrule = match:title ^(World of Warcraft)$, opacity 1.00 override 1.00 override windowrule = match:title ^(World of Warcraft)$, workspace 4 silent # Runescape windowrule = match:class ^(net-runelite-client-RuneLite)$, opacity 1.00 override 1.00 override #windowrule = match:class ^(net-runelite-client-RuneLite)$, fullscreen true #windowrule = match:class ^(net-runelite-client-RuneLite)$, workspace 5 silent windowrule = match:class ^(RuneScape)$, opacity 1.00 override 1.00 override #windowrule = match:class ^(bolt.*)$, workspace 5 silent windowrule = match:class ^(bolt.*)$, tile true # minecraft windowrule = match:class ^(Minecraft.*)$, opacity 1.00 override 1.00 override windowrule = match:class ^(Minecraft.*)$, workspace 4 silent windowrule = match:class ^(Minecraft.*)$, float true #windowrule = match:class ^(Minecraft.*)$, size 3200 1100 # native windowrule = match:class ^(steam_app_.*)$, opacity 1.00 override 1.00 override windowrule = match:class ^(steam_app_.*)$, float true # proton windowrule = match:class ^(steam_proton)$, opacity 1.00 override 1.00 override windowrule = match:class ^(steam_proton)$, float true # hl2 (css, etc) windowrule = match:class ^(cstrike_linux64)$, opacity 1.00 override 1.00 override # dota 2 windowrule = match:class ^(dota2)$, opacity 1.00 override 1.00 override # gamescope windowrule = match:class ^(gamescope)$, opacity 1.00 override 1.00 override windowrule = match:class ^(gamescope)$, float true #windowrule = match:class ^(gamescope)$, size 3200 1100 # steamtinkerlaunch windowrule = match:class ^(yad)$, float true windowrule = match:class ^(yad)$, size 1920 1080 # layer rules layerrule = match:namespace waybar, blur true layerrule = match:namespace waybar, ignore_alpha 0 # xwaylandvideobridge 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 # < End Section > # < Start Section > # keybinds # main modifier $mainMod = SUPER # passthrough bind = , mouse:275, pass, class:^(discord)$ #bind = , mouse:275, sendshortcut, ALT, V, class:^(vesktop)$ #bind = SHIFT, mouse:275, sendshortcut, ALT, V, class:^(vesktop)$ # core binds bind = $mainMod SHIFT, Q, killactive bind = $mainMod SHIFT, M, exit bind = $mainMod, SPACE, togglefloating bind = $mainMod, C, centerwindow bind = $mainMod, F, fullscreen bind = $mainMod SHIFT, L, exec, hyprlock bind = $mainMod $CONTROL, ESCAPE, exec, killall waybar || waybar -c ~/.config/waybar/config # toggle waybar # main application shortcuts bind = $mainMod, RETURN, exec, alacritty 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 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 # generic audio control binde = , XF86AudioPlay, exec, playerctl play-pause binde = , XF86AudioStop, exec, playerctl stop binde = , XF86AudioPrev, exec, playerctl previous binde = , XF86AudioNext, exec, playerctl next 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 binde = $mainMod, F3, exec, playerctl next # move focus 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 bind = $mainMod SHIFT, 1, centerwindow bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 2, centerwindow bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 3, centerwindow bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 4, centerwindow bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 5, centerwindow bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 6, centerwindow 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 # 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)$ # < End Section >