dotfiles/home/.config/hypr/hyprland.conf

348 lines
11 KiB
Plaintext
Raw Normal View History

2022-11-07 21:59:52 +00:00
################
### MONITORS ###
################
2022-10-29 18:25:42 +00:00
# Should be configured per-profile
2022-11-20 01:11:02 +00:00
# monitor = HDMI-A-2, 1920x1080@60, 0x0, 1
# monitor = eDP-1, 1920x1080@60, 1920x0, 1
# monitor = , preferred, auto, 1
2022-11-07 21:59:52 +00:00
#################
### AUTOSTART ###
#################
2022-10-29 18:25:42 +00:00
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
2023-01-25 00:17:03 +00:00
exec-once = systemctl --user start xdg-desktop-portal-hyprland
exec-once = systemctl --user start wm-ready.target
2023-01-25 00:17:23 +00:00
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
2022-10-29 18:25:42 +00:00
exec-once = setbg
2023-01-25 00:35:39 +00:00
exec-once = sleep 2 && eww open bar0
2022-11-20 01:11:02 +00:00
#exec-once = eww open bar1
2022-10-29 18:25:42 +00:00
exec-once = aa-notify -p
exec-once = udiskie -A -T
2022-10-29 18:38:38 +00:00
# exec-once = nm-applet --indicator
2022-10-29 18:25:42 +00:00
2023-01-25 00:17:48 +00:00
exec-once = discord
2022-11-07 21:59:52 +00:00
# exec-once = webcord --start-minimized
2022-10-29 18:25:42 +00:00
2022-11-07 21:59:52 +00:00
#########################
### CATEGORY SETTINGS ###
#########################
2022-10-29 18:25:42 +00:00
general {
gaps_in = 5
gaps_out = 8
border_size = 2
2022-11-07 21:59:52 +00:00
2022-10-29 18:25:42 +00:00
#col.active_border = 0xFF327BD1 # blue
col.active_border = 0xFFFFA500 # orange
2022-11-07 21:59:52 +00:00
# col.inactive_border = 0xFF000000 # black
col.inactive_border = 0xAA444444 # gray
2022-11-09 11:49:18 +00:00
# cursor_inactive_timeout = 10
2022-11-07 21:59:52 +00:00
# no_cursor_warps = true
2022-10-29 18:25:42 +00:00
layout = dwindle
}
decoration {
rounding = 8
2022-11-07 21:59:52 +00:00
blur = true
2022-10-29 18:25:42 +00:00
blur_size = 3
blur_passes = 2
2022-11-07 21:59:52 +00:00
blur_new_optimizations = true
drop_shadow = true
2023-01-25 00:45:34 +00:00
shadow_range = 20
2022-11-07 21:59:52 +00:00
shadow_render_power = 2
shadow_ignore_window = true
shadow_offset = [0 0]
col.shadow = 0xE60F0F0F
2023-01-25 00:45:34 +00:00
# col.shadow = 0xFFFFA500
2022-11-07 21:59:52 +00:00
col.shadow_inactive = 0x990F0F0F
dim_inactive = false
dim_strength = 0.05
2022-10-29 18:25:42 +00:00
}
animations {
2022-11-07 21:59:52 +00:00
enabled = true
2022-10-29 18:25:42 +00:00
animation = windows, 1, 3, default, popin 50%
animation = border, 1, 4, default
animation = fade, 1, 4, default
animation = workspaces, 1, 3, default
}
2022-11-07 21:59:52 +00:00
input {
kb_layout = us, sk
kb_variant = ,qwerty
kb_options = grp:alt_shift_toggle
numlock_by_default=true
follow_mouse = 1
}
gestures {
workspace_swipe = true
workspace_swipe_fingers = 3
workspace_swipe_distance = 300
workspace_swipe_invert = false
workspace_swipe_min_speed_to_force = 20
workspace_swipe_cancel_ratio = 0.650000
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
}
2022-10-29 18:25:42 +00:00
dwindle {
2022-11-07 21:59:52 +00:00
pseudotile = false
preserve_split = true
no_gaps_when_only = false
col.group_border_active = 0xFF8ec07c
col.group_border = 0xFF665c54
2022-10-29 18:25:42 +00:00
}
2022-11-07 21:59:52 +00:00
####################
### WINDOW RULES ###
####################
2022-10-29 18:25:42 +00:00
# Automatically move windows to their workspace
windowrulev2 = workspace 2, class:^(firefox)$
windowrulev2 = workspace 4, class:^(discord)$
windowrulev2 = workspace 4, class:^(WebCord)$
2022-11-09 10:16:14 +00:00
windowrulev2 = workspace 5, class:^(Spotify)$
2022-11-20 01:10:50 +00:00
windowrulev2 = workspace 6, class:^(Stremio)$
2022-10-29 18:25:42 +00:00
# Give apps proper size
windowrulev2 = float, class:^(qalculate-gtk)$
windowrulev2 = size 800 550, class:^(qalculate-gtk)$
2022-11-09 10:16:14 +00:00
windowrulev2 = tile, class:^(Spotify)$
2022-10-29 18:25:42 +00:00
2022-11-07 21:59:52 +00:00
# Float some firefox windows (like bookmark menus, or some extension windows)
2022-10-29 18:38:38 +00:00
windowrulev2 = float, class:^(firefox)$,title:^(Revert Bookmarks)$
windowrulev2 = float, class:^(firefox)$,title:^(Library)$
2022-11-07 21:59:52 +00:00
windowrulev2 = float, class:^(firefox)$,title:^(Extension: \(uBlock Origin\))
windowrulev2 = float, class:^(firefox)$,title:^(Firefox — Sharing Indicator)$
# Float some pcmanfm windows
windowrulev2 = float, class:^(pcmanfm-qt)$,title:^(Mount)$
windowrulev2 = float, class:^(pcmanfm-qt)$,title:^(Preferences)$
windowrulev2 = float, class:^(pcmanfm-qt)$,title:^(Move files)$
windowrulev2 = float, class:^(pcmanfm-qt)$,title:^(Search Files)$
windowrulev2 = float, class:^(pcmanfm-qt)$,title:^(Copy Files)$
windowrulev2 = float, class:^(pcmanfm-qt)$,title:^(Confirm to replace files)$
2022-10-29 18:38:38 +00:00
2022-11-17 15:28:39 +00:00
# Idle inhibit rules
windowrulev2 = idleinhibit focus, class:^(Stremio)$
windowrulev2 = idleinhibit focus, class:^(mpv)$
windowrulev2 = idleinhibit focus, class:^(firefox)$,title:^(.+ - YouTube — Mozilla Firefox)$
2022-11-07 21:59:52 +00:00
####################
### KEY BINDINGS ###
####################
2022-10-29 18:25:42 +00:00
$SCREENSHOT_FORMAT = "${XDG_SCREENSHOTS_DIR:-$HOME/Pictures/Screenshots}/Screenshot_$(date +%Y-%m-%d_%H-%M-%S).png"
$SCREENSHOT_DELAY = 2000
2022-11-07 21:59:52 +00:00
$MOUSE_LMB = mouse:272
$MOUSE_RMB = mouse:273
$MOUSE_MMB = mouse:274
$MOUSE_EX1 = mouse:275
$MOUSE_EX2 = mouse:276
2022-10-29 18:25:42 +00:00
2022-11-07 21:59:52 +00:00
# DE/WM control
bind = SUPER_SHIFT, Q, exec, menuquit
2022-11-07 21:59:52 +00:00
bind = SUPER_CTRL, L, exec, loginctl lock-session
2022-10-29 18:25:42 +00:00
bind = SUPER_SHIFT, L, exec, wlogout -p layer-shell
2022-10-30 18:33:47 +00:00
bind = SUPER_SHIFT, T, exec, toggle-idle
bind = SUPER_SHIFT, D, exec, toggle-notifications
2022-10-29 18:25:42 +00:00
# Programs
2022-11-07 21:59:52 +00:00
bind = SUPER, R, exec, wofi --show drun
bind = SUPER_SHIFT, Return, exec, wofi --show run
2022-10-29 18:25:42 +00:00
bind = SUPER, Return, exec, alacritty
2023-01-25 00:33:05 +00:00
bind = SUPER, X, exec, pcmanfm-qt
2022-10-29 18:25:42 +00:00
bind = SUPER, B, exec, firefox
2022-11-19 21:16:44 +00:00
bind = SUPER, S, exec, spotify
2023-01-25 00:35:09 +00:00
bind = SUPER, D, exec, discord
2022-11-07 21:59:52 +00:00
bind = SUPER, C, exec, qalculate-gtk
bind = , XF86Calculator, exec, qalculate-gtk
2022-11-19 21:16:05 +00:00
bind = SUPER, N, exec, [float] alacritty -e mknote
bind = SUPER_SHIFT, N, exec, [float] alacritty -e lvim ~/TODO
2022-10-29 18:25:42 +00:00
# Notifications
bind = CTRL, grave, exec, dunstctl close
bind = CTRL_SHIFT, grave, exec, dunstctl close-all
bind = CTRL, period, exec, dunstctl history-pop
bind = CTRL_SHIFT, period, exec, dunstctl context
# Volume comtrol
2022-10-29 18:38:38 +00:00
binde = SUPER, Down, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-
binde = SUPER, Up, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+
binde = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-
binde = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
2022-10-29 18:25:42 +00:00
# Brightness control
binde = SUPER, Right, exec, brightness -i 5% -n
binde = SUPER, Left, exec, brightness -d 5% -n
binde = , XF86MonBrightnessUp, exec, brightness -i 5% -n
binde = , XF86MonBrightnessDown, exec, brightness -d 5% -n
# Screenshots (with custom screenshot script)
bind = ALT, Print, exec, wl-copy --type image/png "$(hyprpicker)" && notify-send 'Picked color' "$(wl-paste) (saved to clipboard)"
bind = , Print, exec, screenshot --notify --copy --target area
bind = SUPER, Print, exec, screenshot --notify --copy --target area --edit
bind = SHIFT, Print, exec, screenshot --notify --save $SCREENSHOT_FORMAT --target area
bind = CTRL, Print, exec, screenshot --notify --copy --target area --delay $SCREENSHOT_DELAY
bind = SUPER_SHIFT, Print, exec, screenshot --notify --save $SCREENSHOT_FORMAT --target area --edit
bind = SUPER_CTRL, Print, exec, screenshot --notify --copy --target area --delay $SCREENSHOT_DELAY --edit
bind = SUPER_SHIFT_CTRL, Print, exec, screenshot --notify --save $SCREENSHOT_FORMAT --target area --delay $SCREENSHOT_DELAY --edit
2022-11-07 21:59:52 +00:00
# Active window
bind = SUPER, W, killactive,
bind = SUPER, F, togglefloating,
bind = SUPER, Space, fullscreen, 0
bind = SUPER_SHIFT, Space, fullscreen, 1
bind = CTRL_SHIFT, Space, exec, toggle-fakefullscreen
2022-11-07 21:59:52 +00:00
bind = SUPER, P, exec, bash -c "if hyprctl activewindow | grep 'floating: 0'; then hyprctl dispatch togglefloating active; fi; hyprctl dispatch pin active"
bind = SUPER_SHIFT, P, pseudo,
bind = SUPER_SHIFT, S, togglesplit,
2022-10-29 18:25:42 +00:00
2022-11-07 21:59:52 +00:00
# Window groups
bind = SUPER, G, togglegroup,
bind = ALT, tab, changegroupactive, f
bind = ALT, grave, changegroupactive, b
2022-10-29 18:38:38 +00:00
2023-01-25 00:34:32 +00:00
# Special workspace (scratchpad)
bind = ALT, grave, movetoworkspace, special
bind = SUPER, grave, togglespecialworkspace,
# Move window focus
2022-10-29 18:25:42 +00:00
bind = SUPER, h, movefocus, l
bind = SUPER, l, movefocus, r
bind = SUPER, k, movefocus, u
bind = SUPER, j, movefocus, d
2023-01-25 00:34:13 +00:00
# Move active window in direction
bind = SUPER_ALT, h, movewindow, l
bind = SUPER_ALT, l, movewindow, r
bind = SUPER_ALT, k, movewindow, u
bind = SUPER_ALT, j, movewindow, d
# Move between workspaces, swapping to current monitor (like xmonad)
bind = SUPER, 1, exec, swap-workspace 1
bind = SUPER, 2, exec, swap-workspace 2
bind = SUPER, 3, exec, swap-workspace 3
bind = SUPER, 4, exec, swap-workspace 4
bind = SUPER, 5, exec, swap-workspace 5
bind = SUPER, 6, exec, swap-workspace 6
bind = SUPER, 7, exec, swap-workspace 7
bind = SUPER, 8, exec, swap-workspace 8
bind = SUPER, 9, exec, swap-workspace 9
2022-10-29 18:25:42 +00:00
# Move windows to workspaces
bind = SUPER_SHIFT, 1, movetoworkspacesilent, 1
bind = SUPER_SHIFT, 2, movetoworkspacesilent, 2
bind = SUPER_SHIFT, 3, movetoworkspacesilent, 3
bind = SUPER_SHIFT, 4, movetoworkspacesilent, 4
bind = SUPER_SHIFT, 5, movetoworkspacesilent, 5
bind = SUPER_SHIFT, 6, movetoworkspacesilent, 6
bind = SUPER_SHIFT, 7, movetoworkspacesilent, 7
bind = SUPER_SHIFT, 8, movetoworkspacesilent, 8
bind = SUPER_SHIFT, 9, movetoworkspacesilent, 9
# Move windows to workspaces and focus it there
bind = ALT, 1, movetoworkspace, 1
bind = ALT, 2, movetoworkspace, 2
bind = ALT, 3, movetoworkspace, 3
bind = ALT, 4, movetoworkspace, 4
bind = ALT, 5, movetoworkspace, 5
bind = ALT, 6, movetoworkspace, 6
bind = ALT, 7, movetoworkspace, 7
bind = ALT, 8, movetoworkspace, 8
bind = ALT, 9, movetoworkspace, 9
2022-11-07 21:59:52 +00:00
# Cycle workspaces (relative movement)
bind = SUPER, mouse_down, workspace, +1
bind = SUPER, mouse_up, workspace, -1
bind = SUPER, bracketleft, workspace, -1
bind = SUPER, bracketright, workspace, +1
2022-10-29 18:25:42 +00:00
# Cycle monitors
2022-11-17 15:30:56 +00:00
bind = SUPER_SHIFT, bracketleft, focusmonitor, -1
bind = SUPER_SHIFT, bracketright, focusmonitor, +1
2022-10-29 18:25:42 +00:00
2022-11-07 21:59:52 +00:00
# Mouse window resizing
bindm = SUPER, $MOUSE_LMB, movewindow
bindm = SUPER, $MOUSE_RMB, resizewindow
# Quick keyboard window resizing
binde = ALT, right, resizeactive, 10 0
binde = ALT, left, resizeactive, -10 0
binde = ALT, up, resizeactive, 0 -10
binde = ALT, down, resizeactive, 0 10 binde = , L, resizeactive, 10 0
binde = ALT, H, resizeactive, -10 0
binde = ALT, K, resizeactive, 0 -10
binde = ALT, J, resizeactive, 0 10
binde = ALT, L, resizeactive, 10 0
# Precise keyboard window resizing (group)
bind = SUPER, slash, submap, resize
submap = resize
binde = , right, resizeactive, 10 0
binde = , left, resizeactive, -10 0
binde = , up, resizeactive, 0 -10
binde = , down, resizeactive, 0 10
binde = SUPER, right, resizeactive, 30 0
binde = SUPER, left, resizeactive, -30 0
binde = SUPER, up, resizeactive, 0 -30
binde = SUPER, down, resizeactive, 0 30
binde = SHIFT, right, resizeactive, 1 0
binde = SHIFT, left, resizeactive, -1 0
binde = SHIFT, up, resizeactive, 0 -1
binde = SHIFT, down, resizeactive, 0 1
binde = , H, resizeactive, -10 0
binde = , K, resizeactive, 0 -10
binde = , J, resizeactive, 0 10
binde = , L, resizeactive, 10 0
binde = , right, resizeactive, 10 0
binde = , left, resizeactive, -10 0
binde = , up, resizeactive, 0 -10
binde = , down, resizeactive, 0 10
2022-11-07 21:59:52 +00:00
binde = SUPER, H, resizeactive, -30 0
binde = SUPER, K, resizeactive, 0 -30
binde = SUPER, J, resizeactive, 0 30
binde = SUPER, L, resizeactive, 30 0
binde = SHIFT, H, resizeactive, -1 0
binde = SHIFT, K, resizeactive, 0 -1
binde = SHIFT, J, resizeactive, 0 1
binde = SHIFT, L, resizeactive, 1 0
bind = , escape, submap, reset
bind = , return, submap, reset
2022-11-07 21:59:52 +00:00
bind = SUPER, slash, submap, reset
submap = reset
# Global keybinds (passing keys to other programs)
bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$
bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$