Files
notes/termux_android.md

539 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Termux Android
Termux - эмулятор терминала и среда Linux без необходимости получения root на Android устройстве.
- https://termux.dev/en/
- https://github.com/termux/termux-app
- https://f-droid.org/packages/com.termux/
WIKI Termux (открывается через VPN) - https://wiki.termux.com/wiki/Main_Page
Termux:X11 - для отображение графического интерфейса, если будет установлена графическа среда (xfce4, lxqt, kde и т.д.)
- https://github.com/termux/termux-x11
Версия из Google Play имеет ряд ограничений, поэтому приложение необходимо устанавливать из F-Droid (рекомендуется) или GitHub.
## Предварительная настройка
После установки запустить Termux и дождитесь завершения начальной инициализации
Для планшета Huawei, Termux в горизонтальной ориентации планшета отображался с широкими боковыми рамками, это решилось в настройках планшета: настройки приложений - App Multiplier - найти в списке Termux и отключить.
Эта настройка позволяет в горизонтальном положении иметь 2 окна приложения. В данном случае это только мешает
Для увеличения размера шрифта в Termux достаточно изменить масштаб двумя пальцами (раздвинуть). Размер сохранится.
### Доступ к хранилищу
После установки Termux необходимо предоставить доступ к хранилищу, иначе он не сможет ничего писать на диск.
В консоли termux
```shell
termux-setup-storage
```
### Обновление пакетов и подключение репозиториев
```shell
# Обновление списка пакетов
pkg update && pkg upgrade
# Установка необходимых репозиториев (несмотря на архив на GitHub, они нужны)
pkg install root-repo x11-repo
# Ещё раз обновляем после подключения репозиториев
pkg update && pkg upgrade
```
### Установка базового набора пакетов
```shell
pkg install -y git nano vim curl wget htop tree openssh termux-api termux-tools android-tools
```
## Настройка ZSH с Oh-My-Zsh
### Установка ZSH
```shell
pkg install zsh -y
```
### Установка Oh-My-Zsh
```shell
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```
Когда появится вопрос о смене оболочки по умолчанию, указать `Y`.
### Установка плагинов
```shell
# zsh-autosuggestions (автодополнение из истории)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting (подсветка команд)
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
```
### Настройка .zshrc
```shell
nano ~/.zshrc
```
Найти строку `plugins=(git)` и заменить на:
```shell
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
```
**Важно: `zsh-syntax-highlighting` должен быть последним в списке!**
Применение настроек
```shell
source ~/.zshrc
```
### Внешний вид - плагин PowerLevel10K
https://git.da2001.ru/da2001/dots#%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9-%D0%B2%D0%B8%D0%B4-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD-powerlevel10k
### Резервное копирование Termux (backup)
Для создания резервных копий есть встроенный скрипт - https://wiki.termux.dev/wiki/Backing_up_Termux
#### Создание резервной копии
```shell
termux-backup /sdcard/termux-backup-$(date +%Y_%m_%d).tar.xz
```
- `/sdcard` - внутрення память устройства Android
#### Восстановление из резервной копии
```shell
termux-restore /sdcard/backup.tar.xz
```
## Настройка энергопотребления (Android)
### Отключение оптимизации батареи
Настройки → Приложения → Termux → Энергопотребление
Выберите Без ограничений
Повторите то же самое для приложения Termux:X11
### Разрешение фоновой активности
Настройки → Приложения → Termux → Разрешения
Добавьте разрешение Фоновая активность
## Увеличение лимита процессов через ADB (Phantom Process Killer)
### Подготовка
**На планшете:**
Включите Режим разработчика (Настройки → Об устройстве → нажмите 7 раз на "Номер сборки")
Включите Отладку по USB (Настройки → Для разработчиков)
**На компьютере:**
Установите ADB (android-tools)
Подключите планшет к компьютеру через USB. На планшете выбрать режим - Передача данных.
### Выполнение ADB-команд
Для повышения эффективности энергосбережения Android следит за количеством запущенных процессов и периодически завершает лишние по его мнению. Из-за этого работа Termux может быть не стабильной, т.к. порождает много дочерних процессов, которые Android будет настройчиво завершать.
Такое агресивное поведение Android можно изменить, через adb попробовать увеличить лимит запущенных процессов до максимального значения.
Откройте терминал на компьютере и выполните:
```shell
adb devices
```
Если устройство видно как `<serial_number>` device — всё готово для команд ADB.
Если `unauthorized` — разблокируйте экран, подтвердите запрос "Разрешить отладку по USB" (поставьте галочку "Всегда разрешать")
после активации отладки и подключения, можно отправлять команды
```shell
adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent"
adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
adb shell settings put global settings_enable_monitor_phantom_procs false
adb reboot
```
Планшет перезагрузится. Изменения сохранятся навсегда.
## Установка графического окружения в Termux - XFCE4
**!! ПОКА не удалось заставить работать звку !!**
Для работы графических приложений необходимо настроить
- Termux X11
или
- VNC: https://wiki.termux.com/wiki/Graphical_Environment
**Одномоментно может работать что-то одно: X11 или VNC**
```shell
# Установка XFCE4
pkg install xfce4 xfce4-goodies
# Установка Termux:X11 (графический сервер)
pkg install termux-x11-nightly
# Установка PulseAudio (для звука)
pkg install pulseaudio
```
Пакет `xfce4-goodies` включает полезные плагины и приложения для рабочего стола
### Запуск XFCE4 через Termux:X11
Способ А: Прямая команда (простой)
```shell
termux-x11 :1 -xstartup "dbus-launch --exit-with-session xfce4-session"
```
Способ Б: С флагом для Kirin (рекомендуется для вашего планшета)
```shell
termux-x11 :1 -legacy-drawing -xstartup "dbus-launch --exit-with-session xfce4-session"
```
После выполнения команды:
Откройте приложение Termux:X11 на планшете
Вы должны увидеть рабочий стол XFCE
#### Создание скрипта для быстрого запуска
Чтобы каждый раз не вводить длинную команду, создайте скрипт в Termux:
```shell
cat > $PREFIX/bin/x11 << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
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/.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
# Закрываем окно 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
chmod +x $PREFIX/bin/x11
```
Параметры скрипта:
- Запуск
```shell
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
Указать пароль
## Изменение масштаба XFCE4
На экране 11,5' и разрешением 2456x1540, элементы рабочего стола будут очень мелкими.
Изменение Масштаба в настройках экрана не работает.
Изменение DPI влияет только на шрифты.
Помогло: Setting - Appearance - Settings - Windows Scaling - 2x
## TUR (Termux User Repository)
TUR — это пользовательский репозиторий Termux, созданный по аналогии с AUR в Arch Linux. Он существует, потому что официальный репозиторий Termux не может включить все существующие пакеты — некоторые из них слишком нишевые, сложные в сборке или имеют специфические лицензионные ограничения
https://github.com/termux-user-repository/tur
В чём разница между официальным репозиторием и TUR?
| Характеристика | Официальный репозиторий | TUR |
|-----------------|-------------------------------------|------------------------------------------------------|
| Поддержка | Разработчики Termux | Сообщество |
| Пакеты | Только проверенные и одобренные | Практически любые, включая Firefox, Chromium, VSCode |
| Установка | pkg install <имя> | pkg install tur-repo → затем pkg install <имя> |
| Надёжность | Высокая (строгий контроль качества) | Средняя (пакеты собираются сообществом) |
В TUR есть несколько компонентов-категорий:
- `tur` — основной компонент с большинством пакетов
- `tur-continuous` — пакеты, которые долго компилируются (например, браузеры на Chromium)
- `tur-on-device` — пакеты, требующие сборки прямо на устройстве
- `tur-hacking` — инструменты для безопасности
### Популярные пакеты есть в TUR?
| Пакет | Команда установки | Что это |
|--------------------|----------------------|----------------------------------------|
| Firefox | pkg install firefox | Браузер |
| Chromium | pkg install chromium | Браузер от Google |
| VS Code (code-oss) | pkg install code-oss | Редактор кода без телеметрии Microsoft |
| VLC | pkg install vlc | Медиаплеер |
Полный список пакетов TUR можно посмотреть на официальной странице репозитория — https://repology.org/repository/tur
### Установка Firefox
```shell
# Шаг 1: Подключение TUR репозитория
pkg install tur-repo
# Шаг 2: Обновление списка пакетов (чтобы Termux "увидел" новые пакеты)
pkg update
# Шаг 3: Установка Firefox
pkg install firefox
```
После этого Firefox будет доступен для запуска из XFCE4