forked from lukas/nixos-config
142 lines
4.2 KiB
Nix
142 lines
4.2 KiB
Nix
{
|
||
# 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";
|
||
# };
|
||
# };
|
||
# };
|
||
}
|