Termux шаг за шагом (Часть 1)
При первом знакомстве Termux, а я далеко не линуксоид, вызвал в моей голове две мысли: «Круть несусветная!» и «Как им пользоваться?». Порывшись в инетах, я не нашел ни одной статьи в полной мере позволяющей начать пользоваться Termux’ом так чтобы это приносило больше удовольствия чем гемора. Будем это исправлять.
Для начала определимся, что это за зверь такой Termux, и что он может. На главной странице WikiTermux (рекомендую ознакомиться) говорится, что “Termux — это эмулятор терминала и среда Linux”, т.е. установив его мы получим вполне работоспособный Linux терминал на своем Android устройстве. Несомненным плюсом является работа в виртуальном окружении (многое можно делать без root’а), благодаря чему навредить файловой системе Android практически нереально. А при наличии root’а ваши возможности ограничены только фантазией (ну и знанием матчасти).
За каким, собственно говоря, я полез к Termux’у? Во-первых хакинг, точнее желание немного в нем разобраться. Во-вторых отсутствие возможности пользоваться Kali Linux’ом.
Тут я постараюсь собрать воедино все полезное найденное мной по теме. Разбирающегося эта статья вряд ли чем удивит, но тем кто только познает прелести Termux’а, надеюсь, будет полезна.
Для лучшего понимания материала рекомендую повторять описанное мной не простой копипастой а самостоятельно вводить команды. Для удобства нам понадобится либо Android устройство с подключенной клавиатурой, либо как в моем случае Android устройство и ПК/Ноутбук (Windows) подключенные к одной сети. Android желательно с root’ом, но не обязательно. Иногда я что-то указываю в скобках, обычно, это позволит лучше понять материал (если написанное в скобках не совсем понятно, то смело пропускайте это, потом в процессе и по мере необходимости все разъяснится).
Шаг 1
Буду банален и чертовски логичен одновременно
Ставим Termux c Google Play Market:
Открываем установленное приложение и видим:
Далее стоит обновить предустановленные пакеты. Для этого по порядку вводим две команды, по ходу выполнения которых со всем соглашаемся, вводя Y:
Первой командой мы проверяем список установленных пакетов и ищем те, которые можно обновить, а второй обновляем их. По этой причине команды нужно писать именно в такой последовательности.
Теперь у нас наиболее свежая версия Termux.
Еще несколько нужных команд
Более подробно по командам UNIX ищем в интернете (саморазвитие никто не отменял).
Сочетание клавиш Ctrl + C и Ctrl + Z прерывает и прекращает выполнение команд соответственно.
Шаг 2
Облегчи себе жизнь
Чтобы не мучить себя без нужды вводом команд с экранной клавиатуры (в «полевых» условиях, конечно, от этого не уйти) есть два пути:
Я пошел по второму пути, хотя он и немного сложен в настройке, но все окупится удобством использования.
На компьютере необходимо установить программу ssh клиент, я пользуюсь Bitvise SSH Client, и все дальнейшие действия совершаются в этой программе.
Поскольку мы будем подключаться по методу Publickey с использованием файла-ключа, необходимо этот файл создать. Для этого в программе Bitvise SSH Client на вкладке Login щелкаем по Client key manager в открывшемся окне генерируем новый публичный ключ и экспортируем его в OpenSSH формате в файл с названием termux.pub (на самом деле можно любое название). Созданный файл помещаем во внутреннюю память вашего Android устройства в папку Downloads (к этой папке, и еще к нескольким, Termux имеет упрощенный доступ без root).
Во вкладке Login в поле Host вводим IP вашего Android устройства (узнать можно введя в Termux команду ifconfig) в поле Port должно быть 8022.
Теперь переходим к установке OpenSSH в Termux, для этого вводим следующие команды:
Возвращаемся к Bitvise SSH Client и нажимаем кнопку Log in. В процессе подключения появится окно, в котором выбираем Method – publickey, Client key это Passphrase (если вы ее указали при генерации файла-ключа).
В случае успешного подключения (если все сделали, как написано, то должно подключиться без проблем) откроется окно.
Теперь мы можем вводить команды с ПК а выполняться они будут на вашем Android устройстве. Не сложно догадаться какие это дает преимущества.
Шаг 3
Настроим Termux, установим дополнительные утилиты
Прежде всего давайте установим bash-completion (сокращалку, волшебный-Tab, кто как называет). Суть утилиты в том что, вводя команды вы можете нажав Tab воспользоваться автозаполнением. Для установки пишем:
Ну что за жизнь без текстового редактора с подсветкой кода (если вдруг захочется покодить, а оно захочется). Для установки пишем:
Пользоваться vim`ом не сложно, чтобы открыть файл 1.txt (если его нет, то он создастся) пишем:
Раз мы теперь можем создавать и редактировать файлы, давайте немного улучшим вид и информативность командной строки Termux’а. Для этого нам нужно присвоить переменной окружения PS1 значение «[\033[1;33;1;32m]:[\033[1;31m]\w$ [\033[0m][\033[0m]» (если интересно что это и с чем его едят, прошу сюда). Чтобы это сделать нам нужно в файл ‘.bashrc’ (лежит в корне и выполняется при каждом запуске оболочки) добавить строку:
Для простоты и наглядности воспользуемся vim`ом:
Вписываем строку, сохраняем и выходим.
Добавить строку в файл можно и другим способом, воспользовавшись командой ‘echo’:
Для внесения строки можно воспользоваться vim’ом или командой echo (если не получается самостоятельно – см. ниже)
Синтаксис alias’ов таков:
Итак, добавляем сокращение:
Вот еще несколько полезных утилит
Ставить через apt install
man — Встроенная справка для большинства комманд.
man %commandname
ffmpeg — Один из лучших конвертеров аудио/видео. Инструкцию по использованию гуглите.
mc — Двухпанельный файловый менеджер наподобие Far.
Впереди еще немало шагов, главное что движение начато!
Android 8.1.0. Termux + XFCE.
Теперь можно использовать XFCE в Android даже без рута. Потихоньку с чуваками пилим Termux для лучшего пользовательского опыта.
На телефонах возможно не очень удобно, это скорее для планшетов.
Это один из первых тестовых запусков на обновленной пакетной базе. В репозиториях уже есть Thunar, все остальное должно появиться в скором времени.
Какой от этого прикладной смысл?
Это всё здорово, но можно технический обзор? Чем это окружение ограничено? Виртуалка, чрут? Что с видеодрайвером и доступом по к видеокарте? Может ли андроид решить, что оно не нужно и всё надо позавершать?
Это всё здорово, но можно технический обзор? Чем это окружение ограничено? Виртуалка, чрут? Что с видеодрайвером и доступом по к видеокарте? Может ли андроид решить, что оно не нужно и всё надо позавершать?
К сожалению я не силен в технических обзорах. Попробую обьяснить что смогу.
Может ли андроид решить, что оно не нужно и всё надо позавершать?
В теории такое произойти может. Поэтому в проекте решили вынести все в Service. Чтобы андроид не схлопывал все к чертям собачьим сервис ввыводит Notification (политка андроида). Так что аварийное схлопывание при недостатке оперативы возможно, но маловероятно.
По поводу репозиториев. Все пакеты в репозиториях скомпилированы при помощи NDK. termux-packages адаптирует и патчит кросс-компиляторы NDK для того, чтобы autoconf, cmake, meson и всякие прочие самописные скрипты сборки проектов (как к примеру в openssl, если не ошибаюсь) могли собираться с минимальным количеством патчей. По поводу патчей: в основном патчи нужны чтобы проги не ломились в папки андроида и не пытались создавать там свои грязные файлы. Пути типа, к примеру, /usr/bin или /etc меняются на /data/data/com.termux/files/usr/bin и /data/data/com.termux/files/usr/etc соответственно. Другие патчи отключают функциональность, которая не может быть реализована в реалиях андроида. К примеру в sshd отключили использование pam и внедрили возможность авторизации по одному лишь паролю. Для pulseaudio отключили вывод в alsa и прочие модули, но взамен дали вывод и ввод звука через OpenSL ES. Ну и всякое такое прочее.
Также у termux есть свои пакеты, которые позволяют взаимодействовать с андроидом. Есть свой am, потому что варианты использования андроидового am зависят от версии этого самого андроида. Есть termux-api, который позволяет прямо из скриптов управлять различными системами андроида, доступными самому термуксу (камера, вспышка, сети, прочее).
Это всё здорово, но можно технический обзор?
Как я и говорил раньше, я стараюсь сделать что-то очень похожее на MaruOS. Подключил мышь и клаву и работаешь. Мобильное рабочее место, всегда с собой. В командировки ездить самое то.
Да в приципе всё у вас нормально с техническими обзорами. Может и не профессиональный уровень, но тоже ничего.
Да, спасибо, стало достаточно понятно. Жаль что через костыли всё и пакеты специально под это окружение надо собирать, но выглядит всё таки перспективно.
Можно и не собирать. Если нужна программа то можно прям на устройстве собрать. Все пакеты собираются с поддержкой статической линковки, потом создается два пакета: один с динамической либой и конфигами/картинками прочей дребеденью, второй со статической либой и хедерами/pkgconfig’ами/etc, прочей дребеденью которая нужна при разработке. Все это можно поставить на устройство и прям там собрать недостающую прогу. Хотя когда релизнется новый андроид собирать будет нельзя. Новая политика гугла: все исполняемые файлы, запускаемые или библиотеки, должны будут лежать в /data/data/
/libs, котора создается при установке/обновлении apk и она read-only для всех кроме package manager’a. Вот тогда точно будет жопа. Придется перепиливать весь термукс с оглядкой на эту фичу.
Надо сделать дистр на bionic. Может даже генту префиксом собрать
К сожалению так не получится. Придется для каждого (если надо) пакета создавать набор патчей, которые как минимум меняют префикс, потому что немногие разработчики задумываются о том, что, к примеру, папка /etc в дистрибутиве может быть доступна по другому адресу.
когда это говно перестанет падать на каждый чих? Возьмите pcmanfm
Он уже есть в Termux. Просто в XFCE в качестве дефолтного идет XFCE.
А где можно посмотреть исходный код композитора (запускающего xwayland как прослойку для Xorg)?
Xwayland запускается пользователем. А приложение, выступающее в качестве Wayland-сервера здесь: https://github.com/twaik/termux-x11
А можно ли это собрать для нормального линукса в теории (чтоб, к примеру, делать 3D-ускорение в иксах через драйвер, поддерживающий только Wayland)?
Эта фигня аппаратное ускорение не поддерживает. Выводит через GLES. Это делается под андроид, чтобы можно было картинку в приложение выводить.
В принципе, если Xwayland сможет все это при композиции укладывать в byte buffer, то проблемы никакой нет.
У меня есть идея, что через xwayland + это заменить все DDX (а работать с ускорением напрямую через Wayland).
Проблема в том, что для того, чтобы использовать аппаратное ускорение в андроиде надо сделать свой EGLNativeWindowType, потому что NDK не позволяет использовать андроидовские реализации Surface и GraphicBuffer. Под обычным линуксом glxgears в моем композиторе с Xwayland в режиме shm показывает
Graphical Environment
This article is only applicable only to Termux installations running on Android 7.0 or higher.
Termux provides support for programs that use X Window System. However, there no hardware acceleration for rendering and user will have to install a third party application to view graphical output.
To use X11-enabled programs, please, make sure that at least one of the following programs is installed:
Contents
Enabling the X11 Repository
X11 packages are available in a separate APT repository. You can enable it by running the following command:
It will automatically add appropriate sources.list file and PGP key.
Setting up VNC
Server
If you decided to use VNC for graphical output, follow these instructions for properly setting up VNC server.
1. Install package `tigervnc`:
2. After installation, execute this:
At first time, you will be prompted for setting up passwords:
Note that passwords are not visible when you are typing them and maximal password length is 8 characters.
3. If everything is okay, you will see this message:
It means that X (vnc) server is available on display ‘localhost:1’.
4. Finally, to make programs do graphical output to the display ‘localhost:1’, set environment variable like shown here (yes, without specifying ‘localhost’):
You may even put this variable to your bashrc or profile so you don’t have to always set it manually unless display address will be changed.
Client
Here will be assumed that you use this Android VNC client: VNC Viewer (developed by RealVNC Limited).
1. Determine port number on which VNC server listens. It can be calculated like this: 5900 +
2. Now open the VNC Viewer application and create a new connection with the following information (assuming that VNC port is 5901):
3. Now launch it. You will be prompted for password that you entered on first launch of ‘vncserver’. Depending on packages you installed, you may see either entirely black screen or terminal prompt (only if ‘aterm’ is installed).
Setting up XServer
Xserver setup is nearly same as for VNC. The only differences are that you don’t have to configure authentication and variable «DISPLAY» should be set like
Note that you don’t need to set variable «PULSE_SERVER» like application suggests because Termux uses its own Pulseaudio package.
Window Managers
When using Android XServer rather than Android XSDL these are optional.
Fluxbox

Simplest way to get a working graphical environment is to install Fluxbox:
It can be started automatically on VNC server startup. To do this, edit file
/.vnc/xstartup as shown here:
Openbox

Openbox requires a more complicated configuration than Fluxbox. Firstly you need to install some packages:
Put the following lines to your
Don’t put anything else to file
/.config/openbox/autostart ). Edit this file like here:
Desktop environment
It is possible to setup a full blown desktop environment in Termux. Only XFCE, LXQt and MATE is supported.

Recommended way of installation is through metapackage and not the separate components:
VNC server startup configuration (
/.vnc/xstartup ) should contain only
Additional recommended packages for installation:
Recommended way of installation is through metapackage and not the separate components:
VNC server startup configuration (
/.vnc/xstartup ) should contain only
Additional recommended packages for installation:
As of right now, there is no MATE metapackage. So, you need to install all required MATE components serperately
VNC server startup configuration (
/.vnc/xstartup ) should contain only
Additional recommended packages for installation:
X11 termux что это
Termux X11 Packages
There are located build scripts and patches for Termux X11 packages.
If you wish to contribute, please take a look at X11 packages contributing guide and developer’s wiki pages.
How to enable this repository
Repository is not enabled in Termux by default. First enable it to be able to install its packages:
Using X11 on Termux
Programs using the X11 Windowing System cannot be used standalone like normal command-line utilities. Termux does not provide a native way for video output and therefore you will need to install additional software.
The recommended setup is a VNC server (package tigervnc ) running on localhost and a VNC Viewer (by RealVNC Limited) Android application for accessing the video output.
There possible to use other Xserver solutions like XServer XSDL, but they are not guaranteed to work properly with our packages.
More information about setting up a graphical environment is on the Termux Wiki.
Only for Termux installations on Android 7.0 or higher.
You can build all packages manually by using the provided docker image. The only requirements are Linux-based host with Docker installed.
Clone this repository:
Enter build environment (will download docker image if necessary):
Choose package you want to build and run:
About
A set of packages using X11 Windows System.
X11 termux что это
A Termux add-on app providing Android frontend for Xwayland.
Termux:X11 uses Wayland display protocol. a modern replacement and the predecessor of the X.org server. Pay attention that it is not a full-fledged Wayland server and it can not handle Wayland apps except Xwayland.
The wayland sockets is the way for the graphical applications to communicate with. Termux X11 applications do not have wayland support yet, this kind of setup may not be straightforward and therefore additional packages should be installed in order for X11 applications to be run in Termux:X11
For this one you must enable the x11-repo repository can be done by executing pkg install x11-repo command
For X applications to work, you must install Termux-x11 companion package. You can do that by doing
Or by downloading an artifact from last successful build and installing *.apk and *.deb files.
Running Graphical Applications
to work with GUI applications, start Termux:X11 first. a toast message saying Service was Created indicates that it should be ready to use
then you can start your desired graphical application by doing:
$ env DISPLAY=:1 xfce4-session «>
You may replace xfce4-session if you use other than Xfce
If you’re done using Termux:X11 just simply exit it through it’s notification drawer by expanding the Termux:X11 notification then «Exit»
Font or scaling is too big!
Some apps may have issues with wayland regarding DPI. please see https://wiki.archlinux.org/title/HiDPI on how to override application-specific DPI or scaling.
You can fix this in your window manager settings (in the case of xfce4 and lxqt via Applications Menu > Settings > Appearance). Look for the DPI value, if it is disabled enable it and adjust its value until the fonts are the appropriate size.
Using with 3rd party apps
It is possible to use Termux:X11 with 3rd party apps. You should start Termux:X11’s activity with providing some additional data.









