# Termux Android

<!--toc:start-->
- [Termux Android](#termux-android)
  - [Предварительная настройка](#предварительная-настройка)
    - [Доступ к хранилищу](#доступ-к-хранилищу)
    - [Обновление пакетов и подключение репозиториев](#обновление-пакетов-и-подключение-репозиториев)
    - [Установка базового набора пакетов](#установка-базового-набора-пакетов)
    - [SSH доступ](#ssh-доступ)
  - [Настройка ZSH с Oh-My-Zsh](#настройка-zsh-с-oh-my-zsh)
    - [Установка ZSH](#установка-zsh)
    - [Установка Oh-My-Zsh](#установка-oh-my-zsh)
    - [Установка плагинов](#установка-плагинов)
    - [Настройка .zshrc](#настройка-zshrc)
    - [Внешний вид - плагин PowerLevel10K](#внешний-вид---плагин-powerlevel10k)
    - [Резервное копирование Termux (backup)](#резервное-копирование-termux-backup)
      - [Создание резервной копии](#создание-резервной-копии)
      - [Восстановление из резервной копии](#восстановление-из-резервной-копии)
  - [Настройка энергопотребления (Android)](#настройка-энергопотребления-android)
    - [Отключение оптимизации батареи](#отключение-оптимизации-батареи)
    - [Разрешение фоновой активности](#разрешение-фоновой-активности)
  - [Увеличение лимита процессов через ADB (Phantom Process Killer)](#увеличение-лимита-процессов-через-adb-phantom-process-killer)
    - [Подготовка](#подготовка)
    - [Выполнение ADB-команд](#выполнение-adb-команд)
  - [Установка графического окружения в Termux - XFCE4](#установка-графического-окружения-в-termux---xfce4)
    - [Запуск XFCE4 через Termux X11](#запуск-xfce4-через-termux-x11)
      - [Создание скрипта для быстрого запуска](#создание-скрипта-для-быстрого-запуска)
    - [Запуск XFCE4 через VNC](#запуск-xfce4-через-vnc)
      - [Установка VNC сервера](#установка-vnc-сервера)
      - [Настройка пароля](#настройка-пароля)
      - [Создание конфигурационных файлов](#создание-конфигурационных-файлов)
      - [Скрипт для запуска / остановки VNC](#скрипт-для-запуска--остановки-vnc)
      - [Подключение к VNC с планшета](#подключение-к-vnc-с-планшета)
  - [Изменение масштаба XFCE4](#изменение-масштаба-xfce4)
  - [TUR (Termux User Repository)](#tur-termux-user-repository)
    - [Некторые популярные пакеты в TUR](#некторые-популярные-пакеты-в-tur)
    - [Установка Firefox](#установка-firefox)
  - [proot](#proot)
    - [Установка debian](#установка-debian)
    - [Установка GUI](#установка-gui)
<!--toc:end-->

***

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

- <https://termux.dev/en/>
- <https://github.com/termux/termux-app>
- <https://f-droid.org/packages/com.termux/>

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

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

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

- <https://github.com/termux/termux-x11>

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

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

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

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

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

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

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

В консоли termux

```bash
termux-setup-storage
```

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

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

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

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

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

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

### SSH доступ

для разового включения демона ssh

```bash
sshd
```

для автозагрузки вместе с Termux

```bash
sv-enable sshd
```

демон ssh работает на порту 8022

Для подключения необходимо или задать пароль для пользователя устройства

```bash
❯ whoami
u0_a529
```

или скопировать на устройство публичную часть ключа

```bash
mkdir ~/.ssh
echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL/KY33g1maVDH80bsrfV1bHjkfiYXHu9Xtl3kJc7ofk artem@da2001.ru' >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```

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

### Установка ZSH

```bash
pkg install zsh -y
```

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

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

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

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

```bash
# 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

```bash
nano ~/.zshrc
```

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

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

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

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

```bash
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>

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

```bash
termux-backup /sdcard/termux-backup-$(date +%Y_%m_%d).tar.xz
```

- `/sdcard` - внутрення память устройства Android

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

```bash
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-команд

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

```bash
adb devices
```

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

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

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

```bash
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`**

```bash
pkg install cmus
```

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

- Termux X11
или
- VNC: <https://wiki.termux.com/wiki/Graphical_Environment>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

```bash
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
```

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

- Запуск

```bash
x11 up
# или просто
x11
```

- Остановка

```bash
x11 down
```

- Проверка статуса

```bash
x11 status
```

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

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

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

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

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

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

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

```bash
mkdir -p ~/.vnc

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

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

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

chmod +x ~/.vnc/xstartup
```

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

```bash
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
```

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

- Запуск

```bash
vnc up
# или
vnc start
```

- Остановка

```bash
vnc down
или
vnc stop
```

- Проверка статуса

```bash
vnc status
```

#### Подключение к 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

Масштаб увеличится в 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

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

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

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

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

***

## proot

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

```bash
pkg install proot-distro
```

### Установка debian

```bash
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

```bash
apt install tigervnc xfce4 xfce4-goodies
```

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