Turning a Raspberry Pi Into a Sleek Home Assistant Kiosk (The Easy Way)
Ever wanted a dedicated touch screen on your wall to control your smart home? Transforming a Raspberry Pi and a Pi touchscreen into a permanent Home Assistant kiosk is the ultimate weekend project.
If you want the quick overview of how it works without drowning in lines of code, here is the high-level roadmap to making it happen.
1. Flash the Operating System
First, you need to install Raspberry Pi OS (with Desktop) onto your SD card. Make sure to configure it to Auto-Login to Desktop so that the Pi boots straight into the graphical interface without stopping to ask you for a password every time.
sudo apt update
sudo apt upgrade -y
sudo raspi-config
- Go to Display Options → set Underscan to No.
- Go to System Options → Boot / Auto Login → select Desktop Autologin (so it logs into the graphical interface automatically).
- Reboot your Pi
2. Grab the Necessary Software
Once your Pi is booted up and connected to your screen, you only need two lightweight tools:
- Chromium Browser: The engine that will run your Home Assistant interface.
- Unclutter: A tiny utility that automatically hides your mouse cursor after a few seconds so it doesn’t block your beautiful dashboard view.
sudo apt install --no-install-recommends chromium-browser unclutter -y
3. Build a Simple Startup Script
Next, you create a short automation script that acts as the “launch sequence” whenever the Pi turns on. This script does three jobs:
- Tells the screen never to go to sleep or turn off.
- Hides the mouse cursor.
- Launches Chromium directly into Kiosk Mode, pointing straight to your Home Assistant URL.
nano kiosk.sh```text #!/bin/bash
Disable screen blanking and power management
xset -dpms xset s off xset s noblank
Hide mouse cursor after inactivity
unclutter -idle 0.5 -root &
Launch Chromium in kiosk mode
chromium-browser –noerrdialogs –disable-infobars –kiosk http://homeassistant.local:8123
Make the script executable
```bash
chmod +x ~/kiosk.sh
4. Set It to Launch on Boot
To make it completely hands-off, you tell the Pi’s system manager to run your startup script the exact moment the desktop environment finishes loading. This ensures that if power drops or the Pi restarts, it safely boots right back into your smart home panel.
mkdir -p ~/.config/systemd/user/
nano ~/.config/systemd/user/kiosk.service
[Unit]
Description=Home Assistant Kiosk
After=graphical-session.target
[Service]
ExecStart=/home/pi/kiosk.sh
Restart=always
[Install]
WantedBy=graphical-session.target
systemctl --user daemon-reload
systemctl --user enable kiosk.service
systemctl --user start kiosk.service
5. Polish the Home Assistant Dashboard
Finally, to get that premium, built-in look, use the Kiosk Mode plugin from HACS (Home Assistant Community Store). This strips away the sidebar and top navigation menus on your screen, leaving you with nothing but a clean, dedicated, full-screen control center.
To set up a Home Assistant kiosk using a Raspberry Pi and a touchscreen, you need to install Raspberry Pi OS with a desktop environment, configure Chromium to launch in full-screen kiosk mode pointing to your Home Assistant URL, and set up an autostart service.
- Install and Configure Raspberry Pi OSFlash Raspberry Pi OS (with desktop) onto your SD card using the Raspberry Pi Imager.Boot up the Pi, complete the initial setup, and connect your touchscreen and network.Open a terminal (or connect via SSH) and update your system packages:
sudo apt update sudo apt upgrade -yRun the configuration tool:
sudo raspi-config - Go to Display Options → set Underscan to No.
- Go to System Options → Boot / Auto Login → select Desktop Autologin (so it logs into the graphical interface automatically).
- Reboot your Pi.
- Install Required Packages and ChromiumConnect back to your Pi and install the web browser and screen-blanking prevention tools:
sudo apt install --no-install-recommends chromium-browser unclutter -y(Note: On newer versions of Raspberry Pi OS, the package may just be named chromium).
- Create the Kiosk Startup ScriptCreate a shell script that disables screen sleeping and launches Chromium directly into your Home Assistant address:
- Create a script file in your home directory:
nano ~/kiosk.sh
Paste the following configuration (replace http://homeassistant.local:8123 with your actual Home Assistant IP or local domain):
#!/bin/bash
# Disable screen blanking and power management
xset -dpms
xset s off
xset s noblank
# Hide mouse cursor after inactivity
unclutter -idle 0.5 -root &
# Launch Chromium in kiosk mode
chromium-browser --noerrdialogs --disable-infobars --kiosk http://homeassistant.local:8123
- Save and exit (Ctrl + O, Enter, then Ctrl + X).
- Make the script executable:bashchmod +x ~/kiosk.sh
- Configure Auto-Run on Boot via SystemdTo make the script run automatically when the graphical desktop loads, create a systemd user service:Create a systemd directory if it doesn’t exist:
mkdir -p ~/.config/systemd/user/ - Create the service file:
nano ~/.config/systemd/user/kiosk.service - Paste the service configuration (replace pi with your actual username if different):
ini[Unit]
Description=Home Assistant Kiosk
After=graphical-session.target
[Service]
ExecStart=/home/pi/kiosk.sh
Restart=always
[Install]
WantedBy=graphical-session.target
Save and exit (Ctrl + O, Enter, Ctrl + X).Enable and start the service:
systemctl --user daemon-reload
systemctl --user enable kiosk.service
systemctl --user start kiosk.service
Clean Up Home Assistant UI (Optional)To hide the sidebar and top navigation bars for a true wall-panel look:Install Kiosk Mode via HACS (Home Assistant Community Store) on your Home Assistant instance.Append ?kiosk to your dashboard URL (e.g., http://homeassistant.local) inside your kiosk.sh script to strip away extra UI elements.If you want to add an on-screen virtual keyboard for touch input or set up screen sleep automations via Home Assistant, let me know!