KevinCarlson.codes

Featured Image

Test Driving Android's Linux Development Environment

Generated with Google Gemini/Nano Banana. Cropped.

Over the last couple years, we’ve been hearing rumors that Google plans to merge ChromeOS with Android at some point in the future. One of the initial signs of this convergence is Google’s addition of the Linux Terminal as an option for devices on Android 15 or later. Considering how running heavyweight IDEs on Chromebooks via Linux has been a running theme on this site, let’s take a look.

Note: Android users have had access to a Linux terminal on Android via the Termux app for several years at this point. I’ve used it to toy around with NeoVim and Cargo/Rust on my phone. While the new ChromeOS-style Linux terminal is nice to have, it is still labeled as experimental, and I’ve seen it crash multiple times. For the time being, Termux provides a much more stable experience.

Adding the Linux Container

First, we need to enable Developer Options to gain access to this feature. In the settings app, go to the “About Phone” section, and locate the Build Number. Tap this list item seven times, and you should see the message, “You are now a developer!” Congratulations.

Due to the different OEM skins on Android devices, the specific location of the Build Number may vary from device to device. Look for something similar to “About Phone” or “Device Info” towards the bottom of the main Settings screen. For a particularly diabolical example, the Onyx Boox Poke 3 didn’t seem to have that option at all in its settings, so I had to install the Microsoft launcher to use their Settings app to enable Developer Options. Full disclosure: I don’t even remember if I managed to actually deploy a test app to it. Yay fragmentation!

This adds another list item in the Settings app for Developer Options, which has curly braces ({}) as an icon. On my Pixel device, this is under the ‘System’ menu above the ‘About Phone’ option. Your device may vary. This gives us a bunch of new settings to play with. In our case, we’re interested in the ‘Linux Development Environment’ option. Tapping this item pulls up a sub-menu with a toggle button. Enabling this item adds a new app to the App Drawer called Terminal.

The Linux development environment option in the Android Developer Options

Launching the Terminal app for the first time brings up a screen asking to start a ~500 MB download. You can run this in the background. Once the download finishes, launching the app starts up a terminal session, running a small Debian instance with the exact same styling as the ChromeOS Linux environment.

Run sudo apt update and sudo apt upgrade to bring the system up to date, and refresh the package lists.

Note: Like ChromeOS, the sudo command doesn’t ask for a password, which still feels wrong.

Once that finishes, we’re ready to go!

Debian would just like to interject for a moment. What you’re refering to as Linux, is in fact, GNU/Linux, or as I’ve recently taken to calling it, GNU plus Linux.

The Good Stuff

I was glad to see that Google borrowed a lot from Termux, offering a virtually identical set of supplemental keys to make up for the standard keyboard’s lack of arrow keys, as well as Ctrl, Alt, Home, End, Page Up, Page Down, Tab, and Esc. I can understand why typical Android users don’t need these keys for the most part, but they’re essential for navigating Linux terminal apps. This does reduce the screen real estate significantly, though. My phone only shows 50 x 17 characters with the fully extended keyboard, but things would look drastically different on a Pixel Fold Pro, or a Galaxy Tab S11 Ultra. GBoard also offers one handed typing mode which shrinks the keyboard and allows resizing, and the floating keyboard works as well, though the supplemental keys stay at the bottom of the screen.

Unlike Termux, the Linux Development Environment doesn’t seem to respond to screen rotation on my device. That being said, I could only see maybe two lines of text on Termux in Landscape orientation, which makes that fairly useless. With the tabbed interface of the LDE, I wouldn’t be able to see anything at all.

Borrowing another idea from the Termux playbook, the LDE shows a persistent notification in the status bar when a terminal session is active, which allows users to get back to the session quickly. I suspect that this may also be necessary to avoid issues with the Android lifecycle, so the system won’t kill off a running terminal process if the user navigates away to look something up in a browser. Note that swiping the Terminal app away in Multitasking view will close the session, though the notification will persist while the container shuts down.

Limitations

To the best of my knowledge, the Linux Development Environment does not seem to support running X11 or Wayland applications. This prevents installing things like Blender, Android Studio, or VS Code. That being said, Termux can run and install X11 apps thanks to the Termux X11 Project, including a full desktop environment like XFCE.

Similarly, I haven’t been able to figure out a way to change the font for the LDE terminal interface. Normally, I wouldn’t mess around with something like that, but one of the main use cases I see for the LDE is using NeoVim for code editing, and I’d need to install a Nerd Font (side note: I really wish I didn’t have to call it that) to get the icons to show up in NVChad or LazyVim. Again, this is something that Termux can handle with relative ease, if you’re willing to expand your definition of ‘relative ease’ to reflect the skill set and determination of the type of sociopath who would want to rice Vim on their phone.

Be aware, as well, that this Debian install lives in a container that doesn’t provide an obvious way to share data with the Android host system. ChromeOS has a separate folder in the Files app for Linux files, so I would imagine that some future iteration of the Android LDE would offer similar functionality, as well as access to shared folders and devices. However, that doesn’t seem to be available today. Note that disabling and then re-enabling the LDE from Android’s Developer Options will erase the Linux container, including any files created in it.

Caution: Experimental!

For the record, I’m using this on a Google Pixel 9, so I’m fairly confident that someone on the Android development team is most likely using my exact device for at least some of the testing on this. But I still managed to crash the Linux Development Environment multiple times. Be sure to save your work often, and use a version control system to sync with the outside world if you plan on using this for anything important.

Conclusions

Obviously, this is the kind of feature that really appeals to me, so I’m definitely going to be watching this space. That being said, I definitely had a bigger reaction the first time I realized I could install Rust inside Termux and cargo new and cargo run a hello world app right on my phone – not that I’d particularly care to write a full app on a phone keyboard. However, I think a more integrated Linux environment could be a game changer, especially if it has the ability to share files with the host system the way ChromeOS does.

Between the Gemini and Claude apps for Android, I could see some weird phone-based vibe coding setups take off. But this definitely feels more like the kind of feature you’d use on whatever an Android powered Chromebook would be called (or on a tablet). While I’m most definitely going to end up trying my best to run Android Studio on the most inappropriate hardware that can technically launch it, I can’t imagine that being Google’s intent with this. Either way, I think it’s cool, and I’m eager to figure out what else I can do with it.