nixos-config/modules/home-manager/hypr/hyprland-customization.nix

199 lines
5.3 KiB
Nix

{inputs, pkgs, ...}:
{
home.packages = [
pkgs.hyprshot
pkgs.nautilus
pkgs.gnome-control-center
pkgs.brightnessctl
pkgs.cliphist
];
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = true;
settings = {
"$mod" = "SUPER";
"$browser" = "firefox";
"$launcher-cmd" = "wofi --show drun -n";
"$ide" = "code";
# Global bindings
bind = [
# Launch applications
"$mod, space, exec, $launcher-cmd"
"$mod, return, exec, kitty"
"$mod, b, exec, $browser"
"$mod, s, exec, $ide"
"$mod, e, exec, nautilus"
# Overview
# "$mod, , overview:toggle"
# Lock screen
"$mod+Shift, l, exec, hyprlock"
# Clipboard management
"$mod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy"
"$mod+Shift, Q, killactive," # Close window
"$mod, f, togglefloating," # Toggle Floating
# Move the focus
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
# Alt-tab alternative
"$mod, Tab, cyclenext,"
"$mod, Tab, bringactivetotop,"
# Move the window
"$mod+Shift, left, movewindow, l"
"$mod+Shift, right, movewindow, r"
"$mod+Shift, up, movewindow, u"
"$mod+Shift, down, movewindow, d"
"$mod+Ctrl, left, movetoworkspace, -1"
"$mod+Ctrl, right, movetoworkspace, +1"
# # Switch workspace
# "$mod+Ctrl, left, workspace, -1"
# "$mod+Ctrl, right, workspace, +1"
# Screenshot
"$mod, Print, exec, hyprshot -m region -o ~/Pictures/Screenshots"
"$mod+Shift, Print, exec, hyprshot -m window -o ~/Pictures/Screenshots"
];
binde = [
# Fn keys
", code:232, exec, brightnessctl set +5%"
", code:233, exec, brightnessctl set -5%"
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
];
# bindl = [
# ", switch:on:Lid Switch, exec, hyprctl dispatch dpms off"
# ", switch:off:Lid Switch, exec, hyprctl dispatch dpms on"
# ];
exec-once = [
# "${pkgs.hyprpaper}/bin/hyprpaper"
# hyprpaper is handled as its own service
"${pkgs.waybar}/bin/waybar"
# listen to clipboard events and send them to cliphist
"wl-paste --watch cliphist stores"
"${pkgs.waybar}/bin/hypridle"
# # Fixes cursor themes in gnome apps under hyprland
# "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
# "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}"
];
general = {
resize_on_border = true;
gaps_in = 5;
gaps_out = 5;
border_size = 1;
"col.active_border" = "rgb(98971A) rgb(CC241D) 45deg";
layout = "master";
};
misc = {
disable_hyprland_logo = true;
};
input = {
kb_layout = "de";
# remap caps lock to ctrl
kb_options = "ctrl:nocaps";
numlock_by_default = true;
# mouse input should be unchanged
natural_scroll = false;
sensitivity = 0.3;
touchpad = {
disable_while_typing = false;
natural_scroll = true;
};
};
gestures = {
workspace_swipe = true;
workspace_swipe_fingers = 4;
workspace_swipe_touch = true;
};
decoration = {
rounding = 5;
# active_opacity = 0.95;
inactive_opacity = 0.9;
shadow = {
enabled = true;
range = 6;
render_power = 6;
# color = "#000000";
};
# blur is set on a per-program basis
layerrule = [
"blur, wofi"
"ignorezero, wofi"
"ignorealpha 0.5, wofi"
"blur, kitty"
"ignorezero, kitty"
"ignorealpha 0.5, kitty"
];
};
monitor = [
"eDP-1, 3840x2160, 0x0, 1.5" # the internal laptop monitor
"DP-2, 3840x2160, 0x-1440, 1.5"
", preferred, auto, 1" # automatically add any newly detected monitor
];
xwayland = {
enabled = false;
};
env = [
# force apps to use wayland
"NIXOS_OZONE_WL,1"
"ELECTRON_OZONE_PLATFORM_HINT,wayland"
# set the scale factor for GDK apps
"GDK_SCALE,1.5"
"XCURSOR_SIZE,32"
# set the scale factor for QT apps
"QT_SCALE_FACTOR,1.5"
# set the scale factor for GTK apps
];
};
# TODO - plugins are broken for now
# plugins = [
# # Global overview
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
# # Touch gestures: https://github.com/horriblename/hyprgrass
# inputs.hyprgrass.packages.${pkgs.system}.default
# ];
# plugin = {
# touch_gestures = {
# sensitivity = 4.0;
# # must be >= 3
# workspace_swipe_fingers = 3;
# };
# };
};
# services.network-manager-applet = {
# enable = true;
# };
services.swaync.enable = true;
}