# ┌───────────────────────────────────────────────────┐ # │ ██████╗ ███████╗████████╗███████╗██████╗ ███████╗ │ # │ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝ │ # │ ██████╔╝█████╗ ██║ █████╗ ██████╔╝███████╗ │ # │ ██╔═══╝ ██╔══╝ ██║ ██╔══╝ ██╔══██╗╚════██║ │ # │ ██║ ███████╗ ██║ ███████╗██║ ██║███████║ │ # │ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ │ # ├───────────────────────────────────────────────────┤ # │ depressing and totally messy hyprland config or │ # ├───────────────────────────────────────────────────┤ # │ How windows are the only well │ # │ managed aspect of my life. │ # │---------------------------------------------------│ # │ https://git.peterdominguez.art/peter/.dotfiles │ # └───────────────────────────────────────────────────┘ # # # Programs $terminal = kitty $menu = rofi -show drun # Some default env vars env = XCURSOR_SIZE,24 env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that # Outputs monitor=DP-1,1920x1080@239.760,0x0,1 monitor=DP-2,1920x1080@239.760,1920x0,1 monitor = , preferred, auto, 1 # Input devices input { kb_layout = us(altgr-intl) kb_variant = ,nodeadkeys kb_options = caps:escape follow_mouse = 1 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } device { name = usb-hid-keyboard-mouse sensitivity = -0.3 # -1.0 - 1.0, 0 means no modification. } # Executables exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = udiskie -t & exec-once = /usr/lib/polkit-kde-authentication-agent-1 exec-once = sleep 1; blueman-applet exec-once = hyprpaper exec-once = sunsetr exec-once = [workspace special:music silent] sleep 1; supersonic-desktop exec-once = dunst exec-once = waybar exec-once = hypridle exec-once = hyprctl setcursor Dracula-cursors 24 exec-once = [workspace 1 silent] firefox exec-once = libreoffice --writer --norestore exec-once = gimp exec-once = virt-manager exec-once = [workspace 2 silent] kitty --session ~/.config/kitty/session --listen-on=unix:@mykitty exec-once = [workspace 2 silent] sleep 1; kitty newsboat exec-once = [workspace 6 silent] kitty btop exec-once = [workspace 6 silent] sleep 1; kitty exec-once = [workspace 6 silent] sleep 2; kitty zsh -c "source ~/.zshrc;nnn -deUxH" exec-once = steam -silent exec-once = sleep 1; heroic --ozone-platform=wayland exec-once = [workspace special:password silent] keepassxc exec-once = [workspace special:scratchpad silent] signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations exec-once = nextcloud exec-once = killall nextcloud exec-once = gammastep -m wayland -O 6500K -g 1.1.0 exec-once = [workspace special:email silent] sleep 1; tutanota-desktop --ozone-platform-hint=auto exec-once = discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized exec-once = jellyfin-mpv-shim # Variables general { gaps_in = 5 gaps_out = 10 border_size = 2 layout = master allow_tearing = false } decoration { rounding = 8 blur { enabled = true size = 3 passes = 1 new_optimizations = true noise = 0.06 special = true contrast = 0.8 popups = true } } # Animations animations { enabled = yes bezier = myBezier, 0, 0.55, 0.45, 1 animation = windows, 1, 4, myBezier animation = windowsIn, 1, 7, default, popin 80% animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 20, default animation = borderangle, 1, 20, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default, slide } # Layout master { new_status = slave } # Cursor cursor { hide_on_key_press = true } # Miscellaneous misc { force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers vrr = 2 } # Window rules windowrule { name = windowrule-1 workspace = 3 silent match:class = libreoffice-writer } windowrule { name = windowrule-2 workspace = 4 silent match:class = gimp } windowrule { name = windowrule-3 workspace = 5 silent match:class = virt-manager } windowrule { name = windowrule-4 workspace = special:email silent match:class = tutanota-desktop } windowrule { name = windowrule-5 workspace = special:music silent match:class = supersonic-desktop } windowrule { name = windowrule-6 size = 300 500 match:title = Friends List } windowrule { name = windowrule-7 center = on size = 1600 900 match:title = Steam } windowrule { name = windowrule-8 float = on match:class = steam } windowrule { name = windowrule-9 center = on float = on size = 1600 900 match:class = heroic } windowrule { name = windowrule-10 center = on float = on size = 1600 900 match:class = discord } windowrule { name = windowrule-11 float = on size = 856 656 match:class = nmnet } windowrule { name = windowrule-12 float = on move = (1450) (34) match:class = com.nextcloud.desktopclient.nextcloud } windowrule { name = windowrule-13 float = on size = 1600 900 center = on match:class = openrgb } windowrule { name = windowrule-14 float = on move = (1070) (38) match:class = org.pulseaudio.pavucontrol } windowrule { name = windowrule-15 float = on size = 1000 600 match:title = Save File* } windowrule { name = windowrule-16 float = on size = 1000 600 match:title = Open Files } windowrule { name = windowrule-17 float = on center = on size = 1280 720 match:title = Signal } windowrule { name = windowrule-18 workspace = special:password silent float = on size = 800 600 center = on match:class = org.keepassxc.KeePassXC } windowrule { name = windowrule-19 float = on monitor = DP-1 size = 600 400 move = (1310) (670) match:class = mpv } windowrule { name = windowrule-20 float = on match:class = org.kde.polkit-kde-authentication-agent-1 } windowrule { name = windowrule-21 float = on match:class = alacarte } windowrule { name = windowrule-22 float = on match:class = piper } windowrule { name = windowrule-23 float = on match:class = nwg-look } windowrule { name = windowrule-24 float = on match:class = zenity } windowrule { name = windowrule-25 float = on move = (1592) (740) match:class = galculator } windowrule { name = windowrule-26 float = on match:class = org.rncbc.qsynth } windowrule { name = windowrule-27 float = on match:class = qt5ct } windowrule { name = windowrule-28 float = on match:class = kvantummanager } windowrule { name = windowrule-29 float = on match:class = nm-connection-editor } windowrule { name = windowrule-30 float = on size = 334 212 center = on match:class = udiskie } windowrule { name = windowrule-31 float = on move = (834) (43) match:class = gsimplecal } windowrule { name = windowrule-32 float = on center = on match:class = imv } windowrule { name = windowrule-33 float = on center = on match:class = org.pwmt.zathura } windowrule { name = windowrule-34 idle_inhibit = fullscreen match:fullscreen = 1 } windowrule { name = windowrule-35 float = on match:class = xdg-desktop-portal-gtk } windowrule { name = windowrule-36 float = on center = on move = (1310) (40) size = 600 900 match:class = blueman-manager } # Keywords $mainMod = SUPER # Bindings bind = $mainMod, Return, exec, $terminal bind = $mainMod, Q, killactive, bind = $mainMod, E, exit, bind = $mainMod, V, togglefloating, bind = $mainMod, P, exec, $menu bind = $mainMod, F, fullscreen bind = $mainMod, C, exec, galculator bind = $mainMod CTRL, T, exec, steam bind = $mainMod, R, exec, retroarch --appendconfig /home/peter/.config/retroarch/config/retroarch.cfg bind = $mainMod CTRL, Y, exec, heroic bind = $mainMod, N, exec, dunstctl context bind = $mainMod CTRL, U, exec, [workspace special:scratchpad silent] signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations bind = $mainMod CTRL, P, exec, [workspace special:password silent] keepassxc bind = $mainMod CTRL, M, exec, [workspace special:music silent] sleep 1; supersonic-desktop # Resize windows main keybind bind=ALT,R,submap,resize # Start a submap resize submap=resize # Set repeatable binds for resizing the active window binde=,right,resizeactive,10 0 binde=,left,resizeactive,-10 0 binde=,up,resizeactive,0 -10 binde=,down,resizeactive,0 10 binde=,l,resizeactive,10 0 binde=,h,resizeactive,-10 0 binde=,k,resizeactive,0 -10 binde=,j,resizeactive,0 10 # Use reset to go back to the global submap bind=,escape,submap,reset # Reset the submap submap=reset # Switch between floating and tiled windows bind = ALT, TAB, cyclenext, floating bind = ALT, SPACE, focuscurrentorlast # Media keys bind = ,XF86AudioPlayPause,exec,~/.bin/sh/dunstaudio.sh play_pause bind = ,XF86AudioPlay,exec,~/.bin/sh/dunstaudio.sh play_pause bind = ,XF86AudioPause,exec,~/.bin/sh/dunstaudio.sh play_pause bind = ,XF86AudioStop,exec,playerctl stop bind = ,XF86AudioNext,exec,~/.bin/sh/dunstaudio.sh next_track bind = ,XF86AudioPrev,exec,~/.bin/sh/dunstaudio.sh prev_track bind = ,XF86AudioRaiseVolume,exec,~/.bin/sh/dunstaudio.sh volume_up bind = ,XF86AudioLowerVolume,exec,~/.bin/sh/dunstaudio.sh volume_down bind = ,XF86AudioMute,exec,~/.bin/sh/dunstaudio.sh volume_mute # Brightness keys bind = ,XF86MonBrightnessUp,exec,~/.bin/sh/dunstaudio.sh brightness_up bind = ,XF86MonBrightnessDown,exec,~/.bin/sh/dunstaudio.sh brightness_down # Move focus with Mod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Move windows with Mod + arrow keys bind = $mainMod CTRL, left, movewindow, l bind = $mainMod CTRL, right, movewindow, r bind = $mainMod CTRL, up, movewindow, u bind = $mainMod CTRL, down, movewindow, d # VI keybindings like God intended bind = $mainMod, h, movefocus, l bind = $mainMod, l, movefocus, r bind = $mainMod, k, movefocus, u bind = $mainMod, j, movefocus, d # Move windows with Mod + vi keys bind = $mainMod CTRL, h, movewindow, l bind = $mainMod CTRL, l, movewindow, r bind = $mainMod CTRL, k, movewindow, u bind = $mainMod CTRL, j, movewindow, d # Switch workspaces with Mod + [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 bind = $mainMod, minus, workspace, 11 bind = $mainMod, equal, workspace, 12 # Move active window to a workspace with Mod + CTRL + [0-9,-,=] bind = $mainMod CTRL, 1, movetoworkspace, 1 bind = $mainMod CTRL, 2, movetoworkspace, 2 bind = $mainMod CTRL, 3, movetoworkspace, 3 bind = $mainMod CTRL, 4, movetoworkspace, 4 bind = $mainMod CTRL, 5, movetoworkspace, 5 bind = $mainMod CTRL, 6, movetoworkspace, 6 bind = $mainMod CTRL, 7, movetoworkspace, 7 bind = $mainMod CTRL, 8, movetoworkspace, 8 bind = $mainMod CTRL, 9, movetoworkspace, 9 bind = $mainMod CTRL, 0, movetoworkspace, 10 bind = $mainMod CTRL, minus, movetoworkspace, 11 bind = $mainMod CTRL, equal, movetoworkspace, 12 # Workspace monitor assignment workspace = 1, monitor:DP-1, default:true workspace = 2, monitor:DP-1 workspace = 3, monitor:DP-1 workspace = 4, monitor:DP-1 workspace = 5, monitor:DP-1 workspace = 6, monitor:DP-2, default:true workspace = 7, monitor:DP-2 workspace = 8, monitor:DP-2 workspace = 9, monitor:DP-2 workspace = 10, monitor:DP-2 workspace = 11, monitor:DP-2 workspace = 12, monitor:DP-2 # Special workspaces bind = $mainMod, U, togglespecialworkspace, scratchpad bind = $mainMod SHIFT, S, movetoworkspace, special:scratchpad bind = $mainMod, M, togglespecialworkspace, music bind = $mainMod, O, togglespecialworkspace, password bind = $mainMod, I, togglespecialworkspace, email # Scroll through existing workspaces with Mod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Scroll through existing workspaces with Mod + vi keys bind = $mainMod ALT, l, workspace, e+1 bind = $mainMod ALT, h, workspace, e-1 # Scroll through existing workspaces with Mod + arrow keys bind = $mainMod ALT, right, workspace, e+1 bind = $mainMod ALT, left, workspace, e-1 # Move/resize windows with Mod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Screenshot bind = ,Print,exec,grim -g "$(slurp)" - | swappy -f - # Environment management bind = $mainMod Shift, n, exec, killall dunst || exec dunst bind = $mainMod Shift, w, exec, killall waybar || exec waybar bind = $mainMod Shift, h, exec, killall hypridle || exec hypridle # Dracula theme general { col.active_border = rgb(6272A4) rgb(bd93f9) 90deg col.inactive_border = rgba(44475aaa) col.nogroup_border = rgba(282a36dd) col.nogroup_border_active = rgb(bd93f9) rgb(44475a) 90deg border_size = 2 } decoration:shadow { color = rgba(1E202966) enabled = true range = 60 offset = 1 2 render_power = 3 scale = 0.97 } group { groupbar { col.active = rgb(bd93f9) rgb(44475a) 90deg col.inactive = rgba(282a36dd) } } windowrule { name = windowrule-37 border_color = rgb(ff5555) match:xwayland = 1 # check if window is xwayland }