Child-friendly, parent-guided Wayland desktop environment alternative that puts parents, not platforms, in control
Find a file
2026-01-01 13:48:17 -05:00
.github/workflows Add setup scripts 2026-01-01 13:48:17 -05:00
crates shepherdd shouldn't require root to run 2025-12-31 22:33:44 -05:00
docs Add "happy path" video for non-GitHub users 2025-12-31 00:49:58 -05:00
scripts Add setup scripts 2026-01-01 13:48:17 -05:00
.gitattributes Add screenshots 2025-12-31 00:18:42 -05:00
.gitignore Make launcher runnable 2025-12-27 10:50:54 -05:00
Cargo.lock Implement ~ expansion in args 2025-12-30 09:34:21 -05:00
Cargo.toml Make launcher runnable 2025-12-27 10:50:54 -05:00
clippy.toml Add CI 2025-12-28 22:07:23 -05:00
config.example.toml shepherdd shouldn't require root to run 2025-12-31 22:33:44 -05:00
CONTRIBUTING.md Add schema link to CONTRIBUTING 2025-12-31 15:35:41 -05:00
LICENSE.md Design goals README 2025-12-21 23:52:15 -05:00
README.md Add issue links to README 2025-12-31 15:33:39 -05:00
run-dev Add setup scripts 2026-01-01 13:48:17 -05:00
sway.conf :%s/daemon/service/g 2025-12-29 12:52:03 -05:00

shepherd-launcher

A child-friendly, parent-guided launcher for Wayland, allowing supervised access to applications and content that you define.

Its primary goal is to return control of child-focused computing to parents, not software or hardware vendors, by providing:

  • the ease-of-use of game consoles
  • access to any application that can be run, emulated, or virtualized in desktop Linux
  • with granular access controls inspired by and exceeding those in iOS Screen Time

While this repository provides some examples for existing software packages (including non-free software and abandonware), shepherd-launcher is non-prescriptive: as the end user, you are free to use them, not use them, or write your own.

Screenshots

Home screen

shepherd-launcher presents a list of activities for the user to pick from.

Home screen at 3:00 PM showing the following set of activities: Tux Math, Putt Putt Joins the Circus, Secret of Monkey Island, GCompris, Minecraft, Celeste, A Short Hike, Big Buck Bunny, and Lofi Beats.

The flow of manually opening and closing activities should be familiar.

"Happy path" demo showing home screen --> GCompris --> home screen

Activities can be made selectively available at certain times of day.

Home screen at 9:00 PM showing Lofi Beats as the only available activity.

This example, shown at 9 PM, has limited activities as a result.

Time limits

Activities can have configurable time limits, including:

  • individual session length
  • total usage per day
  • cooldown periods before that particular activity can be restarted

TuxMath session shown about to expire, including warnings and automatic termination

Anything on Linux

If it can run on Linux in any way, shape, or form, it can be supervised by shepherd-launcher.

"Big Buck Bunny" hosted within shepherd-launcher UI

Big Buck Bunny playing locally via mpv

"Putt Putt Joins the Circus" hosted within shepherd-launcher UI

Putt Putt Joins the Circus running via ScummVM

"The Secret of Monkey Island" hosted within shepherd-launcher UI

The Secret of Monkey Island running via ScummVM

Minecraft hosted within shepherd-launcher UI

Minecraft running via the mc-installer Snap

Celeste hosted within shepherd-launcher UI

Celeste running via Steam

A Short Hike hosted within shepherd-launcher UI

A Short Hike running via Steam

Contributions are welcome for improvements and not yet implemented backends, such as:

  • Content-aware media player with supervised libraries (#3)
  • Pre-booted Steam to improve launch time (#4)
  • Android apps via Waydroid, including pre-booting Android if necessary (#5)
  • Legacy Win9x via DOSBox, QEMU, or PCem, including scripts to create a boot-to-app image (#6)
  • Chrome (#7), including strict sandboxing and support for firewall rules (#8)
  • Awareness of whether an Internet connection is available, and an availability rule that gates activities based on this (#9)
  • Porting to other host platforms, such as a Microsoft Windows shell replacement or macOS kiosk via MDM. shepherd-launcher is architected such that shepherdd, the core enforcement service, does not render any UI and performs platform-specific functions like process management in platform-specific crates.

Core concepts

  • Launcher-first: only one foreground activity at a time
  • Time-scoped execution: applications are granted time slices, not unlimited sessions
  • Parent-defined policy: rules live outside the application being run
  • Wrappers, not patches: existing software is sandboxed, not modified
  • Revocable access: sessions end predictably and enforceably

Non-goals

  • Modifying or patching third-party applications
  • Circumventing DRM or platform protections
  • Replacing parental involvement with automation

Installation

shepherd-launcher is pre-alpha and in active development. As such, end-user binaries and installation instructions are not yet available.

See CONTRIBUTING.md for how to run in development.

Contributions are welcome for:

  • a CI step that generates production binaries (#1)
  • an installation script (#2)

Example configuration

All behavior shown above is driven entirely by declarative configuration.

For the Minecraft example shown above:

# Minecraft via mc-installer snap
# Ubuntu: sudo snap install mc-installer
[[entries]]
id = "minecraft"
label = "Minecraft"
icon = "minecraft"

[entries.kind]
type = "snap"
snap_name = "mc-installer"

[entries.availability]
[[entries.availability.windows]]
days = "weekdays"
start = "15:00"
end = "18:00"

[[entries.availability.windows]]
days = "weekends"
start = "10:00"
end = "20:00"

[entries.limits]
max_run_seconds = 1800  # 30 minutes (roughly 3 in-game days)
daily_quota_seconds = 3600  # 1 hour per day
cooldown_seconds = 600  # 10 minute cooldown

[[entries.warnings]]
seconds_before = 600
severity = "info"
message = "10 minutes left - start wrapping up!"

[[entries.warnings]]
seconds_before = 120
severity = "warn"
message = "2 minutes remaining - save your game!"

[[entries.warnings]]
seconds_before = 30
severity = "critical"
message = "30 seconds! Save NOW!"

See config.example.toml for more.

Development

See CONTRIBUTING.md

Written in 2025, responsibly

This project stands on the shoulders of giants in systems software and compatibility infrastructure:

  • Wayland and Sway
  • Rust
  • Snap
  • Proton and WINE

This project was written with the assistance of generative AI-based coding agents. Substantial prompts and design docs provided to agents are disclosed in docs/ai.