modify: Пн 06 апр 2026 09:15:57 MSK
This commit is contained in:
@@ -187,6 +187,8 @@ adb reboot
|
|||||||
или
|
или
|
||||||
- VNC: https://wiki.termux.com/wiki/Graphical_Environment
|
- VNC: https://wiki.termux.com/wiki/Graphical_Environment
|
||||||
|
|
||||||
|
**Одномоментно может работать что-то одно: X11 или VNC**
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# Установка XFCE4
|
# Установка XFCE4
|
||||||
pkg install xfce4 xfce4-goodies
|
pkg install xfce4 xfce4-goodies
|
||||||
@@ -220,50 +222,250 @@ termux-x11 :1 -legacy-drawing -xstartup "dbus-launch --exit-with-session xfce4-s
|
|||||||
|
|
||||||
Вы должны увидеть рабочий стол XFCE
|
Вы должны увидеть рабочий стол XFCE
|
||||||
|
|
||||||
### Создание скрипта для быстрого запуска
|
#### Создание скрипта для быстрого запуска
|
||||||
|
|
||||||
Чтобы каждый раз не вводить длинную команду, создайте скрипт в Termux:
|
Чтобы каждый раз не вводить длинную команду, создайте скрипт в Termux:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cat $PREFIX/bin/startx
|
cat > $PREFIX/bin/x11 << 'EOF'
|
||||||
#!/data/data/com.termux/files/usr/bin/bash
|
#!/data/data/com.termux/files/usr/bin/bash
|
||||||
|
|
||||||
# 1. Жёстко останавливаем старые процессы сервера
|
case "$1" in
|
||||||
pkill -9 termux-x11 2>/dev/null
|
down)
|
||||||
rm -f /data/data/com.termux/files/usr/tmp/.X11-unix/X1 2>/dev/null
|
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. Небольшая пауза для освобождения ресурсов
|
chmod +x $PREFIX/bin/x11
|
||||||
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 открыто."
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Теперь запуск одной командой:
|
Параметры скрипта:
|
||||||
|
|
||||||
|
- Запуск
|
||||||
|
|
||||||
```shell
|
```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 User Repository)
|
||||||
|
|
||||||
TUR — это пользовательский репозиторий Termux, созданный по аналогии с AUR в Arch Linux. Он существует, потому что официальный репозиторий Termux не может включить все существующие пакеты — некоторые из них слишком нишевые, сложные в сборке или имеют специфические лицензионные ограничения
|
TUR — это пользовательский репозиторий Termux, созданный по аналогии с AUR в Arch Linux. Он существует, потому что официальный репозиторий Termux не может включить все существующие пакеты — некоторые из них слишком нишевые, сложные в сборке или имеют специфические лицензионные ограничения
|
||||||
|
|||||||
Reference in New Issue
Block a user