<message>Modify the first-boot configuration to include the gir1.2-gtklayershell-0.1 package for improved GTK layer shell support. Update the first-boot script to enhance the portal status reporting with connection timeouts. Additionally, implement a restart mechanism for the kanshi service in rotation scripts to ensure immediate application of configuration changes. Introduce a Chromium kiosk extension to disable text selection, improving user experience in kiosk mode. These changes streamline the setup process and enhance the overall functionality of the kiosk environment.
62 lines
2.8 KiB
Bash
62 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# Revision: 2
|
|
# One-shot: set screen rotation via kanshi (same as Control Center), then remove self.
|
|
# Reads video=DSI-1:rotate=N from kernel cmdline and writes ~/.config/kanshi/config.
|
|
# Runs once as user pi at first login; deletes its autostart and this script so it never runs again.
|
|
# Logs to /var/log/first-boot.log.
|
|
FIRST_BOOT_LOG="/var/log/first-boot.log"
|
|
BASE="$(basename "$0" .sh)"
|
|
log() { echo "[$(date -Iseconds)] [$BASE] $*" >> "$FIRST_BOOT_LOG" 2>/dev/null || true; }
|
|
|
|
ROTATE="270"
|
|
for f in /boot/firmware/cmdline.txt /boot/cmdline.txt; do
|
|
if [[ -f "$f" ]]; then
|
|
val=$(grep -o 'video=DSI-1:rotate=[0-9]*' "$f" 2>/dev/null | head -1)
|
|
val="${val#*rotate=}"
|
|
if [[ "$val" =~ ^(90|180|270)$ ]]; then ROTATE="$val"; break; fi
|
|
fi
|
|
done
|
|
log "writing kanshi config with transform $ROTATE (from cmdline)"
|
|
|
|
KANSHI_DIR="$HOME/.config/kanshi"
|
|
KANSHI_CONFIG="$KANSHI_DIR/config"
|
|
mkdir -p "$KANSHI_DIR"
|
|
cat > "$KANSHI_CONFIG" << EOF
|
|
profile {
|
|
output DSI-1 enable scale 1.000000 mode 800x1280@60.000 position 0,0 transform $ROTATE
|
|
}
|
|
EOF
|
|
log "kanshi config written to $KANSHI_CONFIG"
|
|
|
|
# Restart kanshi so the config is applied immediately
|
|
if pgrep -u "$(id -u)" kanshi >/dev/null 2>&1; then
|
|
pkill -u "$(id -u)" kanshi 2>/dev/null
|
|
sleep 0.3
|
|
fi
|
|
nohup /usr/bin/kanshi >/dev/null 2>&1 &
|
|
log "kanshi restarted"
|
|
|
|
# Set GTK dark theme (same as first-boot step 08) and force dark mode via gsettings
|
|
GTK_THEME_NAME="PiXnoir"
|
|
[[ -d /usr/share/themes/Adwaita-dark ]] && ! [[ -d /usr/share/themes/PiXnoir ]] && GTK_THEME_NAME="Adwaita-dark"
|
|
GTK_SETTINGS="$HOME/.config/gtk-3.0/settings.ini"
|
|
mkdir -p "$(dirname "$GTK_SETTINGS")"
|
|
if [[ ! -f "$GTK_SETTINGS" ]]; then
|
|
printf '%s\n' '[Settings]' 'gtk-application-prefer-dark-theme=1' "gtk-theme-name=$GTK_THEME_NAME" > "$GTK_SETTINGS"
|
|
else
|
|
grep -q '^gtk-application-prefer-dark-theme=' "$GTK_SETTINGS" && sed -i 's/^gtk-application-prefer-dark-theme=.*/gtk-application-prefer-dark-theme=1/' "$GTK_SETTINGS" || echo 'gtk-application-prefer-dark-theme=1' >> "$GTK_SETTINGS"
|
|
grep -q '^gtk-theme-name=' "$GTK_SETTINGS" && sed -i "s/^gtk-theme-name=.*/gtk-theme-name=$GTK_THEME_NAME/" "$GTK_SETTINGS" || echo "gtk-theme-name=$GTK_THEME_NAME" >> "$GTK_SETTINGS"
|
|
fi
|
|
if [[ -d /usr/share/icons/PiXtrix ]]; then
|
|
grep -q '^gtk-icon-theme-name=' "$GTK_SETTINGS" && sed -i 's/^gtk-icon-theme-name=.*/gtk-icon-theme-name=PiXtrix/' "$GTK_SETTINGS" || echo 'gtk-icon-theme-name=PiXtrix' >> "$GTK_SETTINGS"
|
|
fi
|
|
if command -v gsettings >/dev/null 2>&1; then
|
|
gsettings set org.gnome.desktop.interface gtk-theme "$GTK_THEME_NAME" 2>/dev/null || true
|
|
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' 2>/dev/null || true
|
|
fi
|
|
log "Set dark theme ($GTK_THEME_NAME) in gtk-3.0/settings.ini"
|
|
|
|
log "removing one-shot desktop and script"
|
|
rm -f "$HOME/.config/autostart/${BASE}.desktop" "$HOME/${BASE}.sh"
|
|
log "finished"
|