#!/bin/bash # Revision: 2 # Set screen rotation via kanshi (same as Control Center). Reads video=DSI-1:rotate=N # from kernel cmdline and writes ~/.config/kanshi/config. Kanshi auto-reloads when the file changes. # Also sets GTK dark theme (PiXnoir / Adwaita-dark). Runs from autostart when user pi logs in; does not remove itself. ROTATE="270" for f in /boot/firmware/cmdline.txt /boot/cmdline.txt; do [[ -f "$f" ]] || continue val=$(grep -o 'video=DSI-1:rotate=[0-9]*' "$f" 2>/dev/null | head -1) val="${val#*rotate=}" [[ "$val" =~ ^(90|180|270)$ ]] && ROTATE="$val" && break done 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 # Set GTK dark theme (same as first-boot step 08) 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