Fix return-to-home logic, pause button auto-hide, Electron update detection, and display schedule
**Return-to-Home Popup Logic (CORRECTED):** - FIXED: Return-to-home inactivity prompt now appears ONLY on manual sites (duration=0) - Rotation sites (duration>0) skip return-to-home logic and use auto-rotation instead - Previous commit had this backwards - now corrected **Pause Button Auto-Hide:** - Pause button now auto-hides after 5 seconds of inactivity (like keyboard icon) - Each user interaction resets the 5-second timer - Debug logging shows when button auto-hides - Prevents button from staying on screen permanently **Manual Electron Update Detection:** - Added main.js file check to Method 1 (default kiosk user) - Added Method 6: Check /opt/kiosk-app and /usr/local/kiosk-app - Added Method 7: Query systemd kiosk.service for working directory - Improved parent directory detection with cleaner variable usage - Enhanced error message with numbered search locations and kiosk user home path - Better debug output to help diagnose installation issues **Display Schedule Logic (CRITICAL FIX):** - FIXED: Reversed display off/on time comparison logic - Overnight case (22:00 off, 06:00 on): Now correctly checks off_mins > on_mins - Same-day case (08:00 off, 17:00 on): Now correctly checks off_mins < on_mins - Display will now properly stay OFF during scheduled times - Fixes issue where "keep display on" watchdog was too aggressive All changes improve UX and fix critical scheduling bugs
This commit is contained in:
+76
-20
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user