add(hyprlock): now use 50 languages

This commit is contained in:
kenji
2026-01-05 22:01:52 -06:00
parent 7bc837aeaf
commit 1f3c44afb7
4 changed files with 98 additions and 25 deletions
+1 -1
View File
@@ -10,7 +10,7 @@
general = { general = {
after_sleep_cmd = "hyprctl dispatch dpms on"; after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false; ignore_dbus_inhibit = false;
lock_cmd = "hyprlock"; lock_cmd = "hakase-hyprlock";
before_sleep_cmd = "loginctl lock-session"; # lock before suspend before_sleep_cmd = "loginctl lock-session"; # lock before suspend
}; };
+27 -15
View File
@@ -6,16 +6,40 @@
}: let }: let
cacheWallpaper = "${config.home.homeDirectory}/.cache/current_wallpaper"; cacheWallpaper = "${config.home.homeDirectory}/.cache/current_wallpaper";
clockFont = myConfig.font.monospace; clockFont = myConfig.font.monospace;
scriptFont = myConfig.font.monospaceScript;
greetingConf = "${config.home.homeDirectory}/.cache/hyprlock-greeting.conf";
hakase-hyprlock = pkgs.writeShellScriptBin "hakase-hyprlock" ''
# Get focused monitor
monitor=$(hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.focused) | .name')
# Generate greeting label config
cat > ${greetingConf} << EOF
label {
monitor = $monitor
text = cmd[update:200] hakase-hyprlock-typewriter "\$(hakase-hyprlock-text-generator)"
color = \$on_surface_variant
font_size = 120
font_family = ${clockFont} Bold
position = 0, 480
halign = center
valign = center
}
EOF
exec hyprlock "$@"
'';
in { in {
imports = [ imports = [
./scripts/typewriter.nix ./scripts/typewriter.nix
./scripts/random-text.nix ./scripts/random-text.nix
]; ];
home.packages = [hakase-hyprlock];
programs.hyprlock = { programs.hyprlock = {
# FIXME: `greeting` has as inconsistency in pos for different monitors
enable = true; enable = true;
extraConfig = '' extraConfig = ''
source = ~/.config/hypr/hyprlock-colors.conf source = ~/.config/hypr/hyprlock-colors.conf
source = ${greetingConf}
general { general {
hide_cursor = true hide_cursor = true
@@ -32,18 +56,6 @@ in {
vibrancy = 0.2 vibrancy = 0.2
} }
# Greeting (above clock)
label {
monitor = DP-1
text = cmd[update:1000] hakase-hyprlock-text-generator
color = $on_surface_variant
font_size = 120
font_family = ${clockFont} Bold
position = 0, 480
halign = center
valign = center
}
# Hours (top) # Hours (top)
label { label {
monitor = monitor =
@@ -71,10 +83,10 @@ in {
# Date # Date
label { label {
monitor = monitor =
text = cmd[update:60000] date '+%A, %B %d' text = cmd[update:60000] echo "<span font_features='ss02'>$(date '+%A, %B %d')</span>"
color = $on_surface_variant color = $on_surface_variant
font_size = 18 font_size = 18
font_family = ${clockFont} font_family = ${clockFont} Italic
position = 0, -320 position = 0, -320
halign = center halign = center
valign = center valign = center
+69 -8
View File
@@ -1,16 +1,77 @@
{pkgs, ...}: let {pkgs, ...}: let
hakase-hyprlock-text-generator = pkgs.writeShellScriptBin "hakase-hyprlock-text-generator" '' hakase-hyprlock-text-generator = pkgs.writeShellScriptBin "hakase-hyprlock-text-generator" ''
hour=$(date +%H) cache_file="''${XDG_RUNTIME_DIR:-/tmp}/hyprlock_greeting"
name="$USER" pid_file="''${XDG_RUNTIME_DIR:-/tmp}/hyprlock_greeting_pid"
if [[ $hour -lt 12 ]]; then current_pid=$(pgrep -x hyprlock | head -1)
greeting=""
elif [[ $hour -lt 18 ]]; then # Pick new greeting only when hyprlock restarts
greeting="" if [[ -f $pid_file && -f $cache_file ]]; then
else old_pid=$(cat "$pid_file")
greeting="" if [[ "$old_pid" == "$current_pid" ]]; then
cat "$cache_file"
exit 0
fi
fi fi
greetings=(
"Hello"
"Hola"
"Bonjour"
"Hallo"
"Ciao"
"Olá"
"Привет"
""
""
""
"مرحبا"
"שלום"
""
""
"Γειά σου"
"Merhaba"
"Xin chào"
"Cześć"
"Hej"
"Ahoj"
"Szia"
"Salut"
"Привіт"
""
""
"Jambo"
"Aloha"
"Sawubona"
"Habari"
"Hei"
"Hallå"
"Hei"
"Kamusta"
"Salam"
"Selamat"
"Saluton"
"Tere"
"Sveiki"
"Labas"
"Здраво"
"Здравей"
"Bok"
"Përshëndetje"
"Բdelays"
""
"Сайн уу"
""
""
""
""
)
idx=$((RANDOM % ''${#greetings[@]}))
greeting="''${greetings[$idx]}"
echo "$current_pid" > "$pid_file"
echo "$greeting" > "$cache_file"
echo "$greeting" echo "$greeting"
''; '';
in { in {
+1 -1
View File
@@ -37,7 +37,7 @@
echo "''${text:0:$letter}_" echo "''${text:0:$letter}_"
else else
# Toggle every 4 calls (at 200ms update = ~800ms blink) # Toggle every 4 calls (at 200ms update = ~800ms blink)
if (((blink / 20) % 2 == 0)); then if (((blink / 4) % 2 == 0)); then
echo "''${text}_" echo "''${text}_"
else else
echo "''${text}<span alpha=\"1%\">_</span>" echo "''${text}<span alpha=\"1%\">_</span>"