diff --git a/install_kiosk_0.9.2.sh b/install_kiosk_0.9.2.sh index 4216251..eeb25c6 100644 --- a/install_kiosk_0.9.2.sh +++ b/install_kiosk_0.9.2.sh @@ -3632,11 +3632,12 @@ function startMasterTimer(){ const homeViewIdx=getHomeViewIndex(); const currentTabIdx=viewIndexToTabIndex(currentIndex); - // Don't show inactivity prompt on manual sites (duration=0) + // ONLY show inactivity prompt on manual sites (duration=0) + // Rotation sites handle their own timing and should NOT show inactivity prompt if(currentTabIdx>=0&&tabs[currentTabIdx]){ const currentSiteDuration=parseInt(tabs[currentTabIdx].duration)||0; - if(currentSiteDuration===0){ - // Manual site - skip return-to-home logic + if(currentSiteDuration>0){ + // Rotation site - skip return-to-home logic (uses auto-rotation instead) return; } } @@ -5151,6 +5152,8 @@ window.addEventListener('DOMContentLoaded',()=>{ let pauseButton=null; let pauseButtonShouldShow=false; let pauseButtonShown=false; + let pauseButtonHideTimer=null; + const PAUSE_BUTTON_HIDE_DELAY=5000; // Hide after 5 seconds of inactivity function createPauseButton(){ if(pauseButton)return; @@ -5180,9 +5183,25 @@ window.addEventListener('DOMContentLoaded',()=>{ if(!pauseButton)createPauseButton(); pauseButton.style.display='flex'; pauseButtonShown=true; + + // Clear existing hide timer + if(pauseButtonHideTimer){ + clearTimeout(pauseButtonHideTimer); + pauseButtonHideTimer=null; + } + + // Set new hide timer - button will auto-hide after inactivity + pauseButtonHideTimer=setTimeout(()=>{ + console.log('[PAUSE-BTN] Auto-hiding after '+PAUSE_BUTTON_HIDE_DELAY+'ms inactivity'); + hidePauseButton(); + },PAUSE_BUTTON_HIDE_DELAY); } function hidePauseButton(){ + if(pauseButtonHideTimer){ + clearTimeout(pauseButtonHideTimer); + pauseButtonHideTimer=null; + } if(pauseButton){ pauseButton.style.display='none'; pauseButtonShown=false; @@ -5214,10 +5233,14 @@ window.addEventListener('DOMContentLoaded',()=>{ lastUserInteraction=now; console.log('[PAUSE-BTN] User interaction ('+eventType+') - shouldShow='+pauseButtonShouldShow+', shown='+pauseButtonShown); - // Only show if this site allows pause button and it's not already shown - if(pauseButtonShouldShow&&!pauseButtonShown){ - console.log('[PAUSE-BTN] Showing pause button now'); - showPauseButton(); + // Show/refresh pause button if allowed on this site + if(pauseButtonShouldShow){ + if(!pauseButtonShown){ + console.log('[PAUSE-BTN] Showing pause button now'); + }else{ + console.log('[PAUSE-BTN] Resetting auto-hide timer'); + } + showPauseButton(); // This will reset the hide timer } } @@ -5413,14 +5436,16 @@ xset dpms force on on_mins=$(( 10#$(echo "$don" | cut -d: -f1) * 60 + 10#$(echo "$don" | cut -d: -f2) )) # Check if we're in the "display off" window - if [[ $off_mins -lt $on_mins ]]; then - # Normal case: off time is before on time (e.g., 22:00 to 06:00 next day) - if [[ $current_mins -ge $off_mins && $current_mins -lt $on_mins ]]; then + if [[ $off_mins -gt $on_mins ]]; then + # Overnight case: off time is after on time (e.g., turn off at 22:00, on at 06:00) + # Display is OFF from off_mins to midnight AND from midnight to on_mins + if [[ $current_mins -ge $off_mins || $current_mins -lt $on_mins ]]; then schedule_active=true fi else - # Overnight case: off time is after on time (e.g., 06:00 to 22:00) - if [[ $current_mins -ge $off_mins || $current_mins -lt $on_mins ]]; then + # Same-day case: off time is before on time (e.g., turn off at 08:00, on at 17:00) + # Display is OFF from off_mins to on_mins + if [[ $current_mins -ge $off_mins && $current_mins -lt $on_mins ]]; then schedule_active=true fi fi @@ -8271,7 +8296,7 @@ manual_electron_update() { # Method 1: Check if default kiosk user exists and has kiosk-app if id "$KIOSK_USER" &>/dev/null; then local kiosk_home=$(eval echo ~$KIOSK_USER) - if [ -d "$kiosk_home/kiosk-app" ]; then + if [ -d "$kiosk_home/kiosk-app" ] && [ -f "$kiosk_home/kiosk-app/main.js" ]; then DETECTED_KIOSK_USER="$KIOSK_USER" DETECTED_KIOSK_DIR="$kiosk_home/kiosk-app" fi @@ -8307,9 +8332,32 @@ manual_electron_update() { # Method 5: Check parent directory if [ -z "$DETECTED_KIOSK_DIR" ]; then - if [ -f "$(dirname "$PWD")/kiosk-app/main.js" ]; then + local parent_dir="$(dirname "$PWD")" + if [ -f "$parent_dir/kiosk-app/main.js" ]; then DETECTED_KIOSK_USER=$(whoami) - DETECTED_KIOSK_DIR="$(dirname "$PWD")/kiosk-app" + DETECTED_KIOSK_DIR="$parent_dir/kiosk-app" + fi + fi + + # Method 6: Check common system locations + if [ -z "$DETECTED_KIOSK_DIR" ]; then + for sys_dir in /opt/kiosk-app /usr/local/kiosk-app; do + if [ -f "$sys_dir/main.js" ]; then + DETECTED_KIOSK_USER=$(whoami) + DETECTED_KIOSK_DIR="$sys_dir" + break + fi + done + fi + + # Method 7: Use systemd service to find kiosk directory + if [ -z "$DETECTED_KIOSK_DIR" ]; then + if systemctl list-units --all kiosk.service | grep -q kiosk.service; then + local service_dir=$(systemctl show -p WorkingDirectory kiosk.service 2>/dev/null | cut -d= -f2) + if [ -n "$service_dir" ] && [ -f "$service_dir/main.js" ]; then + DETECTED_KIOSK_USER=$(systemctl show -p User kiosk.service 2>/dev/null | cut -d= -f2) + DETECTED_KIOSK_DIR="$service_dir" + fi fi fi @@ -8318,18 +8366,26 @@ manual_electron_update() { echo "✗ Kiosk installation not found!" echo "" echo "Searched locations:" - echo " - /home/$KIOSK_USER/kiosk-app" - echo " - /home/*/kiosk-app" - echo " - $HOME/kiosk-app" - echo " - $PWD/kiosk-app" - echo " - $(dirname "$PWD")/kiosk-app" + echo " 1. /home/$KIOSK_USER/kiosk-app" + echo " 2. /home/*/kiosk-app (all users)" + echo " 3. $HOME/kiosk-app" + echo " 4. $PWD/kiosk-app" + echo " 5. $(dirname "$PWD")/kiosk-app" + echo " 6. /opt/kiosk-app" + echo " 7. /usr/local/kiosk-app" + echo " 8. systemd kiosk.service location" echo "" echo "Debug info:" echo " Current user: $(whoami)" echo " Current directory: $PWD" + echo " HOME: $HOME" echo " Kiosk user exists: $(id "$KIOSK_USER" &>/dev/null && echo 'yes' || echo 'no')" + if id "$KIOSK_USER" &>/dev/null; then + echo " Kiosk user home: $(eval echo ~$KIOSK_USER)" + fi echo "" echo "Please install the kiosk first (Main Menu > Install Kiosk)" + echo "Or run this script from the directory where kiosk-app is located" pause return 1 fi