{ # Terminal emulator - required for default Hyprland config programs.kitty.enable = false; # Hyprland window manager configuration wayland.windowManager.hyprland = { enable = true; extraLuaFiles.clock.content = '' hl.window_rule({ name = "clock", match = { title = "^clock$", }, float = true, pin = true, nofocus = true, rounding = 5, size = { 60, 20 }, move = "100%-w-20 20", }) ''; settings = { # Global variables "$mod" = "SUPER"; # Monitor configuration monitor = [ "eDP-1,1920x1080@60,0x0,1" "HDMI-A-2,1920x1080@60,1920x0,1,transform,0" ]; # Autostart applications exec-once = [ "waybar" "hyprpaper &" ]; # Input configuration input = { kb_layout = "de"; natural_scroll = false; kb_options = "ctrl:nocaps"; }; # Window rules # windowrulev2 = [ # # --- Regeln für clock--- # "float, title:^(clock)$" # "pin, title:^(clock)$" # "nofocus, title:^(clock)$" # "rounding 5, title:^(clock)$" # "size 60 20, title:^(clock)$" # "move 100%-w-20 20, title:^(clock)$" # ]; # Keybindings bind = [ # Drive management "SUPER, U, exec, bash -c 'udiskie-umount -a && rm -f ~/juno && rm -f ~/LukasDisk && hyprctl notify -1 5000 \"rgb(00ff00)\" \"💿 Laufwerke ausgehängt\" || hyprctl notify -1 5000 \"rgb(ff0000)\" \"⚠️ Aushängen fehlgeschlagen\"'" "SUPER_SHIFT, U, exec, bash -c 'udiskie-mount -a && ln -sfn /run/media/builder/juno ~/juno && ln -sfn /run/media/builder/LukasDisk ~/LukasDisk && hyprctl notify -1 5000 \"rgb(00ff00)\" \"📁 Laufwerke eingehängt\" || hyprctl notify -1 5000 \"rgb(ff0000)\" \"⚠️ Einhängen fehlgeschlagen\"'" # Workspace navigation "SUPER, H, workspace, 1" "SUPER, J, workspace, 2" "SUPER, K, workspace, 3" "SUPER, L, workspace, 4" # Window management "SUPER, Q, killactive" "SUPER, E, exec, hyprctl dispatch exit" "SUPER, TAB, cyclenext" # Application launchers "SUPER, SPACE, exec, tofi-drun --drun-launch=true --font ~/.config/fontconfig/conf.d/monospace.medium.ttf" "SUPER, D, exec, bash -c 'tofi-run --font ~/.config/fontconfig/conf.d/monospace.bold.ttf | xargs -r hyprctl dispatch exec --'" # Applications "SUPER, P, exec, keepassxc" "SUPER, A, exec, kitty" "SUPER, T, exec, kitten quick-access-terminal" "SUPER, Z, exec, clock" "SUPER, N, exec, kitty -e v" "SUPER, M, exec, alacritty -e aerc" "SUPER, B, exec, kitty -e btop" # Browsers "SUPER, O, exec, qutebrowser --target window --set tabs.show never --set statusbar.show in-mode --set scrolling.bar never desk.0ff.space" "SUPER, F, exec, qutebrowser" # Screenshot ", Print, exec, grimblast copy area" # Volume controls ", F2, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ", F3, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" # Brightness controls ", F5, exec, brightnessctl set 5%-" ", F6, exec, brightnessctl set 5%+" # Wallpaper toggle "SUPER, W, exec, theme-toggle" ] ++ ( # Dynamic workspace bindings (1-9) builtins.concatLists (builtins.genList (i: let ws = i + 1; in [ "$mod, code:1${toString i}, workspace, ${toString ws}" "$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" ] ) 9) ); # General appearance general = { border_size = "1"; "col.inactive_border" = "rgba(0,0,0,0)"; "col.active_border" = "rgba(0,0,0,0)"; }; # Window decoration decoration = { rounding = "5"; }; # Miscellaneous settings misc = { disable_hyprland_logo = true; }; }; }; # Waybar status bar configuration # programs.waybar = { # enable = true; # settings = { # mainBar = { # layer = "top"; # position = "top"; # }; # }; # }; }