{"id":15035312,"url":"https://github.com/termux/termux-x11","last_synced_at":"2026-02-18T22:03:12.707Z","repository":{"id":37833861,"uuid":"204363144","full_name":"termux/termux-x11","owner":"termux","description":"Termux X-server add-on.","archived":false,"fork":false,"pushed_at":"2026-02-18T11:43:03.000Z","size":13106,"stargazers_count":3519,"open_issues_count":29,"forks_count":489,"subscribers_count":94,"default_branch":"master","last_synced_at":"2026-02-18T15:51:03.726Z","etag":null,"topics":["android","graphics","linux","termux","x11"],"latest_commit_sha":null,"homepage":"https://termux.dev","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/termux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"twaik","open_collective":"termux","custom":"https://termux.dev/donate"}},"created_at":"2019-08-25T23:51:04.000Z","updated_at":"2026-02-18T15:29:43.000Z","dependencies_parsed_at":"2024-01-22T20:14:59.335Z","dependency_job_id":"9a9d2378-081b-49bc-bab0-f5cd44489683","html_url":"https://github.com/termux/termux-x11","commit_stats":{"total_commits":597,"total_committers":28,"mean_commits":"21.321428571428573","dds":0.3785594639865997,"last_synced_commit":"b13fcd5c68f90f840b526e29ead18a59fda5a34f"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/termux/termux-x11","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termux%2Ftermux-x11","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termux%2Ftermux-x11/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termux%2Ftermux-x11/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termux%2Ftermux-x11/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/termux","download_url":"https://codeload.github.com/termux/termux-x11/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termux%2Ftermux-x11/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29596334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T20:59:56.587Z","status":"ssl_error","status_checked_at":"2026-02-18T20:58:41.434Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","graphics","linux","termux","x11"],"created_at":"2024-09-24T20:28:09.162Z","updated_at":"2026-02-18T22:03:12.691Z","avatar_url":"https://github.com/termux.png","language":"C","funding_links":["https://github.com/sponsors/twaik","https://opencollective.com/termux","https://termux.dev/donate"],"categories":["C"],"sub_categories":[],"readme":"\n# Termux:X11\n\n[![Nightly build](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml/badge.svg?branch=master)](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml) [![Join the chat at https://gitter.im/termux/termux](https://badges.gitter.im/termux/termux.svg)](https://gitter.im/termux/termux) [![Join the Termux discord server](https://img.shields.io/discord/641256914684084234?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=5865F2)](https://discord.gg/HXpF69X)\n\nA [Termux](https://termux.com) X11 server add-on app.\n\n## About\nTermux:X11 is a fully fledged X server. It is built with Android NDK and optimized to be used with Termux.\n\n## Submodules caveat\nThis repo uses submodules. Use \n\n```\ngit clone --recurse-submodules https://github.com/termux/termux-x11 \n```\nor\n```\ngit clone https://github.com/termux/termux-x11\ncd termux-x11\ngit submodule update --init --recursive\n```\n\n## How does it work?\nJust like any other X server.\n\n## Setup Instructions\nTermux:X11 requires Android 8 or later. It consists of an Android app and a companion termux package, and you must install both.\n\nThe Android app is available via the [nightly release tag](https://github.com/termux/termux-x11/releases/tag/nightly) of this repository. Download and install the `app-$ARCHITECTURE-debug.apk` matching your device's CPU architecture. (You can choose `app-universal-debug.apk` if you are not sure which architecture to pick, and it'll use a few extra MB of storage.) \n\nThe companion termux package is available from the termux graphical repository. You can ensure it's enabled and install this package with `pkg i x11-repo \u0026\u0026 pkg i termux-x11-nightly`. If you need to, you can also download a `.deb` or `*.tar.xz` from the same nightly release tag as above.\n\nFinally, most people will want to use a desktop environment with Termux:X11. If you don't know what that means or don't know which one to pick, run `pkg i xfce` (also from `x11-repo`) to install a good one to start with. The rest of these instructions will assume that your goal is to run an XFCE desktop, or that you can modify the instructions as you follow them for your actual goal.\n\n## Running Graphical Applications\nYou can start your desired graphical application by doing:\n```\ntermux-x11 :1 -xstartup \"dbus-launch --exit-with-session xfce4-session\"\n```\nor\n```\ntermux-x11 :1 \u0026\nenv DISPLAY=:1 dbus-launch --exit-with-session xfce4-session\n```\nYou may replace `xfce4-session` if you use other than Xfce\n\n`dbus-launch` does not work for some users so you can start session with\n```\ntermux-x11 :1 -xstartup \"xfce4-session\"\n```\n\nAlso you can do \n```\nexport TERMUX_X11_XSTARTUP=\"xfce4-session\"\ntermux-x11 :1\n```\nIn this case you can save TERMUX_X11_XSTARTUP somewhere in `.bashrc` or other script and not type it every time you invoke termux-x11.  \n\n\nIf you're done using Termux:X11 just simply exit it through it's notification drawer by expanding the Termux:X11 notification then \"Exit\"\nBut you should pay attention that `termux-x11` command is still running and can not be killed this way.\n\nFor some reason some devices output only black screen with cursor instead of normal output so you should pass `-legacy-drawing` option.\n```\ntermux-x11 :1 -legacy-drawing -xstartup \"xfce4-session\"\n```\n\nFor some reason some devices show screen with swapped colours, in this case you should pass `-force-bgra` option.\n```\ntermux-x11 :1 -force-bgra -xstartup \"xfce4-session\"\n```\n\n## Using with proot environment\nIf you plan to use the program with proot, keep in mind that you need to launch proot/proot-distro with the --shared-tmp option. \n\nIf passing this option is not possible, set the TMPDIR environment variable to point to the directory that corresponds to /tmp in the target container.\n\nIf you are using proot-distro you should know that it is possible to start `termux-x11` command from inside proot container.\n\n## Using with chroot environment\nIf 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.\n\nThis 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.\n\nAlso you must set `XKB_CONFIG_ROOT` environment variable pointing to container's `/usr/share/X11/xkb` directory, otherwise you will have `xkbcomp`-related errors.\n\nYou can get loader for nightly build from an artifact of [last successful build](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml)\n\nDo not forget to disable SELinux\n```\nsetenforce 0\nexport TMPDIR=/path/to/chroot/container/tmp\nexport CLASSPATH=$(/system/bin/pm path com.termux.x11 | cut -d: -f2)\n/system/bin/app_process / --nice-name=termux-x11 com.termux.x11.CmdEntryPoint :0\n```\n\n### Force stopping X server (running in termux background, not an activity)\n\ntermux-x11's X server runs in process with name \"termux-x11\". You can kill it by\n```\npkill termux-x11\n```\n\n### Closing Android activity (running in foreground, not X server)\n\n```\nam broadcast -a com.termux.x11.ACTION_STOP -p com.termux.x11\n```\n\n### Logs\nIf you need to obtain logs from the `com.termux.x11` application,\nset the `TERMUX_X11_DEBUG` environment variable to 1, like this:\n`TERMUX_X11_DEBUG=1 termux-x11 :0`\n\nThe log obtained in this way can be quite long.\nIt's better to redirect the output of the command to a file right away.\n\n### Notification\nIn Android 13 post notifications was restricted so you should explicitly let Termux:X11 show you notifications.\n\u003cdetails\u003e\n\u003csummary\u003eVideo\u003c/summary\u003e\n\n[img_enable-notifications.webm](https://user-images.githubusercontent.com/9674930/227760411-11d440eb-90b8-451e-9024-d5a194d10b16.webm)\n\n\u003c/details\u003e\n\nPreferences:\nYou can access preferences menu three ways:\n\u003cdetails\u003e\n\u003csummary\u003eBy clicking \"PREFERENCES\" button on main screen when no client connected.\u003c/summary\u003e\n\n![image](./.github/static/1.jpg)\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eBy clicking \"Preferences\" button in notification, if available.\u003c/summary\u003e\n\n![image](./.github/static/2.jpg)\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eBy clicking \"Preferences\" application shortcut (long tap `Termux:X11` icon in launcher). \u003c/summary\u003e\n\n![image](./.github/static/3.jpg)\n\u003c/details\u003e\n\n## Toggling keyboard\nJust press \"Back\" button.\n\n## Touch gestures\n### Touchpad emulation mode.\nIn touchpad emulation mode you can use the following gestures:\n* Tap for click\n* Double tap for double click\n* Two-finger tap for right click\n* Three-finger tap for middle click\n* Two-finger vertical swipe for vertical scroll\n* Two-finger horizontal swipe for horizontal scroll\n* Three-finger swipe down to show-hide additional keys bar.\n### Simulated touchscreen mode.\nIn simulated touchscreen mode you can use the following gestures:\n* Single tap for left button click.\n* Long tap for mouse holding.\n* Double tap for double click\n* Two-finger tap for right click\n* Three-finger tap for middle click\n* Two-finger vertical swipe for vertical scroll\n* Two-finger horizontal swipe for horizontal scroll\n* Three-finger swipe down to show-hide additional keys bar.\n\n## Font or scaling is too big!\nSome 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.\n\nYou can fix this in your window manager settings (in the case of xfce4 and lxqt via Applications Menu \u003e Settings \u003e Appearance). Look for the DPI value, if it is disabled enable it and adjust its value until the fonts are the appropriate size.\n\u003cdetails\u003e\n\u003csummary\u003e Screenshot \u003c/summary\u003e\n\n![image](./.github/static/dpi-scale.png) \n\u003c/details\u003e\n\nAlso you can start `termux-x11` with `-dpi` option.\n```\ntermux-x11 :1 -xstartup \"xfce4-session\" -dpi 120\n```\n\n## Changing, dumping and restoring preferences from commandline\n\nIt is possible to change preferences of termux-x11 from command line.\n`termux-x11-nightly` package contains `termux-x11-preference` tool which can be used like \n```shell\ntermux-x11-preference [list] {key:value} [{key2:value2}]...\"\n```\n\nUse `termux-x11-preference list` to dump current preferences.\nUse `termux-x11-preference list \u003e file` to dump current preferences to file.\nUse `termux-x11-preference \u003c file` to restore preferences from file.\nUse `termux-x11-preference \"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.\n\nTermux:X11 activity should be available in background or foreground, otherwise `termux-x11-preference` tool will hang indefinitely.\nIn 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.\n\n## Using with 3rd party apps\nIt is possible to use Termux:X11 with 3rd party apps.\nCheck how `shell-loader/src/main/java/com/termux/x11/Loader.java` works.\n\n# License\nReleased under the [GPLv3 license](https://www.gnu.org/licenses/gpl-3.0.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftermux%2Ftermux-x11","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftermux%2Ftermux-x11","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftermux%2Ftermux-x11/lists"}