diff --git a/stow/.config/hypr/appearance.conf b/stow/.config/hypr/appearance.conf new file mode 100644 index 0000000..73ddc8f --- /dev/null +++ b/stow/.config/hypr/appearance.conf @@ -0,0 +1,54 @@ +general { + gaps_in = 3 + gaps_out = 5 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(ff6161ee) rgba(cc2a2aee) 45deg + col.inactive_border = rgba(e04254aa) +} + +decoration { + rounding = 10 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 5 + passes = 3 + + vibrancy = 0.1696 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + enabled = true + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +misc { +# force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_splash_rendering = true + disable_hyprland_logo = true # makes swww startup more seemless +} diff --git a/stow/.config/hypr/binds.conf b/stow/.config/hypr/binds.conf new file mode 100644 index 0000000..77a11c4 --- /dev/null +++ b/stow/.config/hypr/binds.conf @@ -0,0 +1,96 @@ +# +# keybinds +# https://wiki.hyprland.org/Configuring/Keywords/ + +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Q, exec, uwsm app -- ghostty +bind = $mainMod, B, exec, uwsm app -- firefox +bind = $mainMod, D, exec, vicinae toggle +bind = $mainMod shift, D, exec, uwsm app -- 1password --quick-access +bind = $mainMod, S, exec, uwsm app -- hyprshot -z --clipboard-only -m region +bind = $mainMod shift, S, exec, uwsm app -- hyprshot -z --clipboard-only -m window +bind = $mainMod control, S, exec, uwsm app -- hyprshot -z --clipboard-only -m active +bind = $mainMod, V, exec, uwsm app -- sh ~/.config/hypr/hyprlock.sh + +bind = $mainMod, SPACE, togglefloating, +bind = $mainMod, W, killactive, +bind = $mainMod, M, exec, uwsm stop + +#bind = $mainMod, P, pseudo, # dwindle # have no clue what this does +bind = $mainMod, F, fullscreen +bind = $mainMod, C, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d + +# Move window with mainMod + shift + hjkl +bind = $mainMod shift, h, swapwindow, l +bind = $mainMod shift, l, swapwindow, r +bind = $mainMod shift, k, swapwindow, u +bind = $mainMod shift, j, swapwindow, d + +# brightness keys +bindel = , XF86MonBrightnessUp, exec, brightnessctl s +2% +bindel = , XF86MonBrightnessDown, exec, brightnessctl s 2%- + +# media keys +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- +bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + +# Requires playerctl +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous +bindl = , XF86AudioNext, exec, playerctl next + +# Switch workspaces with mainMod + [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 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +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 + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +input:kb_options = caps:super + +# Controllers Binds +bind = $mainMod, page_up, workspace, e+1 +bind = $mainMod, page_down, workspace, e-1 +bind = $mainMod, insert, exec, hyprexit + + +# gestures +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gesture = 3, horizontal, workspace +gesture = 4, pinch, dispatcher, exec, vicinae toggle +gesture = 4, left, dispatcher, exec, swaync-client -op +gesture = 4, right, dispatcher, exec, swaync-client -cp diff --git a/stow/.config/hypr/hyprland.conf b/stow/.config/hypr/hyprland.conf index a778071..c7c0914 100755 --- a/stow/.config/hypr/hyprland.conf +++ b/stow/.config/hypr/hyprland.conf @@ -1,29 +1,32 @@ +# +# modules +source = binds.conf +source = rules.conf +source = appearance.conf +source = ./matugen.conf -################ -### MONITORS ### -################ - -# See https://wiki.hyprland.org/Configuring/Monitors/ +# +# monitors +# https://wiki.hyprland.org/Configuring/Monitors/ monitor=eDP-1,1920x1080@60,auto,1 -################# -### AUTOSTART ### -################# -# Autostart necessary processes (like notifications daemons, status bars, etc.) -# Or execute your favorite apps at launch like this: +# +# autostart +# desktop exec-once = uwsm app -- swww-daemon exec-once = uwsm app -- waybar exec-once = uwsm app -- swaync exec-once = uwsm app -- vicinae server +exec-once = uwsm app -- fcitx5 +exec-once = systemctl --user start hyprpolkitagent exec-once = hyprshade auto -exec-once = uwsm app -- opensnitch-ui -exec-once = systemctl --user start hyprpolkitagent -exec-once = uwsm app -- fcitx5 -exec-once = uwsm app -- steam -silent -exec-once = uwsm app -- 1password --silent +# apps +exec-once = uwsm app -- opensnitch-ui || echo "" +exec-once = uwsm app -- steam -silent || echo "" +exec-once = uwsm app -- 1password --silent || echo "" ############################# ### ENVIRONMENT VARIABLES ### @@ -33,21 +36,7 @@ exec-once = uwsm app -- 1password --silent env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 -##################### -### LOOK AND FEEL ### -##################### -# Refer to https://wiki.hyprland.org/Configuring/Variables/ - general { - gaps_in = 3 - gaps_out = 5 - - border_size = 2 - - # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors - col.active_border = rgba(ff6161ee) rgba(cc2a2aee) 45deg - col.inactive_border = rgba(e04254aa) - # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = true @@ -57,46 +46,6 @@ general { layout = dwindle } -decoration { - rounding = 10 - - # Change transparency of focused and unfocused windows - active_opacity = 1.0 - inactive_opacity = 1.0 - - shadow { - enabled = true - range = 4 - render_power = 3 - color = rgba(1a1a1aee) - } - - # https://wiki.hyprland.org/Configuring/Variables/#blur - blur { - enabled = true - size = 5 - passes = 3 - - vibrancy = 0.1696 - } -} - -# Matugen theming -source = ./matugen.conf - -# https://wiki.hyprland.org/Configuring/Variables/#animations -animations { - # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - enabled = true - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default -} # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { @@ -104,18 +53,8 @@ dwindle { preserve_split = true # You probably want this } -# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more -master { - new_status = master -} - # https://wiki.hyprland.org/Configuring/Variables/#misc misc { -# 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. :( - disable_splash_rendering = true - disable_hyprland_logo = true # makes swww startup more seemless - enable_swallow = true swallow_regex = ^(com.mitchellh.ghostty)$ } @@ -144,171 +83,9 @@ input { } } -# https://wiki.hyprland.org/Configuring/Variables/#gestures -gesture = 3, horizontal, workspace -gesture = 4, pinch, dispatcher, exec, vicinae toggle -gesture = 4, left, dispatcher, exec, swaync-client -op -gesture = 4, right, dispatcher, exec, swaync-client -cp - # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more device { name = epic-mouse-v1 sensitivity = -0.5 } - - -################### -### KEYBINDINGS ### -################### - -# See https://wiki.hyprland.org/Configuring/Keywords/ -$mainMod = SUPER # Sets "Windows" key as main modifier - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, exec, uwsm app -- ghostty -bind = $mainMod, B, exec, uwsm app -- firefox -bind = $mainMod, D, exec, vicinae toggle -bind = $mainMod shift, D, exec, uwsm app -- 1password --quick-access -bind = $mainMod, S, exec, uwsm app -- hyprshot -z --clipboard-only -m region -bind = $mainMod shift, S, exec, uwsm app -- hyprshot -z --clipboard-only -m window -bind = $mainMod control, S, exec, uwsm app -- hyprshot -z --clipboard-only -m active -bind = $mainMod, V, exec, uwsm app -- sh ~/.config/hypr/hyprlock.sh - -bind = $mainMod, SPACE, togglefloating, -bind = $mainMod, W, killactive, -bind = $mainMod, M, exec, uwsm stop - -#bind = $mainMod, P, pseudo, # dwindle # have no clue what this does -bind = $mainMod, F, fullscreen -bind = $mainMod, C, togglesplit, # dwindle - -# Move focus with mainMod + arrow keys -bind = $mainMod, h, movefocus, l -bind = $mainMod, l, movefocus, r -bind = $mainMod, k, movefocus, u -bind = $mainMod, j, movefocus, d - -# Move window with mainMod + shift + hjkl -bind = $mainMod shift, h, swapwindow, l -bind = $mainMod shift, l, swapwindow, r -bind = $mainMod shift, k, swapwindow, u -bind = $mainMod shift, j, swapwindow, d - -# brightness keys -bindel = , XF86MonBrightnessUp, exec, brightnessctl s +2% -bindel = , XF86MonBrightnessDown, exec, brightnessctl s 2%- - -# media keys -bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ -bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- -bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - -# Requires playerctl -bindl = , XF86AudioPlay, exec, playerctl play-pause -bindl = , XF86AudioPrev, exec, playerctl previous -bindl = , XF86AudioNext, exec, playerctl next - -# Switch workspaces with mainMod + [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 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -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 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - -input:kb_options = caps:super - -# Controllers Binds -bind = $mainMod, page_up, workspace, e+1 -bind = $mainMod, page_down, workspace, e-1 -bind = $mainMod, insert, exec, hyprexit - -############################## -### WINDOWS AND WORKSPACES ### -############################## - -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules - -windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. - -windowrulev2 = noborder,initialClass:ulauncher -windowrulev2 = noblur,initialClass:ulauncher -windowrulev2 = noshadow,initialClass:ulauncher - -windowrulev2 = float,initialTitle:(^KeePassXC - Browser Access Request$) - -windowrulev2 = stayfocused,initialTitle:(^Quick Access — 1Password$) - -windowrulev2 = noanim,initialTitle:(^flameshot$) -windowrulev2 = float,initialTitle:(^flameshot$) - -windowrulev2 = float, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$) -windowrulev2 = pin, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$) -windowrulev2 = noinitialfocus, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$) -windowrulev2 = size 20%, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$) -windowrulev2 = move 76% 0.5%, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$) -windowrulev2 = keepaspectratio, initialTitle:(^Picture-in-Picture$), initialClass:(^firefox$) - -windowrulev2 = move -100% -100%, initialClass:(^xwaylandvideobridge$) -windowrulev2 = noinitialfocus, initialClass:(^xwaylandvideobridge$) - -windowrulev2 = dimaround, initialClass:(^polkit-gnome-authentication-agent-1$) -windowrulev2 = center, initialClass:(^polkit-gnome-authentication-agent-1$) -windowrulev2 = float, initialClass:(^polkit-gnome-authentication-agent-1$) -windowrulev2 = pin, initialClass:(^polkit-gnome-authentication-agent-1$) -windowrulev2 = stayfocused, initialClass:(^polkit-gnome-authentication-agent-1$) -windowrulev2 = animation gnomed, initialClass:(^polkit-gnome-authentication-agent-1$) - -windowrulev2 = dimaround, initialClass:(^opensnitch_ui$) -windowrulev2 = stayfocused, initialClass:(^opensnitch_ui$) -windowrulev2 = animation slidein, initialClass:(^opensnitch_ui$) -windowrulev2 = float, initialClass:(^opensnitch_ui$) -windowrulev2 = size 960 540, initialClass:(^opensnitch_ui$) -windowrulev2 = center, initialClass:(^opensnitch_ui$) - -windowrulev2 = idleinhibit fullscreen, initialTitle:(.*) - -windowrulev2 = pin, initialTitle:(^Steam Input On-screen Keyboard$) -windowrulev2 = noblur, initialTitle:(^Steam Input On-screen Keyboard$) -windowrulev2 = bordersize 0, initialTitle:(^Steam Input On-screen Keyboard$) -windowrulev2 = noshadow, initialTitle:(^Steam Input On-screen Keyboard$) - -windowrulev2 = center, initialClass:(^1Password$),floating:1 -windowrulev2 = persistentsize, initialClass:(^1Password$),floating:1 -windowrulev2 = dimaround, initialClass:(^1Password$),floating:1 -windowrulev2 = animation popin, initialClass:(^1Password$),floating:1 - -# disable fade animation for vicinae only -layerrule = noanim, vicinae - -# layer rules -layerrule = animation slide right, waybar - -layerrule = blur,vicinae -layerrule = ignorealpha 0, vicinae diff --git a/stow/.config/hypr/rules.conf b/stow/.config/hypr/rules.conf new file mode 100644 index 0000000..22fb1c9 --- /dev/null +++ b/stow/.config/hypr/rules.conf @@ -0,0 +1,95 @@ +# +# windows and workspaces +# https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +windowrule { + name = windowrule-1 + suppress_event = maximize + match:class = .* # You'll probably like this. +} + +windowrule { + name = inhibit-fullscreen + idle_inhibit = fullscreen + match:initial_title = (.*) +} + + +windowrule { + name = float-keypass-confirmation + float = on + match:initial_title = (^KeePassXC - Browser Access Request$) +} + +windowrule { + name = windowrule-6 + float = on + pin = on + no_initial_focus = on + size = (monitor_w*0.2) + move = ((monitor_w*0.76)) ((monitor_h*0.005)) + keep_aspect_ratio = on + match:initial_title = (^Picture-in-Picture$) + match:initial_class = (^firefox$) +} + + +windowrule { + name = hide-xwaylandvideobridge + move = (-(monitor_w*1)) (-(monitor_h*1)) + no_initial_focus = on + match:initial_class = (^xwaylandvideobridge$) +} + + +windowrule { + name = polkit + dim_around = on + center = on + float = on + pin = on + stay_focused = on + animation = gnomed + match:initial_title = (^Hyprland Polkit Agent$) +} + + +windowrule { + name = opensnitch-confirmation + dim_around = on + stay_focused = on + animation = slidein + float = on + size = 960 540 + center = on + match:initial_class = (^opensnitch_ui$) + match:initial_title = negative:(^OpenSnitch Network Statistics 1.8.0$) +} + + +windowrule { + name = steam-onscreen-keyboard + pin = on + no_blur = on + border_size = 0 + no_shadow = on + match:initial_title = (^Steam Input On-screen Keyboard$) +} + +# disable fade animation for vicinae only +layerrule { + name = layerrule-1 + no_anim = on + blur = on + ignore_alpha = 0 + match:namespace = vicinae +} + +# layer rules +layerrule { + name = layerrule-2 + animation = slide right + match:namespace = waybar +} +