I have kids on Linux machines and wanted to limit their screen time. It turns out that barely exists. Timekpr-nExT is the main option and it's good, but it's configured per-machine — which doesn't help when there's more than one computer, and means walking over to a PC to grant 15 more minutes.
So I built ScreenGuard: a central server holds the rules, and a small agent on each managed machine enforces them.
What it does
– Daily time limits and weekly schedules, per Linux user account
– Locks the graphical session when time runs out — optionally keeping apps and unsaved work running behind the lock screen, so nothing is lost
– Desktop warnings at 15 / 10 / 5 / 1 minutes
– Grant or take back minutes on the fly, with a reason the kid actually sees
– One profile can span several machines — the limit is shared, not per-device
– Per-profile domain blocklist, enforced on the agent at DNS level
– Send a text message to a user's desktop
– Keeps working offline — the agent caches its config and enforces it even if the server is unreachable
– Web UI and a REST API, plus an Android app:
– UI in English, Polish, German, French, Spanish, Portuguese
Web UI:
Mobile app:
Stack and deployment
– Server and agent are both Rust, static musl binaries, no runtime dependencies
– Server runs via Docker Compose, or as a plain systemd unit
– Agent installs with a script, runs under systemd, pairs to the server with a code
– mDNS discovery, so agents find the server on the LAN with no configuration
– AGPL-3.0
The obvious objection, up front
This is time limits and schedules — not monitoring. No keylogging, no screenshots, no browsing history collection. The agent is open source and a teenager can read exactly what it reports. I think that's the right property for software that runs on someone else's computer.
Where it actually is
Early, and I'd rather say so. I run it at home, a handful of other people run it, and they've sent genuinely good bug reports — but it's a few months old and I want more eyes on it before calling it stable. Distro-specific breakage, weird desktop environments, and "this made no sense to me" feedback are all exactly what I'm after.
Repo: https://github.com/adambie/screenguard
(There's a hosted option too if you don't want to run a server, but self-hosting is the point and will stay that way — it's the same AGPL server either way.)
Source: r/selfhosted · by /u/adambie
