Files
DeeJanuzandClaude Opus 5.5 b99fb97f32 Turn the displays off while the headset isn't used, and keep it awake on a charger
A display mount that covers the proximity sensor makes the headset seem
worn, so SteamVR never turned its displays off and they stayed on all
night. The new power service, ft-powerd (frametop-power.service), goes by
use instead: after DISPLAY_OFF_MIN minutes in which the headset and
controllers didn't move and no input device was used, it turns the
backlight off, and the next movement or input turns it back on.

The new Power tab in Frametop Display Settings sets that time and has a
Stay awake while plugged in switch. The switch sets Steam's own "When
Plugged In and Idle -> Sleep after" to Never through Steam's UI, so the
Frame stays reachable remotely while the power button still works.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:34:34 -06:00

25 lines
968 B
Desktop File

# Template: the installer replaces @REPO@ with the repo path on the Frame.
[Unit]
Description=Frametop power: turns the headset's displays off while nobody is using it
Documentation=file://@REPO@/docs/reference.md
# Needs SteamVR's IPC; it starts and stops with SteamVR.
After=steamvr.service
PartOf=steamvr.service
[Service]
# Runs in the dev container (built there against its libraries). Start the container in a
# scope of its own first (see scripts/container-up.sh), and clean up the process explicitly
# around distrobox enter.
ExecStartPre=-@REPO@/scripts/container-up.sh
ExecStartPre=-/usr/bin/pkill -x ft-powerd
ExecStart=%h/.local/bin/distrobox enter dev -- @REPO@/power/build/ft-powerd
# SIGTERM makes ft-powerd turn the displays back on before it exits.
ExecStopPost=-/usr/bin/pkill -x ft-powerd
Restart=on-failure
RestartSec=3
# The container session (conmon) ignores SIGTERM; don't wait 90 s for it.
TimeoutStopSec=5
[Install]
WantedBy=steamvr.service