From d520b8d5056e38e11072261392bcce3704578e71 Mon Sep 17 00:00:00 2001 From: Corey Smith Date: Thu, 17 Jul 2025 21:51:51 -0700 Subject: [PATCH 1/5] Add docker and hostname --- makehome.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makehome.sh b/makehome.sh index 5a35d8a..5b76fc3 100644 --- a/makehome.sh +++ b/makehome.sh @@ -34,7 +34,7 @@ set -g status-interval 5 # Add a space to the beginning of the status bar # This keeps the default session name '[#S]' and adds a space before it set -g status-left-length 300 -set -g status-left ' #[bold]  #{session_name}#[nobold] | #{user}@#{host} | #(curl -s ifconfig.me) | ' +set -g status-left ' #[bold]  #{session_name}#[nobold] | #{user}@#{host} | #(curl -s ifconfig.me) | #(if docker info >/dev/null 2>&1; then echo " $(docker ps -q | wc -l)/$(docker ps -aq | wc -l)"; else echo "#[fg=red] down#[default]"; fi) | ' # Add a space to the end of the status bar # This keeps the default hostname and date/time, and adds a space after @@ -164,7 +164,7 @@ fi # Automatically start tmux if not already running in an interactive session if [[ -z "$TMUX" ]] && [[ "$-" == *i* ]]; then - tmux attach -t Default || tmux new -s Default + tmux attach -t "$HOSTNAME" || tmux new -s "$HOSTNAME" fi EOF From 532c8aab23c85cbad64852514371d499696c5a49 Mon Sep 17 00:00:00 2001 From: Corey Smith Date: Sat, 19 Jul 2025 00:55:14 -0700 Subject: [PATCH 2/5] Add kiosk setup --- kiosk.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 kiosk.sh diff --git a/kiosk.sh b/kiosk.sh new file mode 100644 index 0000000..c426793 --- /dev/null +++ b/kiosk.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +KIOSK_URL="${1:-https://example.com}" + +echo "Setting up Alpine Linux Kiosk..." +echo "Kiosk URL: $KIOSK_URL" + +if ! grep -q "community" /etc/apk/repositories; then + echo "http://dl-cdn.alpinelinux.org/alpine/v3.22/community" >> /etc/apk/repositories + apk update +fi + +echo "Installing kiosk packages..." +apk add chromium xorg-server xinit openbox font-noto unclutter xf86-input-libinput mesa-dri-gallium + +echo "Creating .xinitrc for kiosk mode" +cat << EOF > /root/.xinitrc +#!/bin/sh + +xset -dpms +xset s off +xset s noblank + +unclutter -idle 1 & + +mkdir -p /root/.config/chromium/Default +sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /root/.config/chromium/Default/Preferences 2>/dev/null || true +sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /root/.config/chromium/Default/Preferences 2>/dev/null || true + +while true; do + /usr/bin/chromium-browser $KIOSK_URL \\ + --window-size=1920,1080 \\ + --window-position=0,0 \\ + --start-fullscreen \\ + --kiosk \\ + --incognito \\ + --noerrdialogs \\ + --disable-translate \\ + --no-first-run \\ + --fast \\ + --fast-start \\ + --disable-infobars \\ + --disable-features=TranslateUI \\ + --enable-features=OverlayScrollbars \\ + --disk-cache-dir=/dev/null \\ + --overscroll-history-navigation=0 \\ + --disable-pinch \\ + --no-sandbox \\ + --disable-dev-shm-usage \\ + --disable-sync \\ + --disable-signin-frame-redirect + + echo "Browser crashed, restarting in 5 seconds..." + sleep 5 +done +EOF + +chmod +x /root/.xinitrc + +echo "Setting up auto-start X11 on boot" +cat << 'EOF' > /root/.profile +if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then + exec startx +fi +EOF + +if ! grep -q "getty -n -l /bin/sh" /etc/inittab; then + sed -i 's/^tty1:/#&/' /etc/inittab + echo 'tty1::respawn:/sbin/getty -n -l /bin/sh 38400 tty1' >> /etc/inittab +fi + +echo "kiosk" > /etc/hostname + +echo "" +echo "Kiosk setup complete! (Script is safe to re-run)" +echo "URL configured: $KIOSK_URL" +echo "Reboot to start kiosk mode: reboot" + From 72c854591318577809d98ac5dc7e7298ba190500 Mon Sep 17 00:00:00 2001 From: Corey Smith Date: Sat, 19 Jul 2025 01:01:48 -0700 Subject: [PATCH 3/5] Sh script --- kiosk.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kiosk.sh b/kiosk.sh index c426793..67b0655 100644 --- a/kiosk.sh +++ b/kiosk.sh @@ -1,6 +1,11 @@ -#!/bin/bash +#!/bin/sh -KIOSK_URL="${1:-https://example.com}" +if [ -z "$1" ]; then + echo "Enter kiosk URL (e.g., https://dashboard.company.com):" + read -r KIOSK_URL +else + KIOSK_URL="$1" +fi echo "Setting up Alpine Linux Kiosk..." echo "Kiosk URL: $KIOSK_URL" From cba08b185f2780d07a8ee75bb9a8cc1e4a3ab59b Mon Sep 17 00:00:00 2001 From: Corey Smith Date: Sat, 19 Jul 2025 01:10:15 -0700 Subject: [PATCH 4/5] Working Kiosk --- kiosk.sh | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/kiosk.sh b/kiosk.sh index 67b0655..6ab4f7e 100644 --- a/kiosk.sh +++ b/kiosk.sh @@ -16,45 +16,22 @@ if ! grep -q "community" /etc/apk/repositories; then fi echo "Installing kiosk packages..." -apk add chromium xorg-server xinit openbox font-noto unclutter xf86-input-libinput mesa-dri-gallium +apk add chromium xorg-server xinit openbox font-noto xf86-input-libinput mesa-dri-gallium echo "Creating .xinitrc for kiosk mode" -cat << EOF > /root/.xinitrc +cat > /root/.xinitrc << EOF #!/bin/sh xset -dpms xset s off xset s noblank -unclutter -idle 1 & - mkdir -p /root/.config/chromium/Default sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /root/.config/chromium/Default/Preferences 2>/dev/null || true sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /root/.config/chromium/Default/Preferences 2>/dev/null || true while true; do - /usr/bin/chromium-browser $KIOSK_URL \\ - --window-size=1920,1080 \\ - --window-position=0,0 \\ - --start-fullscreen \\ - --kiosk \\ - --incognito \\ - --noerrdialogs \\ - --disable-translate \\ - --no-first-run \\ - --fast \\ - --fast-start \\ - --disable-infobars \\ - --disable-features=TranslateUI \\ - --enable-features=OverlayScrollbars \\ - --disk-cache-dir=/dev/null \\ - --overscroll-history-navigation=0 \\ - --disable-pinch \\ - --no-sandbox \\ - --disable-dev-shm-usage \\ - --disable-sync \\ - --disable-signin-frame-redirect - + /usr/bin/chromium-browser $KIOSK_URL --window-size=1920,1080 --window-position=0,0 --start-fullscreen --kiosk --incognito --noerrdialogs --disable-translate --no-first-run --fast --fast-start --disable-infobars --disable-features=TranslateUI --enable-features=OverlayScrollbars --disk-cache-dir=/dev/null --overscroll-history-navigation=0 --disable-pinch --no-sandbox --disable-dev-shm-usage --disable-sync --disable-signin-frame-redirect echo "Browser crashed, restarting in 5 seconds..." sleep 5 done @@ -63,7 +40,7 @@ EOF chmod +x /root/.xinitrc echo "Setting up auto-start X11 on boot" -cat << 'EOF' > /root/.profile +cat > /root/.profile << 'EOF' if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then exec startx fi @@ -77,7 +54,7 @@ fi echo "kiosk" > /etc/hostname echo "" -echo "Kiosk setup complete! (Script is safe to re-run)" +echo "Kiosk setup complete!" echo "URL configured: $KIOSK_URL" echo "Reboot to start kiosk mode: reboot" From d4733ee96b3f4da0b1b1937003289bb34beca21e Mon Sep 17 00:00:00 2001 From: Corey Smith Date: Sun, 20 Jul 2025 19:29:39 -0700 Subject: [PATCH 5/5] Initial setup script --- kiosk.sh | 120 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 43 deletions(-) diff --git a/kiosk.sh b/kiosk.sh index 6ab4f7e..1b0e1bc 100644 --- a/kiosk.sh +++ b/kiosk.sh @@ -1,60 +1,94 @@ #!/bin/sh +set -e -if [ -z "$1" ]; then - echo "Enter kiosk URL (e.g., https://dashboard.company.com):" - read -r KIOSK_URL -else - KIOSK_URL="$1" -fi +echo "Setting up Kiosk..." -echo "Setting up Alpine Linux Kiosk..." -echo "Kiosk URL: $KIOSK_URL" +cat > /etc/apk/repositories << 'EOF' +http://mirror.fcix.net/alpine/v3.22/main +http://mirror.fcix.net/alpine/v3.22/community +EOF -if ! grep -q "community" /etc/apk/repositories; then - echo "http://dl-cdn.alpinelinux.org/alpine/v3.22/community" >> /etc/apk/repositories - apk update -fi +apk update && apk upgrade -echo "Installing kiosk packages..." -apk add chromium xorg-server xinit openbox font-noto xf86-input-libinput mesa-dri-gallium +# Install packages +apk add \ + mesa-dri-gallium mesa-egl mesa-gl mesa-gles \ + xorg-server xf86-video-fbdev xf86-input-libinput \ + dbus setxkbmap kbd xrandr xset xinit chromium -echo "Creating .xinitrc for kiosk mode" -cat > /root/.xinitrc << EOF +# Configure boot with custom config.txt and cmdline.txt (usercfg.txt is used becuase config.txt get's overwritten on updates) +cat > /boot/usercfg.txt << 'EOF' +camera_auto_detect=0 +disable_overscan=1 +dtoverlay=vc4-kms-v3d +gpu_mem=128 +hdmi_force_hotplug=1 +hdmi_group=2 +hdmi_mode=82 +config_hdmi_boost=4 +boot_delay=0 +disable_splash=1 +EOF + +echo "root=UUID=$(findmnt -no UUID /) modules=sd-mod,usb-storage,ext4 rootfstype=ext4 console=tty3 loglevel=0 vt.global_cursor_default=0" > /boot/cmdline.txt + +# Remove unnecessary services +for service in acpid chronyd crond modules seedrng; do + rc-update del $service 2>/dev/null || true +done + +# Create kiosk user +adduser -D -h /srv/kiosk -s /bin/ash kiosk + +# Setup kiosk profile +cat > /srv/kiosk/.profile << 'EOF' #!/bin/sh +if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then + exec startx >/dev/null 2>&1 +fi +EOF -xset -dpms -xset s off -xset s noblank +# Setup xinitrc +cat > /srv/kiosk/.xinitrc << 'EOF' +#!/bin/sh +export DISPLAY=:0 +(sleep 2 && xset -dpms s off s noblank) & -mkdir -p /root/.config/chromium/Default -sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /root/.config/chromium/Default/Preferences 2>/dev/null || true -sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /root/.config/chromium/Default/Preferences 2>/dev/null || true +while ! ping -c 1 -W 1 google.com > /dev/null 2>&1; do + sleep 2 +done while true; do - /usr/bin/chromium-browser $KIOSK_URL --window-size=1920,1080 --window-position=0,0 --start-fullscreen --kiosk --incognito --noerrdialogs --disable-translate --no-first-run --fast --fast-start --disable-infobars --disable-features=TranslateUI --enable-features=OverlayScrollbars --disk-cache-dir=/dev/null --overscroll-history-navigation=0 --disable-pinch --no-sandbox --disable-dev-shm-usage --disable-sync --disable-signin-frame-redirect - echo "Browser crashed, restarting in 5 seconds..." + chromium \ + --kiosk \ + --no-sandbox \ + --disable-dev-shm-usage \ + --force-device-scale-factor=1 \ + --window-size=3840,2160 \ + --disable-features=TranslateUI \ + --disable-component-update \ + --no-first-run \ + --num-raster-threads=4 \ + --use-gl=egl \ + --disable-infobars \ + --disable-session-crashed-bubble \ + --disable-breakpad \ + --disable-sync \ + --disable-translate \ + --metrics-recording-only \ + --disable-default-apps \ + --mute-audio \ + --no-default-browser-check \ + ${KIOSK_URL:-https://benewahauto.com} sleep 5 done EOF -chmod +x /root/.xinitrc +chown -R kiosk:kiosk /srv/kiosk +chmod +x /srv/kiosk/.profile /srv/kiosk/.xinitrc -echo "Setting up auto-start X11 on boot" -cat > /root/.profile << 'EOF' -if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then - exec startx -fi -EOF - -if ! grep -q "getty -n -l /bin/sh" /etc/inittab; then - sed -i 's/^tty1:/#&/' /etc/inittab - echo 'tty1::respawn:/sbin/getty -n -l /bin/sh 38400 tty1' >> /etc/inittab -fi - -echo "kiosk" > /etc/hostname - -echo "" -echo "Kiosk setup complete!" -echo "URL configured: $KIOSK_URL" -echo "Reboot to start kiosk mode: reboot" +# Configure autologin +sed -i 's/^tty1::respawn:.*$/tty1::respawn:\/bin\/login -f kiosk/' /etc/inittab +echo "Setup complete! Rebooting..." +reboot