Add homeassistant-dashboard.sh
This commit is contained in:
97
homeassistant-dashboard.sh
Normal file
97
homeassistant-dashboard.sh
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
# Home Assistant Dashboard Launcher
|
||||
# Configure the URL below to point to your Home Assistant instance
|
||||
|
||||
# Log file for debugging
|
||||
LOG_FILE="/tmp/homeassistant-dashboard.log"
|
||||
exec > >(tee -a "$LOG_FILE") 2>&1
|
||||
|
||||
echo "$(date): Starting Home Assistant Dashboard launcher"
|
||||
|
||||
# Home Assistant URL
|
||||
# Note: For auto-login, configure trusted networks in Home Assistant
|
||||
# This computer's IP: 192.168.68.193
|
||||
HA_URL="${HA_URL:-http://homeassistant.local:8123/dashboard-kiosk/0}"
|
||||
|
||||
echo "$(date): Dashboard URL: $HA_URL"
|
||||
|
||||
# Wait for network and display to be ready
|
||||
echo "$(date): Waiting for network and display..."
|
||||
sleep 5
|
||||
|
||||
# Wait for network connectivity
|
||||
for i in {1..30}; do
|
||||
if ping -c 1 -W 2 homeassistant.local > /dev/null 2>&1; then
|
||||
echo "$(date): Network is ready"
|
||||
break
|
||||
fi
|
||||
echo "$(date): Waiting for network... ($i/30)"
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Hide cursor after 3 seconds of inactivity
|
||||
unclutter -idle 3 -root &
|
||||
|
||||
# Set display environment (Wayland)
|
||||
export XDG_RUNTIME_DIR=/run/user/1000
|
||||
# Auto-detect Wayland display
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
if [ -S "$XDG_RUNTIME_DIR/wayland-0" ]; then
|
||||
export WAYLAND_DISPLAY=wayland-0
|
||||
elif [ -S "$XDG_RUNTIME_DIR/wayland-1" ]; then
|
||||
export WAYLAND_DISPLAY=wayland-1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Wait for Wayland display to be ready
|
||||
for i in {1..30}; do
|
||||
if [ -S "$XDG_RUNTIME_DIR/wayland-0" ] || [ -S "$XDG_RUNTIME_DIR/wayland-1" ]; then
|
||||
echo "$(date): Wayland display is ready"
|
||||
break
|
||||
fi
|
||||
echo "$(date): Waiting for Wayland display... ($i/30)"
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Launch Firefox in kiosk mode
|
||||
# --kiosk: Fullscreen mode
|
||||
# --no-remote: Don't connect to existing Firefox instance
|
||||
# --new-instance: Create new instance
|
||||
# --disable-infobars: Hide info bars
|
||||
# --disable-session-restore: Don't restore previous session
|
||||
# MOZ_ENABLE_WAYLAND=1: Enable Wayland support
|
||||
echo "$(date): Launching Firefox..."
|
||||
MOZ_ENABLE_WAYLAND=1 firefox --kiosk \
|
||||
--no-remote \
|
||||
--new-instance \
|
||||
--disable-infobars \
|
||||
--disable-session-restore \
|
||||
"$HA_URL" &
|
||||
|
||||
FIREFOX_PID=$!
|
||||
echo "$(date): Firefox launched with PID: $FIREFOX_PID"
|
||||
|
||||
# Wait for Firefox to load, then inject auto-scroll script
|
||||
sleep 8
|
||||
echo "$(date): Attempting to inject auto-scroll script..."
|
||||
|
||||
# Try to inject JavaScript via Firefox remote debugging (if available)
|
||||
# Or we'll need to use a different method
|
||||
# For now, the user can inject manually or we use a bookmarklet approach
|
||||
|
||||
FIREFOX_PID=$!
|
||||
echo "$(date): Firefox launched with PID: $FIREFOX_PID"
|
||||
|
||||
# Wait a moment then verify it's running
|
||||
sleep 3
|
||||
|
||||
if ps -p $FIREFOX_PID > /dev/null 2>&1; then
|
||||
echo "$(date): Firefox is running successfully"
|
||||
else
|
||||
echo "$(date): ERROR: Firefox process died!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Keep script running
|
||||
wait $FIREFOX_PID
|
||||
echo "$(date): Firefox exited"
|
||||
Reference in New Issue
Block a user