Giter Site home page Giter Site logo

datarank / termux-x11 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from termux/termux-x11

0.0 0.0 0.0 12.23 MB

Termux X11 add-on application.

Home Page: https://termux.dev

License: GNU General Public License v3.0

Shell 0.61% C 62.25% Java 33.11% CMake 4.00% AIDL 0.03%

termux-x11's Introduction

Termux:X11

Nightly build Join the chat at https://gitter.im/termux/termux Join the Termux discord server

A Termux X11 server add-on app.

About

Termux:X11 is a fully fledged X server. It is built with Android NDK and optimized to be used with Termux.

Submodules caveat

This repo uses submodules. Use

~ $ git clone --recurse-submodules https://github.com/termux/termux-x11 

or

~ $ git clone https://github.com/termux/termux-x11
~ $ cd termux-x11
~ $ git submodule update --init --recursive

How does it work?

Just like any other X server.

Setup Instructions

Application runs only on Android 8+ devices. 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 install nightly companion package from repositories with pkg in x11-repo && pkg in termux-x11-nightly Or you can download an artifact from last successful build and installing termux-x11-*-debug.apk (according to device architecture, universal if you are doubting) and *.deb (if you use termux with pkg) or *.tar.xz (if you use termux with pacman) files from termux-companion packages artifact.

Running Graphical Applications

You can start your desired graphical application by doing:

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

or

~ $ termux-x11 :1 &
~ $ env DISPLAY=:1 dbus-launch --exit-with-session xfce4-session

You may replace xfce4-session if you use other than Xfce

dbus-launch does not work for some users so you can start session with

~ $ termux-x11 :1 -xstartup "xfce4-session"

Also you can do

export TERMUX_X11_XSTARTUP="xfce4-session"
termux-x11 :1

In this case you can same TERMUX_X11_XSTARTUP somewhere in .bashrc or other script and not type it every time you invoke termux-x11.

If you're done using Termux:X11 just simply exit it through it's notification drawer by expanding the Termux:X11 notification then "Exit" But you should pay attention that termux-x11 command is still running and can not be killed this way.

For some reason some devices output only black screen with cursor instead of normal output so you should pass -legacy-drawing option.

~ $ termux-x11 :1 -legacy-drawing -xstartup "xfce4-session"

For some reason some devices show screen with swapped colours, in this case you should pass -force-bgra option.

~ $ termux-x11 :1 -force-bgra -xstartup "xfce4-session"

Using with proot environment

If you plan to use the program with proot, keep in mind that you need to launch proot/proot-distro with the --shared-tmp option. If passing this option is not possible, set the TMPDIR environment variable to point to the directory that corresponds to /tmp in the target container. If you are using proot-distro you should know that it is possible to start termux-x11 command from inside proot container.

Using with chroot environment

If you plan to use the program with chroot or unshare, you must to run it as root and set the TMPDIR environment variable to point to the directory that corresponds to /tmp in the target container. This directory must be accessible from the shell from which you launch termux-x11, i.e. it must be in the same SELinux context, same mount namespace, and so on. Also you must set XKB_CONFIG_ROOT environment variable pointing to container's /usr/share/X11/xkb directory, otherwise you will have xkbcomp-related errors. You can get loader for nightly build from an artifact of last successful build Do not forget to disable SELinux

setenforce 0
export TMPDIR=/path/to/chroot/container/tmp
export CLASSPATH=$(/system/bin/pm path com.termux.x11 | cut -d: -f2)
/system/bin/app_process / com.termux.x11.CmdEntryPoint :0

Force stopping X server (running in termux background, not an activity)

termux-x11's X server runs in process with name "app_process", not "termux-x11". But you can kill it by searching "com.termux.x11" in commandline. So killing it will look like

pkill -f com.termux.x11

Closing Android activity (running in foreground, not X server)

am broadcast -a com.termux.x11.ACTION_STOP -p com.termux.x11

Logs

If you need to obtain logs from the com.termux.x11 application, set the TERMUX_X11_DEBUG environment variable to 1, like this: TERMUX_X11_DEBUG=1 termux-x11 :0

The log obtained in this way can be quite long. It's better to redirect the output of the command to a file right away.

Notification

In Android 13 post notifications was restricted so you should explicitly let Termux:X11 show you notifications.

Video
img_enable-notifications.3.webm

Preferences: You can access preferences menu three ways:

By clicking "PREFERENCES" button on main screen when no client connected.

image

By clicking "Preferences" button in notification, if available.

image

By clicking "Preferences" application shortcut (long tap `Termux:X11` icon in launcher).

image

Toggling keyboard

Just press "Back" button.

Touch gestures

Touchpad emulation mode.

In touchpad emulation mode you can use the following gestures:

  • Tap for click
  • Double tap for double click
  • Two-finger tap for right click
  • Three-finger tap for middle click
  • Two-finger vertical swipe for vertical scroll
  • Two-finger horizontal swipe for horizontal scroll
  • Three-finger swipe down to show-hide additional keys bar.

Simulated touchscreen mode.

In simulated touchscreen mode you can use the following gestures:

  • Single tap for left button click.
  • Long tap for mouse holding.
  • Double tap for double click
  • Two-finger tap for right click
  • Three-finger tap for middle click
  • Two-finger vertical swipe for vertical scroll
  • Two-finger horizontal swipe for horizontal scroll
  • Three-finger swipe down to show-hide additional keys bar.

Font or scaling is too big!

Some apps may have issues with X server 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.

Screenshot

image

Also you can start termux-x11 with -dpi option.

~ $ termux-x11 :1 -xstartup "xfce4-session" -dpi 120

Changing, dumping and restoring preferences from commandline

It is possible to change preferences of termux-x11 from command line. termux-x11-nightly package contains termux-x11-preference tool which can be used like

termux-x11-preference [list] {key:value} [{key2:value2}]..."

Use termux-x11-preference to dump current preference. Use termux-x11-preference > file to dump current preferences to file. Use termux-x11-preferences < file to restore preferences from file. Use termux-x11-preferences "fullscreen"="false" "showAdditionalKbd"="true" to disable fullscreen and enable additional key bar. The full list of preferences you can modify is available with termux-x11-preference list command. You can specify one or more preferences here.

Termux:X11 activity should be available in background or foreground, otherwise termux-x11-preferences tool will hang indefinitely. In the case if there is Store preferences for secondary displays separately preference active termux-x11-preference will use/modify preferences of display where Termux:X11 activity is currently opened.

Using with 3rd party apps

It is possible to use Termux:X11 with 3rd party apps. Check how shell-loader/src/main/java/com/termux/x11/Loader.java works.

License

Released under the GPLv3 license.

termux-x11's People

Contributors

twaik avatar dependabot[bot] avatar suhan-paradkar avatar github-actions[bot] avatar gradle-update-robot avatar ask9027 avatar knyipab avatar agnostic-apollo avatar lvonasek avatar polkaulfield avatar alphabs avatar dkramer95 avatar dr4kzor avatar fornwall avatar jeansch avatar landfillbaby avatar tudbut avatar yisus7u7 avatar saicharankandukuri avatar xmem avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.