fix: stuff

This commit is contained in:
kenji
2025-12-26 16:47:50 -06:00
parent 39f692919b
commit f5d81a5a43
5 changed files with 17 additions and 146 deletions
+14
View File
@@ -0,0 +1,14 @@
{
pkgs,
lib,
...
}: let
#
hakase-screensaver-launch = pkgs.writeShellScriptBin "hakase-cmd-screensaver" ''
'';
in {
environment.systemPackages = with pkgs; [
hakase-screensaver-launch
];
}
+2 -2
View File
@@ -2,7 +2,7 @@
home.packages = with pkgs; [ home.packages = with pkgs; [
terminaltexteffects terminaltexteffects
]; ];
home.file.".config/hakase/branding.txt" = { home.file.".config/hakase/branding/screensaver.txt" = {
source = "../../assets/branding.txt"; source = ../../assets/branding.txt;
}; };
} }
+1 -1
View File
@@ -2,6 +2,6 @@
imports = [ imports = [
../../apps/waybar/home.nix ../../apps/waybar/home.nix
../../apps/waybar/deps.nix ../../apps/waybar/deps.nix
../../scripts/hakase-top-right-popup.nix ../../apps/waybar/hakase-popup.nix
]; ];
} }
-143
View File
@@ -1,143 +0,0 @@
# In home.nix or a separate module
{
pkgs,
lib,
...
}: let
# Define the script package
hakase-cmd-screensaver = pkgs.writeShellScriptBin "hakase-cmd-screensaver" ''
export PATH="${lib.makeBinPath [
pkgs.coreutils
pkgs.procps # pkill, pgrep
pkgs.jq
pkgs.hyprland # hyprctl
pkgs.terminaltexteffects # tte
]}:$PATH"
screensaver_in_focus() {
hyprctl activewindow -j | jq -e '.class == "org.hakase.screensaver"' >/dev/null 2>&1
}
exit_screensaver() {
hyprctl keyword cursor:invisible false
pkill -x tte 2>/dev/null
pkill -f org.hakase.screensaver 2>/dev/null
exit 0
}
trap exit_screensaver SIGINT SIGTERM SIGHUP SIGQUIT
printf '\e[?1000h\e[?1003h'
while read -rsn1 -t 0.1; do :; done
printf '\033]11;rgb:00/00/00\007' # Black background
hyprctl keyword cursor:invisible true &>/dev/null
# Note: ''${variable} is how we escape bash variables in Nix
tty=$(tty 2>/dev/null)
while true; do
tte -i "$HOME/.config/hakase/branding/screensaver.txt" \
--frame-rate 120 \
--canvas-width 0 \
--canvas-height 0 \
--reuse-canvas \
--anchor-canvas c \
--anchor-text c \
--random-effect \
--exclude-effects dev_worm \
--no-eol \
--no-restore-cursor &
while pgrep -t "''${tty#/dev/}" -x tte >/dev/null; do
if read -rsn1 -t 1 || ! screensaver_in_focus; then
exit_screensaver
fi
done
done
'';
hakase-launch-screensaver = pkgs.writeShellScriptBin "hakase-launch-screensaver" ''
# 1. Path Setup
# We include necessary utils.
# NOTE: We assume 'hakase-cmd-screensaver', 'walker', and your terminals
# are already installed in your system/home profile.
export PATH="${lib.makeBinPath [
pkgs.coreutils
pkgs.procps # pgrep
pkgs.jq
pkgs.hyprland # hyprctl
pkgs.libnotify # notify-send
pkgs.xdg-terminal-exec
pkgs.terminaltexteffects # tte
]}:$PATH"
if ! command -v tte &>/dev/null; then
exit 1
fi
pgrep -f org.hakase.screensaver && exit 0
if [[ -f "$HOME/.local/state/hakase/toggles/screensaver-off" ]] && [[ "$1" != "force" ]]; then
exit 1
fi
if command -v walker &>/dev/null; then
walker -q
fi
focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
terminal=$(xdg-terminal-exec --print-id)
# 4. Launch loop
for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
hyprctl dispatch focusmonitor "$m"
case "$terminal" in
*Alacritty*)
hyprctl dispatch exec -- \
alacritty --class=org.hakase.screensaver \
--config-file "$HOME/.config/alacritty/screensaver.toml" \
-e hakase-cmd-screensaver
;;
*ghostty*)
hyprctl dispatch exec -- \
ghostty --class=org.hakase.screensaver \
--config-file="$HOME/.config/ghostty/screensaver" \
--font-size=18 \
-e hakase-cmd-screensaver
;;
*kitty*)
hyprctl dispatch exec -- \
kitty --class=org.hakase.screensaver \
--override font_size=18 \
--override window_padding_width=0 \
-e hakase-cmd-screensaver
;;
*)
notify-send " Screensaver only runs in Alacritty, Ghostty, or Kitty"
;;
esac
done
# 5. Restore focus
hyprctl dispatch focusmonitor "$focused"
'';
hakase-toggle-screensaver = pkgs.writeShellScriptBin "hakase-toggle-screensaver" ''
STATE_FILE="$HOME/.local/state/omarchy/toggles/screensaver-off"
if [[ -f "$STATE_FILE" ]]; then
rm -f "$STATE_FILE"
${pkgs.libnotify}/bin/notify-send "󱄄 Screensaver enabled"
else
mkdir -p "$(dirname "$STATE_FILE")"
touch "$STATE_FILE"
${pkgs.libnotify}/bin/notify-send "󱄄 Screensaver disabled"
fi
'';
in {
environment.systemPackages = with pkgs; [
hakase-launch-screensaver
hakase-cmd-screensaver
hakase-toggle-screensaver
];
}