diff --git a/README.md b/README.md index 88e542b..4af723c 100644 --- a/README.md +++ b/README.md @@ -85,10 +85,10 @@ The showcased images do not reflect the latest version of the system's appearanc | Recorder | Wf-recorder | | Color Picker | Hyprpicker | | Clipboard | Wl-clipboard + Cliphist + Clipboard-jh | -| Idle | Swayidle | -| Lock | Swaylock | +| Idle | Hypridle | +| Lock | Hyprlock | | Logout menu | Wlogout | -| Wallpaper | Wpaperd | +| Wallpaper | Hyprpaper | | Graphical Boot | Plymouth + Catppuccin-plymouth | | Display Manager | Greetd + Tuigreet | | Containerization | Podman | @@ -182,7 +182,7 @@ And many other useful utilities. The full list can be found in the system config | SUPER + Y | Launch `youtube-music` | | SUPER + SHIFT + D | Launch `discord` | | SUPER + SHIFT + T | Launch `telegram` | -| SUPER + SHIFT + L | Launch `swaylock` | +| SUPER + SHIFT + L | Launch `hyprlock` | | SUPER + SHIFT + S | Take screenshot | | SUPER + E | Launch `swappy` to edit last taken screenshot | | SUPER + R | Record screen area (MP4) | @@ -276,9 +276,9 @@ Here are some tips to enhance your Rust experience on this system: This repo contains a NixOS configuration file (`nixos/yubikey.nix`) enabling: - Yubikey authentication with pam_u2f - - Passwordless login in greetd, sudo, ssh, and swaylock + - Passwordless login in greetd, sudo, ssh, and hyprlock -🚨 Personal Recommendation: While convenient, using a Yubikey for display managers (like greetd) and screen lockers (like swaylock) without additional two-factor or multi-factor authentication (2FA/MFA) has risks. If your Yubikey is lost or stolen, someone could gain full system access before you reset keys. Yubikeys excel at protecting against online attacks but are less secure against offline attacks. +🚨 Personal Recommendation: While convenient, using a Yubikey for display managers (like greetd) and screen lockers (like hyprlock) without additional two-factor or multi-factor authentication (2FA/MFA) has risks. If your Yubikey is lost or stolen, someone could gain full system access before you reset keys. Yubikeys excel at protecting against online attacks but are less secure against offline attacks. 🛡️ For enhanced security and a passwordless experience: You can consider a YubiKey Bio Series device. These keys support FIDO2/WebAuthn and FIDO U2F and has built in fingerprint scanner for strong authentication. Please note, they do not offer Smart card, OpenPGP, or OTP functionality. diff --git a/home/.config/fish/functions/autostart.fish b/home/.config/fish/functions/autostart.fish index d9eae61..7b8f1ff 100644 --- a/home/.config/fish/functions/autostart.fish +++ b/home/.config/fish/functions/autostart.fish @@ -1,10 +1,3 @@ function autostart - pypr & \ - wpaperd & \ - waybar & \ - poweralertd & \ - wl-paste --watch cliphist store & \ - avizo-service & \ - systemctl --user start psi-notify &\ - swayidle -w + pypr & hyprpaper & waybar & poweralertd & wl-paste --watch cliphist store & avizo-service & systemctl --user start psi-notify & hypridle -w end diff --git a/home/.config/helix/config.toml b/home/.config/helix/config.toml index 7cd152d..652467b 100644 --- a/home/.config/helix/config.toml +++ b/home/.config/helix/config.toml @@ -24,7 +24,7 @@ separator = "│" [editor.lsp] display-messages = true -# display-inlay-hints = true +display-inlay-hints = true # [editor.file-picker] # max-depth = 10 diff --git a/home/.config/hypr/hypridle.conf b/home/.config/hypr/hypridle.conf new file mode 100644 index 0000000..b7816c0 --- /dev/null +++ b/home/.config/hypr/hypridle.conf @@ -0,0 +1,34 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +listener { + timeout = 180 # 3min. + on-timeout = brightnessctl -s set 15% # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restore. +} + +# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. +listener { + timeout = 180 # 3min. + on-timeout = brightnessctl -sd platform::kbd_backlight set 0 # turn off keyboard backlight. + on-resume = brightnessctl -rd platform::kbd_backlight # turn on keyboard backlight. +} + +listener { + timeout = 300 # 5min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 350 # 5.83min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} + +listener { + timeout = 420 # 7min + on-timeout = systemctl suspend # suspend pc +} diff --git a/home/.config/hypr/hyprland.conf b/home/.config/hypr/hyprland.conf index 358c995..057c5b1 100644 --- a/home/.config/hypr/hyprland.conf +++ b/home/.config/hypr/hyprland.conf @@ -74,7 +74,7 @@ decoration { shadow_offset = 0, 0 shadow_render_power = 3 col.shadow = $teal - col.shadow_inactive = $base; + col.shadow_inactive = 0xff$baseAlpha; active_opacity = 0.7 inactive_opacity = 0.7 @@ -220,7 +220,7 @@ bind = $mainMod, Y, exec, youtube-music bind = $mainMod, D, exec, rofi -show drun bind = $mainMod SHIFT, D, exec, firejail --apparmor discord bind = $mainMod, ESCAPE, exec, fish -c wlogout_uniqe -bind = $mainMod SHIFT, L, exec, swaylock +bind = $mainMod SHIFT, L, exec, hyprlock bind = $mainMod SHIFT, S, exec, fish -c screenshot_to_clipboard bind = $mainMod, E, exec, fish -c screenshot_edit bind = $mainMod SHIFT, R, exec, fish -c record_screen_gif diff --git a/home/.config/hypr/hyprlock.conf b/home/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..4d64d08 --- /dev/null +++ b/home/.config/hypr/hyprlock.conf @@ -0,0 +1,83 @@ +source = $HOME/.config/hypr/macchiato.conf + +$accent = $teal +$accentAlpha = $tealAlpha +$font = JetBrains Mono Regular + +# GENERAL +general { + disable_loading_bar = true + hide_cursor = true +} + +# BACKGROUND +background { + monitor = + path = ~/background + blur_passes = 2 + color = $base +} + +# TIME +label { + monitor = + text = cmd[update:30000] echo "$(date +"%R")" + color = $text + font_size = 90 + font_family = $font + position = -130, -100 + halign = right + valign = top + shadow_passes = 2 +} + +# DATE +label { + monitor = + text = cmd[update:43200000] echo "$(date +"%A, %d %B %Y")" + color = $text + font_size = 25 + font_family = $font + position = -130, -250 + halign = right + valign = top + shadow_passes = 2 +} + +# USER AVATAR +image { + monitor = + path = ~/.face + size = 100 + border_color = $accent + rounding = -1 + + position = 0, 75 + halign = center + valign = center + shadow_passes = 2 +} + +# INPUT FIELD +input-field { + monitor = + size = 300, 60 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $surface0 + font_color = $text + fade_on_empty = false + placeholder_text = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + capslock_color = $yellow + position = 0, -35 + halign = center + valign = center + shadow_passes = 2 +} diff --git a/home/.config/hypr/hyprpaper.conf b/home/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..f8f2b18 --- /dev/null +++ b/home/.config/hypr/hyprpaper.conf @@ -0,0 +1,5 @@ +preload = ~/background +wallpaper = ,~/background + +ipc = off +splash = false diff --git a/home/.config/hypr/macchiato.conf b/home/.config/hypr/macchiato.conf index 10d064d..9e7071a 100644 --- a/home/.config/hypr/macchiato.conf +++ b/home/.config/hypr/macchiato.conf @@ -1,29 +1,78 @@ -$rosewater = 0xfff4dbd6 -$flamingo = 0xfff0c6c6 -$pink = 0xfff5bde6 -$mauve = 0xffc6a0f6 -$red = 0xffed8796 -$maroon = 0xffee99a0 -$peach = 0xfff5a97f -$green = 0xffa6da95 -$teal = 0xff8bd5ca -$sky = 0xff91d7e3 -$sapphire = 0xff7dc4e4 -$blue = 0xff8aadf4 -$lavender = 0xffb7bdf8 -$text = 0xffcad3f5 -$subtext1 = 0xffb8c0e0 -$subtext0 = 0xffa5adcb +$rosewater = rgb(f4dbd6) +$rosewaterAlpha = f4dbd6 -$overlay2 = 0xff939ab7 -$overlay1 = 0xff8087a2 -$overlay0 = 0xff6e738d +$flamingo = rgb(f0c6c6) +$flamingoAlpha = f0c6c6 -$surface2 = 0xff5b6078 -$surface1 = 0xff494d64 -$surface0 = 0xff363a4f +$pink = rgb(f5bde6) +$pinkAlpha = f5bde6 -$base = 0xff24273a -$mantle = 0xff1e2030 -$crust = 0xff181926 +$mauve = rgb(c6a0f6) +$mauveAlpha = c6a0f6 + +$red = rgb(ed8796) +$redAlpha = ed8796 + +$maroon = rgb(ee99a0) +$maroonAlpha = ee99a0 + +$peach = rgb(f5a97f) +$peachAlpha = f5a97f + +$yellow = rgb(eed49f) +$yellowAlpha = eed49f + +$green = rgb(a6da95) +$greenAlpha = a6da95 + +$teal = rgb(8bd5ca) +$tealAlpha = 8bd5ca + +$sky = rgb(91d7e3) +$skyAlpha = 91d7e3 + +$sapphire = rgb(7dc4e4) +$sapphireAlpha = 7dc4e4 + +$blue = rgb(8aadf4) +$blueAlpha = 8aadf4 + +$lavender = rgb(b7bdf8) +$lavenderAlpha = b7bdf8 + +$text = rgb(cad3f5) +$textAlpha = cad3f5 + +$subtext1 = rgb(b8c0e0) +$subtext1Alpha = b8c0e0 + +$subtext0 = rgb(a5adcb) +$subtext0Alpha = a5adcb + +$overlay2 = rgb(939ab7) +$overlay2Alpha = 939ab7 + +$overlay1 = rgb(8087a2) +$overlay1Alpha = 8087a2 + +$overlay0 = rgb(6e738d) +$overlay0Alpha = 6e738d + +$surface2 = rgb(5b6078) +$surface2Alpha = 5b6078 + +$surface1 = rgb(494d64) +$surface1Alpha = 494d64 + +$surface0 = rgb(363a4f) +$surface0Alpha = 363a4f + +$base = rgb(24273a) +$baseAlpha = 24273a + +$mantle = rgb(1e2030) +$mantleAlpha = 1e2030 + +$crust = rgb(181926) +$crustAlpha = 181926 diff --git a/home/.config/swayidle/config b/home/.config/swayidle/config deleted file mode 100644 index edff6ec..0000000 --- a/home/.config/swayidle/config +++ /dev/null @@ -1,5 +0,0 @@ -timeout 180 'brightnessctl -s && brightnessctl s 15%' resume 'brightnessctl -r' -timeout 300 'swaylock' -timeout 350 'brightnessctl s 0%' resume 'brightnessctl -r' -timeout 420 'systemctl suspend' -before-sleep 'swaylock' \ No newline at end of file diff --git a/home/.config/swaylock/config b/home/.config/swaylock/config deleted file mode 100644 index 5c860f8..0000000 --- a/home/.config/swaylock/config +++ /dev/null @@ -1,33 +0,0 @@ -daemonize -indicator -clock -screenshots - -effect-blur=11x11 -effect-compose=1100,10;/home/xnm/.config/swaylock/rebecca.png -effect-compose=20,0;40%x100%;/home/xnm/.config/swaylock/lucy.png -font=JetBrains Mono -indicator-radius=80 -indicator-thickness=8 -timestr=%I:%M %p -datestr=%F - -inside-color=#181926 -ring-color=#8bd5ca -key-hl-color=#a6da95 -text-color=#cad3f5 -layout-text-color=#cad3f5 -layout-bg-color=#181926 -text-caps-lock-color=#cad3f5 - -inside-clear-color=#f4dbd6 -ring-clear-color=#f0c6c6 -text-clear-color=#1e2030 - -inside-ver-color=#91d7e3 -ring-ver-color=#7dc4e4 -text-ver-color=#1e2030 - -inside-wrong-color=#ee99a0 -ring-wrong-color=#ed8796 -text-wrong-color=#1e2030 diff --git a/home/.config/swaylock/lucy.png b/home/.config/swaylock/lucy.png deleted file mode 100644 index 3905fa0..0000000 Binary files a/home/.config/swaylock/lucy.png and /dev/null differ diff --git a/home/.config/swaylock/rebecca.png b/home/.config/swaylock/rebecca.png deleted file mode 100644 index 3d44486..0000000 Binary files a/home/.config/swaylock/rebecca.png and /dev/null differ diff --git a/home/.config/wlogout/layout b/home/.config/wlogout/layout index 6841651..30b3392 100644 --- a/home/.config/wlogout/layout +++ b/home/.config/wlogout/layout @@ -1,6 +1,6 @@ { "label" : "lock", - "action" : "swaylock", + "action" : "hyprlock", "text" : "Lock", "keybind" : "l" } @@ -33,4 +33,4 @@ "action" : "systemctl reboot", "text" : "Reboot", "keybind" : "r" -} \ No newline at end of file +} diff --git a/home/.config/wpaperd/output.conf b/home/.config/wpaperd/output.conf deleted file mode 100644 index 574aef5..0000000 --- a/home/.config/wpaperd/output.conf +++ /dev/null @@ -1,4 +0,0 @@ -[default] -path = "~/Pictures/Wallpapers/" -duration = "30m" -# apply-shadow = true \ No newline at end of file diff --git a/home/Pictures/Wallpapers/wallpaper_girl_1.png b/home/background similarity index 100% rename from home/Pictures/Wallpapers/wallpaper_girl_1.png rename to home/background diff --git a/nixos/flake.nix b/nixos/flake.nix index 73970a4..36b7599 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -26,7 +26,7 @@ ./nix-settings.nix ./nixpkgs.nix ./gc.nix - ./auto-upgrade.nix + # ./auto-upgrade.nix ./linux-kernel.nix ./screen.nix ./display-manager.nix diff --git a/nixos/hyprland.nix b/nixos/hyprland.nix index fa0bc66..519d36e 100644 --- a/nixos/hyprland.nix +++ b/nixos/hyprland.nix @@ -10,6 +10,9 @@ pyprland hyprpicker hyprcursor + hyprlock + hypridle + hyprpaper wezterm cool-retro-term diff --git a/nixos/security-services.nix b/nixos/security-services.nix index 0176890..eca417b 100644 --- a/nixos/security-services.nix +++ b/nixos/security-services.nix @@ -24,7 +24,7 @@ ]; }; services.fail2ban.enable = true; - security.pam.services.swaylock = {}; + security.pam.services.hyprlock = {}; # security.polkit.enable = true; programs.browserpass.enable = true; services.clamav = { diff --git a/nixos/services.nix b/nixos/services.nix index c774658..e1dfb03 100644 --- a/nixos/services.nix +++ b/nixos/services.nix @@ -30,8 +30,6 @@ qt6.qtwayland psi-notify poweralertd - swaylock-effects - swayidle playerctl psmisc grim @@ -52,8 +50,6 @@ dunst avizo wlogout - wpaperd - # swww gifsicle ]; } diff --git a/nixos/work.nix b/nixos/work.nix index 4e1aff9..2f5b6ff 100644 --- a/nixos/work.nix +++ b/nixos/work.nix @@ -7,5 +7,6 @@ awscli2 cargo-lambda gnumake + cmake ]; } diff --git a/nixos/yubikey.nix b/nixos/yubikey.nix index aed66ce..fc69c15 100644 --- a/nixos/yubikey.nix +++ b/nixos/yubikey.nix @@ -15,6 +15,6 @@ security.pam.services = { greetd.u2fAuth = true; sudo.u2fAuth = true; - swaylock.u2fAuth = true; + hyprlock.u2fAuth = true; }; }