#!/bin/bash # 1. Ensure Weston is installed sudo apt-get update && sudo apt-get install -y weston xdotool # 2. Grant Flatpak permissions for windowing system flatpak override --user --socket=wayland --socket=x11 org.vinegarhq.Sober # 3. Create required directories mkdir -p ~/.local/bin ~/.local/share/applications # 4. Create the optimized launch script cat > ~/.local/bin/launch-sober-weston.sh <<'EOF' #!/bin/bash # --- CLEANUP PREVIOUS INSTANCES --- pkill -9 -x "sober" 2>/dev/null pkill -9 -x "weston" 2>/dev/null flatpak ps | grep "org.vinegarhq.Sober" | awk '{print $1}' | xargs -r kill -9 2>/dev/null # --- ENVIRONMENT CONFIGURATION --- export SOBER_DISPLAY="wayland-9" if [ -z "$XDG_RUNTIME_DIR" ]; then export XDG_RUNTIME_DIR="/run/user/$(id -u)" fi CONFIG_DIR="/tmp/weston-sober-config" mkdir -p "$CONFIG_DIR" rm -f "$XDG_RUNTIME_DIR/$SOBER_DISPLAY" rm -f "$XDG_RUNTIME_DIR/$SOBER_DISPLAY.lock" # --- WESTON CONFIGURATION --- cat > "$CONFIG_DIR/weston.ini" < Right edge if [ "$X" -le 0 ]; then NEW_X=$((SCREEN_WIDTH - 2)) CHANGED=1 # Right edge -> Left edge elif [ "$X" -ge $((SCREEN_WIDTH - 1)) ]; then NEW_X=1 CHANGED=1 fi # Top edge -> Bottom edge if [ "$Y" -le 0 ]; then NEW_Y=$((SCREEN_HEIGHT - 2)) CHANGED=1 # Bottom edge -> Top edge elif [ "$Y" -ge $((SCREEN_HEIGHT - 1)) ]; then NEW_Y=1 CHANGED=1 fi if [ "$CHANGED" -eq 1 ]; then xdotool mousemove $NEW_X $NEW_Y fi # Sleep briefly to avoid high CPU but keep it responsive sleep 0.005 done } # --- START WESTON --- # Added --fullscreen to make it fullscreen weston --config="$CONFIG_DIR/weston.ini" --socket="$SOBER_DISPLAY" --fullscreen > /tmp/weston-sober.log 2>&1 & WPID=$! # Start infinite mouse loop in background start_infinite_mouse & MOUSE_PID=$! # Wait for socket for i in {1..50}; do if [ -S "$XDG_RUNTIME_DIR/$SOBER_DISPLAY" ]; then break fi sleep 0.1 done # --- LAUNCH SOBER --- # Isolation: Use Wayland only to prevent conflicts with host X11 WAYLAND_DISPLAY="$SOBER_DISPLAY" \ DISPLAY="" \ GDK_BACKEND=wayland \ QT_QPA_PLATFORM=wayland \ SDL_VIDEODRIVER=wayland \ CLUTTER_BACKEND=wayland \ flatpak run org.vinegarhq.Sober # --- EXIT CLEANUP --- kill -TERM $WPID 2>/dev/null kill $MOUSE_PID 2>/dev/null rm -rf "$CONFIG_DIR" EOF # 5. Set execution permissions chmod +x ~/.local/bin/launch-sober-weston.sh # 6. Create Desktop Entry cat > ~/.local/share/applications/sober-fix.desktop <