Digital Wellbeing for Linux — Screen Time Tracking, Daily App Limits & Focus Mode (GNOME Wayland & X11)
Dart
15
39 commits
updated Sep 30, 2026
Modern Screen Time Tracking, Daily App Limits & Focus Mode for Wayland & X11.
ScreenGuard is an open-source, privacy-first desktop application built in Flutter for Linux. It brings active Android-style Digital Wellbeing, Daily App Limit Lockouts, and Focus Mode Pomodoro Session Blocking directly to the Linux desktop.
Desktop Environment & Display Server Support
- X11 Desktops: Fully supported out-of-the-box across ALL X11 desktop environments (GNOME X11, KDE X11, XFCE, MATE, Cinnamon, LXQt, i3, Openbox, etc.).
- Wayland Desktops: Currently supported natively on GNOME Wayland (Fedora, Ubuntu, Debian, Arch GNOME) via the native ScreenGuard GNOME Shell Extension. (Support for KDE Plasma Wayland and Hyprland/Sway is planned for upcoming releases).
Important for X11 Testing: X11 window tracking and active window minimization are currently in active community testing. When filing an issue or bug report regarding X11, please attach screenshot or video proof along with your Desktop Environment name & version so the issue can be reproduced and resolved quickly.
In the spirit of open-source transparency and clear attribution, here is the exact breakdown of how AI tooling was utilized during the development of ScreenGuard:
makepkg, PulseAudio stream routing, and systemd user preset overrides).45m, 1h 27m).
< / >) to view previous weeks.Most Used Apps (Wednesday, Aug 12)).


15m, 25m, 45m, 60m) with live circular countdown ring.

~/.local/share/screenguard/usage.db) in WAL journal mode.graph TD
A[ScreenGuard Flutter GUI] -->|SQLite WAL| DB[(usage.db)]
B[screenguard-daemon] -->|SQLite WAL| DB
B -->|Poll active window| C{Display Server}
C -->|Wayland GNOME| D[GNOME Shell Extension D-Bus]
C -->|X11 Desktop| E[X11 EWMH xprop / xdotool]
B -->|Enforce Limits & Focus| F[Desktop Notification / Minimize Window]
screenguard-daemon): Lightweight background service compiling to a single native binary.screenguard@screenguard.app): Native GNOME Shell Extension exporting active window title/class over D-Bus (org.gnome.Shell.Extensions.ScreenGuard)._NET_ACTIVE_WINDOW query via xprop and window minimization via xdotool.Choose your Linux distribution below. Simply copy and paste the commands into your terminal.
Option A — APT repository (recommended, receives updates):
sudo wget -O /usr/share/keyrings/screenguard.asc https://adityakrishnan005-a11y.github.io/ScreenGuard/apt/key.asc
echo "deb [signed-by=/usr/share/keyrings/screenguard.asc] https://adityakrishnan005-a11y.github.io/ScreenGuard/apt apt main" | sudo tee /etc/apt/sources.list.d/screenguard.list
sudo apt update && sudo apt install screenguard
Option B — standalone .deb:
wget https://github.com/adityakrishnan005-a11y/ScreenGuard/releases/download/v0.1.0/screenguard_0.1.0_amd64.deb && sudo apt install ./screenguard_0.1.0_amd64.deb -y
sudo dnf copr enable the-amibivert/screenguard
sudo dnf install screenguard
The AUR package is coming soon (AUR account registration is temporarily suspended). Until then, use our signed custom repository:
# 1. Import & locally trust the signing key
curl -fsSL https://adityakrishnan005-a11y.github.io/ScreenGuard/arch/key.asc -o /tmp/screenguard.asc
sudo pacman-key --add /tmp/screenguard.asc
sudo pacman-key --lsign-key 5E851C89E39A8FD573BF40EAEC671823CA28A37E
# 2. Append the repository to /etc/pacman.conf:
# [screenguard]
# Server = https://adityakrishnan005-a11y.github.io/ScreenGuard/arch/$arch
# SigLevel = Required DatabaseRequired TrustedOnly
# 3. Install
sudo pacman -Sy && sudo pacman -S screenguard
screenguard in a terminal).systemctl --user enable --now screenguard
systemctl --user status screenguard # verify it is active
gnome-extensions enable screenguard@screenguard.app
sudo /usr/share/screenguard/enable_fedora_a11y.sh once, then enable the extension.X11 sessions (KDE X11, XFCE, etc.): tracking works out-of-the-box via
xprop/xdotool(installxdotool,xorg-xprop, and optionallyxprintidlefor idle detection). Native Wayland on non-GNOME compositors is not yet supported — use an X11 session there.
~/.local/share/screenguard/usage.db (WAL mode).If you prefer to clone the repository and build the binaries yourself:
# 1. Clone the repository
git clone https://github.com/adityakrishnan005-a11y/ScreenGuard.git
cd ScreenGuard
# 2. Install dependencies & build release bundle
flutter pub get
flutter build linux --release
# 3. Compile the background tracking daemon
dart compile exe bin/daemon.dart -o build/linux/x64/release/bundle/screenguard-daemon
# 4. (Optional) Create .deb and .rpm packages
nfpm package -f packaging/nfpm.deb.yaml -t dist/screenguard_0.1.0_amd64.deb
nfpm package -f packaging/nfpm.rpm.yaml -t dist/screenguard-0.1.0-1.x86_64.rpm
I am actively working on expanding ScreenGuard! Here is what is currently planned for upcoming releases:
wlr-foreign-toplevel-management) for non-GNOME Wayland compositors.Tracking shows "unknown" on GNOME / Wayland?
Ensure the ScreenGuard GNOME Shell extension is enabled (gnome-extensions enable screenguard@screenguard.app) and toolkit-accessibility is on. For sandboxed Flatpak apps, AT-SPI access must be granted — the Debian/Ubuntu/Fedora post-install script does this automatically, but if you installed via a method that skips post-install (e.g. Arch) or use user Flatpaks, re-run sudo /usr/share/screenguard/enable_fedora_a11y.sh.
Nothing is tracked on KDE Plasma Wayland / Sway / Hyprland?
Native Wayland tracking is currently only available on GNOME Wayland. For KDE and other compositors, log into an X11 session (e.g. Plasma X11), where ScreenGuard tracks via xprop/xdotool.
The daemon isn't running.
Check systemctl --user status screenguard. If inactive, run systemctl --user enable --now screenguard. Note it requires an active graphical session (graphical-session.target), so it only starts once you're logged in.
How do I reset or move my data?
Stop the daemon (systemctl --user stop screenguard), then delete ~/.local/share/screenguard/usage.db* and relaunch to start fresh.
How do I update ScreenGuard? Use your package manager — APT, DNF (Copr), and the Arch repo all deliver updates. Or download the latest release asset from the releases page.
Where do I report bugs? Open a GitHub Issue. For X11 problems, please attach a screenshot/video and your desktop environment + version so we can reproduce it.
Contributions are warmly welcomed! ScreenGuard is built by and for the Linux community.
Whether you want to:
git checkout -b feature/amazing-feature).git commit -m 'Add amazing feature').git push origin feature/amazing-feature).ScreenGuard is created and maintained by Aditya Krishnan (aditya.krishnan005@gmail.com).
Distributed under the GNU General Public License v3.0 (GPLv3).
Dart
76.3%
Shell
7.0%
CMake
6.7%
C++
4.2%
JavaScript
3.2%
Python
1.9%
Digital Wellbeing for Linux — Screen Time Tracking, Daily App Limits & Focus Mode (GNOME Wayland & X11)
Dart
15
39 commits
updated Sep 30, 2026
Modern Screen Time Tracking, Daily App Limits & Focus Mode for Wayland & X11.
ScreenGuard is an open-source, privacy-first desktop application built in Flutter for Linux. It brings active Android-style Digital Wellbeing, Daily App Limit Lockouts, and Focus Mode Pomodoro Session Blocking directly to the Linux desktop.
Desktop Environment & Display Server Support
- X11 Desktops: Fully supported out-of-the-box across ALL X11 desktop environments (GNOME X11, KDE X11, XFCE, MATE, Cinnamon, LXQt, i3, Openbox, etc.).
- Wayland Desktops: Currently supported natively on GNOME Wayland (Fedora, Ubuntu, Debian, Arch GNOME) via the native ScreenGuard GNOME Shell Extension. (Support for KDE Plasma Wayland and Hyprland/Sway is planned for upcoming releases).
Important for X11 Testing: X11 window tracking and active window minimization are currently in active community testing. When filing an issue or bug report regarding X11, please attach screenshot or video proof along with your Desktop Environment name & version so the issue can be reproduced and resolved quickly.
In the spirit of open-source transparency and clear attribution, here is the exact breakdown of how AI tooling was utilized during the development of ScreenGuard:
makepkg, PulseAudio stream routing, and systemd user preset overrides).45m, 1h 27m).
< / >) to view previous weeks.Most Used Apps (Wednesday, Aug 12)).


15m, 25m, 45m, 60m) with live circular countdown ring.

~/.local/share/screenguard/usage.db) in WAL journal mode.graph TD
A[ScreenGuard Flutter GUI] -->|SQLite WAL| DB[(usage.db)]
B[screenguard-daemon] -->|SQLite WAL| DB
B -->|Poll active window| C{Display Server}
C -->|Wayland GNOME| D[GNOME Shell Extension D-Bus]
C -->|X11 Desktop| E[X11 EWMH xprop / xdotool]
B -->|Enforce Limits & Focus| F[Desktop Notification / Minimize Window]
screenguard-daemon): Lightweight background service compiling to a single native binary.screenguard@screenguard.app): Native GNOME Shell Extension exporting active window title/class over D-Bus (org.gnome.Shell.Extensions.ScreenGuard)._NET_ACTIVE_WINDOW query via xprop and window minimization via xdotool.Choose your Linux distribution below. Simply copy and paste the commands into your terminal.
Option A — APT repository (recommended, receives updates):
sudo wget -O /usr/share/keyrings/screenguard.asc https://adityakrishnan005-a11y.github.io/ScreenGuard/apt/key.asc
echo "deb [signed-by=/usr/share/keyrings/screenguard.asc] https://adityakrishnan005-a11y.github.io/ScreenGuard/apt apt main" | sudo tee /etc/apt/sources.list.d/screenguard.list
sudo apt update && sudo apt install screenguard
Option B — standalone .deb:
wget https://github.com/adityakrishnan005-a11y/ScreenGuard/releases/download/v0.1.0/screenguard_0.1.0_amd64.deb && sudo apt install ./screenguard_0.1.0_amd64.deb -y
sudo dnf copr enable the-amibivert/screenguard
sudo dnf install screenguard
The AUR package is coming soon (AUR account registration is temporarily suspended). Until then, use our signed custom repository:
# 1. Import & locally trust the signing key
curl -fsSL https://adityakrishnan005-a11y.github.io/ScreenGuard/arch/key.asc -o /tmp/screenguard.asc
sudo pacman-key --add /tmp/screenguard.asc
sudo pacman-key --lsign-key 5E851C89E39A8FD573BF40EAEC671823CA28A37E
# 2. Append the repository to /etc/pacman.conf:
# [screenguard]
# Server = https://adityakrishnan005-a11y.github.io/ScreenGuard/arch/$arch
# SigLevel = Required DatabaseRequired TrustedOnly
# 3. Install
sudo pacman -Sy && sudo pacman -S screenguard
screenguard in a terminal).systemctl --user enable --now screenguard
systemctl --user status screenguard # verify it is active
gnome-extensions enable screenguard@screenguard.app
sudo /usr/share/screenguard/enable_fedora_a11y.sh once, then enable the extension.X11 sessions (KDE X11, XFCE, etc.): tracking works out-of-the-box via
xprop/xdotool(installxdotool,xorg-xprop, and optionallyxprintidlefor idle detection). Native Wayland on non-GNOME compositors is not yet supported — use an X11 session there.
~/.local/share/screenguard/usage.db (WAL mode).If you prefer to clone the repository and build the binaries yourself:
# 1. Clone the repository
git clone https://github.com/adityakrishnan005-a11y/ScreenGuard.git
cd ScreenGuard
# 2. Install dependencies & build release bundle
flutter pub get
flutter build linux --release
# 3. Compile the background tracking daemon
dart compile exe bin/daemon.dart -o build/linux/x64/release/bundle/screenguard-daemon
# 4. (Optional) Create .deb and .rpm packages
nfpm package -f packaging/nfpm.deb.yaml -t dist/screenguard_0.1.0_amd64.deb
nfpm package -f packaging/nfpm.rpm.yaml -t dist/screenguard-0.1.0-1.x86_64.rpm
I am actively working on expanding ScreenGuard! Here is what is currently planned for upcoming releases:
wlr-foreign-toplevel-management) for non-GNOME Wayland compositors.Tracking shows "unknown" on GNOME / Wayland?
Ensure the ScreenGuard GNOME Shell extension is enabled (gnome-extensions enable screenguard@screenguard.app) and toolkit-accessibility is on. For sandboxed Flatpak apps, AT-SPI access must be granted — the Debian/Ubuntu/Fedora post-install script does this automatically, but if you installed via a method that skips post-install (e.g. Arch) or use user Flatpaks, re-run sudo /usr/share/screenguard/enable_fedora_a11y.sh.
Nothing is tracked on KDE Plasma Wayland / Sway / Hyprland?
Native Wayland tracking is currently only available on GNOME Wayland. For KDE and other compositors, log into an X11 session (e.g. Plasma X11), where ScreenGuard tracks via xprop/xdotool.
The daemon isn't running.
Check systemctl --user status screenguard. If inactive, run systemctl --user enable --now screenguard. Note it requires an active graphical session (graphical-session.target), so it only starts once you're logged in.
How do I reset or move my data?
Stop the daemon (systemctl --user stop screenguard), then delete ~/.local/share/screenguard/usage.db* and relaunch to start fresh.
How do I update ScreenGuard? Use your package manager — APT, DNF (Copr), and the Arch repo all deliver updates. Or download the latest release asset from the releases page.
Where do I report bugs? Open a GitHub Issue. For X11 problems, please attach a screenshot/video and your desktop environment + version so we can reproduce it.
Contributions are warmly welcomed! ScreenGuard is built by and for the Linux community.
Whether you want to:
git checkout -b feature/amazing-feature).git commit -m 'Add amazing feature').git push origin feature/amazing-feature).ScreenGuard is created and maintained by Aditya Krishnan (aditya.krishnan005@gmail.com).
Distributed under the GNU General Public License v3.0 (GPLv3).
Dart
76.3%
Shell
7.0%
CMake
6.7%
C++
4.2%
JavaScript
3.2%
Python
1.9%