nixos/hypr/hyprland.nix

217 lines
6.0 KiB
Nix

{ ... }: {
wayland.windowManager.hyprland = {
extraConfig = ''
### vars
$TERM=footclient
$EDITOR=emacsclient -c -a emacs
env = TERM, $TERM
env = EDITOR, emacsclient -c -a emacs
monitor=eDP-1,1920x1080@60,0x0,1
### STARTUP APPS
# restart waybar on hyprland restart
exec = ~/.config/waybar/launch_waybar.sh
exec = ~/.config/hypr/scripts/start_swww.sh
exec-once = mako
exec-once = foot --server
exec-once = easyeffects --gapplication-service
### AESTHETICS
source = ~/.config/hypr/fairy_forest.conf
plugin {
hyprtrails {
color = rgba($redff)
}
hy3 {
tab_first_window = true
tabs {
height = 5
padding = 5
render_text = false
col.active = rgba($redff)
col.urgent = rgba($yellowff)
col.inactive = rgba(9998A8ff)
}
autotile {
enable = true
}
}
}
general {
gaps_in = 7
gaps_out = 7
border_size = 3
col.active_border = rgb($red) rgb($magenta) rgb($yellow) rgb($green) rgb($blue) rgb($cyan) rgb($purple) 45deg
col.inactive_border = rgb($white) rgb($light_black)
layout = hy3
}
decoration {
rounding = 0
blur {
enabled = false
passes = 4
}
active_opacity = 0.95
inactive_opacity = 0.90
drop_shadow = false
shadow_range = 15
shadow_render_power = 3
col.shadow = rgba($black50)
}
animations {
enabled = true
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
bezier = linear, 1, 1, 1, 1
bezier = wind, 0.05, 0.9, 0.1, 1.05
bezier = winIn, 0.1, 1.1, 0.1, 1.1
bezier = winOut, 0.3, -0.3, 0, 1
animation = windows , 1, 2.5 , wind
animation = windowsIn , 1, 2.5 , winIn
animation = windowsOut , 1, 2.5 , winOut
animation = windowsMove, 1, 2.5 , wind
animation = border , 1, 10 , default
# animation = borderangle, 1, 30 , linear, loop
animation = fade , 1, 0.5 , default
animation = workspaces , 1, 1.0 , wind
}
dwindle {
pseudotile = true
preserve_split = true
force_split = 2
special_scale_factor = 0.9
}
misc {
disable_hyprland_logo = true
}
### INPUT
input {
kb_layout = us
kb_options = caps:escape
numlock_by_default = true
follow_mouse = 1
touchpad {
natural_scroll = true
disable_while_typing = yes
}
sensitivity = 0
}
gestures {
workspace_swipe = true
}
### KEYBINDS
$mainMod = SUPER
# run launcher + scripts
bind = $mainMod, R, exec, fuzzel -D no
bind = SUPER_SHIFT, R, exec, ~/Documents/programming/rust/npg/rofi-npg.sh
bind = CTRL_ALT, E, exec, ~/.config/hypr/scripts/restart-emacs.sh
# hyprpicker - color picker
bind = SUPER, p, exec, hyprpicker -a -f hex
# terminal
bind = SUPER_SHIFT, return, exec, $TERM
# editor
bind = SUPER_SHIFT, n, exec, $EDITOR
# disable fancy stuff like animations and gaps
bind = SUPER_SHIFT, P, exec, ~/.config/hypr/scripts/gamemode.sh
# screenshot
bind = CTRL_SHIFT, F, exec, ~/.config/hypr/scripts/hyprshot -m region -r | wl-copy -t image/png
# track manipulation
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPrev, exec, playerctl previous
bind = , XF86AudioNext, exec, playerctl next
# volume control
bind = , XF86AudioLowerVolume, exec, pamixer --decrease 5
bind = , XF86AudioHigherVolume, exec, pamixer --increase 5
bind = , XF86AudioMute, exec, pamixer --toggle-mute
# mute mice with super + mouse 4
bind = SUPER, mouse:276, exec, ~/.config/hypr/scripts/mute_mic.sh
bind = SUPER, m, exec, ~/.config/hypr/scripts/mute_mic.sh
## WINDOW MANIPULATION
# kill
bind = CTRL_SHIFT, Q, killactive,
bind = $mainMod, Space, togglefloating,
bind = $mainMod, F, fullscreen,
# scratchpad stuff
bind = $mainMod, S, togglespecialworkspace,
bind = SUPER_SHIFT, S, movetoworkspace, special
# Switch workspaces
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, Q, workspace, 5
bind = $mainMod, W, workspace, 6
bind = $mainMod, E, workspace, 7
# Move active window to a workspace
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, Q, movetoworkspace, 5
bind = $mainMod SHIFT, W, movetoworkspace, 6
bind = $mainMod SHIFT, E, movetoworkspace, 7
# Switch left or right a workspace
bind = $mainMod SHIFT, l, workspace, e+1
bind = $mainMod SHIFT, h, workspace, e-1
bind = $mainMod SHIFT, right, workspace, e+1
bind = $mainMod SHIFT, left, workspace, e-1
# Switch left or right a tab
bind = $mainMod, h, hy3:focustab, left, wrap
bind = $mainMod, l, hy3:focustab, right, wrap
bind = $mainMod, left, hy3:focustab, left, wrap
bind = $mainMod, right, hy3:focustab, right, wrap
# make a vertical split
bind = $mainMod, v, hy3:makegroup, h
bind = $mainMod, t, hy3:makegroup, tab
# Switch tabs with the mouse
bindn = , mouse:272, hy3:focustab, mouse
# Move/resize windows with mainMod+mouse
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
'';
};
}