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,56 +1,42 @@
|
||||
#!/bin/bash
|
||||
# Start Chromium in app mode. Optional env vars:
|
||||
# CHROMIUM_APP_URL - URL to open (default: http://127.0.0.1:8080)
|
||||
# CHROMIUM_MODE - "fullscreen" or "kiosk" (default: fullscreen)
|
||||
#
|
||||
# Touch long-press → right-click: In Chromium on Wayland, long-press often does *not*
|
||||
# open the context menu (Chromium handles touch itself). Elsewhere (e.g. desktop) it may
|
||||
# work. For long-press right-click *inside* Chromium, use evdev-right-click-emulation
|
||||
# at the input layer so all apps (including Chromium) receive real right-click events:
|
||||
# https://github.com/PeterCxy/evdev-right-click-emulation
|
||||
#
|
||||
# Disable keyring prompts
|
||||
export GNOME_KEYRING_CONTROL=""
|
||||
|
||||
# Prefer Wayland when available so touch long-press produces right-click (context menu)
|
||||
# like the rest of the desktop. X11/XWayland does not get that behavior for Chromium.
|
||||
USE_WAYLAND=0
|
||||
if [ -n "$WAYLAND_DISPLAY" ] && [ -S "${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/$WAYLAND_DISPLAY" ]; then
|
||||
USE_WAYLAND=1
|
||||
fi
|
||||
# Wayland + labwc compositor.
|
||||
export GDK_BACKEND=wayland
|
||||
# Wait for compositor
|
||||
for i in {1..60}; do
|
||||
if [ -S "${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/$WAYLAND_DISPLAY" ]; then
|
||||
pgrep -x labwc >/dev/null 2>&1 && break
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
# URL to open in Chromium (app mode)
|
||||
#CHROMIUM_APP_URL="${CHROMIUM_APP_URL:-http://127.0.0.1:8080}"
|
||||
CHROMIUM_APP_URL="${CHROMIUM_APP_URL:-https://tototheo.com}"
|
||||
|
||||
if [ "$USE_WAYLAND" -eq 1 ]; then
|
||||
# Native Wayland: fullscreen + touch-friendly (long-press = right-click)
|
||||
export GDK_BACKEND=wayland
|
||||
# Wait for compositor
|
||||
for i in {1..60}; do
|
||||
if [ -S "${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/$WAYLAND_DISPLAY" ]; then
|
||||
pgrep -x labwc >/dev/null 2>&1 && break
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
sleep 3
|
||||
/usr/bin/chromium --start-fullscreen --noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-restore-session-state --no-first-run --password-store=basic --use-mock-keychain --ozone-platform=wayland --enable-features=WaylandWindowDecorations --disable-features=UseChromeOSDirectVideoDecoder --app=http://127.0.0.1:8080 &
|
||||
else
|
||||
# Fallback: X11 (e.g. no Wayland session)
|
||||
export DISPLAY=:0
|
||||
export GDK_BACKEND=x11
|
||||
unset WAYLAND_DISPLAY
|
||||
for i in {1..60}; do
|
||||
if xset q >/dev/null 2>&1 || [ -n "$DISPLAY" ]; then
|
||||
if pgrep -x pcmanfm >/dev/null 2>&1 || pgrep -x lxsession >/dev/null 2>&1 || pgrep -x xfdesktop >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
sleep 5
|
||||
/usr/bin/chromium --start-fullscreen --noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-restore-session-state --no-first-run --password-store=basic --use-mock-keychain --ozone-platform=x11 --disable-features=UseChromeOSDirectVideoDecoder --app=http://127.0.0.1:8080 &
|
||||
sleep 3
|
||||
for i in {1..10}; do
|
||||
WINDOW_ID=$(wmctrl -l 2>/dev/null | grep -i chromium | head -1 | awk '{print $1}')
|
||||
if [ -n "$WINDOW_ID" ]; then
|
||||
wmctrl -i -r "$WINDOW_ID" -b add,fullscreen 2>/dev/null
|
||||
break
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
fi
|
||||
# Mode: "fullscreen" or "kiosk"
|
||||
CHROMIUM_MODE="${CHROMIUM_MODE:-fullscreen}"
|
||||
|
||||
CHROMIUM_OPTS="--noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-restore-session-state --no-first-run --password-store=basic --use-mock-keychain --ozone-platform=wayland --enable-features=WaylandWindowDecorations --disable-features=UseChromeOSDirectVideoDecoder --app=${CHROMIUM_APP_URL}"
|
||||
|
||||
case "${CHROMIUM_MODE}" in
|
||||
kiosk) CHROMIUM_OPTS="--kiosk ${CHROMIUM_OPTS}" ;;
|
||||
*) CHROMIUM_OPTS="--start-fullscreen ${CHROMIUM_OPTS}" ;;
|
||||
esac
|
||||
|
||||
sleep 3
|
||||
/usr/bin/chromium $CHROMIUM_OPTS &
|
||||
|
||||
# Keep script running
|
||||
wait
|
||||
|
||||
# Kiosk mode (commented out - uncomment to use instead of fullscreen)
|
||||
# /usr/bin/chromium --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble --disable-restore-session-state --no-first-run --password-store=basic --use-mock-keychain --ozone-platform=x11 --app=http://127.0.0.1:8080
|
||||
|
||||
Reference in New Issue
Block a user