{ hostname, ... }: { home.file = { ".config/hypr/hyprland.conf" = { enable = true; text = '' layerrule = blur, waybar # Laptop specific: monitor=,highrr,auto,1.25 # https://wiki.hyprland.org/Configuring/Variables/ # env = XCURSOR_SIZE,24 env = GDK_SCALE,1 env = XCURSOR_SIZE,48 # unscale XWayland xwayland { force_zero_scaling = true } # nVidia Speficic Settings: # https://wiki.hyprland.org/Nvidia/ # env = LIBVA_DRIVER_NAME,nvidia # env = XDG_SESSION_TYPE,wayland # env = GBM_BACKEND,nvidia-drm # env = __GLX_VENDOR_LIBRARY_NAME,nvidia # env = WLR_NO_HARDWARE_CURSORS,1 general { gaps_in = 5 gaps_out = 20 border_size = 3 # First six are color, last 2 are opacity? col.active_border = rgba(d5c4a1bb) # Gruvbox fg2, opacity bb col.inactive_border = rgba(504945dd) # Gruvbox bg2, opacity aa resize_on_border = true extend_border_grab_area = 15 layout = dwindle } input { kb_layout = us follow_mouse = 1 touchpad { natural_scroll = true disable_while_typing = true tap-to-click = true clickfinger_behavior = true drag_lock = true } sensitivity = 0 } gestures { # https://wiki.hyprland.org/0.24.1/Configuring/Keywords/#gestures workspace_swipe = true workspace_swipe_fingers = 3 workspace_swipe_numbered = false } misc { disable_hyprland_logo = true } decoration { rounding = 10 active_opacity = 0.9 inactive_opacity = 0.7 fullscreen_opacity = 0.9 drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) blur { size = 8 passes = 3 ignore_opacity = true } } animations { # https://wiki.hyprland.org/Configuring/Animations/ 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 } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # you probably want this no_gaps_when_only = 1 } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_is_master = true } # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Q, exec, kitty bind = $mainMod, C, killactive, bind = $mainMod, M, exit, bind = $mainMod, E, exec, dolphin bind = $mainMod, V, togglefloating, bind = $mainMod, R, exec, wofi --show drun bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle # 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 # 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 ############################################################################# # Custom keybinds # Show Rofi on SUPER-S bind = $mainMod, S, exec, rofi -show drun -show-icons # Show Rofi on SUPER-SPACE bind = $mainMod, space, exec, rofi -show drun -show-icons # Take a screenshot with the Print key bind =,Print,exec,grim -g "$(slurp)" | wl-copy -t image/png # Move to the previous / next workspace with SUPER-LEFT and SUPER-RIGHT bind = $mainMod, right, workspace, e+1 bind = $mainMod, left, workspace, e-1 bind = $mainMod SHIFT, right, movetoworkspace, e+1 bind = $mainMod SHIFT, left, movetoworkspace, e-1 # Lock the screen, send to swaylock bind = $mainMod, L, exec, swaylock # Lid closure: # trigger when the switch is toggled # bindl=,switch:[switch name],exec,swaylock # trigger when the switch is turning on #bindl=,switch:on:[switch name],exec,hyprctl keyword monitor "eDP-1, 2560x1600, 0x0, 1" # trigger when the switch is turning off # bindl=,switch:off:[switch name],exec,hyprctl keyword monitor "eDP-1, disable" # Laptop specific config # Set up the FN keys: # F1 - Mute # bind = , XF86AudioMute, exec, amixer set Master toggle && swayosd --output-volume=mute-toggle bind = , XF86AudioMute, exec, swayosd --output-volume=mute-toggle # F2 - Volume Down # binde = , XF86AudioLowerVolume, exec, amixer set Master 3%- binde = , XF86AudioLowerVolume, exec, swayosd --output-volume=lower # F3 - Volume Up # binde = , XF86AudioRaiseVolume, exec, amixer set Master 3%+ binde = , XF86AudioRaiseVolume, exec, swayosd --output-volume=raise # F4 - Mute Microphone # bind = , XF86AudioMicMute, exec, amixer set Capture toggle bind = , XF86AudioMicMute, exec, swayosd --input-volume=mute-toggle # F5 - Brightness Down # binde = , XF86MonBrightnessDown, exec, light -U 5 binde = , XF86MonBrightnessDown, exec, swayosd --brightness=lower # F6 - Brightness Up # binde = , XF86MonBrightnessUp, exec, light -A 5 binde = , XF86MonBrightnessUp, exec, swayosd --brightness=raise # F7 - External Displays # bind = , XF86 # F8 - Airplane Mode # bind = , XF86 # F9 - Notifications? # bind = , XF86 # F10 - Call Answer? # bind = , XF86 # F11 - Call Hang Up? # bind = , XF86 # F12 - Favorites? # bind = , XF86 # Use rofi as an alt-tab switcher # bind = ALT, TAB, exec, rofi -show window # Start the config: exec-once=bash ~/.config/hypr/start.sh ''; }; # Set the custom launcher script ".config/hypr/start.sh" = { enable = true; executable = true; text = '' #!/usr/bin/env bash swww init & # Sets a random wallpaper WALLPAPER_DIR=/etc/nixos/git/wallpapers/gruvbox swww img $WALLPAPER_DIR/wallpaper$((1 + $RANDOM % $(ls $WALLPAPER_DIR | wc -l))).jpg & # nm-applet --indicator & waybar & # Set up the idle management daemon swayidle -w \ timeout 300 'swaylock -f' \ timeout 600 'swaymsg "output * power off"' \ resume 'swaymsg "output * power on"' \ before-sleep 'swaylock -f' mako ''; }; }; }