Refactor screen rotation setup and GTK theme configuration in first-boot process
Update the one-shot script to set screen rotation using kanshi based on kernel command line parameters, replacing the previous wlr-randr method. The script now writes the configuration to ~/.config/kanshi/config and sets the GTK dark theme (PiXnoir or Adwaita-dark) at first login. Additionally, enhance documentation to reflect these changes and clarify the role of the new script in the first-boot process.
This commit is contained in:
@@ -1,13 +1,31 @@
|
||||
#!/bin/bash
|
||||
# Set reTerminal DM (labwc/Wayland) rotation to Left at every login.
|
||||
# Runs from autostart when user pi logs in; does not remove itself.
|
||||
# Use this when wlr-randr transform does not persist across reboots.
|
||||
sleep 5
|
||||
OUTPUT=""
|
||||
if command -v wlr-randr &>/dev/null; then
|
||||
OUTPUT=$(wlr-randr 2>/dev/null | awk '/^[A-Za-z0-9_-]+ /{print $1; exit}')
|
||||
fi
|
||||
[[ -z "$OUTPUT" ]] && OUTPUT="DSI-1"
|
||||
if [[ -n "$OUTPUT" ]] && command -v wlr-randr &>/dev/null; then
|
||||
wlr-randr --output "$OUTPUT" --transform 270
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user