From 73ced94bc12f51ac3facf1c5c6d266d125edd277 Mon Sep 17 00:00:00 2001
From: Declan Teevan
Date: Sun, 8 Feb 2026 13:16:30 +0000
Subject: [PATCH] feat(hypr): extend cfgs
feat(distro): extend stub arch setup script
Extended hypr configs (only base/example config files without
any themes to this repo for now - pending some polishing/refactoring).
Added stubs for adding soem of my `plymouth` and `sddm` theming to my
dots repo.
---
.../display/hyprland/hypr/cfgs/autostart.conf | 11 +-
config/display/hyprland/hypr/hypridle.conf | 37 ++++++
config/display/hyprland/hypr/hyprlock.conf | 106 ++++++++++++++++++
config/display/plymouth/.gitkeep | 2 +
config/display/sddm/.gitkeep | 1 +
distro/arch/setup.sh | 29 ++++-
6 files changed, 182 insertions(+), 4 deletions(-)
create mode 100644 config/display/hyprland/hypr/hypridle.conf
create mode 100644 config/display/hyprland/hypr/hyprlock.conf
create mode 100644 config/display/plymouth/.gitkeep
create mode 100644 config/display/sddm/.gitkeep
diff --git a/config/display/hyprland/hypr/cfgs/autostart.conf b/config/display/hyprland/hypr/cfgs/autostart.conf
index e0a388b..b831432 100644
--- a/config/display/hyprland/hypr/cfgs/autostart.conf
+++ b/config/display/hyprland/hypr/cfgs/autostart.conf
@@ -9,13 +9,18 @@
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
-# TODO: start polkit (separate exec-once)
+# Start polkit agent
+exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
-# TODO: load wallpaper manager
+# Load wallpaper manager / daemon
+# NOTE: using `awww` in dots, instead of `wpaperd`/`swaybg` for now
+exec-once = awww-daemon
# Notifications Daemon
exec-once = swaync
-# TODO: hyprlock setup (hypridle?)
+# Hyprlock + Hypridle Setup
+exec-once = hypridle
+# Start launcher apps
exec-once = waybar
\ No newline at end of file
diff --git a/config/display/hyprland/hypr/hypridle.conf b/config/display/hyprland/hypr/hypridle.conf
new file mode 100644
index 0000000..5d0121b
--- /dev/null
+++ b/config/display/hyprland/hypr/hypridle.conf
@@ -0,0 +1,37 @@
+# NOTE: Example config (pending reworking my own hypr-rice)
+# SOURCE: https://wiki.hypr.land/Hypr-Ecosystem/hypridle/
+
+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 = 150 # 2.5min.
+ on-timeout = brightnessctl -s set 10 # 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 = 150 # 2.5min.
+ on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
+ on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
+}
+
+listener {
+ timeout = 300 # 5min
+ on-timeout = loginctl lock-session # lock screen when timeout has passed
+}
+
+listener {
+ timeout = 330 # 5.5min
+ on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
+ on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
+}
+
+listener {
+ timeout = 1800 # 30min
+ on-timeout = systemctl suspend # suspend pc
+}
\ No newline at end of file
diff --git a/config/display/hyprland/hypr/hyprlock.conf b/config/display/hyprland/hypr/hyprlock.conf
new file mode 100644
index 0000000..90c495b
--- /dev/null
+++ b/config/display/hyprland/hypr/hyprlock.conf
@@ -0,0 +1,106 @@
+# sample hyprlock.conf
+# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
+#
+# rendered text in all widgets supports pango markup (e.g. or tags)
+# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
+#
+# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
+#
+# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
+#
+
+$font = Monospace
+
+general {
+ hide_cursor = false
+}
+
+# uncomment to enable fingerprint authentication
+# auth {
+# fingerprint {
+# enabled = true
+# ready_message = Scan fingerprint to unlock
+# present_message = Scanning...
+# retry_delay = 250 # in milliseconds
+# }
+# }
+
+animations {
+ enabled = true
+ bezier = linear, 1, 1, 0, 0
+ animation = fadeIn, 1, 5, linear
+ animation = fadeOut, 1, 5, linear
+ animation = inputFieldDots, 1, 2, linear
+}
+
+background {
+ monitor =
+ path = screenshot
+ blur_passes = 3
+}
+
+input-field {
+ monitor =
+ size = 20%, 5%
+ outline_thickness = 3
+ inner_color = rgba(0, 0, 0, 0.0) # no fill
+
+ outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
+ check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
+ fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
+
+ font_color = rgb(143, 143, 143)
+ fade_on_empty = false
+ rounding = 15
+
+ font_family = $font
+ placeholder_text = Input password...
+ fail_text = $PAMFAIL
+
+ # uncomment to use a letter instead of a dot to indicate the typed password
+ # dots_text_format = *
+ # dots_size = 0.4
+ dots_spacing = 0.3
+
+ # uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
+ # hide_input = true
+
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+# TIME
+label {
+ monitor =
+ text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
+ font_size = 90
+ font_family = $font
+
+ position = -30, 0
+ halign = right
+ valign = top
+}
+
+# DATE
+label {
+ monitor =
+ text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
+ font_size = 25
+ font_family = $font
+
+ position = -30, -150
+ halign = right
+ valign = top
+}
+
+label {
+ monitor =
+ text = $LAYOUT[en,ru]
+ font_size = 24
+ onclick = hyprctl switchxkblayout all next
+
+ position = 250, -20
+ halign = center
+ valign = center
+}
\ No newline at end of file
diff --git a/config/display/plymouth/.gitkeep b/config/display/plymouth/.gitkeep
new file mode 100644
index 0000000..6f1d50f
--- /dev/null
+++ b/config/display/plymouth/.gitkeep
@@ -0,0 +1,2 @@
+TODO: add plymouth themeing here
+(TODO: also themeing for LUKS screen on portable workstations)
diff --git a/config/display/sddm/.gitkeep b/config/display/sddm/.gitkeep
new file mode 100644
index 0000000..87bc416
--- /dev/null
+++ b/config/display/sddm/.gitkeep
@@ -0,0 +1 @@
+TODO: sddm themeing here
\ No newline at end of file
diff --git a/distro/arch/setup.sh b/distro/arch/setup.sh
index d5a1de8..1c6ce93 100644
--- a/distro/arch/setup.sh
+++ b/distro/arch/setup.sh
@@ -11,12 +11,39 @@
ARCH_APPS = (
base-devel
git
+
+ kitty
+ fastfetch # ofc, ofc
+ zoxide
+
+ neovim
+ lazygit
+ lazydocker
+
+ kleopatra
)
AUR_APPS = (
- brave # disable safe browsing (sends URLS for checking against single API)
+ brave # disable safe browsing; privacy (sends URLS, hashes - but known DB, for checking against single API)
firefox
+ # bruno
+ # insomnia
+)
+
+# TODO: customise install level within script
+# select custom 'packages' / 'apps' (minimal dots, core apps/cfgs only, etc)
+HYPR_APPS = (
+ hyprland
+ hyprlock
+ hypridle
+ rofi
+ swaync
+ waybar
+)
+
+HYPR_AUR_APPS = (
+ awww-git
)
# if [[ $HOSTTYPE == "server" ]]; then STANDARD_PKGS+=(tmux) else AUR_PKGS+=(spotify) fi