- Add wallpapers.nix module for wallpaper management - Update hyprland and rofi configs - Update m3-ares and m3-kratos user configs - Update flake inputs
316 lines
11 KiB
Nix
316 lines
11 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.features.desktop.hyprland;
|
|
in {
|
|
options.features.desktop.hyprland.enable =
|
|
mkEnableOption "Hyprland related stuff";
|
|
|
|
config = mkIf cfg.enable {
|
|
wayland.windowManager.hyprland = {
|
|
settings = {
|
|
xwayland = {
|
|
force_zero_scaling = true;
|
|
};
|
|
|
|
exec-once = [
|
|
"hyprpanel"
|
|
"while ! hyprpaper-random; do sleep 0.5; done"
|
|
"wl-paste --type text --watch cliphist store" # Stores only text data
|
|
"wl-paste --type image --watch cliphist store" # Stores only image data "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
|
|
];
|
|
|
|
env = [
|
|
"XCURSOR_SIZE,32"
|
|
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
|
|
"WLR_NO_HARDWARE_CURSORS,1"
|
|
"GTK_THEME,Dracula"
|
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
|
"XDG_SESSION_TYPE,wayland"
|
|
"XDG_SESSION_DESKTOP,Hyprland"
|
|
];
|
|
|
|
input = {
|
|
kb_layout = "de,us";
|
|
kb_variant = "";
|
|
kb_model = "";
|
|
kb_rules = "";
|
|
kb_options = "ctrl:nocaps";
|
|
follow_mouse = 1;
|
|
};
|
|
|
|
general = {
|
|
gaps_in = 5;
|
|
gaps_out = 5;
|
|
border_size = 1;
|
|
# Keeping the existing active border as requested
|
|
"col.active_border" = "rgba(9742b5ee) rgba(9742b5ee) 45deg";
|
|
"col.inactive_border" = "rgba(${config.colorScheme.palette.base03}aa)";
|
|
layout = "dwindle";
|
|
};
|
|
|
|
decoration = {
|
|
shadow = {
|
|
enabled = true;
|
|
range = 60;
|
|
render_power = 3;
|
|
color = "rgba(${config.colorScheme.palette.base00}66)";
|
|
offset = "1 2";
|
|
scale = 0.97;
|
|
};
|
|
rounding = 8;
|
|
blur = {
|
|
enabled = true;
|
|
size = 3;
|
|
passes = 3;
|
|
};
|
|
active_opacity = 0.9;
|
|
inactive_opacity = 0.5;
|
|
};
|
|
|
|
animations = {
|
|
enabled = true;
|
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
|
animation = [
|
|
"windows, 1, 7, myBezier"
|
|
"windowsOut, 1, 7, default, popin 80%"
|
|
"border, 1, 10, default"
|
|
"borderangle, 1, 8, default"
|
|
"fade, 1, 7, default"
|
|
"workspaces, 1, 6, default"
|
|
];
|
|
};
|
|
|
|
dwindle = {
|
|
pseudotile = true;
|
|
preserve_split = true;
|
|
};
|
|
|
|
master = {
|
|
new_status = "master";
|
|
};
|
|
|
|
device = [
|
|
{
|
|
name = "epic-mouse-v1";
|
|
sensitivity = -0.5;
|
|
}
|
|
{
|
|
name = "zsa-technology-labs-moonlander-mark-i";
|
|
kb_layout = "us";
|
|
}
|
|
{
|
|
name = "keychron-keychron-k7";
|
|
kb_layout = "us";
|
|
}
|
|
];
|
|
windowrule = [
|
|
# Floating dialogs
|
|
"match:class file_progress, float on"
|
|
"match:class confirm, float on"
|
|
"match:class dialog, float on"
|
|
"match:class download, float on"
|
|
"match:class notification, float on"
|
|
"match:class error, float on"
|
|
"match:class splash, float on"
|
|
"match:class confirmreset, float on"
|
|
"match:title Open File, float on"
|
|
"match:title branchdialog, float on"
|
|
"match:class pavucontrol-qt, float on"
|
|
"match:class pavucontrol, float on"
|
|
# wlogout
|
|
"match:class wlogout, fullscreen on"
|
|
"match:title wlogout, float on"
|
|
"match:title wlogout, fullscreen on"
|
|
# mpv
|
|
"match:class mpv, float on"
|
|
"match:class mpv, idle_inhibit focus"
|
|
"match:class mpv, opacity 1.0 override"
|
|
# Media/Volume/PiP
|
|
"match:title ^(Media viewer)$, float on"
|
|
"match:title ^(Volume Control)$, float on"
|
|
"match:title ^(Picture-in-Picture)$, float on"
|
|
# Pomodoro timer
|
|
"match:title ^(floating-pomodoro)$, float on"
|
|
"match:title ^(floating-pomodoro)$, size 250 50"
|
|
"match:title ^(floating-pomodoro)$, move 12 (monitor_h-150)"
|
|
"match:title ^(floating-pomodoro)$, pin on"
|
|
# Streamlabs overlays
|
|
"match:initial_title .*streamlabs.com.*, float on"
|
|
"match:initial_title .*streamlabs.com.*, pin on"
|
|
"match:initial_title .*streamlabs.com.*, size 800 400"
|
|
"match:initial_title .*alert-box.*, move 100%-820 102"
|
|
"match:initial_title .*chat-box.*, move 100%-820 512"
|
|
"match:initial_title .*streamlabs.com.*, opacity 0.5 override"
|
|
"match:initial_title .*streamlabs.com.*, idle_inhibit focus"
|
|
"match:initial_title .*streamlabs.com.*, no_anim on"
|
|
"match:initial_title .*streamlabs.com.*, decorate off"
|
|
"match:initial_title .*streamlabs.com.*, no_shadow on"
|
|
"match:initial_title .*streamlabs.com.*, no_blur on"
|
|
"border_color rgb(ffffff), match:xwayland 1"
|
|
];
|
|
"$mainMod" = "SUPER";
|
|
"$terminal" = "kitty";
|
|
|
|
bind = [
|
|
"$mainMod, return, exec, $terminal nu -c zellij-ps"
|
|
# "$mainMod, t, exec, warp-terminal"
|
|
"$mainMod, t, exec, $terminal -e nu -c 'nitch; exec nu'"
|
|
"$mainMod SHIFT, t, exec, launch-timer"
|
|
"$mainMod, n, exec, $terminal -e nvim"
|
|
"$mainMod, z, exec, uwsm app -- zeditor"
|
|
"$mainMod, o, exec, hyprctl setprop activewindow opaque toggle"
|
|
"$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512"
|
|
"$mainMod, b, exec, uwsm app -- thunar"
|
|
"$mainMod SHIFT, B, exec, uwsm app -- vivaldi"
|
|
"$mainMod, Escape, exec, uwsm app -- wlogout -p layer-shell"
|
|
"$mainMod, Space, togglefloating"
|
|
"$mainMod, q, killactive"
|
|
"$mainMod, M, exit"
|
|
"$mainMod, F, fullscreen"
|
|
"$mainMod SHIFT, V, togglefloating"
|
|
"$mainMod, D, exec, uwsm app -- rofi -show drun -run-command \"uwsm app -- {cmd}\""
|
|
"$mainMod, V, exec, uwsm app -- cliphist list | rofi -dmenu | cliphist decode | wl-copy"
|
|
"$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'"
|
|
"$mainMod SHIFT, S, exec, uwsm app -- rofi -show emoji"
|
|
"$mainMod, P, exec, uwsm app -- rofi-pass"
|
|
"$mainMod SHIFT, P, pseudo"
|
|
"$mainMod, R, exec, stt-ptt start"
|
|
"$mainMod, J, togglesplit"
|
|
"$mainMod, h, movefocus, l"
|
|
"$mainMod, l, movefocus, r"
|
|
"$mainMod, k, movefocus, u"
|
|
"$mainMod, j, movefocus, d"
|
|
"$mainMod, 1, workspace, 1"
|
|
"$mainMod, 2, workspace, 2"
|
|
"$mainMod, 3, workspace, 3"
|
|
"$mainMod, 4, workspace, 4"
|
|
"$mainMod, 5, workspace, 5"
|
|
"$mainMod, 6, workspace, 6"
|
|
"$mainMod, 7, workspace, 7"
|
|
"$mainMod, 8, workspace, 8"
|
|
"$mainMod, 9, workspace, 9"
|
|
"$mainMod, 0, workspace, 10"
|
|
"$mainMod SHIFT, 1, movetoworkspace, 1"
|
|
"$mainMod SHIFT, 2, movetoworkspace, 2"
|
|
"$mainMod SHIFT, 3, movetoworkspace, 3"
|
|
"$mainMod SHIFT, 4, movetoworkspace, 4"
|
|
"$mainMod SHIFT, 5, movetoworkspace, 5"
|
|
"$mainMod SHIFT, 6, movetoworkspace, 6"
|
|
"$mainMod SHIFT, 7, movetoworkspace, 7"
|
|
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
|
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
|
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
|
"$mainMod, mouse_down, workspace, e+1"
|
|
"$mainMod, mouse_up, workspace, e-1"
|
|
];
|
|
bindr = [
|
|
"$mainMod, R, exec, stt-ptt stop"
|
|
];
|
|
bindm = [
|
|
"$mainMod, mouse:272, movewindow"
|
|
"$mainMod, mouse:273, resizewindow"
|
|
];
|
|
};
|
|
};
|
|
services.hypridle = {
|
|
enable = true;
|
|
settings = {
|
|
general = {
|
|
before_sleep_cmd = "hyprlock";
|
|
after_sleep_cmd = "hyprctl dispatch dpms on";
|
|
inhibit_sleep = 3;
|
|
};
|
|
|
|
listener = [
|
|
{
|
|
timeout = 300; # 5 min
|
|
on-timeout = "hyprlock";
|
|
}
|
|
{
|
|
timeout = 420; # 5.5 min
|
|
on-timeout = "hyprctl dispatch dpms off";
|
|
on-resume = "hyprctl dispatch dpms on";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
services.hyprpaper.enable = true;
|
|
|
|
programs.hyprlock = {
|
|
enable = true;
|
|
settings = {
|
|
"$font" = "JetBrainsMono Nerd Font";
|
|
"$base" = "rgb(${config.colorScheme.palette.base00})";
|
|
"$text" = "rgb(${config.colorScheme.palette.base05})";
|
|
"$textAlpha" = "${config.colorScheme.palette.base05}";
|
|
"$accentAlpha" = "${config.colorScheme.palette.base0D}";
|
|
"$red" = "rgb(${config.colorScheme.palette.base08})";
|
|
"$yellow" = "rgb(${config.colorScheme.palette.base0A})";
|
|
|
|
general = {
|
|
hide_cursor = true;
|
|
};
|
|
|
|
background = {
|
|
monitor = "";
|
|
path = "${config.home.homeDirectory}/.config/hypr/wallpapers/wallhaven-lmmo8r.jpg";
|
|
blur_passes = 0;
|
|
color = "rgb(${config.colorScheme.palette.base00})";
|
|
};
|
|
|
|
label = [
|
|
{
|
|
monitor = "";
|
|
text = "$TIME";
|
|
color = "$text";
|
|
font_size = 90;
|
|
font_family = "$font";
|
|
position = "30, 0";
|
|
halign = "left";
|
|
valign = "top";
|
|
}
|
|
{
|
|
monitor = "";
|
|
text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"'';
|
|
color = "$text";
|
|
font_size = 25;
|
|
font_family = "$font";
|
|
position = "30, -150";
|
|
halign = "left";
|
|
valign = "top";
|
|
}
|
|
];
|
|
|
|
input-field = [
|
|
{
|
|
monitor = "";
|
|
size = "300, 60";
|
|
outline_thickness = 4;
|
|
dots_size = 0.2;
|
|
dots_spacing = 0.2;
|
|
dots_center = true;
|
|
outer_color = "rgb(${config.colorScheme.palette.base0D})";
|
|
inner_color = "rgb(${config.colorScheme.palette.base00})";
|
|
font_color = "rgb(${config.colorScheme.palette.base05})";
|
|
fade_on_empty = false;
|
|
placeholder_text = ''<span foreground="##${config.colorScheme.palette.base05}"> Logged in as <span foreground="##${config.colorScheme.palette.base0D}">$USER</span></span>'';
|
|
hide_input = false;
|
|
check_color = "rgb(${config.colorScheme.palette.base0D})";
|
|
fail_color = "rgb(${config.colorScheme.palette.base08})";
|
|
fail_text = ''<i>$FAIL <b>($ATTEMPTS)</b></i>'';
|
|
capslock_color = "rgb(${config.colorScheme.palette.base0A})";
|
|
position = "0, -35";
|
|
halign = "center";
|
|
valign = "center";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|