Files
lnx-arch/dots/hyprland/hyprland.conf

522 lines
18 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# --------------------------------------------------
# klevstul :: doc @ https://wiki.hyprland.org/
# --------------------------------------------------
####################################################
### 0 : key programs ###
####################################################
# https://wiki.hypr.land/Configuring/Keywords/
$terminal = kitty
$fileManager = pcmanfm
$menu = hyprlauncher
####################################################
### autostart ###
####################################################
exec-once = startup.sh
#exec-once = waybar & hyprpaper
#exec-once = hypropolkitagent
####################################################
### environment variables ###
####################################################
# https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
####################################################
### input & such ###
####################################################
# - - - - - - - - - - - - - - - - - - - - - - - - -
# input
# - - - - -
# https://wiki.hypr.land/Configuring/Variables/#input
# - - - - - - - - - - - - - - - - - - - - - - - - -
input {
kb_layout = us,no
kb_variant =
kb_model =
kb_options = grp:caps_toggle,grp_led:scroll
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# gesture
# - - - - -
# https://wiki.hypr.land/Configuring/Gestures
# - - - - - - - - - - - - - - - - - - - - - - - - -
gesture = 3, horizontal, workspace
# - - - - - - - - - - - - - - - - - - - - - - - - -
# per-device input configssc
# - - - - -
# https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs
# - - - - - - - - - - - - - - - - - - - - - - - - -
device {
name = epic-mouse-v1
sensitivity = -0.5
}
####################################################
### look & feel ###
####################################################
# https://wiki.hypr.land/Configuring/Variables/
# - - - - - - - - - - - - - - - - - - - - - - - - -
# general
# - - - - -
# https://wiki.hypr.land/Configuring/Variables/#general
# - - - - - - - - - - - - - - - - - - - - - - - - -
general {
gaps_in = 4
gaps_out = 4
border_size = 2
# colour info: https://wiki.hypr.land/Configuring/Variables/#variable-types
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
# set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# see https://wiki.hypr.land/Configuring/Tearing/ before enabling this
allow_tearing = false
# dwindle: https://wiki.hypr.land/Configuring/Dwindle-Layout/
# Dwindle is a BSPWM-like (Binary Space Partition Window Manager) layout, where every window on a workspace is a member of a binary tree.
# master: https://wiki.hypr.land/Configuring/Master-Layout/
# makes one (or more) window(s) be the “master”, taking (by default) the left part of the screen, and tiles the rest on the right
# scrolling: https://wiki.hypr.land/Configuring/Scrolling-Layout/
# windows get positioned on an infinitely growing tape
# monocle: https://wiki.hypr.land/Configuring/Monocle-Layout/
# windows are always taking up the entire available space
layout = dwindle
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# decoration
# - - - - -
# https://wiki.hypr.land/Configuring/Variables/#decoration
# - - - - - - - - - - - - - - - - - - - - - - - - -
decoration {
rounding = 10
rounding_power = 2
# 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.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# animations
# - - - - -
# https://wiki.hypr.land/Configuring/Variables/#animations
# - - - - - - - - - - - - - - - - - - - - - - - - -
animations {
enabled = true
# 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
animation = zoomFactor, 1, 7, quick
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# dwindle layout
# - - - - -
# https://wiki.hypr.land/Configuring/Dwindle-Layout/
# - - - - - - - - - - - - - - - - - - - - - - - - -
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# master layout
# - - - - -
# https://wiki.hypr.land/Configuring/Master-Layout/
# - - - - - - - - - - - - - - - - - - - - - - - - -
master {
new_status = master
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# misc
# - - - - -
# https://wiki.hypr.land/Configuring/Variables/#misc
# - - - - - - - - - - - - - - - - - - - - - - - - -
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
mouse_move_enables_dpms = false # mouse move will not turn on screen(s)
key_press_enables_dpms = true # key press will turn on screen(s)
}
####################################################
### binds (keybindings) ###
####################################################
# https://wiki.hypr.land/Configuring/Binds/
# - - - - - - - - - - - - - - - - - - - - - - - - -
# keysyms (use segment after XKB_KEY_):
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
#
# three keys bind example:
# bind = $mainMod_SHIFT, space, togglefloating
#
# bind[flags]=..
# bindrl=MOD,KEY,exec,amongus
# flags:
# l -> locked, aka. works also when an an input inhibitor (e.g. a lockscreen) is active
# r -> release, will trigger on release of a key
# e -> repeat, will repeat when held.
# m -> mouse
# - - - - - - - - - - - - - - - - - - - - - - - - -
# set "windows" key as main modifier
$mainMod = SUPER
# startup of key programs
bind = $mainMod, D, exec, $menu
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, F3, exec, $fileManager
# key operations
bind = $mainMod, L, exec, hyprlock # lock
bind = $mainMod, O, exec, sleep 1; hyprctl dispatch dpms off; hyprlock # monitor off & lock (had to sleep to avoid immediate wakeup)
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, ESCAPE, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit # exit alt. 1
bind = $mainMod CTRL, ESCAPE, exit, # exit alt. 2
# view mode change
bind = $mainMod, I, togglefloating,
bind = $mainMod, P, pseudo, # dwindle - pseudotiled windows retain their floating size when tiled
bind = $mainMod, W, togglesplit, # dwindle - toggle split mode (top/side)
# fullscreen
bind = $mainMod, F, fullscreen, 1 # fullscreen, with border
bind = $mainMod, G, fullscreen, 0 # fullscreen, fill entire screen
# togglegroup
# https://www.reddit.com/r/hyprland/comments/1nfpjps/about_togglegroup/
# NOTE: SHIFT TAB is used by vscodium (and possible other apps)
#bind = $mainMod, T, togglegroup
#bind = SHIFT, TAB, changegroupactive, t # t: forward, b: backwards
#bind = SUPER_SHIFT, TAB, changegroupactive, b
# screenshot
# https://github.com/alonso-herreros/hyprcap
bind = , PRINT, exec, screenshot.sh region # region
bind = $mainMod SHIFT, PRINT, exec, screenshot.sh monitor # monitor
bind = $mainMod, PRINT, exec, screenshot.sh window # window
#bind = $MOD SHIFT, R, exec, hyprcap rec region -c -n # Toggle recording a region
#bind = $MOD SHIFT ALT, R, exec, hyprcap rec window:active -c -n # Toggle recording current window
#bind = $MOD SHIFT CTRL, R, exec, hyprcap rec -c -n # Toggle recording with interactive selection
# view mode
#bind = $mainMod, M, exec, hyprctl keyword general:layout "master" # [M]aster
#bind = $mainMod, N, exec, hyprctl keyword general:layout "dwindle" # dwi[N]dle
#bind = $mainMod, M, layoutmsg, swapwithmaster master
#bind = $mainMod, N, layoutmsg, swapwithmaster dwindle
# cycle in between dwindle and masterS
#bind = $mainMod + L, exec, sh -c 'if hyprctl -j getoption general:layout | jq -r .str | grep -q "dwindle"; then hyprctl keyword general:layout master; else hyprctl keyword general:layout dwindle; fi'
# split mode
bind = $mainMod, H, layoutmsg, preselect r # next window to the right (horizontal mode)
bind = $mainMod SHIFT, H, layoutmsg, preselect r # next window to the left
bind = $mainMod, V, layoutmsg, preselect d # next window to the top (vertical mode)
bind = $mainMod SHIFT, V, layoutmsg, preselect d # next window to the bottom
# resize
#bind = $mainMod, R, submap, resize
#submap = resize
#bind = , up, resizeactive, 0 -100
#bind = , down, resizeactive, 0 100
#bind = , Return, submap, reset
#submap = reset
# window cycle
# https://github.com/hyprwm/Hyprland/issues/2061
#bind = ALT, TAB, cyclenext # cycle windows in same workspace
#bind = ALT, TAB, bringactivetotop # bring focused window to top
bind = ALT, Tab, focuscurrentorlast # switch focus from current to previous window
# 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
# 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
# move window
bind = $mainMod SHIFT, left, movewindoworgroup, l
bind = $mainMod SHIFT, right, movewindoworgroup, r
bind = $mainMod SHIFT, up, movewindoworgroup, u
bind = $mainMod SHIFT, down, movewindoworgroup, d
# move floating window
binde = $mainMod ALT, left, moveactive, -40 0
binde = $mainMod ALT, right, moveactive, 40 0
binde = $mainMod ALT, up, moveactive, 0 -40
binde = $mainMod ALT, down, moveactive, 0 40
# resize window
binde = $mainMod CTRL, left, resizeactive, -40 0
binde = $mainMod CTRL, right, resizeactive, 40 0
binde = $mainMod CTRL, up, resizeactive, 0 -40
binde = $mainMod CTRL, down, resizeactive, 0 40
# Example special workspace (scratchpad)
#bind = $mainMod, S, togglespecialworkspace, magic
#bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# 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
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# focus window
# `hyprctl clients` - for window names
#bind = $mainMod, semicolon, focuswindow, kitty # cli
#bind = $mainMod, G, focuswindow, gimp
#bind = $mainMod, K, focuswindow, GitKraken # git[K]raken
#bind = $mainMod, C, focuswindow, VSCodium # vs[C]odium
#bind = $mainMod, B, focuswindow, Sublime Text # su[B]lime
#bind = $mainMod, Y, focuswindow, reaper # [y] not reaper
#bind = $mainMod, I, focuswindow, firefox # [I]nternet
# cycle in between workspaces
binds {
allow_workspace_cycles = true
}
bind = SUPER, Tab, workspace, previous
# window_direction_monitor_fallback controls how window movement behaves when crossing monitor boundaries.
# when set to true, window movement (e.g., via keybinds) will automatically switch to the adjacent monitor
# if the target direction (left/right/up/down) would move the window beyond the current monitors edge.
# when set to false, movement stops at the monitor edge, and no monitor switch occurs.
binds {
window_direction_monitor_fallback = false
}
####################################################
### monitors ###
####################################################
# https://wiki.hypr.land/Configuring/Monitors/
# nifty, to list all monitors/displays:
# `hyprctl monitors all`
# NOTE:
# monitors are controlled using `hyprmon`, which is executed at startup by `startup.sh`
# --------------------------------------------------
# # example configuration of four displays (three active):
# monitor = eDP-1, disable # disable laptop monitor
# monitor = DP-2, highres@highrr, 0x-750, 1, transform, 3 # rotate the left monitor 270 degrees, and lower it
# monitor = DP-1, highres@highrr, auto, 0.83 # main monitor: monitor = name, res, pos, scale
# monitor = HDMI-A-1, highres@highrr, auto, 1, transform, 1 # rotate right monitor 90 degrees
# --------------------------------------------------
# default settings for new displays that are connected (they will show up to the right of the rightmost display):
# monitor = name, resolution, position, scale
#monitor = , preferred, auto, auto
monitor = , highres@highrr, auto, 1
####################################################
### nvidia ###
####################################################
# https://wiki.hypr.land/Nvidia/
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
####################################################
### plugins ###
####################################################
# https://wiki.hypr.land/Plugins/Using-Plugins/
#plugin {
#}
####################################################
### windows and workspaces ###
####################################################
# - - - - - - - - - - - - - - - - - - - - - - - - -
# windows
# - - - - -
# https://wiki.hypr.land/Configuring/Window-Rules/
# - - - - - - - - - - - - - - - - - - - - - - - - -
# 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
#
# `hyprctl clients` - for class names
# [fk 260226: might be obsolete]
# something is off with onlyoffice, as it is floating by default. hence this one.
# windowrulev2 = tile,class:^(ONLYOFFICE Desktop Editors)$
windowrule {
# Ignore maximize requests from all apps. You'll probably like this.
name = suppress-maximize-events
match:class = .*
suppress_event = maximize
}
windowrule {
# Fix some dragging issues with XWayland
name = fix-xwayland-drags
match:class = ^$
match:title = ^$
match:xwayland = true
match:float = true
match:fullscreen = false
match:pin = false
no_focus = true
}
# Hyprland-run windowrule
windowrule {
name = move-hyprland-run
match:class = hyprland-run
move = 20 monitor_h-120
float = yes
}
# always have speedcrunch floating
# same as:
# windowrule = match:class .*(speedcrunch).*, float on
# windowrule = match:class .*(speedcrunch).*, size 800 500
windowrule {
name = always-make-speedcrunch-float
match:class = .*(speedcrunch).*
float = on
size = 800 500
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# workspaces
# - - - - -
# https://wiki.hypr.land/Configuring/Workspace-Rules/
# - - - - - - - - - - - - - - - - - - - - - - - - -
workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-2, default:true
workspace = 3, monitor:HDMI-A-1, default:true