# This is an example Hyprland config file.
#
# Refer to the wiki for more information.
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
# See https://wiki.hyprland.org/Configuring/Monitors/
# monitor=,preferred,auto,1
monitor=eDP-1,1920x1080,1920x0,1
monitor=HDMI-A-1,1920x1080,0x0,1
workspace=HDMI-A-1,1
See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = dunst
exec-once = wlsunset -l 57.4 -L -1.9
exec = ~/.config/hypr/scripts/wallpaper.sh
exec-once = ~/.config/eww/scripts/monitor.sh
exec = ~/.config/eww/scripts/start.sh
exec-once = swayidle timeout 300 'swaylock -f -i ~/.cache/wallpaper --effect-blur 10x5 --clock --indicator --datestr "%a %d %b %Y"' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on'
exec-once = hyprctl dispatcher focusmonitor 1
# source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# Blur Eww Bar
layerrule = blur, gtk-layer-shell
# Blur Fuzzel background
layerrule = blur, launcher
# Blur notifications background
layerrule = blur, notifications
# Blur Wayprompt background
layerrule = blur, wayprompt
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us,gb
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
cursor_inactive_timeout = 4
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 3
blur {
# blur = enabled
size = 3
passes = 1
new_optimizations = on
}
drop_shadow = yes
shadow_range = 8
shadow_render_power = 3
col.shadow = rgba(00000080)
shadow_offset=4 4
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
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, 30, default, loop
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
sensitivity = -0.5
}
misc {
disable_hyprland_logo = true
}
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = float,class:^(mpv)$
windowrulev2 = size 640 360,class:^(mpv)$
windowrulev2 = move 1200 600,class:^(mpv)$
windowrulev2 = tile, class:^(Spotify)$
windowrulev2 = workspace 6, class:^(Spotify)$
windowrulev2 = workspace 5, class:^(gimp-2.99)$
windowrulev2 = workspace 2, class:^(foot)$
windowrulev2 = workspace 4, class:^(org.telegram.desktop)$
windowrulev2 = workspace 9, class:^(aerc)$
# windowrulev2 = float, splash
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, RETURN, exec, foot
bind = $mainMod, W, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod CONTROL, P, exec, ~/.local/bin/powermenu
bind = $mainMod, F, fullscreen,
bind = $mainMod SHIFT, P, pin,
bind = $mainMod SHIFT, F, togglefloating,
bind = $mainMod, SPACE, exec, fuzzel
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, S, togglesplit, # dwindl
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# 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 + arrow keys
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
# Move window with mainMod + SHIFT + arrow keys
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
# Resize window with mainMod + ALT + arrow keys
binde = $mainMod ALT, left, resizeactive, -10 0
binde = $mainMod ALT, right, resizeactive, 10 0
binde = $mainMod ALT, up, resizeactive, 0 -10
binde = $mainMod ALT, down, resizeactive, 0 10
# Resize window with mainMod + ALT + arrow keys
binde = $mainMod ALT, H, resizeactive, -10 0
binde = $mainMod ALT, L, resizeactive, 10 0
binde = $mainMod ALT, K, resizeactive, 0 -10
binde = $mainMod ALT, J, resizeactive, 0 10
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, focusworkspaceoncurrentmonitor, 1
bind = $mainMod, 2, focusworkspaceoncurrentmonitor, 2
bind = $mainMod, 3, focusworkspaceoncurrentmonitor, 3
bind = $mainMod, 4, focusworkspaceoncurrentmonitor, 4
bind = $mainMod, 5, focusworkspaceoncurrentmonitor, 5
bind = $mainMod, 6, focusworkspaceoncurrentmonitor, 6
bind = $mainMod, 7, focusworkspaceoncurrentmonitor, 7
bind = $mainMod, 8, focusworkspaceoncurrentmonitor, 8
bind = $mainMod, 9, focusworkspaceoncurrentmonitor, 9
# bind = $mainMod, 0, workspace, 10
bind = $mainMod, a, togglespecialworkspace
# 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
bind = $mainMod SHIFT, a, movetoworkspacesilent, special
# 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
# Audio
bind = , xf86audiomute, exec, ~/.local/bin/statusbar/volumecontrol mute
bind = , xf86audiolowervolume, exec, ~/.local/bin/statusbar/volumecontrol down
bind = , xf86audioraisevolume, exec, ~/.local/bin/statusbar/volumecontrol up
# Brightness
bind = , xf86monbrightnessdown, exec, ~/.local/bin/statusbar/brightnesscontrol down
bind = , xf86monbrightnessup, exec, ~/.local/bin/statusbar/brightnesscontrol up
# Take a screenshot of the focused output and save it into screenshots
bind = , PRINT, exec, grim -o $(hyprctl monitors | grep -B 12 'focused: yes' | grep 'Monitor' | awk '{ print $2 }') -t jpeg ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
# Take a screenshot of the selected region
bind = $mainMod, PRINT, exec, grim -t jpeg -g "$(slurp)" ~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
# Take a screenshot and save it to the clipboard
bind = $mainMod SHIFT, PRINT, exec, grim -g "$(slurp -d)" - | wl-copy
# Swaps the active workspaces between two monitors
bind = $mainMod, Z, swapactiveworkspaces, HDMI-A-1 eDP-1
# Toggle Eww Bar
bind = $mainMod, B, exec, eww kill || ~/.config/eww/scripts/start.sh
# Toggle keyboard layout
bind = $mainMod SHIFT, Y, exec, hyprctl switchxkblayout at-translated-set-2-keyboard next; hyprctl switchxkblayout justine-smithies-jmspicotkl next
# Run Paru update
bind = $mainMod CONTROL, U, exec, foot bash -c 'paru; ~/.config/eww/scripts/arch-updates.sh Refresh'&
# Move focus to the next monitor
bind = $mainMod CONTROL, period, focusmonitor, +1
# trigger when the lid is up
bindl=,switch:off:Lid Switch,exec,hyprctl dispatch dpms on eDP-1
# trigger when the lid is down
bindl=,switch:on:Lid Switch,exec,hyprctl dispatch dpms off eDP-1 && swaylock -F -i ~/.cache/wallpaper --effect-blur 10x5 --clock --indicator