211 lines
5.6 KiB
Nix
211 lines
5.6 KiB
Nix
{inputs, pkgs, ...}:
|
|
{
|
|
|
|
home.packages = [
|
|
pkgs.hyprshot
|
|
pkgs.nautilus
|
|
pkgs.gnome-control-center
|
|
pkgs.brightnessctl
|
|
pkgs.cliphist
|
|
pkgs.wl-clipboard
|
|
];
|
|
|
|
|
|
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"
|
|
|
|
# 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
|
|
# Toggle Floating and reduce size
|
|
"$mod, f, togglefloating,"
|
|
"$mod, f, resizeactive, 50% 50%,"
|
|
|
|
# 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"
|
|
|
|
];
|
|
|
|
# repeatable bindings
|
|
binde = [
|
|
# Fn keys
|
|
", XF86MonBrightnessDown, exec, brightnessctl set -5%"
|
|
", XF86MonBrightnessUp, 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"
|
|
|
|
# Reshape the window in focus
|
|
"$mod, left, resizeactive, -2% 0"
|
|
"$mod, right, resizeactive, 2% 0"
|
|
|
|
];
|
|
# bindl = [
|
|
# ", switch:on:Lid Switch, exec, hyprctl dispatch dpms off"
|
|
# ", switch:off:Lid Switch, exec, hyprctl dispatch dpms on"
|
|
# ];
|
|
|
|
bindr = [
|
|
# Overview
|
|
"$mod, , overview:toggle"
|
|
];
|
|
|
|
bindm = [
|
|
# move the window
|
|
"$mod, mouse:272, movewindow"
|
|
];
|
|
|
|
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"
|
|
"hyprpaper"
|
|
# # 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 refreshs when nothing is going on
|
|
vfr = false;
|
|
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 = false;
|
|
};
|
|
|
|
# blur is set on a per-program basis
|
|
windowrulev2 = [
|
|
# kitty should behave like a floating window
|
|
"animation popin, class:kitty"
|
|
"move cursor -50% -50%, class:kitty"
|
|
"float, class:kitty"
|
|
"size 50% 50%, class:kitty"
|
|
|
|
# some more floating windows
|
|
"float, class:org.gnome.Settings"
|
|
"float, class:desktopclient.owncloud.com"
|
|
"float, class:org.keepassxc.KeePassXC"
|
|
|
|
];
|
|
};
|
|
|
|
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
|
|
pkgs.hyprlandPlugins.hyprspace
|
|
# Touch gestures
|
|
pkgs.hyprlandPlugins.hyprgrass
|
|
];
|
|
|
|
# plugin = {
|
|
# touch_gestures = {
|
|
# sensitivity = 4.0;
|
|
# # must be >= 3
|
|
# workspace_swipe_fingers = 3;
|
|
# };
|
|
# };
|
|
};
|
|
|
|
services.swaync.enable = true;
|
|
}
|