Skip to content

LLM ready

/en/lab/flipclock-screensaver-ascii.md

Title:
FlipClock ASCII Screensaver

FlipClock ASCII Screensaver

Screensaver for Hyprland that draws the time in large ASCII inside a fullscreen terminal, one per monitor, with Terminal Text Effects transitions every minute. It comes in through hypridle when the machine goes idle and leaves on the first movement.

Problem

Hyprland has no screensaver, only a lock. I wanted something that showed up when the machine went idle, matched the terminal and did not require another graphical app running.

Decisions

A fullscreen terminal per monitor, instead of a graphical window: the clock is text rendered with pyfiglet, and the transitions come from Terminal Text Effects, optional. Three small scripts split the responsibilities: detect monitors and terminal, open a window on each, draw the frame. Integration is through hypridle, and a state file turns the screensaver off without uninstalling anything.

Outcome

Personal use on the desktop, with pytest tests for the renderer and bats tests for the shell scripts. Supports ghostty, alacritty and kitty.

Links

---
title: FlipClock ASCII Screensaver
url: https://nandomoreira.dev/en/lab/flipclock-screensaver-ascii
collection: lab
tech:
  - Python
  - Shell
  - Hyprland
date: 2026-04-01
---

# FlipClock ASCII Screensaver

Screensaver for Hyprland that draws the time in large ASCII inside a fullscreen terminal, one per monitor, with Terminal Text Effects transitions every minute. It comes in through hypridle when the machine goes idle and leaves on the first movement.

## Problem

Hyprland has no screensaver, only a lock. I wanted something that showed up
when the machine went idle, matched the terminal and did not require another
graphical app running.

## Decisions

A fullscreen terminal per monitor, instead of a graphical window: the clock
is text rendered with pyfiglet, and the transitions come from Terminal Text
Effects, optional. Three small scripts split the responsibilities: detect
monitors and terminal, open a window on each, draw the frame. Integration is
through hypridle, and a state file turns the screensaver off without
uninstalling anything.

## Outcome

Personal use on the desktop, with pytest tests for the renderer and bats
tests for the shell scripts. Supports ghostty, alacritty and kitty.

## Links

- Repo: https://github.com/nandomoreirame/flipclock-screensaver-ascii

Ready to share.