Files
dotfiles/config/.config/hypr/hyprland.conf
2025-08-30 20:23:00 +02:00

275 lines
9.6 KiB
Plaintext

#######################################################################################hypr
# Current setup for mirroring
# TODO: create a keybind for F7 to switch betwen
#monitor=,preferred,auto,1
monitor = , preferred, auto, 1, mirror, eDP-1
#######################################################################################
#$terminal = ~/projects/scripts/run_kitty.sh
$terminal = kitty
$explorer = dolphin --platformtheme kvantum
$menu = tofi-drun --terminal=$terminal | sh
#######################################################################################
exec-once = waybar
#exec-once = clipse -listen
exec-once = hyprsunset -t 3000
#exec-once = wl-clip-persist --clipboard regular
exec-once = hyprpaper
exec-once = nm-applet
exec-once = ~/projects/scripts/rnote_mapper.sh
# Check the hostname and enable animations only on a specific device
#exec-once = sh -c 'if [ "$(hostname)" = "minoxy" ]; then hyprctl keyword animations enabled; fi'
#######################################################################################
# Split up the monitors by default for the main working machine
workspace=1,monitor:HDMI-A-1
workspace=2,monitor:HDMI-A-1
workspace=3,monitor:HDMI-A-1
workspace=4,monitor:HDMI-A-1
workspace=5,monitor:HDMI-A-1
workspace=6,monitor:HDMI-A-1
workspace=8,monitor:HDMI-A-1
workspace=7,monitor:HDMI-A-2
workspace=9,monitor:HDMI-A-2
workspace=0,monitor:HDMI-A-2
env = HYPRCURSOR_THEME,catppuccin-frappe-rosewater-cursors
# This cursor needs to bigger than defined in nix becuase I dont know
env = HYPRCURSOR_SIZE,18
env = WLR_NO_HARDWARE_CURSORS,1
#######################################################################################
general {
gaps_in = 3
gaps_out = 0
border_size = 1
#workspace_per_monitor = true
col.active_border = rgba(777777ee) rgba(777777ee)
resize_on_border = false
}
animations {
enabled = no
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1
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
# Default animations, see https://wiki.hypr.land/Configuring/Animations/
# NAME, ONOFF, SPEED, CURVE, [STYLE]
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
}
misc {
disable_hyprland_logo = true
}
input {
kb_layout = us
follow_mouse = 1
touchpad {
natural_scroll = false
}
}
###################
### KEYBINDINGS ###
###################
$mainMod = SUPER
# Quick openers and default bindings
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, B, exec, firefox
bind = $mainMod, R, exec, kitty -e yazi
bind = $mainMod, V, exec, kitty -e nvim
bind = $mainMod, M, exit,
bind = $mainMod, F, togglefloating,
bind = $mainMod, P, exec, $menu
bind = $mainMod, D, exec, $explorer # D for direcotry
# Some keybindings for screenshot and colorpicking
bind = , Print, exec, hyprshot -m region --clipboard-only
bind = SHIFT, Print, exec, hyprpicker -a
bind = CONTROL, Print, exec, hyprshot -m output -m active --clipboard-only
# Move focus with mainMod + vim keys
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d
bind = $mainMod, l, movefocus, r
bind = $mainMod, h, movefocus, l
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 SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod, F12, exec, ~/projects/scripts/unison_sync.sh
# showing the clipboard history
#bind = SUPER, V, exec, kitty --class clipse -e clipse
# Resizeing with mouse buttons while pressed mod
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 3%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 3%-
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%-
# Toggle waybar
bindt = Super_L, W,exec, pkill -SIGUSR1 waybar
bindt = $mainMod SHIFT, L, exec, hyprlock
#######################################################################################
# Some settings for floating apps
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
windowrulev2 = float, class:(clipse)
windowrulev2 = size 622 652, class:(clipse)
windowrulev2 = stayfocused, class:(clipse)
windowrulev2 = float, class:(org.kde.dolphin)
# App rules
# Terminal basekittyd
windowrulev2 = workspace 1, class:(kitty)
windowrulev2 = workspace 1, class:(Emacs)
windowrulev2 = workspace 1, class:(foot)
windowrulev2 = workspace 1, class:(Alacritty)
# Browsers
windowrulev2 = workspace 2, class:(firefox)
windowrulev2 = workspace 2, class:(org.kde.falkon)
windowrulev2 = workspace 2, class:(midori)
windowrulev2 = workspace 2, class:(org.gnome.Epiphany)
# PDFS (keep all the pdfs here)
windowrulev2 = workspace 3, class:(sioyek)
windowrulev2 = workspace 3, class:(zathura)
# Having code here because it is also fast
windowrulev2 = workspace 4, class:(code)
windowrulev2 = workspace 4, class:(thunderbird)
windowrulev2 = workspace 4, class:(jetbrains-studio)
# Gaming and other things
windowrulev2 = workspace 5, class:(steam)
windowrulev2 = workspace 5, class:(blender)
windowrulev2 = workspace 5, class:(com.github.flxzt.rnote)
windowrulev2 = workspace 5, class:(com.github.xournalpp.xournalpp)
windowrulev2 = workspace 6, initialTitle:(LibreOffice)
windowrulev2 = workspace 6, initialTitle:(GNU Image Manipulation Program)
windowrulev2 = workspace 6, class:(org.shotcut.Shotcut)
# Social Apps
windowrulev2 = workspace 7, class:(signal)
windowrulev2 = workspace 7, class:(Slack)
windowrulev2 = workspace 7, class:(zoom)
windowrulev2 = workspace 7, class:(discord)
windowrulev2 = workspace 8, class:(anki)
windowrulev2 = workspace 8, class:(obsidian)
windowrulev2 = workspace 8, class:(org.qbittorrent.qBittorrent)
# Media and passwords
windowrulev2 = workspace 9, class:(\b(feh|mpv|vlc)\b)
windowrulev2 = workspace 9, class:(KeePassXC)
windowrulev2 = workspace 9, class:(spotify)
# Other stuff
windowrulev2 = workspace 10, class:(Matplotlib)
#windowrulev2 = workspace 10, title:(PallSim)
windowrulev2 = workspace 10, class:(m.py)
windowrulev2 = workspace 10, class:(org.prismlauncher.PrismLauncher)
# Can find sioyek in classes
#windowrule = float,^(sioyek)$ # set rounding to 10 for kitty
windowrulev2 = size 900 500, title:(Select Document)
windowrulev2 = size 900 500, title:(Open File)
# Settings applications will float
windowrulev2 = float, class:(qt6ct)
windowrulev2 = float, class:(simple-scan)
windowrulev2 = float, title:(Kvantum Manager)
windowrulev2 = float, class:(qt5ct)
windowrulev2 = float, title:(Open File)
windowrulev2 = float, title:(Open Folder)
windowrulev2 = float, title:(Save As)
# fixing the movement for smaller res displays
windowrulev2 = size 450 450, class:(Gnuplot)
windowrulev2 = move 100 203100, class:(Gnuplot)
windowrulev2 = float, class:(io.github.Qalculate.qalculate-qt)
windowrulev2 = size 700 700, class:(Qalculate!)
#windowrulev2 = tile, class:^(sioyek)$
windowrulev2 = float, title:(Select Document)
windowrulev2 = size 800 250, class:(org.pulseaudio.pavucontrol)
windowrulev2 = move 40 80, class:(org.pulseaudio.pavucontrol)
windowrulev2 = float, class:(org.pulseaudio.pavucontrol)
windowrulev2 = float, class:(cheese)
# Setup drag and drop support for terminal based applications
windowrulev2 = move 50 100, class:(xdragon)
windowrulev2 = pin, class:(xdragon)
windowrulev2 = pseudo, class:(xdragon)
#windowrulev2 = opacity 0.9, class:(xdragon)
windowrulev2 = bordersize 30, class:(xdragon)
windowrulev2 = bordercolor rgba(b3cc1aee) rgba(a3af1aee), class:(xdragon)
windowrulev2 = rounding 3, class:(xdragon)
#######################################################################################