diff --git a/apps/hypridle/default.nix b/apps/hypridle/default.nix
index 4612705..7ed57bf 100644
--- a/apps/hypridle/default.nix
+++ b/apps/hypridle/default.nix
@@ -10,7 +10,7 @@
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false;
- lock_cmd = "hyprlock";
+ lock_cmd = "hakase-hyprlock";
before_sleep_cmd = "loginctl lock-session"; # lock before suspend
};
diff --git a/apps/hyprlock/default.nix b/apps/hyprlock/default.nix
index 5add789..df7d4b3 100644
--- a/apps/hyprlock/default.nix
+++ b/apps/hyprlock/default.nix
@@ -6,16 +6,40 @@
}: let
cacheWallpaper = "${config.home.homeDirectory}/.cache/current_wallpaper";
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 {
imports = [
./scripts/typewriter.nix
./scripts/random-text.nix
];
+ home.packages = [hakase-hyprlock];
programs.hyprlock = {
- # FIXME: `greeting` has as inconsistency in pos for different monitors
enable = true;
extraConfig = ''
source = ~/.config/hypr/hyprlock-colors.conf
+ source = ${greetingConf}
general {
hide_cursor = true
@@ -32,18 +56,6 @@ in {
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)
label {
monitor =
@@ -71,10 +83,10 @@ in {
# Date
label {
monitor =
- text = cmd[update:60000] date '+%A, %B %d'
+ text = cmd[update:60000] echo "$(date '+%A, %B %d')"
color = $on_surface_variant
font_size = 18
- font_family = ${clockFont}
+ font_family = ${clockFont} Italic
position = 0, -320
halign = center
valign = center
diff --git a/apps/hyprlock/scripts/random-text.nix b/apps/hyprlock/scripts/random-text.nix
index 67519e7..ad90cb9 100644
--- a/apps/hyprlock/scripts/random-text.nix
+++ b/apps/hyprlock/scripts/random-text.nix
@@ -1,16 +1,77 @@
{pkgs, ...}: let
hakase-hyprlock-text-generator = pkgs.writeShellScriptBin "hakase-hyprlock-text-generator" ''
- hour=$(date +%H)
- name="$USER"
+ cache_file="''${XDG_RUNTIME_DIR:-/tmp}/hyprlock_greeting"
+ pid_file="''${XDG_RUNTIME_DIR:-/tmp}/hyprlock_greeting_pid"
- if [[ $hour -lt 12 ]]; then
- greeting="おはよう"
- elif [[ $hour -lt 18 ]]; then
- greeting="こんにちは"
- else
- greeting="こんばんは"
+ current_pid=$(pgrep -x hyprlock | head -1)
+
+ # Pick new greeting only when hyprlock restarts
+ if [[ -f $pid_file && -f $cache_file ]]; then
+ old_pid=$(cat "$pid_file")
+ if [[ "$old_pid" == "$current_pid" ]]; then
+ cat "$cache_file"
+ exit 0
+ 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"
'';
in {
diff --git a/apps/hyprlock/scripts/typewriter.nix b/apps/hyprlock/scripts/typewriter.nix
index ec4ce6f..dbc5fc3 100644
--- a/apps/hyprlock/scripts/typewriter.nix
+++ b/apps/hyprlock/scripts/typewriter.nix
@@ -37,7 +37,7 @@
echo "''${text:0:$letter}_"
else
# Toggle every 4 calls (at 200ms update = ~800ms blink)
- if (((blink / 20) % 2 == 0)); then
+ if (((blink / 4) % 2 == 0)); then
echo "''${text}_"
else
echo "''${text}_"