55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Select Xorg display mode based on kernel cmdline.
|
|
# Default is the current server-safe path: keep forced fbdev.
|
|
set -eu
|
|
|
|
cmdline_param() {
|
|
key="$1"
|
|
for token in $(cat /proc/cmdline 2>/dev/null); do
|
|
case "$token" in
|
|
"$key"=*)
|
|
echo "${token#*=}"
|
|
return 0
|
|
;;
|
|
esac
|
|
done
|
|
return 1
|
|
}
|
|
|
|
log() {
|
|
echo "bee-display-mode: $*"
|
|
}
|
|
|
|
mode="$(cmdline_param bee.display || true)"
|
|
if [ -z "$mode" ]; then
|
|
mode="safe"
|
|
fi
|
|
|
|
xorg_dir="/etc/X11/xorg.conf.d"
|
|
fbdev_conf="${xorg_dir}/10-fbdev.conf"
|
|
fbdev_park="${xorg_dir}/10-fbdev.conf.disabled"
|
|
|
|
mkdir -p "$xorg_dir"
|
|
|
|
case "$mode" in
|
|
kms|auto)
|
|
if [ -f "$fbdev_conf" ]; then
|
|
mv "$fbdev_conf" "$fbdev_park"
|
|
log "mode=${mode}; disabled forced fbdev config"
|
|
else
|
|
log "mode=${mode}; fbdev config already disabled"
|
|
fi
|
|
;;
|
|
safe|fbdev|"")
|
|
if [ -f "$fbdev_park" ] && [ ! -f "$fbdev_conf" ]; then
|
|
mv "$fbdev_park" "$fbdev_conf"
|
|
log "mode=${mode}; restored forced fbdev config"
|
|
else
|
|
log "mode=${mode}; keeping forced fbdev config"
|
|
fi
|
|
;;
|
|
*)
|
|
log "unknown bee.display=${mode}; keeping forced fbdev config"
|
|
;;
|
|
esac
|