You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
7.0 KiB
199 lines
7.0 KiB
{ config, pkgs, username, ... }:
|
|
let
|
|
volumeChange = pkgs.writeShellScript "volume-change" ''
|
|
# FROM: https://github.com/jsimonrichard/nix-config/blob/master/modules/my-config/desktop/hyprland/home-manager/desktop/hyprland/keybinds.nix
|
|
|
|
# Arbitrary but unique message tag
|
|
msgTag="dunst-sound"
|
|
|
|
# Change the volume using alsa(might differ if you use pulseaudio)
|
|
wpctl $@ > /dev/null
|
|
|
|
# Query wpctl for the current volume and whether or not the speaker is muted
|
|
volume="$(wpctl get-volume $2 | awk '{print $2 * 100}')"
|
|
mute="$(wpctl get-volume $2 | awk '{print $3}')"
|
|
if [[ $volume == 0 || "$mute" == "[MUTED]" ]]; then
|
|
# Show the sound muted notification
|
|
dunstify -a "volumeChange" -u low -i audio-volume-muted -h string:x-dunst-stack-tag:$msgTag "Volume muted"
|
|
else
|
|
# Show the volume notification
|
|
dunstify -a "volumeChange" -u low -i audio-volume-high -h string:x-dunst-stack-tag:$msgTag \
|
|
-h int:value:"$volume" "Volume: $volume%"
|
|
fi
|
|
'';
|
|
in
|
|
{
|
|
home.packages = with pkgs; [
|
|
dunst
|
|
waybar
|
|
swww
|
|
rofi-wayland
|
|
brightnessctl
|
|
networkmanagerapplet
|
|
# (pkgs.waybar.overrideAttrs (oldAttrs: {
|
|
# mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
|
# }))
|
|
];
|
|
|
|
programs.hyprlock = {
|
|
enable = true;
|
|
settings = {
|
|
background = {
|
|
monitor = "";
|
|
# path = screenshot
|
|
color = "rgba(152, 179, 166, 0.9)";
|
|
|
|
blur_passes = 1;
|
|
blur_size = 7;
|
|
noise = 0.0117;
|
|
contrast = 0.8916;
|
|
brightness = 0.8172;
|
|
vibrancy = 0.1696;
|
|
vibrancy_darkness = 0.0;
|
|
};
|
|
|
|
input-field = {
|
|
monitor = "";
|
|
size = "200, 50";
|
|
outline_thickness = 3;
|
|
dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
|
|
dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
|
|
dots_center = true;
|
|
dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
|
|
outer_color = "rgb(151515)";
|
|
inner_color = "rgb(200, 200, 200)";
|
|
font_color = "rgb(10, 10, 10)";
|
|
fade_on_empty = true;
|
|
fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
|
|
placeholder_text = ''<i>Input Password...</i>''; # Text rendered in the input box when it's empty.
|
|
hide_input = false;
|
|
rounding = -1; # -1 means complete rounding (circle/oval)
|
|
check_color = "rgb(204, 136, 34)";
|
|
fail_color = "rgb(204, 34, 34)"; # if authentication failed, changes outer_color and fail message color
|
|
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
|
|
fail_transition = 300; # transition time in ms between normal outer_color and fail_color
|
|
capslock_color = -1;
|
|
numlock_color = -1;
|
|
bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
|
|
invert_numlock = false; # change color if numlock is off
|
|
position = "0, 200";
|
|
halign = "center";
|
|
valign = "center";
|
|
};
|
|
|
|
label = [
|
|
{
|
|
monitor = "";
|
|
text = "cmd[update:1000] echo \"$TIME\"";
|
|
color = "rgba(200, 200, 200, 1.0)";
|
|
font_size = 55;
|
|
font_family = "JetBrainsMono Nerd Font";
|
|
position = "0, 150";
|
|
halign = "center";
|
|
valign = "bottom";
|
|
shadow_passes = 5;
|
|
shadow_size = 10;
|
|
}
|
|
|
|
{
|
|
monitor = "";
|
|
text = "$USER";
|
|
color = "rgba(200, 200, 200, 1.0)";
|
|
font_size = 20;
|
|
font_family = "JetBrainsMono Nerd Font";
|
|
position = "0, 80";
|
|
halign = "center";
|
|
valign = "bottom";
|
|
shadow_passes = 5;
|
|
shadow_size = 10;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
wayland.windowManager.hyprland.enable = true;
|
|
wayland.windowManager.hyprland.settings = {
|
|
monitor=[
|
|
"eDP-1,2560x1600@60.00Hz,0x0,1"
|
|
# "DP-3,3840x2160@60.00Hz,-3840x0,1"
|
|
"DP-2,preferred,auto,1.5"
|
|
];
|
|
"$mod" = "SUPER";
|
|
|
|
input = {
|
|
kb_options = "compose:rctrl";
|
|
};
|
|
exec-once = [
|
|
"dunst"
|
|
"waybar"
|
|
"${pkgs.networkmanagerapplet}/bin/nm-applet --sm-disable --indicator"
|
|
"blueman-applet"
|
|
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
|
|
|
];
|
|
|
|
bind =
|
|
[
|
|
"$mod, F, exec, firefox"
|
|
"$mod, k, exec, kitty"
|
|
", Print, exec, grimblast copy area"
|
|
"$mod, l, exec, hyprlock" # Add a keybinding to lock the screen
|
|
"$mod, C, exec, code"
|
|
"$mod, E, exec, hyprctl dispatch exit"
|
|
"$mod, r, exec, rofi -show run"
|
|
"$mod, code:51, exec, 1password" # super + \
|
|
",XF86MonBrightnessDown, exec, brightnessctl s 5%-"
|
|
",XF86MonBrightnessUp, exec, brightnessctl s +5%"
|
|
]
|
|
++ (
|
|
# workspaces
|
|
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
|
builtins.concatLists (builtins.genList (
|
|
x: let
|
|
ws = let
|
|
c = (x + 1) / 10;
|
|
in
|
|
builtins.toString (x + 1 - (c * 10));
|
|
in [
|
|
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
|
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
|
]
|
|
)
|
|
10)
|
|
);
|
|
windowrulev2= [
|
|
# https://jbmorley.co.uk/posts/2024-02-13-1password-and-hyprland/
|
|
"float, title:(1Password)"
|
|
"size 70% 70%, title:(1Password)"
|
|
"center, title:(1Password)"
|
|
|
|
"float,class:(.blueman-manager-wrapped)"
|
|
"size 25% 25%,class:(.blueman-manager-wrapped)"
|
|
|
|
"float,class:(org.kde.polkit-kde-authentication-agent-1)"
|
|
"opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$"
|
|
"bordercolor rgba(ed8796FF), class:org.kde.polkit-kde-authentication-agent-1"
|
|
"dimaround, class:org.kde.polkit-kde-authentication-agent-1"
|
|
"stayfocused, class:org.kde.polkit-kde-authentication-agent-1"
|
|
];
|
|
# Bind flags
|
|
# l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
|
|
# r -> release, will trigger on release of a key.
|
|
# e -> repeat, will repeat when held.
|
|
# n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
|
|
# m -> mouse, see below
|
|
# t -> transparent, cannot be shadowed by other binds.
|
|
# i -> ignore mods, will ignore modifiers.
|
|
binde = [
|
|
", XF86AudioRaiseVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SINK@ 5%+ --limit 1.3"
|
|
"CTRL, XF86AudioRaiseVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SOURCE@ 5%+ --limit 1"
|
|
];
|
|
bindle = [
|
|
", XF86AudioLowerVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
"CTRL, XF86AudioLowerVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"
|
|
];
|
|
bindl = [
|
|
", XF86AudioMute, exec, ${volumeChange} set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
];
|
|
};
|
|
} |