Open-source project
sabamdarif/termux-desktop avatar
sabamdarif/termux-desktop

sabamdarif/termux-desktop: a full Linux desktop on Android through Termux:X11

Install a full Linux desktop environment on your Android device with Termux X11 ( VNC optional) and also enable hardware acceleration.

2,283 stars967 forksShellGPL-3.0

At a glance

What is it?
termux-desktop is a Shell installer that puts Xfce, LXQt, MATE, GNOME, KDE Plasma, Cinnamon or a bare window manager on an Android phone, with Mesa drivers for hardware acceleration. It is a setup script and a set of session commands, not an app you install from a store.
Who is it for?
Adopt termux-desktop if you already run Termux from GitHub or F-Droid, have 3GB or more of RAM and 3 to 4GB of storage free, and want a desktop session rather than a single X client. Do not adopt it if you use the Google Play build of Termux, if you are on Android 12 or newer and will not disable the phantom process killer, or if you expect a distribution-grade package manager.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 34 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What termux-desktop actually solves on an Android phone

Termux gives you a Linux userland on Android, but it gives you a terminal. Running a graphical program means assembling an X server, a display variable, a window manager, a theme, fonts, a session bus and a set of drivers yourself, and the failure modes are not obvious until something renders in the wrong colour or refuses to start. termux-desktop is the assembly step, packaged as a Shell installer. The README describes it as an easy install of a "Termux Native GUI Desktop" and lists Xfce, LXQt, MATE, GNOME, Cinnamon and KDE Plasma as desktop environments, plus Openbox, i3, dwm, bspwm, Awesome, Fluxbox, IceWM and WMaker as window managers. The audience is narrow and specific: people who want a real session on a phone or tablet, usually with a keyboard and mouse attached, and who accept that the machine underneath is Android rather than a laptop. If you only need to run one GUI application, this is more machinery than the problem requires.

How the installer, the X server and the Mesa drivers fit together

The entry point is setup-termux-desktop in the repository root, fetched and piped into bash. From there the script installs packages, writes configuration, and leaves behind session commands rather than a long-running daemon. The graphical path is Termux:X11, a separate Android app that hosts the X server; termux-desktop starts a session against it with tx11start and tears it down with tx11stop. VNC is the second path, and the README is explicit that it is "optional and only available if you chose custom during the setup", which means the default install does not give you a VNC listener at all. Hardware acceleration is handled by shipping driver packages: the recent release assets are named mesa-freedreno-26.3.0-devel-20260824, turnip-26.2.0 and pipetto-crypto-vulkan-wrapper-android_25.0.0-2. Freedreno covers Adreno GPUs and Turnip is the Vulkan driver for the same family, so acceleration is an Adreno story first. On other chipsets the session still runs, but the fallback is software rendering. That is the single most important architectural fact about this project: the desktop layer is portable, the acceleration layer is not.

Installing termux-desktop and starting the first session

The README's requirement table sets the floor before any command runs: Android 8.0 or newer, the latest Termux from GitHub or F-Droid, the latest Termux:X11 and Termux-API apps, 3GB or more of RAM, 3 to 4GB of storage and 1.5 to 2GB of download. The README states plainly that the Google Play build of Termux "doesn't work due to API limitations", so the F-Droid or GitHub build is the only supported starting point. Android 12 and newer users are told to disable the phantom process killer first, with a link to docs/disable-phantom-process-killing.md; skipping that step is the most common way an install dies halfway through.

With those in place, the installer is a single pipeline. The script prompts for the desktop environment and the package manager, so run it in an interactive terminal rather than through a background job.

bash
bash <(curl -Lf https://raw.githubusercontent.com/sabamdarif/termux-desktop/main/setup-termux-desktop)

The README also gives a shortened form through the kutt.to link shortener, and a lite mode that skips optional packages. Lite mode is set as an environment variable before the installer runs, not as a flag:

bash
export LITE=true
bash <(curl -Lf https://raw.githubusercontent.com/sabamdarif/termux-desktop/main/setup-termux-desktop)

After installation, open the Termux:X11 app and start the session from Termux. The plain command starts with GPU acceleration enabled.

bash
tx11start

If the screen stays black, or the desktop renders with obvious corruption, the README's own escape hatch is to disable acceleration and legacy drawing together:

bash
tx11start --nogpu --legacy

Stopping is symmetric. tx11stop ends the session, and -f forces it when the normal shutdown hangs.

bash
tx11stop -f

The README lists a gui command as well, with --start taking vnc or tx11 as an argument, but the truncated portion of the README does not show its full option set, so treat tx11start and tx11stop as the documented core.

The Android 12 phantom process killer is not an optional footnote

Android 12 introduced a process limit that terminates background processes outside the app lifecycle, and a Termux session running a full desktop spawns far more processes than a terminal does. termux-desktop's README puts this in a red callout and links to a dedicated document rather than folding it into the requirements table, which is the right call: it is a prerequisite that lives outside the installer and cannot be satisfied by the script. The consequence is that a user who follows the one-liner and nothing else can watch a working install fall apart minutes after the desktop appears. If you are unwilling to change that Android setting, this project is the wrong tool regardless of how the rest of the setup goes.

Where termux-desktop stops being the right choice

Two limitations are structural rather than fixable. The first is the container path. The README offers a proot or chroot distribution as a way to install software that Termux does not package, and links to docs/proot-container.md, but a proot container is not a distribution: it cannot load kernel modules, and anything that expects real device nodes or elevated privileges will not work. The second is pacman. The README lists APT as "Termux's default and recommended" and adds that pacman "may be buggy, not well tested". That is the project telling you which package manager it stands behind, and choosing pacman means accepting an untested path. There is also a resource floor that no configuration removes: 3GB of RAM and 3 to 4GB of storage on a device that still has to run Android. On a 4GB phone with a heavy skin, the desktop and the phone compete for the same memory, and the loser is usually the desktop. Finally, the acceleration story is Adreno-specific in practice. On a Mali or PowerVR device the installer still completes, but the Mesa Freedreno and Turnip assets do not apply, and you are running a software-rendered X server on a mobile CPU.

termux-desktop against Andronix and plain Termux:X11

The closest alternative in the same problem space is Andronix, which takes the distribution-first route: it installs a full Linux distribution such as Ubuntu or Debian inside proot and runs the desktop from inside that distribution. The difference in approach matters. Andronix gives you a distribution's package manager and its repositories, at the cost of running everything through proot, which adds syscall translation overhead and keeps you away from the host GPU stack. termux-desktop stays native in Termux, uses Termux's own APT packages, and installs Mesa driver packages so that rendering can reach the GPU. You get closer to the hardware and a smaller install; you give up the breadth of a distribution's repositories, which is why the project offers a proot container as an add-on rather than as the base. The second alternative is doing nothing: installing Termux:X11 and a window manager by hand. That is entirely viable if you want one application and know which packages you need. termux-desktop earns its place when you want a themed, complete session with a menu, an app store and session commands, and you would rather not maintain that yourself.

Maintenance, licensing and what an upgrade costs you

The repository is not archived and the last push was on 2026-08-26, so the project is being worked on, but the release cadence is driven by the driver packages rather than by the installer. The three most recent releases are Mesa Freedreno 26.3.0-devel-20260824, the pipetto crypto vulkan-wrapper-android 25.0.0-2, and Turnip 26.2.0, all dated in August 2026. That tells you where the maintenance effort goes: keeping GPU drivers current against upstream Mesa and against Android's own changes. The practical upgrade cost follows. Because the installer is a remote script fetched over curl, re-running the one-liner after a release pulls whatever the main branch contains at that moment, and a fresh install is what the README recommends for "best results". There is no documented rollback path if a driver update breaks rendering, and the README does not describe one. The mitigation the project does provide is runtime, not versioned: tx11start --nogpu falls back to software rendering without reinstalling anything. The licence is GPL-3.0, which governs the Shell scripts and configuration in this repository. The Mesa, Turnip and wrapper packages are separate projects with their own licences, and this repository's licence does not speak for them. If you plan to redistribute a modified installer or bundle it into a product, read the GPL-3.0 text and the upstream licences for each driver package rather than assuming the whole stack is covered by one licence.

Editorial conclusion

Adopt termux-desktop if you already run Termux from GitHub or F-Droid, have 3GB or more of RAM and 3 to 4GB of storage free, and want a desktop session rather than a single X client. Do not adopt it if you use the Google Play build of Termux, if you are on Android 12 or newer and will not disable the phantom process killer, or if you expect a distribution-grade package manager. Before committing, check that tx11start runs with --nogpu on your device, confirm your chipset is covered by the Mesa Freedreno or Turnip release assets, and read docs/disable-phantom-process-killing.md end to end.

Frequently asked questions

Does Termux have a desktop environment?

Termux itself ships a terminal, not a desktop. termux-desktop installs one on top of it, offering Xfce, LXQt, MATE, GNOME, Cinnamon and KDE Plasma as desktop environments and Openbox, i3, dwm, bspwm, Awesome, Fluxbox, IceWM and WMaker as window managers.

Can Termux be used on PC?

The README targets Android 8.0 or newer and requires the Termux, Termux:X11 and Termux-API Android apps, so termux-desktop is an Android setup. Nothing in the README describes a desktop or laptop operating system as a supported host.

Is there a Termux app for PC?

The README lists no PC build. It points to the Termux app on GitHub and F-Droid and to Termux:X11 and Termux-API on GitHub, all as Android packages, and warns against the Google Play build because of API limitations.

What do people use Termux for?

The README does not describe Termux's general uses. For this project the answer is narrower: running a graphical Linux session on Android, reached through Termux:X11 by default or through VNC if the custom install path was chosen.

how to install termux desktop

Install the latest Termux from GitHub or F-Droid plus the Termux:X11 and Termux-API apps, disable the phantom process killer on Android 12 or newer, then run the installer one-liner and start the session with tx11start.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/sabamdarif-termux-desktop.svg)](https://hysenlabs.com/projects/sabamdarif-termux-desktop)