Termux :Desktop
- 5 Devlogs
- 20 Total hours
Termux :Desktop is a scripts which automatically turns any old or new android device into a full fledged linux desktop environment within few clicks
Termux :Desktop is a scripts which automatically turns any old or new android device into a full fledged linux desktop environment within few clicks
#The Final Devlog
Riced my phone though is not a stand alone os but many linux package works in termux too cause basically the android is based on linux :D so most of the package were working and the one which were not working i ditched them , also setup ed a some developer apps like lazyvim via nvim , rofi , vscode , some hardware acc tools too !! also adding the video as the demo
Devlog #4 — Termux Desktop
No new features today — just fixing stuff that was manual hardwork
Problem:
The setup used one big pkg install to install everything at once. Turns out if even one package fails (like websockify hitting a bad mirror errors again and again ), the whole command dies and nothing else .
What I Fixed
I Split everything into two scripts:
setup.sh — runs once, installs all packages one by one so a single failure doesn’t kill the rest, downloads noVNC, and sets up the home-screen widget
start-desktop.sh — unchanged, just launches the desktop like before
The widget thing is probably my favourite part of today. setup.sh now automatically creates the Termux:Widget shortcut, so after first-time setup you just tap a button on your home screen to start the desktop. No opening Termux, no typing. Actually plug and play now.
Also rewrote the README to match all of this.
What Didn’t Work Out
Had an idea to build a proper Android app that wraps everything — no terminal at all. But Android sandboxes apps from each other so an APK can’t actually run pkg install inside Termux. It would’ve been a lot of work for not much gain over the widget shortcut. Dropped it.
Next
Testing everything on a real device tomorrow. Fingers crossed setup.sh doesn’t explode.
Termux :Desktop devlog#3 — the big script cleanup
tl;dr
had two separate startup scripts doing almost the same thing and it was bothering me
merged everything into one unified launcher with a proper menu (A / B / C)
termux:x11 is now option A and actually works cleanly alongside the vnc stuff
script auto-detects usb tethering vs wifi so you don’t have to think about it
xrdp falls back to novnc automatically if usb isn’t connected (so it doesn’t just die)
updated the readme to actually reflect what the project does now
github: Tanmay-1122/Termux-desktop
what i changed
the big merge (two scripts → one)
before this i had termux11start.sh for termux:x11 and start-desktop.sh for the vnc/xrdp stuff. they were basically doing the same cleanup and xfce setup steps just slightly differently. every time i wanted to fix something i had to do it twice which was annoying so i just merged them.
now there’s one script that shows a menu when you run it:
A) Termux:X11 — hardware-accelerated ⚡
B) noVNC — browser access (wifi) 🌐
C) xRDP — windows rdp via usb 🪟
pick your mode, it handles the rest.
network detection up front
script now checks for usb tethering (rndis0 / usb0) and wifi (wlan0) before showing the menu
both ips are shown at the top so you know what’s available before you even pick a mode
option C shows a warning in the menu itself if usb isn’t detected instead of letting you pick it and then failing
shared helper function
pulled the .xsession and .Xclients setup into one setup_xsession() function
termux:x11 mode doesn’t need this at all (it runs on :0 not :1) so it skips it entirely
vnc and xrdp both call it — no more copy-pasted code
termux:x11 mode (option A)
pulled the logic from termux11start.sh and cleaned it up a bit:
starts pulseaudio with tcp auth so audio actually works
launches termux-x11 :0 in background, waits 3 seconds
calls am start to bring the x11 app to the foreground automatically
sets PULSE_SERVER=127.0.0.1 and DISPLAY=:0 then launches xfce4
xrdp fallback
if you pick option C but usb isn’t connected, instead of crashing or doing nothing it prints a message and automatically falls back to novnc mode after 3 seconds. small thing but made it way less frustrating to use.
readme rewrite
the old readme only talked about termux:x11. rewrote it to cover all three modes with:
a comparison table so people can pick the right mode for their situation
separate install instructions for novnc and xrdp (tigervnc, websockify, xrdp packages)
a preview of what the launcher menu actually looks like
connection instructions for each mode (what url to open, what app to use, etc.)
Today I worked on improving the usability of my Termux Desktop project by integrating Rofi as the main application launcher.
Before this change, launching applications was less convenient and required navigating through menus or using terminal commands. To solve this, I added a custom Rofi setup that allows applications to be launched quickly from a clean search interface. I also created a keyboard shortcut so that pressing Super + Space instantly opens Rofi, making the desktop experience feel much more natural and efficient.
While implementing Rofi, I spent time customizing its appearance and layout so that it better matches the overall desktop environment. The launcher now looks cleaner and is easier to use compared to the default configuration.
One challenge during this session was finding the right balance between functionality and appearance. I experimented with different configurations before settling on a design that feels responsive and visually appealing.
I am currently working on the next phase of the project. My goal is to implement noVNC and XRDP support. With noVNC, users will be able to access the Termux desktop through a web browser on any device connected to the same network. This means the desktop will not be limited to Termux:X11 and can be accessed from PCs, tablets, or other screens using only a browser.
I also plan to add XRDP support, which will allow Windows users to connect directly to the Termux desktop using Remote Desktop. This should provide a smoother and more native experience while making the setup significantly more portable.
In the future, I will also publish my desktop configuration files (dotfiles) on GitHub so that others can easily recreate the same setup.
Overall, today’s work focused on improving accessibility and user experience, bringing the project one step closer to feeling like a complete desktop operating system rather than a Linux environment running on a phone.
Rofi screenshots are attached below.
Devlog:1 Termux Desktop
Hello everyone , this is my new project (Termux Desktop) which can turn any normal android device into a full fledged linux desktop environment within few clicks , i already worked for something similar to this as my personal protect but it required lots of manual work and debugging but now in this protect i will try to automate everything and within the few clicks you will be able to turn your phone to a pc , i have lots of idea in my mind will go step by step
So what i did today !!: so today i worked on setting up a very basic linux gui environment using the Termux and the Termux x11 where i was able to get the display output of the phones native Termux on the Termux x11 as shown in the image
i also made a automated script to start the display x11 server automatically when run the command in the Termux’s terminal , it will automatically open the Termux x11 with the linux !