Fix video problem

fix_video_problem
Nicolas Arenas 2025-10-07 13:26:18 +02:00
parent 17d0a9006d
commit df71a9cc1b
1 changed files with 70 additions and 96 deletions

View File

@ -1,13 +1,8 @@
#!/bin/bash
set -e
# --- Opciones del wrapper original ---
BROWSER_DEBUG=
DISABLE_WAYLAND=1
DISABLE_X11=
# Compatibilidad con los argumentos usados con el browser original: browser -qws http://google.com
while getopts ":qwsDWX" opt ; do
case "$opt" in
case $opt in
q) echo "Ignoring option: -q" ;;
w) echo "Ignoring option: -w" ;;
s) echo "Ignoring option: -s" ;;
@ -16,18 +11,27 @@ while getopts ":qwsDWX" opt; do
X) DISABLE_X11=1 ;;
esac
done
shift $((OPTIND - 1))
browser_args="$*"
shift $(expr $OPTIND - 1)
browser_args="$@"
echo "Browser args: $browser_args"
[ -n "$DISABLE_WAYLAND" ] && echo "WAYLAND DISABLED"
[ -n "$DISABLE_X11" ] && echo "X11 DISABLED"
[ -n "$BROWSER_DEBUG" ] && {
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
}
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
# --- El navegador y flags (QtWebEngine/Chromium) ---
# Seguridad: desactiva CORS si lo necesitas realmente (como en tu script original)
@ -43,96 +47,66 @@ fi
export QTWEBENGINE_CHROMIUM_FLAGS
# Entorno Qt (software puro; X11 por xcb)
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_PLATFORM=xcb
export QSG_RHI_BACKEND=software
export QT_QUICK_BACKEND=software
export LIBGL_ALWAYS_SOFTWARE=1
export QT_XCB_GL_INTEGRATION=none
# XDG runtime (Chromium lo usa). Para root:
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
export XDG_RUNTIME_DIR="/run/user/$EUID"
## 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
fi
mkdir -p "$XDG_RUNTIME_DIR" 2>/dev/null || true
chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null || true
echo "exec touch /run/sway.started" >> $HOME/.config/sway/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
# --- 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
echo "exec touch /run/sway.started"
} > "$HOME/.config/sway/config"
## 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
# --- 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
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
# --- .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
# Make sure libinput works
/usr/bin/udevadm trigger
# 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
## 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 || echo "Sway failed, falling back to X11..."
/usr/bin/sway
else
echo "Sway not installed in this image, skipping."
echo Sway not installed in this image, skipping.
fi
if [ ! -f "/run/sway.started" ] && [ -z "$DISABLE_X11" ]; then
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."
echo X11 not installed in this image, skipping.
fi
else
echo "Sway was run before, not starting X11."
echo "Sway was run before, not starting X11".
fi
if [ ! -f "/run/sway.started" ] && [ ! -f "/run/x11.started" ]; then
if [ ! -f "/run/sway.started" -a ! -f "/run/x11.started" ] ; then
echo "Everything failed, dropping into a shell."
exec /usr/bin/bash
else
echo "All done."
fi