Files
notes/termux_android.md

24 KiB
Raw Blame History

Termux Android


Termux - эмулятор терминала и среда Linux без необходимости получения root на Android устройстве.

Версия из Google Play имеет ряд ограничений, поэтому приложение необходимо устанавливать из F-Droid (рекомендуется) или GitHub.

WIKI Termux (открывается через VPN) - https://wiki.termux.com/wiki/Main_Page

Termux:X11 - для отображение графического интерфейса, если будет установлена графическа среда (xfce4, lxqt, kde и т.д.)

Предварительная настройка

После установки запустить Termux и дождитесь завершения начальной инициализации

Для планшета Huawei, Termux в горизонтальной ориентации планшета отображался с широкими боковыми рамками, это решилось в настройках планшета: настройки приложений - App Multiplier - найти в списке Termux и отключить.

Эта настройка позволяет в горизонтальном положении иметь 2 окна приложения. В данном случае это только мешает

Для увеличения размера шрифта в Termux достаточно изменить масштаб двумя пальцами (раздвинуть). Размер сохранится.

Доступ к хранилищу

После установки Termux необходимо предоставить доступ к хранилищу, иначе он не сможет ничего писать на диск.

В консоли termux

termux-setup-storage

Обновление пакетов и подключение репозиториев

# Обновление списка пакетов
pkg update && pkg upgrade

# Установка необходимых репозиториев (несмотря на архив на GitHub, они нужны)
pkg install root-repo x11-repo

# Ещё раз обновляем после подключения репозиториев
pkg update && pkg upgrade

Установка базового набора пакетов

pkg install -y git nano vim curl wget htop tree openssh termux-api termux-tools android-tools

Настройка ZSH с Oh-My-Zsh

Установка ZSH

pkg install zsh -y

Установка Oh-My-Zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Когда появится вопрос о смене оболочки по умолчанию, указать Y.

Установка плагинов

# 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

nano ~/.zshrc

Найти строку plugins=(git) и заменить на:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

Важно: zsh-syntax-highlighting должен быть последним в списке!

Применение настроек

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

Создание резервной копии

termux-backup /sdcard/termux-backup-$(date +%Y_%m_%d).tar.xz
  • /sdcard - внутрення память устройства Android

Восстановление из резервной копии

termux-restore /sdcard/backup.tar.xz

Настройка энергопотребления (Android)

Отключение оптимизации батареи

Настройки → Приложения → Termux → Энергопотребление

Выберите Без ограничений

Повторите то же самое для приложения Termux:X11

Разрешение фоновой активности

Настройки → Приложения → Termux → Разрешения

Добавьте разрешение Фоновая активность

Увеличение лимита процессов через ADB (Phantom Process Killer)

Для повышения эффективности энергосбережения Android следит за количеством запущенных процессов и периодически завершает лишние по его мнению. Из-за этого работа Termux может быть не стабильной, т.к. порождает много дочерних процессов, которые Android будет настройчиво завершать.

Такое агресивное поведение Android можно изменить, через adb попробовать увеличить лимит запущенных процессов до максимального значения.

Подготовка

На планшете:

Включите Режим разработчика (Настройки → Об устройстве → нажмите 7 раз на "Номер сборки")

Включите Отладку по USB (Настройки → Для разработчиков)

На компьютере:

Установите ADB (android-tools)

Подключите планшет к компьютеру через USB. На планшете выбрать режим - Передача данных.

Выполнение ADB-команд

Откройте терминал на компьютере и выполните:

adb devices

Если устройство видно как <serial_number> device — всё готово для команд ADB.

Если unauthorized — разблокируйте экран, подтвердите запрос "Разрешить отладку по USB" (поставьте галочку "Всегда разрешать")

после активации отладки и подключения, можно отправлять команды

adb bash "/system/bin/device_config set_sync_disabled_for_tests persistent"
adb bash "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
adb bash settings put global settings_enable_monitor_phantom_procs false
adb reboot

Планшет перезагрузится. Изменения сохранятся навсегда.

Установка графического окружения в Termux - XFCE4

!! ПОКА не удалось заставить работать звук !! небольшое дополнение: звук работает в консольном аудиопроигрывателе cmus

pkg install cmus

Для работы графических приложений необходимо настроить

Одномоментно может работать что-то одно: X11 или VNC

# Установка XFCE4
pkg install xfce4 xfce4-goodies

# Установка Termux:X11 (графический сервер)
pkg install termux-x11-nightly

# Установка PulseAudio (для звука)
pkg install pulseaudio

Пакет xfce4-goodies включает полезные плагины и приложения для рабочего стола

Запуск XFCE4 через Termux:X11

Способ А: Прямая команда (простой)

termux-x11 :1 -xstartup "dbus-launch --exit-with-session xfce4-session"

Способ Б: С флагом для Kirin (рекомендуется для вашего планшета)

termux-x11 :1 -legacy-drawing -xstartup "dbus-launch --exit-with-session xfce4-session"

После выполнения команды:

Откройте приложение Termux:X11 на планшете

Вы должны увидеть рабочий стол XFCE

Создание скрипта для быстрого запуска

Чтобы каждый раз не вводить длинную команду, создайте скрипт в Termux:

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

Параметры скрипта:

  • Запуск
x11 up
# или просто
x11
  • Остановка
x11 down
  • Проверка статуса
x11 status

Запуск XFCE4 через VNC

Альтернатива X11

Установка VNC сервера

# Установка TigerVNC сервера
pkg install tigervnc -y

Настройка пароля

# Установка пароля для подключения к VNC
vncpasswd

Создание конфигурационных файлов

mkdir -p ~/.vnc

cat > ~/.vnc/config << 'EOF'
# VNC конфиг
geometry=2456x1540
depth=24
localhost=0
alwaysshared=1
EOF

Примечание: 2456x1540 родное разрешение планшета за вычетом строки состояния Android

cat > ~/.vnc/xstartup << 'EOF'
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
EOF

chmod +x ~/.vnc/xstartup

Скрипт для запуска / остановки VNC

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 up
# или
vnc start
  • Остановка
vnc down
или
vnc stop
  • Проверка статуса
vnc status

Подключение к VNC с планшета

https://wiki.termux.dev/wiki/Graphical_Environment

Как рекомендует официальная документация - установить клиент VNC Viewer (developed by RealVNC Limited)

Создать новое подключение

Адрес: 127.0.0.1:5901
Качество (Picture quality): High

Указать пароль

Изменение масштаба XFCE4

На экране 11,5' и разрешением 2456x1540, элементы рабочего стола будут очень мелкими.

Изменение Масштаба в настройках экрана не работает.

Изменение DPI влияет только на шрифты.

Помогло: Setting - Appearance - Settings - Windows Scaling - 2x

Масштаб увеличится в 2 раза. Стало даже немного крупнее чем хотелось.

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

Пакет Команда установки Что это
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

# Шаг 1: Подключение TUR репозитория
pkg install tur-repo

# Шаг 2: Обновление списка пакетов (чтобы Termux "увидел" новые пакеты)
pkg update

# Шаг 3: Установка Firefox
pkg install firefox

После этого Firefox будет доступен для запуска из XFCE4


proot

Установка ОС в псевдорут окружение используя утилиту proot

pkg install proot-distro

Установка debian

proot-distro login debian
proot-distro login debian
adduser da2001
apt update && apt upgrade -y

apt install -y mc tree tmux git htop vim sudo curl wget jq
echo "da2001 ALL=(ALL:ALL) ALL" > /etc/sudoers.d/da2001
chmod 440 /etc/sudoers.d/da2001
visudo -c -f /etc/sudoers.d/da2001

dpkg-reconfigure tzdata

Установка GUI

apt install tigervnc xfce4 xfce4-goodies

Звук в ОС proot также не работает. Не вижу смысла дальше разбираться с proot