Set up an always-on display
Turn an Android photo frame, an old tablet, a Raspberry Pi or a spare PC into an always-on Steadily.me display, on a wall or a desk, that boots straight into your habits and stays there.
Android photo frames and old tablets
Any Android 7.0 or newer device with OpenGL ES 3.0 graphics works, including the 10 to 15 inch digital photo frames that run Android, retired tablets and Fire tablets. You need the sideload APK from the download page, not the Play Store build: only the APK registers as a home app, which is what lets the device boot straight into Steadily.me. These steps were tested on a Frameo-based 15 inch frame running Android 8.1.
Install adb on your computer first: on a Mac, brew install android-platform-tools; on Windows and Linux, download the Android SDK platform tools from developer.android.com and unzip them anywhere.
Turn on ADB on the device.
On a Frameo frame (the software most Android photo frames ship with): open the frame's Settings, go to About, and turn on Beta Program. An ADB Access switch appears in the same About section once you are in the beta; turn that on too. Some frames ship with ADB Access already showing, so look for the switch before joining the beta.
On a stock Android tablet: Settings → About → tap Build number seven times, then Settings → Developer options → USB debugging.
Connect from your computer.
Use the frame's USB-C or micro USB port; a USB-A port on a frame is for thumb drives and cannot talk to a computer. A USB-A to USB-C cable on the computer side is the safer choice: some frames never negotiate over a USB-C to USB-C cable and simply don't show up. Accept the "Allow USB debugging" prompt on the frame's screen, ticking "Always allow from this computer".
adb devicesIf the frame isn't listed, turn ADB Access off and on again and replug the cable, which brings the prompt back. On some Frameo frames the port only comes alive after turning on USB transfers (Settings → Manage photos → Transfer from computer).
Install the APK.
adb install -r Steadily-me.apk-rkeeps the app's data if it is already installed. If the streamed install stalls, copying the file over first is more reliable:If the install stallsadb push Steadily-me.apk /data/local/tmp/ adb shell pm install -r /data/local/tmp/Steadily-me.apkOpen it once and sign in.
Launch Steadily.me from the app drawer, sign in, and set your schedule under Settings → Day & night and updates under Settings → Updates. The app stays on unless you tell it to sleep.
Make it the home app.
This is what makes the device boot into Steadily.me instead of its own launcher. On Android 8 or newer, set it from your computer:
adb shell cmd package set-home-activity com.realitymoss.steadily/com.godot.game.GodotAppLauncherWithout adb, or on Android 7: press the device's Home button, pick Steadily.me from the "Select a Home app" list and tap Always.
Going back.
To return the device to its original launcher, list the home apps it knows and pick the other one:
adb shell cmd package query-activities -a android.intent.action.MAIN -c android.intent.category.HOME adb shell cmd package set-home-activity <package>/<activity>Or press Home and choose the other app with Always. Uninstalling Steadily.me also hands home back.
New releases reach the frame on their own: the app downloads small overnight updates, so you rarely need adb again after the first install.
Linux and Raspberry Pi
A Raspberry Pi 4 or 5 running the 64-bit Raspberry Pi OS (Bullseye or newer), or any 64-bit distro with glibc 2.31 or newer and OpenGL 3.3 or OpenGL ES 3.0 graphics. Use the Linux (ARM) zip for a Pi and the Linux zip for an Intel or AMD machine; the file names below are the Pi's.
Unpack it.
mkdir -p ~/steadily unzip Steadily-me-linux-arm64.zip -d ~/steadily chmod +x ~/steadily/Steadily-me.arm64Keep
Steadily-me.pcknext to the binary; the app is the pair of them. On x86_64 the binary isSteadily-me.x86_64.Run it once and sign in.
~/steadily/Steadily-me.arm64It opens fullscreen. Steadily.me uses X11; on Raspberry Pi OS's Wayland desktop it runs under XWayland automatically, nothing to configure. Touchscreens work as they are.
Log the Pi in automatically.
On Raspberry Pi OS:
sudo raspi-config→ System Options → Boot / Auto Login → Desktop Autologin. Other distros have the same switch in their display manager (GNOME: Settings → Users → Automatic Login).Start Steadily.me at login.
The easy way is in the app: Settings → Appearance → "Start automatically at login". It writes a standard autostart entry, which you can also create by hand (replace
/home/piwith your home directory):~/.config/autostart/steadily.desktop[Desktop Entry] Type=Application Name=Steadily.me Comment=Habit wall painting Exec="/home/pi/steadily/Steadily-me.arm64" X-GNOME-Autostart-enabled=trueIf your desktop ignores autostart entries (Raspberry Pi OS with the labwc compositor), start it from the compositor's own autostart file instead:
mkdir -p ~/.config/labwc echo '/home/pi/steadily/Steadily-me.arm64 &' >> ~/.config/labwc/autostartA dedicated kiosk user, a systemd user service, or your distro's session autostart all work too: whatever runs after the desktop is up, run the binary from it.
Let it turn the screen off at night.
Steadily.me switches the panel off with whichever tool is installed:
wlopmon Wayland desktops (labwc, Wayfire),xseton X11, orbrightnessctl. The "Screen off" choice under Settings → Day & night → Sleep overnight only appears when one of them exists; if it is missing, install one and restart the app:sudo apt install wlopm # Wayland desktops sudo apt install x11-xserver-utils # X11 desktops (provides xset)Use "Test (off for 3 seconds)" on the same settings row to confirm the panel actually goes dark and comes back.
Signing in with Google or Apple on a stripped-down image.
Sign-in opens your browser. A kiosk image with no desktop browser can point the app at one by exporting
BROWSER=chromium(or whatever is installed) in the script that starts it. Email and password sign-in needs no browser at all.
Windows PCs and tablets
Windows 10 or 11 on x64, with any graphics from roughly 2010 onward. An old Surface or a cheap mini PC behind a monitor both make good displays.
Unzip it.
Put
Steadily-me.exeandSteadily-me.pcktogether in a folder that stays put, for exampleC:\Steadily. The paths below assume that folder.Run it once.
The download is not code-signed, so the first launch shows SmartScreen's "Windows protected your PC" screen: click More info, then Run anyway. Sign in and set your schedule under Settings → Day & night.
Sign in to Windows automatically.
Press Win+R, run
netplwiz, select your account and untick "Users must enter a user name and password to use this computer". On Windows 11 with Windows Hello, first turn off "For improved security, only allow Windows Hello sign-in" under Settings → Accounts → Sign-in options, or netplwiz hides the checkbox.Start Steadily.me at login.
In the app: Settings → Appearance → "Start automatically at login". It registers a Run entry for your account, the same one this command creates:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v Steadily.me /t REG_SZ /d "C:\Steadily\Steadily-me.exe" /fAlso stop Windows from sleeping the PC on its own: Settings → System → Power, set "Put my device to sleep" to Never, and let Steadily.me manage the screen instead.
Make it the shell (the launcher equivalent).
Windows can start Steadily.me instead of the desktop for one account. The taskbar and Start menu don't load for that account; Steadily.me is all there is, which is exactly right for a display:
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d "C:\Steadily\Steadily-me.exe" /fTo get the desktop back for a moment, press Ctrl+Alt+Del, open Task Manager, and run
explorer.exeas a new task. To undo it for good:reg delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /fOn Windows Enterprise, Education and IoT editions, Shell Launcher (Settings → Accounts → Other users → Set up a kiosk, or the Shell Launcher policy) is the supported way to do the same, and survives Windows updates more gracefully.
macOS
Unzip Steadily.me.app and move it to Applications. The app is signed but not notarized, so the first time, right-click it and choose Open, then Open again in the dialog; after that it opens normally. Settings → Appearance → "Start automatically at login" registers a launch agent (~/Library/LaunchAgents/me.steadily.app.plist) so it comes back after a restart. Pair it with automatic login under System Settings → Users & Groups, and let Steadily.me sleep the display on its own schedule.
Stuck on a device this page doesn't cover? Write to [email protected] and we'll work it out together. Or head back to the downloads