{ config, lib, pkgs, hostname, ... }: let closer = pkgs.writeShellApplication { name = "closer"; runtimeInputs = with pkgs; [jq xdotool]; text = '' if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then xdotool getactivewindow windowunmap else hyprctl dispatch killactive "" fi ''; }; in { home.packages = with pkgs; [ swaybg ]; home.file = { ".config/hypr/macchiato.conf" = { source = ./macchiato.conf; }; }; wayland.windowManager.hyprland = { enable = true; package = pkgs.hyprland; xwayland = { enable = true; }; enableNvidiaPatches = hostname == "elderbug"; extraConfig = (builtins.readFile ./${hostname}.conf) + '' # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch exec-once = waybar exec-once = swaybg -i ~/wallpapers/wallpaper.jpg # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf source = ./macchiato.conf # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = gb kb_variant = kb_model = kb_options = caps:escape kb_rules = follow_mouse = 2 touchpad { natural_scroll = yes middle_button_emulation = yes scroll_factor = 0.5 } accel_profile = flat sensitivity = 0.5 # -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 = $green col.inactive_border = rgba(595959aa) layout = dwindle } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 10 blur { enabled = true size = 3 passes = 1 } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } 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, 1, myBezier animation = windowsOut, 1, 2, default, popin 80% animation = border, 0, 2, default animation = borderangle, 0, 2, default animation = fade, 0, 2, default animation = workspaces, 1, 1, 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 } # 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 # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, return, exec, kitty # bind = $mainMod, Q, killactive, bind = $mainMod, Q, exec, ${closer}/bin/closer bind = $mainMod, D, exec, tofi-drun --drun-launch=true bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" # Move focus with mainMod + vim keys bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d # Move focus with mainMod + vim keys bind = $mainMod, left, movewindow, l bind = $mainMod, right, movewindow, r bind = $mainMod, up, movewindow, u bind = $mainMod, down, movewindow, 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 bind = $mainMod, U, movetoworkspace, -1 bind = $mainMod, I, movetoworkspace, +1 bind = $mainMod SHIFT, space, togglefloating, bind = $mainMod, F, fullscreen, bind=$mainMod, escape, exec, swaylock -i ~/wallpapers/lock.png binde=, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- bind=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle binde=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ binde=, XF86MonBrightnessUp, exec, xbacklight -inc 10 binde=, XF86MonBrightnessDown, exec, xbacklight -dec 10 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow ''; }; services.mako = { enable = true; }; }