#---------- # Monitors #---------- # monitor = ,preferred,auto,auto source = ~/.config/hypr/monitors.conf #------------ # auto start #------------ # Slow app launch fix exec-once = systemctl --user import-environment & exec-once = hash dbus-update-activation-environment 2>/dev/null & exec-once = dbus-update-activation-environment --systemd & exec-once = hyprpaper exec-once = hypridle exec-once = waybar -c ~/.config/waybar/config & exec-once = fcitx5 -d & # Keyboard exec-once = mako & # Notifications exec-once = bash -c "mkfifo /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob && tail -f /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob | wob & disown" & # Audio bar exec-once = /usr/lib/polkit-kde-authentication-agent-1 & # exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = hyprctl setcursor Adwaita 24 exec-once = wl-clip-persist --clipboard regular exec-once = bash -c "sleep 1 && killall -e xdg-desktop-portal-hyprland && killall xdg-desktop-portal && /usr/lib/xdg-desktop-portal-hyprland & && sleep 2 && /usr/lib/xdg-desktop-portal &" & exec-once = xwaylandvideobridge #------------------------ # General configurations #------------------------ input { kb_layout = it kb_variant = kb_model = #kb_options = grp:caps_toggle,grp_led:caps,altwin:swap_alt_win,ctrl:rctrl_ralt kb_options = kb_rules = follow_mouse = 1 float_switch_override_focus = 2 touchpad { natural_scroll = yes scroll_factor = 0.2 } sensitivity = 0 # [-1.0 - 1.0] accel_profile = flat } device { name = elecom-elecom-opticalmouse sensitivity = -0.45 } cursor { no_warps = true } general { gaps_in = 3 gaps_out = 5 border_size = 2 col.active_border = rgb(26a269) col.inactive_border = rgb(595959) layout = dwindle # master|dwindle # apply_sens_to_raw = 0 } decoration { active_opacity = 1.0 inactive_opacity = 0.95 fullscreen_opacity = 1.0 rounding = 4 } animations { enabled = yes bezier = overshot, 0.13, 0.99, 0.29, 1.1 animation = windows, 1, 4, overshot, slide animation = windowsOut, 1, 5, default, popin 80% animation = border, 1, 5, default animation = fade, 1, 8, default animation = workspaces, 1, 6, overshot, slide } dwindle { # no_gaps_when_only = false force_split = 0 special_scale_factor = 0.8 split_width_multiplier = 1.0 use_active_for_splits = true # pseudotile = yes preserve_split = yes } misc { # disable_autoreload = true disable_hyprland_logo = true always_follow_on_dnd = true layers_hog_keyboard_focus = true animate_manual_resizes = false enable_swallow = true swallow_regex = focus_on_activate = true # vfr = 1 # new_window_takes_over_fullscreen = 2 } gestures { # workspace_swipe = true # workspace_swipe_fingers = 4 workspace_swipe_distance = 250 workspace_swipe_invert = true workspace_swipe_min_speed_to_force = 15 workspace_swipe_cancel_ratio = 0.5 workspace_swipe_create_new = false } xwayland { force_zero_scaling = true } env = GDK_SCALE,2 env = XCURSOR_SIZE,24 # device { # name = epic-mouse-v1 # sensitivity = -0.5 # } #---------- # Bindings #---------- $mainMod = SUPER # Terminal bind = $mainMod, RETURN, exec, alacritty bind = $mainMod, T, exec, alacritty bind = CTRL ALT, T, exec, alacritty # Screenshot bind = , PRINT, exec, grimblast --notify --freeze copysave area layerrule { name = no_anim_for_selection no_anim = on match:namespace = selection } # Kill bind = $mainMod, Q, killactive, bind = ALT, f4, killactive, # Floating and fullscreen bind = $mainMod, F, togglefloating, bind = $mainMod, P, pin bind = $mainMod, S, fullscreen, 0 bind = $mainMod SHIFT, S, fullscreen, 1 # Wofi bind = $mainMod, SPACE, exec, wofi # Volume control binde = , XF86AudioLowerVolume,exec, pamixer -ud 2 && pamixer --get-volume > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob binde = , XF86AudioRaiseVolume,exec, pamixer -ui 2 && pamixer --get-volume > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob binde = , XF86AudioMute,exec, amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob # Playback control bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous # Screen brightness binde = , XF86MonBrightnessUp, exec, brightnessctl s +2% && brightnessctl -m | awk -F, '{print $4}' | tr -d % > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob binde = , XF86MonBrightnessDown, exec, brightnessctl s 2%- && brightnessctl -m | awk -F, '{print $4}' | tr -d % > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob # Lock screen bind = , XF86PowerOff, exec, hyprlock bind = SUPER_L, l, exec, hyprlock # Reload bind = $mainMod CTRL SHIFT ALT, R, exec, killall -SIGUSR2 waybar && hyprctl reload && notify-send "Waybar and Hyprland reloaded" # Move focus bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d bind = ALT, Tab, cyclenext bind = ALT, Tab, bringactivetotop, # Window movement bind = $mainMod SHIFT,left, movewindow, l bind = $mainMod SHIFT,right, movewindow, r bind = $mainMod SHIFT,up, movewindow, u bind = $mainMod SHIFT,down, movewindow, d bind = $mainMod ALT, left, swapwindow, l bind = $mainMod ALT, right, swapwindow, r bind = $mainMod ALT, up, swapwindow, u bind = $mainMod ALT, down, swapwindow, d bind = $mainMod, D, layoutmsg, togglesplit # Window resize binde = $mainMod CTRL SHIFT, left, resizeactive,-15 0 binde = $mainMod CTRL SHIFT, right, resizeactive,15 0 binde = $mainMod CTRL SHIFT, up, resizeactive,0 -15 binde = $mainMod CTRL SHIFT, down, resizeactive,0 15 # Windows mouse interaction bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Switch 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, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 bind = CTRL ALT, right, workspace, e+1 bind = CTRL ALT, left, workspace, e-1 bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Window workspace movement 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, left, movetoworkspace, -1 bind = $mainMod CTRL, right, movetoworkspace, +1 # binds { # workspace_back_and_forth = 1 # allow_workspace_cycles = 1 # } #--------------- # windows rules #--------------- windowrule = float on, match:class ^(Rofi)$ windowrule = float on, size 960 540, match:class ^(org.pulseaudio.pavucontrol)$ windowrule = float on, match:class ^(org.gnome.FileRoller)$ windowrule = float on, match:class ^(blueman-manager)$ windowrule = float on, match:class ^(xdg-desktop-portal-gtk)$ windowrule = float on, match:class ^(xdg-desktop-portal-kde)$ windowrule = float on, match:class ^(xdg-desktop-portal-hyprland)$ windowrule = float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$ windowrule = float on, match:class ^(CachyOSHello)$ windowrule = float on, match:class ^(zenity)$ windowrule = float on, match:class ^()$, match:title ^(Steam - Self Updater)$ windowrule = float on, match:class ^()$, match:title ^(Picture in picture)$ windowrule = float on, size 960 540, match:title ^(Picture-in-Picture)$ windowrule = float on, size 1080 540, match:class ^(nemo)$ windowrule = animation slide right, match:class ^(alacritty)$ windowrule = float on, match:class ^(discord)$ windowrule = float on, match:class ^(vesktop)$ windowrule = float on, match:class ^(Matplotlib)$ # XWayland workaround windowrule = opacity 0.0 override, no_anim on, no_initial_focus on, max_size 1 1, no_blur on, no_focus on, match:class ^(xwaylandvideobridge)$