diff --git a/termux_android.md b/termux_android.md index b57cefe..ecc5e78 100644 --- a/termux_android.md +++ b/termux_android.md @@ -187,6 +187,8 @@ adb reboot или - VNC: https://wiki.termux.com/wiki/Graphical_Environment +**Одномоментно может работать что-то одно: X11 или VNC** + ```shell # Установка XFCE4 pkg install xfce4 xfce4-goodies @@ -220,50 +222,250 @@ termux-x11 :1 -legacy-drawing -xstartup "dbus-launch --exit-with-session xfce4-s Вы должны увидеть рабочий стол XFCE -### Создание скрипта для быстрого запуска +#### Создание скрипта для быстрого запуска Чтобы каждый раз не вводить длинную команду, создайте скрипт в Termux: ```shell -cat $PREFIX/bin/startx +cat > $PREFIX/bin/x11 << 'EOF' #!/data/data/com.termux/files/usr/bin/bash -# 1. Жёстко останавливаем старые процессы сервера -pkill -9 termux-x11 2>/dev/null -rm -f /data/data/com.termux/files/usr/tmp/.X11-unix/X1 2>/dev/null +case "$1" in + down) + echo "🛑 Останавливаем XFCE и Termux:X11..." + + # Убиваем XFCE сессию + pkill -f "xfce4-session" 2>/dev/null + pkill -f "dbus-launch.*xfce4" 2>/dev/null + + # Останавливаем X сервер + pkill -9 termux-x11 2>/dev/null + pkill -9 -f "com.termux.x11.Loader" 2>/dev/null + + # Удаляем сокеты + rm -f /data/data/com.termux/files/usr/tmp/.X11-unix/X1 2>/dev/null + rm -rf /data/data/com.termux/files/usr/tmp/.X11-unix/ 2>/dev/null + + # Закрываем окно Termux:X11 через Activity Manager + am force-stop com.termux.x11 2>/dev/null + + echo "✅ Termux:X11 остановлен." + ;; + + up|"") + echo "🚀 Запускаем XFCE и Termux:X11..." + + # Останавливаем всё, что могло остаться + pkill -9 termux-x11 2>/dev/null + rm -f /data/data/com.termux/files/usr/tmp/.X1-lock 2>/dev/null + rm -rf /data/data/com.termux/files/usr/tmp/.X11-unix/ 2>/dev/null + + sleep 1 + + # Устанавливаем переменные окружения + export XDG_RUNTIME_DIR=${TMPDIR} + + # Запускаем X сервер + termux-x11 :1 -legacy-drawing > /dev/null 2>&1 & + + # Ждём создания сокета + timeout=5 + while [ ! -e /data/data/com.termux/files/usr/tmp/.X11-unix/X1 ] && [ $timeout -gt 0 ]; do + sleep 1 + ((timeout--)) + done + + # Открываем окно Termux:X11 + am start --user 0 -n com.termux.x11/.MainActivity > /dev/null 2>&1 & + + # Запускаем XFCE + env DISPLAY=:1 dbus-launch --exit-with-session xfce4-session > /dev/null 2>&1 & + + echo "✅ XFCE запущен в Termux:X11!" + ;; + + status) + echo "📊 Статус:" + if pgrep -f "termux-x11" > /dev/null; then + echo " Termux:X11: 🟢 запущен" + else + echo " Termux:X11: 🔴 остановлен" + fi + + if pgrep -f "xfce4-session" > /dev/null; then + echo " XFCE: 🟢 запущен" + else + echo " XFCE: 🔴 остановлен" + fi + + if [ -e /data/data/com.termux/files/usr/tmp/.X11-unix/X1 ]; then + echo " Сокет X11: 🟢 существует" + else + echo " Сокет X11: 🔴 отсутствует" + fi + ;; + + help|--help|-h) + echo "Использование: startx [команда]" + echo "" + echo "Команды:" + echo " up - запустить XFCE и Termux:X11 (по умолчанию)" + echo " down - остановить XFCE и Termux:X11, освободить ресурсы" + echo " status - показать статус сервисов" + echo " help - показать эту справку" + ;; + + *) + echo "❌ Неизвестная команда: $1" + echo "Используйте 'startx help' для списка команд" + exit 1 + ;; +esac +EOF -# 2. Небольшая пауза для освобождения ресурсов -sleep 1 - -# 3. Устанавливаем необходимую переменную окружения -export XDG_RUNTIME_DIR=${TMPDIR} -#export PULSE_SERVER=127.0.0.1 - -# 4. Запускаем сам X-сервер Termux с флагом для Kirin -termux-x11 :1 -legacy-drawing > /dev/null 2>&1 & - -# 5. Ждём, пока создастся сокет (индикатор, что сервер готов) -timeout=5 -while [ ! -e /data/data/com.termux/files/usr/tmp/.X11-unix/X1 ] && [ $timeout -gt 0 ]; do - sleep 1 - ((timeout--)) -done - -# 6. Открываем графическое окно Termux:X11 на экране планшета -am start --user 0 -n com.termux.x11/.MainActivity > /dev/null 2>&1 & - -# 7. Запускаем саму среду рабочего стола XFCE -env DISPLAY=:1 dbus-launch --exit-with-session xfce4-session > /dev/null 2>&1 & - -echo "✅ Готово! Терминал и X-сервер запущены, окно Termux:X11 открыто." +chmod +x $PREFIX/bin/x11 ``` -Теперь запуск одной командой: +Параметры скрипта: + +- Запуск ```shell -startx +x11 up +# или просто +x11 ``` +- Остановка + +```shell +x11 down +``` + +- Проверка статуса + +```shell +x11 status +``` + +### Запуск XFCE4 через VNC + +Альтернатива X11 + +#### Установка VNC сервера + +```shell +# Установка TigerVNC сервера +pkg install tigervnc -y +``` + +#### Настройка пароля + +```shell +# Установка пароля для подключения к VNC +vncpasswd +``` + +#### Создание конфигурационных файлов + +```shell +mkdir -p ~/.vnc + +cat > ~/.vnc/config << 'EOF' +# VNC конфиг +geometry=2456x1540 +depth=24 +localhost=0 +alwaysshared=1 +EOF +``` + +Примечание: 2456x1540 родное разрешение планшета за вычетом строки состояния Android + +```shell +cat > ~/.vnc/xstartup << 'EOF' +#!/bin/bash +unset SESSION_MANAGER +unset DBUS_SESSION_BUS_ADDRESS +startxfce4 & +EOF + +chmod +x ~/.vnc/xstartup +``` + +#### Скрипт для запуска / остановки VNC + +```shell +cat > $PREFIX/bin/vnc << 'EOF' +#!/data/data/com.termux/files/usr/bin/bash + +case "$1" in + up|start) + echo "🚀 Запуск VNC на дисплее :1..." + vncserver :1 -geometry 1920x1200 -depth 24 -localhost no + echo "✅ VNC запущен на порту 5901" + ;; + down|stop) + echo "🛑 Полная остановка VNC..." + + # Убиваем процессы VNC + vncserver -kill :1 2>/dev/null + vncserver -kill :2 2>/dev/null + pkill -9 Xvnc 2>/dev/null + + # Удаляем блокировки (ВСЕ возможные пути) + rm -f /data/data/com.termux/files/usr/tmp/.X1-lock 2>/dev/null + rm -f /data/data/com.termux/files/usr/tmp/.X2-lock 2>/dev/null + rm -f /data/data/com.termux/files/usr/tmp/.X11-unix/X1 2>/dev/null + rm -f /data/data/com.termux/files/usr/tmp/.X11-unix/X2 2>/dev/null + rm -rf /data/data/com.termux/files/usr/tmp/.X11-unix/ 2>/dev/null + + rm -f /tmp/.X1-lock 2>/dev/null + rm -f /tmp/.X2-lock 2>/dev/null + rm -rf /tmp/.X11-unix/ 2>/dev/null + + # Удаляем PID файлы + rm -f ~/.vnc/*.pid 2>/dev/null + + echo "✅ VNC полностью остановлен, все блокировки удалены" + ;; + status) + echo "📊 Статус VNC:" + vncserver -list + ;; + restart) + echo "🔄 Перезапуск VNC..." + $0 down + sleep 2 + $0 up + ;; + *) + echo "Использование: vnc [up|down|restart|status]" + echo "" + echo " up - запустить VNC" + echo " down - полностью остановить VNC (с очисткой)" + echo " restart - перезапустить VNC" + echo " status - показать статус" + ;; +esac +EOF + +chmod +x $PREFIX/bin/vnc +``` + +#### Подключение к VNC с планшета + +https://wiki.termux.dev/wiki/Graphical_Environment + +Как рекомендует официальная документация - установить клиент [VNC Viewer](https://play.google.com/store/apps/details?id=com.realvnc.viewer.android) (developed by RealVNC Limited) + +Создать новое подключение + +Адрес: 127.0.0.1:5901 +Качество (Picture quality): High + +Указать пароль + ## TUR (Termux User Repository) TUR — это пользовательский репозиторий Termux, созданный по аналогии с AUR в Arch Linux. Он существует, потому что официальный репозиторий Termux не может включить все существующие пакеты — некоторые из них слишком нишевые, сложные в сборке или имеют специфические лицензионные ограничения