Переглянути джерело

attempt at making a reconfigure script

Kablersalat 9 місяців тому
батько
коміт
586a5ae09f
2 змінених файлів з 162 додано та 0 видалено
  1. 162 0
      configure.sh
  2. 0 0
      installer.sh

+ 162 - 0
configure.sh

@@ -0,0 +1,162 @@
+
+#!/bin/bash
+
+# Function to display the menu
+show_menu() {
+    echo "1) Change Hostname"
+    echo "2) Change Timezone"
+    echo "3) Configure .xinitrc"
+    echo "4) Configure start.sh"
+    echo "5) Configure Automatic Login"
+    echo "6) Exit"
+}
+
+# Function to change hostname
+change_hostname() {
+    read -p "Enter new hostname: " new_hostname
+    sudo hostnamectl set-hostname "$new_hostname"
+    echo "Hostname changed to $new_hostname"
+}
+
+# Function to change timezone
+change_timezone() {
+    read -p "Enter new timezone (e.g., America/New_York): " new_timezone
+    sudo timedatectl set-timezone "$new_timezone"
+    echo "Timezone changed to $new_timezone"
+}
+
+# Function to configure .xinitrc
+configure_xinitrc() {
+    cat > /home/kiosk/.xinitrc << 'EOF'
+#!/bin/sh
+
+# Disable power management, screen blanking and make cursor disappear if not moved
+xset s off
+xset -dpms
+xset s noblank
+unclutter -idle 0.1 -root &
+
+# Start Openbox session
+openbox-session &
+x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -rfbport 5901 &
+
+# Start Kiosk Script
+/bin/bash /home/kiosk/start.sh
+EOF
+    sudo chmod a+x /home/kiosk/.xinitrc
+    echo ".xinitrc configured"
+}
+
+# Function to configure start.sh
+configure_start_sh() {
+    SCALE_FACTOR=$(dialog --title "Display Scaling Factor" --inputbox "Enter the display scaling factor (e.g., 1 for 1080p, 2 for 4K):" 8 50 "1" 3>&1 1>&2 2>&3 3>&-)
+
+    DIALOG_RESULT=$(dialog --title "start.sh Configuration" --menu "Choose the script example:" 15 50 2 \
+      1 "Simple website script" \
+      2 "Two or more tabs alternating every 30 seconds" \
+      3>&1 1>&2 2>&3 3>&-)
+
+    if [ "$DIALOG_RESULT" = "1" ]; then
+        WEBSITE=$(dialog --title "Enter Website URL" --inputbox "Please enter the URL for the simple website:" 8 50 "https://www.example.com" 3>&1 1>&2 2>&3 3>&-)
+        set_start_script_single $SCALE_FACTOR $WEBSITE
+    elif [ "$DIALOG_RESULT" = "2" ]; then
+        TAB_COUNT=$(dialog --title "Number of Tabs" --inputbox "Enter number of tabs:" 8 50 "3" 3>&1 1>&2 2>&3 3>&-)
+        local tab_urls=()
+        for (( i=1; i<=TAB_COUNT; i++ )); do
+            URL=$(dialog --title "Enter URL for Tab $i" --inputbox "Enter URL:" 8 50 "http://example$i.com" 3>&1 1>&2 2>&3 3>&-)
+            tab_urls+=("$URL")
+        done
+        configure_tabs $SCALE_FACTOR "${tab_urls[@]}"
+    fi
+}
+
+# Helper function to configure start.sh for a single website
+set_start_script_single() {
+    VNC_PASSWORD=$(dialog --title "VNC Password" --inputbox "Please enter the VNC password:" 8 50 "" 3>&1 1>&2 2>&3 3>&-)
+    mkdir -p /home/kiosk/.vnc
+    rm -f /home/kiosk/.vnc/passwd  # Remove existing password file if it exists
+    echo "$VNC_PASSWORD" | vncpasswd -f > /home/kiosk/.vnc/passwd
+    chmod 600 /home/kiosk/.vnc/passwd
+
+    # Write the script with properly formatted commands
+    cat > /home/kiosk/start.sh <<EOF
+#!/bin/bash
+/usr/bin/chromium --no-first-run --disable-translate --no-default-browser-check --disable-cache --kiosk $2
+EOF
+    chmod a+x /home/kiosk/start.sh
+}
+
+# Helper function to configure start.sh for multiple tabs
+configure_tabs() {
+    local scaling_factor=$1
+    shift  # Remove the first argument (scaling factor) to loop over URLs
+    local tab_urls=""
+    for url in "$@"; do
+        tab_urls+="'$url' "  # Ensure URLs are properly quoted
+    done
+
+    VNC_PASSWORD=$(dialog --title "VNC Password" --inputbox "Please enter the VNC password:" 8 50 "" 3>&1 1>&2 2>&3 3>&-)
+    mkdir -p /home/kiosk/.vnc
+    rm -f /home/kiosk/.vnc/passwd  # Remove existing password file if it exists
+    echo "$VNC_PASSWORD" | vncpasswd -f > /home/kiosk/.vnc/passwd
+    chmod 600 /home/kiosk/.vnc/passwd
+
+    # Write the script with properly formatted commands
+    cat > /home/kiosk/start.sh <<EOF
+#!/bin/bash
+/usr/bin/chromium --incognito --force-device-scale-factor=$scaling_factor --temp-profile --disable-profiles --no-first-run --disable-translate --no-default-browser-check --disable-cache --kiosk $tab_urls &
+sleep 10  # Allow time for Chromium to launch
+
+# Function definitions should be placed before they are called
+switch_tabs() {
+    WINDOW_ID=\$(xdotool search --onlyvisible --class chromium | head -n 1)
+    xdotool windowactivate --sync \$WINDOW_ID
+    xdotool key --window \$WINDOW_ID ctrl+Tab
+}
+
+is_vnc_active() {
+    netstat -an | grep ':5901' | grep -q 'ESTABLISHED'
+    return \$?
+}
+
+# Main loop to handle tab switching
+while true; do
+    if is_vnc_active; then
+        echo "VNC session active, pausing tab switch..."
+        sleep 5
+    else
+        echo "VNC session inactive, switching tabs..."
+        switch_tabs
+        sleep 30
+    fi
+done
+EOF
+    chmod a+x /home/kiosk/start.sh
+}
+
+# Function to configure automatic sign-in
+configure_autologin() {
+    dialog --title "Automatic Login Configuration" --msgbox "Configuring automatic login..." 10 50
+    sudo mkdir -p /etc/systemd/system/getty@tty1.service.d
+    sudo bash -c "cat > /etc/systemd/system/getty@tty1.service.d/autologin.conf << 'EOF'
+[Service]
+ExecStart=
+ExecStart=-/sbin/agetty --autologin $USER --noclear %I \$TERM
+EOF"
+    echo "Automatic login configured"
+}
+
+# Main loop
+while true; do
+    show_menu
+    read -p "Choose an option: " choice
+    case $choice in
+        1) change_hostname ;;
+        2) change_timezone ;;
+        3) configure_xinitrc ;;
+        4) configure_start_sh ;;
+        5) configure_autologin ;;
+        6) exit 0 ;;
+        *) echo "Invalid option, please try again" ;;
+    esac
+done

+ 0 - 0
kiosk.sh → installer.sh