Using framebuffer
parent
6c25f76726
commit
3c730aa770
|
@ -1,99 +1,138 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Compatibilidad con los argumentos usados con el browser original: browser -qws http://google.com
|
||||
while getopts ":qwsDWX" opt ; do
|
||||
case $opt in
|
||||
# --- Opciones del wrapper original ---
|
||||
BROWSER_DEBUG=
|
||||
DISABLE_WAYLAND=1
|
||||
DISABLE_X11=
|
||||
|
||||
while getopts ":qwsDWX" opt; do
|
||||
case "$opt" in
|
||||
q) echo "Ignoring option: -q" ;;
|
||||
w) echo "Ignoring option: -w" ;;
|
||||
s) echo "Ignoring option: -s" ;;
|
||||
D) BROWSER_DEBUG=1 ;;
|
||||
W) DISABLE_WAYLAND=1 ;;
|
||||
X) DISABLE_X11=1 ;;
|
||||
esac
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
shift $(expr $OPTIND - 1)
|
||||
|
||||
browser_args="$@"
|
||||
|
||||
browser_args="$*"
|
||||
echo "Browser args: $browser_args"
|
||||
|
||||
[ -n "$DISABLE_WAYLAND" ] && echo "WAYLAND DISABLED"
|
||||
[ -n "$DISABLE_X11" ] && echo "X11 DISABLED"
|
||||
[ -n "$BROWSER_DEBUG" ] && {
|
||||
echo "DEBUG MODE ENABLED"
|
||||
echo "* Terminal available via Win+Enter"
|
||||
echo "* Session may be killed with Ctrl+Alt+Backspace"
|
||||
echo
|
||||
}
|
||||
|
||||
if [ -n "BROWSER_DEBUG" ] ; then
|
||||
echo "DEBUG MODE ENABLED"
|
||||
echo "* Terminal available via Win+Enter"
|
||||
echo "* Session may be killed with Ctrl+Alt+Backspace"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
[ -x "/usr/bin/kitty" ] && wl_terminal=/usr/bin/kitty
|
||||
[ -x "/usr/bin/foot" ] && wl_terminal=/usr/bin/foot
|
||||
#[ -x "/usr/bin/xterm" ] && x11_terminal=/usr/bin/kitty
|
||||
#[ -x "/usr/bin/i3-sensible-terminal" ] && x11_terminal=/usr/bin/i3-sensible-terminal
|
||||
|
||||
# The admin page is hosted remotely but executes things on localhost
|
||||
# --- El navegador y flags (QtWebEngine/Chromium) ---
|
||||
# Seguridad: desactiva CORS si lo necesitas realmente (como en tu script original)
|
||||
QTWEBENGINE_CHROMIUM_FLAGS="--disable-web-security"
|
||||
|
||||
[ "$UID" -eq "0" ] && QTWEBENGINE_CHROMIUM_FLAGS="${QTWEBENGINE_CHROMIUM_FLAGS} --no-sandbox"
|
||||
# Estabilidad en entornos sin GPU/GL y con /dev/shm limitado:
|
||||
QTWEBENGINE_CHROMIUM_FLAGS+=" --disable-gpu --use-gl=disabled --disable-gpu-compositing"
|
||||
QTWEBENGINE_CHROMIUM_FLAGS+=" --disable-features=VaapiVideoDecoder,AcceleratedVideoDecode,CanvasOopRasterization,UseSkiaRenderer"
|
||||
QTWEBENGINE_CHROMIUM_FLAGS+=" --disable-dev-shm-usage"
|
||||
# Root: Chromium exige --no-sandbox
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
QTWEBENGINE_CHROMIUM_FLAGS+=" --no-sandbox"
|
||||
fi
|
||||
export QTWEBENGINE_CHROMIUM_FLAGS
|
||||
|
||||
# Entorno Qt (software puro; X11 por xcb)
|
||||
export QT_QPA_PLATFORM=linuxfb
|
||||
export QSG_RHI_BACKEND=software
|
||||
export QT_QUICK_BACKEND=software
|
||||
export LIBGL_ALWAYS_SOFTWARE=1
|
||||
export QT_XCB_GL_INTEGRATION=none
|
||||
|
||||
|
||||
## sway
|
||||
mkdir -p $HOME/.config/sway
|
||||
echo "exec /usr/bin/OGBrowser --ignore-ssl-errors \"$browser_args\"" > $HOME/.config/sway/config
|
||||
if [ -n "BROWSER_DEBUG" ] ; then
|
||||
echo "bindsym Mod4+Return exec $wl_terminal" >> $HOME/.config/sway/config
|
||||
echo "bindsym Control+Alt+Backspace exit" >> $HOME/.config/sway/config
|
||||
# XDG runtime (Chromium lo usa). Para root:
|
||||
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
|
||||
export XDG_RUNTIME_DIR="/run/user/$EUID"
|
||||
fi
|
||||
echo "exec touch /run/sway.started" >> $HOME/.config/sway/config
|
||||
mkdir -p "$XDG_RUNTIME_DIR" 2>/dev/null || true
|
||||
chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null || true
|
||||
|
||||
## i3
|
||||
mkdir -p $HOME/.config/i3
|
||||
echo "exec /usr/bin/OGBrowser --ignore-ssl-errors \"$browser_args\"" > $HOME/.config/i3/config
|
||||
if [ -n "BROWSER_DEBUG" ] ; then
|
||||
echo "bindsym Mod4+Return exec i3-sensible-terminal" >> $HOME/.config/i3/config
|
||||
echo "bindsym Control+Mod1+BackSpace exit" >> $HOME/.config/i3/config
|
||||
fi
|
||||
echo "exec touch /run/x11.started" >> $HOME/.config/i3/config
|
||||
# Terminals opcionales para debug
|
||||
wl_terminal=
|
||||
x11_terminal=
|
||||
[ -x "/usr/bin/kitty" ] && wl_terminal=/usr/bin/kitty
|
||||
[ -x "/usr/bin/foot" ] && wl_terminal=${wl_terminal:-/usr/bin/foot}
|
||||
[ -x "/usr/bin/i3-sensible-terminal" ] && x11_terminal=/usr/bin/i3-sensible-terminal
|
||||
[ -z "$x11_terminal" ] && [ -x /usr/bin/xterm ] && x11_terminal=/usr/bin/xterm
|
||||
|
||||
## xinitrc
|
||||
if [[ -z $DBUS_SESSION_BUS_ADDRESS ]]; then eval $(cat /proc/$(pidof OGAgent)/environ |sed -e 's/\x00/\x0a/g' |grep DBUS_SESSION_BUS_ADDRESS); fi
|
||||
echo "export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS" > $HOME/.xinitrc
|
||||
echo "exec /usr/bin/i3" >> $HOME/.xinitrc
|
||||
echo "exec /usr/bin/xterm" >> $HOME/.xinitrc
|
||||
|
||||
|
||||
# Make sure libinput works
|
||||
/usr/bin/udevadm trigger
|
||||
|
||||
|
||||
## go
|
||||
rm -rf "/run/sway.started" "/run/x11.started"
|
||||
|
||||
if [ -x "/usr/bin/sway" -a -z "$DISABLE_WAYLAND" ] ; then
|
||||
echo "*** Trying to launch Sway ***"
|
||||
/usr/bin/sway
|
||||
else
|
||||
echo Sway not installed in this image, skipping.
|
||||
fi
|
||||
|
||||
if [ ! -f "/run/sway.started" -a -z "$DISABLE_X11" ] ; then
|
||||
if [ -x "/usr/bin/startx" ] ; then
|
||||
echo "*** Trying to launch X11 ***"
|
||||
/usr/bin/startx
|
||||
else
|
||||
echo X11 not installed in this image, skipping.
|
||||
# --- Generar configuración de sway (si procede) ---
|
||||
if [ -z "$DISABLE_WAYLAND" ]; then
|
||||
mkdir -p "$HOME/.config/sway"
|
||||
{
|
||||
echo "exec /usr/bin/OGBrowser --ignore-ssl-errors \"$browser_args\""
|
||||
if [ -n "$BROWSER_DEBUG" ] && [ -n "$wl_terminal" ]; then
|
||||
echo "bindsym Mod4+Return exec $wl_terminal"
|
||||
echo "bindsym Control+Alt+Backspace exec swaymsg exit"
|
||||
fi
|
||||
else
|
||||
echo "Sway was run before, not starting X11".
|
||||
echo "exec touch /run/sway.started"
|
||||
} > "$HOME/.config/sway/config"
|
||||
fi
|
||||
|
||||
if [ ! -f "/run/sway.started" -a ! -f "/run/x11.started" ] ; then
|
||||
echo "Everything failed, dropping into a shell."
|
||||
exec /usr/bin/bash
|
||||
# --- Generar configuración de i3 (v4, válida) ---
|
||||
mkdir -p "$HOME/.config/i3"
|
||||
{
|
||||
echo 'set $mod Mod4'
|
||||
echo 'font pango:monospace 10'
|
||||
# Ejecutar OGBrowser con todas las vars en UNA sola línea
|
||||
echo "exec --no-startup-id env QT_QPA_PLATFORM=\$QT_QPA_PLATFORM QSG_RHI_BACKEND=\$QSG_RHI_BACKEND QT_QUICK_BACKEND=\$QT_QUICK_BACKEND LIBGL_ALWAYS_SOFTWARE=\$LIBGL_ALWAYS_SOFTWARE QT_XCB_GL_INTEGRATION=\$QT_XCB_GL_INTEGRATION QTWEBENGINE_CHROMIUM_FLAGS=\"\$QTWEBENGINE_CHROMIUM_FLAGS\" XDG_RUNTIME_DIR=\"\$XDG_RUNTIME_DIR\" /usr/bin/OGBrowser --ignore-ssl-errors \"$browser_args\""
|
||||
if [ -n "$BROWSER_DEBUG" ] && [ -n "$x11_terminal" ]; then
|
||||
echo "bindsym \$mod+Return exec $x11_terminal"
|
||||
echo "bindsym Control+Mod1+BackSpace exit"
|
||||
fi
|
||||
echo 'exec --no-startup-id /usr/bin/touch /run/x11.started'
|
||||
# Barra (bien formada). Si no la quieres, comenta este bloque entero.
|
||||
echo 'bar {'
|
||||
echo ' status_command i3status'
|
||||
echo ' tray_output none'
|
||||
echo '}'
|
||||
} > "$HOME/.config/i3/config"
|
||||
|
||||
# --- .xinitrc limpio: un solo exec, con D-Bus de sesión ---
|
||||
mkdir -p "$HOME"
|
||||
cat > "$HOME/.xinitrc" <<'EOF'
|
||||
#!/bin/sh
|
||||
exec dbus-run-session i3
|
||||
EOF
|
||||
chmod +x "$HOME/.xinitrc"
|
||||
|
||||
# Asegura libinput (como ya hacías)
|
||||
[ -x /usr/bin/udevadm ] && /usr/bin/udevadm trigger || true
|
||||
|
||||
# Flags de control de arranque
|
||||
rm -f "/run/sway.started" "/run/x11.started"
|
||||
|
||||
# --- Lanzar sesión ---
|
||||
if [ -x "/usr/bin/sway" ] && [ -z "$DISABLE_WAYLAND" ]; then
|
||||
echo "*** Trying to launch Sway ***"
|
||||
/usr/bin/sway || echo "Sway failed, falling back to X11..."
|
||||
else
|
||||
echo "All done."
|
||||
echo "Sway not installed in this image, skipping."
|
||||
fi
|
||||
|
||||
if [ ! -f "/run/sway.started" ] && [ -z "$DISABLE_X11" ]; then
|
||||
if [ -x "/usr/bin/startx" ]; then
|
||||
echo "*** Trying to launch X11 ***"
|
||||
/usr/bin/startx
|
||||
else
|
||||
echo "X11 not installed in this image, skipping."
|
||||
fi
|
||||
else
|
||||
echo "Sway was run before, not starting X11."
|
||||
fi
|
||||
|
||||
if [ ! -f "/run/sway.started" ] && [ ! -f "/run/x11.started" ]; then
|
||||
echo "Everything failed, dropping into a shell."
|
||||
exec /usr/bin/bash
|
||||
else
|
||||
echo "All done."
|
||||
fi
|
||||
|
||||
|
|
Loading…
Reference in New Issue