COPIED TO CLIPBOARD
Apophis — the serpent of chaos

ApophisOS

Full Linux. Always. Android When You Need It.

ApophisOS transforms your Android device into a full Linux phone — a real Ubuntu 25.10 + KDE Plasma desktop running on your existing hardware. No root. No second device. No compromise. Linux is your primary environment. Android handles calls, SMS, and the camera.

Get ApophisOS — $4.99 One-time payment  ·  arm64-v8a  ·  Android 7.0+  ·  No root required

— Available Now —

Current Release — v0.5.2  ·  $4.99 one-time

ApophisOS arm64

Ubuntu 25.10 · KDE Plasma · Wayland · arm64-v8a

Full Ubuntu 25.10 with KDE Plasma desktop. The complete Linux phone experience on any 64-bit Android 7+ device. Install any software from apt. Boots automatically on device start.

  • Ubuntu 25.10 via proot — no root required
  • KDE Plasma desktop, tablet mode
  • apt — 60,000+ packages
  • Firefox + PWA support
  • Auto-launch on device boot
  • Android available for calls & camera
Apophis App Store
133 Apps · PWA Technology · Real Icons

133 apps unavailable on standard Linux — Microsoft Office, Adobe Photoshop, Canva, AI tools, and more — all installable directly to your Linux desktop as Progressive Web Apps.

Browse 133 Apps

What is ApophisOS?

The Linux phone you already have

Named after Apophis — the Egyptian serpent of chaos that swallows the sun. ApophisOS is the disruption the locked-down mobile market deserves.

Full Linux on the Phone in Your Pocket

ApophisOS is an Android application that runs a full Ubuntu 25.10 environment with KDE Plasma desktop directly on your phone or tablet — no root required, no second boot, no hardware modifications. It uses proot-style containerization to run a complete Linux userspace on top of the Android kernel.

You get a real terminal. A real package manager. Real desktop applications. Everything you'd expect from a Linux workstation, in your pocket, on the hardware you already own.

🐍

Full Ubuntu 25.10

Complete apt-based rootfs. Install anything from the Ubuntu repos — no restrictions.

🖥️

KDE Plasma Desktop

Real Wayland compositor. Proper windowed apps. Touch-optimized panel and full-screen app drawer.

📱

Android When You Need It

Phone calls, SMS, camera, and GPS stay on Android. One swipe back, one swipe forward.

🔒

No Root Required

Runs entirely in userspace. No bootloader unlock, no warranty void, no flashing.

🌐

Firefox + PWAs

Full browser with PWA support via PWAsForFirefox. Install any web app directly to the desktop.

Auto-Launch on Boot

Plasma starts automatically when your phone boots. Unlock your phone, you're in Linux.


Full Linux. Always.

The smartphone was supposed to be a computer in your pocket. Instead it became a locked-down appliance controlled by two corporations. ApophisOS is the counter to that.

Our goal is simple: Linux is your primary operating environment, all day, every day. You live in the Plasma desktop. You run real Linux applications. You have a terminal always available. You install software with a package manager, not a curated app store.

Android stays in the background — handling phone calls, SMS, camera, GPS, and the hardware layer it does well. When you need to take a call, you take the call. When the call ends, you're back in Linux.

This is the hybrid Linux phone. Not PostmarketOS — which requires flashing your device and sacrificing camera and calls. Not raw Termux — which is a terminal emulator, not a desktop. ApophisOS is a full Plasma desktop that lives alongside Android, using what Android does well while taking everything else back.

Your phone is a Linux computer. Act like it.


GigLife Gaming & Computer Services

Founded by a veteran software developer with over 20 years of experience — including time spent working in Silicon Valley at the heart of the tech industry. After a workplace injury in 2017 ended a long career in traditional development, we pivoted to what we love most — building software that actually solves real problems for real people.

Since then we have designed websites, built apps, and created tools that put powerful technology in the hands of everyday users. ApophisOS is our flagship project and the clearest expression of our mission — bringing full Linux to the average person, on the hardware they already own, without the technical barriers that have kept Linux out of reach for most people.

🐍

Our Mission

Linux has always been the most powerful, most free operating system on the planet. We are bringing it to everyone. One device at a time.

🔒

Privacy First

We do not collect your data. We do not sell your information. We do not track you. ApophisOS runs entirely on your own device. Privacy is not a feature — it is a right.

🛠️

Built by a Developer

20+ years of professional experience. Designed for everyone. If you have a question, the person who built it is one tap away.


Connect with the Developer

Have a question about ApophisOS? Need install help? Want to report a bug or suggest a feature? Reach out directly — no support ticket, no bot, just the developer.

Connect on WhatsApp

Or email redneckefhutton@gmail.com

Install ApophisOS

APK · No Root · Android 7.0+

Download the APK, sideload it, and the app handles the rest. Ubuntu 25.10 rootfs downloads automatically on first launch over WiFi.

Latest Release — v0.5.2

ApophisOS APK

Signed release build. Includes Ubuntu 25.10 rootfs bootstrapper, KDE Plasma launcher, and auto-boot service.

Get ApophisOS — $4.99
Architecturearm64-v8a
Min Android7.0 (API 24)
APK Size~24 MB
Rootfs~156 MB WiFi

Step-by-Step

1

Download the App

Purchase and download ApophisOS from the button above. The APK will download directly to your device. Open your file manager → Downloads → tap the APK → tap Install.

Note: If Android blocks the install, go to Settings → Security → Install unknown apps and allow your browser or file manager.
2

Enable Developer Options

Developer Options unlocks settings Android hides by default. Required for ApophisOS to run reliably.

Settings → About Phone → tap Build Number 7 times until you see "You are now a developer."

Then go to Settings → Developer Options and enable it if not already on.

3

Disable Child Process Restrictions

Some Android versions restrict background child processes. If your Developer Options has this setting, disable it so ApophisOS can run Linux processes without being killed.

Settings → Developer Options → Background process limit → set to Standard limit

Note: Not all phones show this option — skip it if you don't see it.
4

Set App Permissions

ApophisOS runs as a home launcher and needs full permissions to function correctly.

Long-press the ApophisOS icon → tap the ⓘ info icon → Permissions → enable all permissions.

5

Set Battery to Unrestricted

Prevents Android from killing ApophisOS in the background.

Long-press icon → ⓘ info → Battery → Unrestricted

If you skip this step the Linux environment may be killed when you switch apps.
6

Enable Draw Over Other Apps

Required for the ApophisOS overlay and floating taskbar to appear on top of the desktop.

Long-press icon → ⓘ info → Display over other apps → Allow

All set — now what? Head to the Setup Guide → to install KDE Plasma and configure your desktop.

Setup Guide

Ubuntu 25.10 · KDE Plasma · Falkon · No Snap · No Root

Complete ALL phases in the terminal BEFORE tapping Display. The display script is the very last step.

Wait for the Terminal Prompt

Tap the ApophisOS icon on your device. On first launch ApophisOS downloads and extracts Ubuntu 25.10 automatically. Wait for the terminal prompt before continuing.

You will see a terminal prompt when extraction is complete — press Exit, not Continue.
ApophisOS first launch screen Terminal prompt ready

Fix DNS

Run this first every session or apt will fail.
Set DNS resolver
echo "nameserver 8.8.8.8" > /etc/resolv.confCOPY
DNS command in terminal

Update Ubuntu

Update & upgrade
apt update && apt upgrade -yCOPY
apt update running Upgrade complete

Install KDE Plasma Desktop

This will take several minutes. Wait for the prompt to return.
Install Plasma + Konsole + file manager
apt install -y kwin-wayland plasma-desktop konsole dbus-x11 pcmanfm-qtCOPY
Plasma installing Plasma install complete

Disable Screen Locker

Write kscreenlocker config
mkdir -p /root/.config && printf '[Daemon]\nAutolock=false\nLockOnResume=false\n' > /root/.config/kscreenlockerrcCOPY
Screen locker config written

Install Browsers

Two browsers — Falkon for general browsing, Chromium for PWAs from the Apophis App Store. Both require sandbox fixes to run inside proot.

— Falkon

Native KDE browser using QtWebEngine. Lightweight, touch-friendly, no snap.

Install Falkon
apt install -y falkonCOPY
Fix Falkon sandbox — patch desktop file
sed -i 's|Exec=falkon.*|Exec=env QTWEBENGINE_DISABLE_SANDBOX=1 falkon %u|g' /usr/share/applications/org.kde.falkon.desktopCOPY
Rebuild app cache
kbuildsycoca6 --noincremental 2>/dev/nullCOPY
Falkon install complete

— Chromium

Required for PWA installs from the Apophis App Store. Installed as a native deb via the xtradeb PPA — no snap. A wrapper script launches it without sandbox so it works correctly inside proot.

Step 1 — add xtradeb PPA
add-apt-repository ppa:xtradeb/apps -yCOPY
Step 2 — update package cache
apt updateCOPY
Step 3 — install Chromium and inotify-tools (native deb, no snap)
apt install -y chromium inotify-toolsCOPY
Note: The package name is chromium — not chromium-browser. Using chromium-browser on Ubuntu pulls in the snap dummy package instead. chromium-common and chromium-sandbox are normal sub-packages of the native deb — not snaps.
Create Chromium wrapper script
printf '#!/bin/bash\nexec chromium --no-sandbox --disable-setuid-sandbox --homepage="https://duckduckgo.com" "$@"\n' > /usr/local/bin/chromium-apophisCOPY
Make wrapper executable
chmod +x /usr/local/bin/chromium-apophisCOPY
Patch Chromium desktop file to use wrapper
sed -i 's|Exec=chromium|Exec=/usr/local/bin/chromium-apophis|g' /usr/share/applications/chromium.desktopCOPY
Create PWA auto-fix watcher — patches every PWA Chromium installs automatically
printf '#!/bin/bash\nPWA_DIR="$HOME/.local/share/applications"\nmkdir -p "$PWA_DIR"\ninotifywait -m -e close_write "$PWA_DIR" 2>/dev/null | while read -r dir event file; do\n if [[ "$file" == *.desktop ]]; then\n TARGET="$PWA_DIR/$file"\n if grep -q "chromium" "$TARGET" 2>/dev/null; then\n sed -i '"'"'s|Exec=chromium|Exec=/usr/local/bin/chromium-apophis|g'"'"' "$TARGET"\n fi\n fi\ndone\n' > /usr/local/bin/pwa-sandbox-fix.shCOPY
Make watcher executable
chmod +x /usr/local/bin/pwa-sandbox-fix.shCOPY
Add watcher to Display start script — long-press orb → Display → add this line before the startplasma line
bash /usr/local/bin/pwa-sandbox-fix.sh &COPY
Note: The watcher runs silently in the background. Every PWA installed from the Apophis App Store is automatically patched — no manual steps needed.
Rebuild app cache
kbuildsycoca6 --noincremental 2>/dev/nullCOPY
Chromium install complete

Disable KDE Wallet

Write wallet config
printf '[Wallet]\nEnabled=false\n' > /root/.config/kwalletrcCOPY
Wallet config written

Touch Optimizations

Apply touch settings (run each line separately)
kwriteconfig6 --file plasmarc --group General --key TouchMode 1COPY
kwriteconfig6 --file kdeglobals --group General --key fontSize 12COPY
kwriteconfig6 --file breezerc --group Common --key ButtonSize 3COPY
kwriteconfig6 --file breezerc --group Common --key TitleBarHeight 30COPY
Touch configs applied

Configure the Display Start Script

Long-press the orb → Display → paste → Done. This is the final step.

1

Open the Side Menu

Two-finger swipe from the left edge toward the right. Two fingers are required to avoid triggering the Android back gesture.

2

Long-Press "Display"

Hold the Display button for ~1 second to open the script editor. A regular tap launches the session — long-press edits it.

3

Paste the Startup Script

Clear existing content and paste exactly:

// Display start script
WAYLAND_DISPLAY=wayland-apophisos dbus-launch --exit-with-session startplasma-wayland > /tmp/plasma.log 2>&1 &COPY
4

Tap Display to Launch

Tap Display (regular tap). KDE Plasma desktop appears with taskbar and Falkon browser. First boot takes 20–40 seconds.

Tap Display — KDE Plasma desktop appears with taskbar and Falkon browser.
Side menu open Script editor open

Set DuckDuckGo as Default Search

In Falkon: Settings → Configure Falkon → Search → set DuckDuckGo as default.

Falkon search settings DuckDuckGo set as default

ApophisOS Running

KDE Plasma on Ubuntu 25.10 — fully configured and ready to use.

Full desktop overview Falkon browser open App launcher in use

Install Recommended Apps

All native apt packages — no snaps, no PPAs, no flatpaks. All work inside proot.

Baobab — disk usage analyzer
apt install -y baobabCOPY
LibreOffice — Writer, Calc, Impress (no snap)
apt install -y libreoffice-writer libreoffice-calc libreoffice-impressCOPY
GIMP — image editor
apt install -y gimpCOPY
Geany — lightweight IDE and code editor
apt install -y geanyCOPY
Kate — advanced KDE text editor
apt install -y kateCOPY
Thonny — beginner-friendly Python IDE
apt install -y thonnyCOPY
Note: Run apt install commands one at a time. Each may take a few minutes depending on package size and connection speed.

New — ApophisMobile

Transform your ApophisOS terminal into a full Plasma Mobile environment automatically. ApophisMobile configures the desktop layout, populates your desktop with app icons, and sets up a DPKG hook so icons stay in sync every time you install new software — all in one command.

Run this from inside your proot session after completing the phases above. Requires an active internet connection.
Run the ApophisMobile setup script
curl -fsSL https://apophisos.com/apophismobile-setup.sh | bashCOPY

The script runs automatically from start to finish — no input required. When it completes your desktop will be fully configured and populated with icons.

✓ After the script finishes, start your Plasma session normally. Your desktop icons will already be populated and will stay in sync automatically after every apt install.

Common Fixes

Desktop won't start — check the log
cat /tmp/plasma.logCOPY
DNS broken after reboot
echo "nameserver 8.8.8.8" > /etc/resolv.confCOPY
Screen locked — kill it
pkill -f kscreenlockerCOPY
Falkon won't launch from desktop — verify the fix
grep Exec /usr/share/applications/org.kde.falkon.desktopCOPY

Should show QTWEBENGINE_DISABLE_SANDBOX=1. If not, repeat Phase 7.

Apophis App Store

133 PWAs · Real Icons · Linux Desktop Ready

Apps unavailable on standard Linux — Microsoft Office, Adobe Photoshop, Canva, AI tools, and 130 more — all installable directly to your Linux desktop as Progressive Web Apps via Firefox + PWAsForFirefox.

Loading apps...
🐍 No apps matched your search — try a different term

Install Any App to Your Desktop

1️⃣
Click any app card — it opens in Firefox on your ApophisOS desktop
2️⃣
Sign in if required (Office, Adobe, etc.)
3️⃣
Click the PWAsForFirefox icon in the toolbar → Install as Web App
4️⃣
The app icon appears in your KDE app drawer — launches like any native app

📦 Install This Store as a PWA

Save the three files to the same folder and serve with a local HTTP server. Firefox will offer to install Apophis App Store as a standalone app.

# Serve on localhost (run in Konsole) cd ~/apophis-store python3 -m http.server 8080COPY

Open http://localhost:8080 in Firefox and install from the toolbar.

The ApophisOS Platform

Three tiers. One mission. Your device, your rules.

ApophisOS is not a single product — it is a platform built across three tiers, each targeting a different device and use case. All three share the same core philosophy: Linux sovereignty, privacy by default, and zero compromise on what your hardware can do.

Tier 01

ApophisOS Desktop

DEBIAN TRIXIE  ·  PLASMA LITE  ·  FULL PENTEST SUITE

The full ApophisOS experience on any x86 or ARM laptop or desktop. Built on Debian Trixie with a tuned Plasma Lite desktop — larger controls, touch-optimized UI, finger-friendly from the ground up. Ships with a complete professional-grade penetration testing toolkit and Tor with 14-Eyes exit node exclusion baked in from the start.

This is the workstation tier. If you need a fully sovereign, privacy-first Linux machine that also doubles as a mobile pentest platform, this is it.

🐧

Debian Trixie Base

Stable, modern, and fully maintained. apt package management. No bloat. Built to last.

🖥️

Plasma Lite Desktop

KDE Plasma tuned for touch — larger targets, bigger icons, finger-navigable without a mouse.

🔒

Full Pentest Suite

23+ verified tools across recon, exploitation, wireless, MITM, forensics, and web testing.

🧅

Tor + 14 Eyes Exclusion

Tor configured at install with all 14 Eyes nations excluded from your circuit. Always on.

🛡️

Privacy by Default

No telemetry. No cloud accounts. No mandatory sign-ins. Your machine, your data.

💻

Any x86 / ARM Hardware

Runs on repurposed Chromebooks, old laptops, mini PCs. Breathes life into old hardware.

Tier 02

ApophisOS Mobile

NATIVE TERMUX  ·  PLASMA LITE  ·  NO PROOT  ·  5G READY

Full Linux on your Android phone — no proot, no container, no compromise. ApophisOS Mobile runs a native Termux environment with a Plasma Lite desktop over Termux:X11. Your phone keeps doing everything it does — calls, SMS, 5G, camera — while a complete Linux desktop runs alongside it.

This is what the Free Tier guide builds. The paid APK gets you there in one tap. Either way, it is the same environment — real Linux, real desktop, real tools, on the device in your pocket.

📱

Native — No Proot

Runs directly on the Android Linux kernel. No container overhead. No virtualization layer.

🖥️

Plasma Lite Desktop

Full XFCE4 tuned to look and feel like Plasma — touch-optimized, finger-navigable, beautiful.

📡

Full Hardware — No Sacrifice

5G, calls, SMS, camera, Bluetooth — all intact. Linux runs alongside Android, not instead of it.

🔒

Pentest Suite

23+ verified security tools native to Termux. Recon, MITM, wireless, web testing — in your pocket.

🧅

Tor + 14 Eyes

Full Tor stack with 14 Eyes exit node exclusion. Firefox routed through Tor for darkweb browsing.

Auto-Boot

Desktop starts automatically when your phone boots. Unlock — you are already in Linux.

Tier 03

ApophisOS Platform

APOPHIS LAUNCHER  ·  APOPHIS TERMINAL  ·  NO GUI REQUIRED

Not every phone can handle a full desktop environment — and that should not be a barrier to Linux sovereignty. ApophisOS Platform brings the core Apophis experience to lower-end Android devices through a custom launcher and a custom terminal, without the overhead of a full GUI.

The Apophis Launcher replaces your Android home screen with a privacy-focused, minimal interface. The Apophis Terminal gives you direct access to a full Linux command line. Together they deliver a genuinely different kind of phone — one that is yours.

🚀

Apophis Launcher

Custom Android launcher with grayscale toggle, app timers, mindful pause, and focus schedules. No Google dependencies.

⌨️

Apophis Terminal

Full Linux command line access via a custom-built terminal. Real tools, real shell, real Linux — no desktop required.

📱

Low-End Device Support

Designed for phones that cannot run a full GUI. If it runs Android 8.1+ and has 2GB RAM, it runs Platform.

🔒

Privacy by Default

No telemetry. No tracking. No big tech dependencies. ADB-managed, rootless where possible.

⏱️

Digital Wellbeing Tools

Built-in app timers, focus blocks, and screen time management. Your phone works for you, not the other way around.

🛠️

No Root Required

Fully ADB-managed install. No bootloader unlock needed. Works on locked-down carrier devices.

Buy a Ready-to-Go Device

Don't want to build it yourself? Browse the GigLife Gaming store on eBay — phones, tablets, and laptops with ApophisOS pre-installed and ready to go out of the box.

Browse eBay Store

Questions about which tier is right for your device?

Ask on WhatsApp

ApophisOS — Is It Mobile Linux?

You Decide.

The mobile Linux space is full of fascinating projects taking very different paths to the same destination. Here is an honest look at how ApophisOS fits into that conversation — and why we think the question itself is more interesting than the answer.

What do we all agree on?

Before anything else — a hat tip. Projects like postmarketOS, Ubuntu Touch, and Sailfish OS are doing genuinely impressive work. Mainlining drivers, building telephony stacks from scratch, and pushing manufacturers toward openness takes real dedication. The mobile Linux community as a whole is moving in a great direction.

ApophisOS comes at the same problem from a different angle — not better or worse, just different. And that difference raises an interesting question worth exploring together: what actually makes something a mobile Linux platform?

Here is where everyone agrees, regardless of project: every major mobile Linux effort — including ApophisOS — runs on the Linux kernel. On most devices, that means the Android Linux kernel. That part of the debate was settled a long time ago.


One rule that everyone respects.

"The biggest thing any program can do is not the technical details — it's how useful the program is to users. Any time any program breaks the user experience, that's the absolute worst failure a software project can make." — Linus Torvalds

Linus has enforced this rule — don't break userspace — more consistently than almost any other principle in open source. It is not about ideology. It is about the user sitting in front of the machine, trying to get something done.

ApophisOS takes this seriously as a design goal. The Apophis Terminal and Plasma Lite environment sit on top of a fully functional Android userspace — calls, texts, 5G, audio, Bluetooth — all of it intact. Nothing is broken in service of architectural purity. The phone still works like a phone, and the Linux environment runs alongside it without conflict.

That is a philosophical choice, not a criticism of projects that make different tradeoffs. Every approach has genuine merit.


How everyone handles the blob problem.

Here is something worth understanding about how mobile Linux projects actually work under the hood — because the approach is more similar across projects than it might appear from the outside.

// Ubuntu Touch & Sailfish — via Halium / libhybris
› Android base flashed to device first
› libhybris bridges Android hardware blobs to glibc Linux userspace
› Android daemons run in a managed container alongside Linux
› Linux environment layered on top with its own init (systemd)

// ApophisOS — direct approach
› Android kernel and HAL are the foundation — used directly
› Apophis Terminal provides native Linux userspace via root packages
› Plasma Lite delivers a full desktop environment over X11
› Hardware blobs accessed natively — no translation layer needed

Both approaches are using Android's vendor hardware blobs to make the device work — that is not a knock on anyone, it is just the reality of the hardware ecosystem we are all working in. The difference is mainly in how that bridge is constructed. libhybris is an elegant piece of engineering. ApophisOS skips the bridge and builds natively on what is already there.

Neither is the "right" way. They are both interesting solutions to the same hard problem.


Different paths, same destination.

Feature ApophisOS Ubuntu Touch postmarketOS
Linux kernel ✓ Android Linux ✓ Android Linux ✓ Mainline preferred
Hardware blob access ✓ Direct via root ~ Via libhybris shim ~ Mainline drivers where available
Voice & SMS ✓ Native Android stack ~ Device dependent ~ Variable by port
5G / LTE ✓ Full modem stack ~ Varies by port ~ Limited on most devices
Desktop environment ✓ Plasma Lite ✓ Lomiri / Unity 8 ✓ Phosh / Plasma / GNOME
Terminal environment ✓ Apophis Terminal ~ Available ✓ Full Alpine/apk
Security / pentest tools ✓ 23-tool native suite ~ Not a focus ~ Available via apk
Daily driver hardware ✓ Full — no compromises ~ Most things work ~ Varies significantly

The table tells a nuanced story. Ubuntu Touch and postmarketOS have broader device coverage and a more traditional Linux init stack — genuine strengths. ApophisOS has zero hardware compromises and a native security toolset. These are different priorities, not a ranking.


ApophisOS against four simple criteria.

Here is one way to frame the "is it mobile Linux" question. Four criteria — drawn from how Linus himself talks about what Linux is and what it should do.

Does it run natively on the Linux kernel?

Yes. The Android kernel is the Linux kernel. ApophisOS runs directly on it with full system call access and root-level process management — no virtualization, no emulation layer.

Does it provide access to all hardware services?

Yes. Radio, modem, audio, Bluetooth, camera, sensors, GPU — everything works, accessed through the vendor HAL directly. No hardware capabilities are sacrificed.

Does it respect and preserve userspace?

Yes. The Apophis Terminal and Plasma Lite layer coexist with the Android userspace rather than replacing it. Nothing existing breaks. Linus' golden rule: honored.

Does it make the user more capable without compromise?

That is the goal. A full desktop environment, a native security toolkit, sustained compute workloads, and verified multi-day uptime — on a device that still makes calls and sends texts without missing a beat.


Where ApophisOS stands differently.

🔩

The hardware manufacturer situation affects everyone equally

Proprietary hardware drivers are a challenge for every mobile Linux project. postmarketOS pursues mainlining. Ubuntu Touch uses libhybris. ApophisOS accepts the current hardware reality and builds fully on top of it. All three are valid responses to the same upstream problem.

🧩

The "blob" question applies broadly across the space

Every project using Halium or libhybris is, by definition, depending on Android hardware blobs. That is not a criticism — it is what makes mobile Linux work on real hardware today. ApophisOS does the same thing, just without the translation layer in between.

⚖️

Coexisting with Android vs. replacing it is a real distinction

Ubuntu Touch and postmarketOS replace the Android userspace — a meaningful architectural statement. ApophisOS coexists with Android's userspace. Whether that is "still Linux" or "Linux on Android" is a genuinely interesting question and reasonable people land in different places.

🖥️

The user experience is the part that is hard to argue with

Whatever label you put on it, the experience is real: a full desktop environment via Plasma Lite, a native terminal, a 23-tool security suite, and a device that functions perfectly as a daily driver. The philosophical debate is interesting. The working device is the point.


So — is it mobile Linux?

ApophisOS runs on the Linux kernel. It respects userspace. It delivers a full Linux desktop and terminal environment on a fully functional mobile device. It uses Android's hardware layer the same way Ubuntu Touch uses libhybris — just more directly.

Is that a mobile Linux distro? A mobile Linux platform? A Linux environment on mobile? The lines are genuinely blurry — and we think that is fine. The mobile Linux space is young, creative, and still figuring out its own definitions.

We will keep building. You decide what to call it.

Built on Linux. Built for people who use it.

A privacy-first, Linux-native mobile platform. No compromises on hardware. No broken userspace. Just a device that works — and a desktop that means it.

Help & Support

Troubleshooting · Fixes · Contact

Common issues and fixes for both the paid ApophisOS APK and the free Termux tier. If you can't find your answer here, tap the WhatsApp button at the bottom and message directly.

Paid APK Issues

APK won't install — "App not installed"

Enable unknown sources first: Settings → Security → Install unknown apps → allow your file manager or browser. Then try installing again.

If it still fails, uninstall any previous version first:

adb uninstall com.termuxCOPY
App crashes immediately on launch

Go to Settings → Apps → ApophisOS → Battery → Unrestricted. The OS is killing the app before it can start. After setting to Unrestricted, force stop and relaunch.

Rootfs download stuck or failed

Make sure you are on WiFi — mobile data is often too slow. Force stop the app, reopen it, and the download will resume. If it still fails:

adb shell pm clear com.termuxCOPY

Then relaunch — it will re-download the rootfs fresh.

Plasma desktop won't start — black screen

Long-press the Display button in the orb menu and make sure your start script is exactly:

PLASMA_PLATFORM=tablet dbus-launch --exit-with-session startplasma-wayland > /dev/null 2>&1 &COPY
Plasma starts but crashes after a few seconds

Run this inside the terminal to update all packages:

pacman -Syu --noconfirmCOPY

Then try launching again. Outdated packages are the most common cause of Plasma crashes.

pacman "unable to lock database" error
rm -f /var/lib/pacman/db.lck pacman -SyuCOPY
Plasma desktop doesn't auto-start on boot

Go to Settings → Apps → ApophisOS → Battery → Unrestricted. Also make sure the app has been opened at least once manually first. Boot auto-start only activates after the first manual launch.

Chromium won't launch — sandbox error
sed -i 's|Exec=/usr/bin/chromium|Exec=/usr/bin/chromium --no-sandbox --disable-setuid-sandbox|g' /usr/share/applications/chromium.desktopCOPY
Keyboard types in wrong app or no keyboard appears

Install Hacker's Keyboard from the Play Store and set it as your default keyboard. It sends keystrokes directly to the Wayland compositor without Android's IME layer interfering.

Screen too small / everything tiny

Long-press Display in the orb menu and change the DPI value:

WAYLAND_DISPLAY=wayland-apophisos dbus-launch --exit-with-session startplasma-wayland > /tmp/plasma.log 2>&1 &COPY

Edit the start script and change -dpi 160 to -dpi 180 or -dpi 200. Higher = larger.


Free Tier Issues

Termux won't install — "App not installed"

Enable unknown sources: Settings → Security → Install unknown apps → allow your file manager. All three APKs (Terminal, X11, Boot) must come from the same download source.

termux-x11-nightly install fails — "Unable to locate package"

You must install x11-repo first before installing nightly. Run these in order:

pkg install -y x11-repoCOPY
pkg install -y termux-x11-nightly pulseaudio proot-distro wgetCOPY
proot-distro install fails or hangs

Make sure you're on WiFi. If it hangs, press Ctrl+C and run again — it will resume the download. If it fails repeatedly:

proot-distro remove debian proot-distro install debianCOPY
Desktop won't launch — black screen in X11

The X server lock file is stuck. Run this in Termux:

rm -f /tmp/.X0-lock /tmp/.X11-unix/X0COPY

Then run your start script again.

apt / apk / pacman lock error

Run this inside your distro:

# Debian / Ubuntu rm -f /var/lib/dpkg/lock-frontend /var/cache/apt/archives/lock apt update # Alpine rm -f /run/apk.lock apk update # Arch rm -f /var/lib/pacman/db.lck pacman -SyuCOPY
Chromium won't open from desktop menu

Run this inside your distro — replace chromium with chromium-browser if on Ubuntu or Fedora:

sed -i 's|Exec=/usr/bin/chromium|Exec=/usr/bin/chromium --no-sandbox --disable-setuid-sandbox|g' /usr/share/applications/chromium.desktopCOPY
Desktop auto-boot stopped working

Open Termux:Boot — tap it once to re-register it as a boot service. Then go to Settings → Apps → Termux, Termux:X11, Termux:Boot → Battery → Unrestricted on all three.

Forgot desktop user password
proot-distro login debian passwd apophisCOPY
Wrong commands showing in the setup guide

Make sure you tap your distro card in Step 3 before selecting a desktop in Step 4. The commands update based on which distro is selected. Look for the green "Selected distro: [name]" indicator above the desktop cards.


Message the Developer Directly

Can't find your fix here? Message me directly on WhatsApp — I built this thing, I know how to fix it. Real person, real help.

Message on WhatsApp

Or email redneckefhutton@gmail.com

ApophisOS Free

Native Termux · XFCE4 + Rofi · No Proot · No Cost

Full Linux desktop on any Android. Free forever. Native Termux build — no proot container. Follow all 30 phases in order.

▼ PRE-INSTALL — 4 APKs Required

All from F-Droid or GitHub only. Never Play Store.

AppSourceNotes
Termuxf-droid.orgBase terminal — F-Droid signed only
Termux:X11GitHub Actions — app-universal-debug.apkX11 display server
Termux:Bootf-droid.orgAuto-launch on device boot — open once after install
Termux:Widgetf-droid.orgHome screen tap shortcuts
WARNING: Never mix APK sources. All must be F-Droid or GitHub signed. Play Store Termux is outdated and breaks permissions. Open Termux:Boot at least once after install.
PHASE 01First Boot Setup
Run termux-setup-storage FIRST. Tap Allow when prompted. Without this, storage paths fail silently.
termux-setup-storage
pkg update -y && pkg upgrade -y
echo 'export DISPLAY=:0' > ~/.bashrc && echo 'export PULSE_SERVER=127.0.0.1' >> ~/.bashrc && source ~/.bashrc
› Creates .bashrc with DISPLAY and PULSE_SERVER set — required for all X11 apps to work
PHASE 02Add Repositories
pkg install x11-repo -y && pkg install tur-repo -y && pkg update -y
PHASE 03Core System Packages
PulseAudio is required for audio in Chromium (YouTube) and all X11 apps. dbus is required for xfce4-session. xorg-xrdb applies DPI settings.
pkg install termux-x11-nightly pulseaudio dbus xorg-xrdb -y
pkg install wget git unzip curl fastfetch -y
PHASE 04XFCE4 Desktop — Individual Packages Only
DO NOT install xfce4-goodies. It pulls parole → gst-libav → ffmpeg which has a broken build in current x11-repo and will break the install.
If you hit ffmpeg/parole dpkg error run this first:
dpkg --remove --force-remove-reinstreq ffmpeg gst-libav parole xfce4-goodies 2>/dev/null; apt-get clean && apt-get update
pkg install xfce4 -y
pkg install xfce4-terminal xfce4-taskmanager xfce4-pulseaudio-plugin -y
pkg install mousepad ristretto thunar-archive-plugin -y
pkg install rofi -y
› Rofi = full screen mobile app launcher. Replaces Whisker menu.
PHASE 05Icons + GPU Acceleration
pkg install papirus-icon-theme -y
pkg install virglrenderer-android -y
› virglrenderer = GPU acceleration for Snapdragon/Adreno — improves browser performance
rm -f $PREFIX/share/icons/Papirus-Dark/icon-theme.cache && gtk-update-icon-cache -f -t $PREFIX/share/icons/Papirus-Dark
PHASE 06Start Script — start-apophis.sh
Uses startxfce4 which handles the full XFCE4 session including WM, panel, desktop and touch input. PulseAudio TCP module enables YouTube/browser audio. Socket-check waits for X11 readiness — no fixed sleep.
Display scaling: The -dpi 180 flag is a starting point. After launch, pull down the Android notification panel → Termux:X11 → Output → Scaled → adjust per device. The X11 setting overrides -dpi and persists across reboots. No config changes needed between devices.
Block 1 — Kill existing + start PulseAudio
printf $'#!/data/data/com.termux/files/usr/bin/bash\npkill -f termux-x11 2>/dev/null\npkill xfce4-session 2>/dev/null\nsleep 1\npulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1\nexport XDG_RUNTIME_DIR=${TMPDIR}\nexport PULSE_SERVER=127.0.0.1\nexport DISPLAY=:0\n' > ~/start-apophis.sh
Block 2 — Start X11 + socket wait
printf $'termux-x11 :0 -dpi 180 >/dev/null &\nSOCKET="${TMPDIR}/.X11-unix/X0"\nCOUNT=0\nuntil [ -S "$SOCKET" ] || [ $COUNT -ge 30 ]; do\n  sleep 0.3\n  COUNT=$((COUNT + 1))\ndone\n' >> ~/start-apophis.sh
Block 3 — Launch activity + start XFCE4
printf $'am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity >/dev/null 2>&1\nsleep 2\ndbus-launch --exit-with-session startxfce4 &\nexit 0\n' >> ~/start-apophis.sh
chmod +x ~/start-apophis.sh && cat ~/start-apophis.sh
› Verify: pulseaudio TCP line present, startxfce4 at the end
PHASE 07Breeze-Dark GTK Theme
Verified folder names: The repo contains Breeze-gtk and Breeze-dark-gtk — NOT Breeze/Breeze-Dark. The cp commands rename them correctly.
mkdir -p $HOME/.local/share/themes && cd $TMPDIR && git clone --depth=1 https://github.com/dirruk1/gnome-breeze.git
cp -r $TMPDIR/gnome-breeze/Breeze-gtk $HOME/.local/share/themes/Breeze && cp -r $TMPDIR/gnome-breeze/Breeze-dark-gtk $HOME/.local/share/themes/Breeze-Dark && rm -rf $TMPDIR/gnome-breeze
ls $HOME/.local/share/themes/
› Expected: Breeze Breeze-Dark
cd ~
› Return to home directory before next phase.
PHASE 08xfwm4 Window Theme — Breeze-Dark
Creates xfwm4 theme matching Breeze-Dark. Dark title bars, red accent on active window, touch-friendly 32px title bar height.
mkdir -p $HOME/.local/share/themes/Breeze-Dark/xfwm4
Block 1 — Theme basics
printf $'title_font=Sans Bold 11\ntitle_size=32\nactive_text_color=#e74c3c\ninactive_text_color=#5a5470\nactive_color_1=#0d0d1c\nactive_color_2=#0d0d1c\ninactive_color_1=#07070f\ninactive_color_2=#07070f\nactive_border_color=#c0392b\ninactive_border_color=#1e1e3a\n' > $HOME/.local/share/themes/Breeze-Dark/xfwm4/themerc
Block 2 — Button and shadow settings
printf $'button_offset=2\nbutton_spacing=2\nfull_width_title=true\nshow_app_icon=true\nshadow_opacity=60\nshadow_delta_x=0\nshadow_delta_y=4\nshadow_delta_width=0\nshadow_delta_height=0\n' >> $HOME/.local/share/themes/Breeze-Dark/xfwm4/themerc
PHASE 09Fluent Cursor Theme
cd $TMPDIR && wget https://github.com/vinceliuice/Fluent-icon-theme/archive/refs/tags/2023-02-01.zip && unzip 2023-02-01.zip
mv $TMPDIR/Fluent-icon-theme-2023-02-01/cursors/dist-dark $PREFIX/share/icons/ && rm -rf $TMPDIR/Fluent-icon-theme-2023-02-01 $TMPDIR/2023-02-01.zip
cd ~
› Return to home directory before next phase.
PHASE 10Wallpaper — Dark Waves
mkdir -p ~/.config/xfce4 && wget -O ~/.config/xfce4/apophis-wall.png https://raw.githubusercontent.com/phoenixbyrd/Termux_XFCE/main/dark_waves.png
ls -lh ~/.config/xfce4/apophis-wall.png
› Should be ~300KB+. If only a few KB the download failed — re-run the wget.
PHASE 11Config Directories
mkdir -p ~/.config/xfce4/xfconf/xfce-perchannel-xml ~/.config/xfce4/panel ~/.config/rofi ~/.local/share/applications ~/Desktop ~/Downloads ~/Projects
PHASE 12GTK + xsettings via xfconf-query
Uses xfconf-query — one line per setting, no XML corruption possible. Sets Breeze-Dark theme, Papirus-Dark icons, dist-dark cursor, DPI 130.
xfconf-query -c xsettings -p /Net/ThemeName -s "Breeze-Dark" --create -t string
xfconf-query -c xsettings -p /Net/IconThemeName -s "Papirus-Dark" --create -t string
xfconf-query -c xsettings -p /Gtk/CursorThemeName -s "dist-dark" --create -t string
xfconf-query -c xsettings -p /Gtk/CursorThemeSize -s 32 --create -t int
xfconf-query -c xsettings -p /Xft/DPI -s 130 --create -t int
xfconf-query -c xsettings -p /Gtk/FontName -s "Sans 11" --create -t string
PHASE 13xfwm4 Mobile Config via xfconf-query
Configures xfwm4 for mobile. Breeze-Dark window theme, borderless maximize (full screen apps), touch-friendly title bar, smart window placement.
xfconf-query -c xfwm4 -p /general/theme -s "Breeze-Dark" --create -t string
xfconf-query -c xfwm4 -p /general/title_font -s "Sans Bold 11" --create -t string
xfconf-query -c xfwm4 -p /general/borderless_maximize -s true --create -t bool
› borderless_maximize = maximized windows fill full screen with no title bar (phone behavior)
xfconf-query -c xfwm4 -p /general/placement_ratio -s 100 --create -t int
xfconf-query -c xfwm4 -p /general/snap_to_windows -s false --create -t bool
xfconf-query -c xfwm4 -p /general/wrap_windows -s false --create -t bool
PHASE 14Desktop Config — No Icons + Wallpaper
Clean mobile desktop. No desktop icons. Dark waves wallpaper. Right-click desktop disabled (use panel launcher button instead).
xfconf-query -c xfce4-desktop -p /desktop-icons/style -s 0 --create -t int
› style=0 = no desktop icons
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorBuiltinDisplay/workspace0/image-path -s "$HOME/.config/xfce4/apophis-wall.png" --create -t string
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorBuiltinDisplay/workspace0/image-style -s 4 --create -t int
› image-style=4 = scaled/stretched to fill screen
PHASE 15XFCE4 Panel — Mobile Bottom Dock
Single bottom panel, 64px tall, dark background. Layout: [⛧ APOPHIS button → opens Rofi] + [Task switcher] + [Clock]. Configured via xfconf-query — no XML editing. Panel XML written separately for plugin layout.
Mobile launcher button: The ⛧ APOPHIS button is a standard XFCE4 launcher plugin set to run Rofi. One tap opens the full-screen app grid. This is your phone-style app drawer.
Step 1 — Panel position and size
xfconf-query -c xfce4-panel -p /panels -t int -s 1 --create --force-array
xfconf-query -c xfce4-panel -p /panels/panel-1/position -s "p=10;x=0;y=0" --create -t string
› p=10 = bottom-center spanning full width
xfconf-query -c xfce4-panel -p /panels/panel-1/size -s 64 --create -t uint
xfconf-query -c xfce4-panel -p /panels/panel-1/length -s 100 --create -t uint
xfconf-query -c xfce4-panel -p /panels/panel-1/position-locked -s true --create -t bool
xfconf-query -c xfce4-panel -p /panels/panel-1/background-style -s 1 --create -t int
xfconf-query -c xfce4-panel -p /panels/panel-1/background-rgba -t double -s 0.03 -t double -s 0.03 -t double -s 0.06 -t double -s 0.97 --create --force-array
Step 2 — Plugin IDs (1=launcher 2=sep 3=tasklist 4=sep 5=clock)
xfconf-query -c xfce4-panel -p /panels/panel-1/plugin-ids -t int -s 1 -t int -s 2 -t int -s 3 -t int -s 4 -t int -s 5 --create --force-array
Step 3 — Define plugins
xfconf-query -c xfce4-panel -p /plugins/plugin-1 -s "launcher" --create -t string && xfconf-query -c xfce4-panel -p /plugins/plugin-2 -s "separator" --create -t string && xfconf-query -c xfce4-panel -p /plugins/plugin-2/expand -s true --create -t bool
xfconf-query -c xfce4-panel -p /plugins/plugin-3 -s "tasklist" --create -t string && xfconf-query -c xfce4-panel -p /plugins/plugin-3/flat-buttons -s true --create -t bool && xfconf-query -c xfce4-panel -p /plugins/plugin-3/show-labels -s true --create -t bool
xfconf-query -c xfce4-panel -p /plugins/plugin-4 -s "separator" --create -t string && xfconf-query -c xfce4-panel -p /plugins/plugin-4/expand -s true --create -t bool && xfconf-query -c xfce4-panel -p /plugins/plugin-5 -s "clock" --create -t string
xfconf-query -c xfce4-panel -p /plugins/plugin-5/digital-format -s "%H:%M" --create -t string && xfconf-query -c xfce4-panel -p /plugins/plugin-5/show-seconds -s false --create -t bool
Step 4 — Launcher plugin desktop file reference
mkdir -p ~/.config/xfce4/panel/launcher-1
printf $'[Desktop Entry]\nName=\xe2\x9b\xa7 APOPHIS\nComment=Open App Launcher\nExec=rofi -show drun -show-icons\nIcon=gnome-search-tool\nType=Application\nCategories=System;\n' > ~/.config/xfce4/panel/launcher-1/apophis-launcher.desktop
› This is the ⛧ APOPHIS tap button in the panel that opens Rofi
PHASE 16Rofi — Full Screen Dark App Launcher
Full-screen dark icon grid. 4-column layout, 48px icons from Papirus-Dark, touch-sized tap targets, searchable. Launched by the panel button. ESC or tap outside to close.
Rofi base config
printf $'configuration {\n    modi: "drun,run";\n    show-icons: true;\n    icon-theme: "Papirus-Dark";\n    drun-display-format: "{name}";\n    terminal: "xfce4-terminal";\n    font: "Sans 12";\n    fullscreen: true;\n    hide-scrollbar: true;\n    sidebar-mode: false;\n}\n' > ~/.config/rofi/config.rasi
ApophisOS dark theme — Part 1
printf $'* {\n    bg: #080810;\n    bg-alt: #111120;\n    fg: #c8c8d8;\n    fg-alt: #5a5a6a;\n    accent: #c0392b;\n    accent2: #e74c3c;\n    background-color: transparent;\n    text-color: @fg;\n}\nwindow {\n    fullscreen: true;\n    background-color: @bg;\n    border: 0;\n    padding: 20px;\n}\n' > ~/.config/rofi/apophis.rasi
ApophisOS dark theme — Part 2
printf $'mainbox { background-color: transparent; children: [inputbar, listview]; spacing: 16px; }\ninputbar { background-color: @bg-alt; border-color: @accent; border: 1px; border-radius: 6px; padding: 12px 16px; children: [prompt, entry]; }\nprompt { background-color: transparent; text-color: @accent2; padding: 0 8px 0 0; }\nentry { background-color: transparent; text-color: @fg; cursor-color: @accent2; }\n' >> ~/.config/rofi/apophis.rasi
ApophisOS dark theme — Part 3 (grid layout)
printf $'listview { background-color: transparent; columns: 4; lines: 5; spacing: 8px; padding: 8px 0; fixed-height: false; scrollbar: false; }\nelement { background-color: @bg-alt; border-color: #1c1c2e; border: 1px; border-radius: 8px; padding: 16px 8px 12px; orientation: vertical; spacing: 6px; }\nelement selected { background-color: rgba(192,57,43,0.15); border-color: @accent; }\nelement-icon { size: 48px; horizontal-align: 0.5; }\nelement-text { horizontal-align: 0.5; text-color: @fg-alt; font: "Sans 9"; }\nelement selected element-text { text-color: @accent2; }\n' >> ~/.config/rofi/apophis.rasi
echo '@import "apophis.rasi"' >> ~/.config/rofi/config.rasi
PHASE 17GTK CSS
mkdir -p ~/.config/gtk-3.0 && printf $'.xfce4-panel { border-radius: 0px; }\n' > ~/.config/gtk-3.0/gtk.css
PHASE 18GTK2 + GTK3 Config Files
printf $'[Settings]\ngtk-theme-name=Breeze-Dark\ngtk-icon-theme-name=Papirus-Dark\ngtk-font-name=Sans 11\ngtk-cursor-theme-name=dist-dark\ngtk-cursor-theme-size=32\ngtk-application-prefer-dark-theme=1\n' > ~/.config/gtk-3.0/settings.ini
printf $'gtk-theme-name="Breeze-Dark"\ngtk-icon-theme-name="Papirus-Dark"\ngtk-font-name="Sans 11"\ngtk-cursor-theme-name="dist-dark"\ngtk-cursor-theme-size=32\n' > ~/.gtkrc-2.0
printf $'Xft.dpi: 130\nXft.antialias: 1\nXft.hinting: 1\nXft.hintstyle: hintfull\nXft.rgba: rgb\n' > ~/.Xresources
PHASE 19Fastfetch — ApophisOS Config
mkdir -p ~/.config/fastfetch
Apophis logo file
printf $'                    A\n                   A A\n                  A   A\n                 A     A\n                AAAAAAAAA\n               A         A\n              A           A\n\n             ~~~~~~~~~~~~~~~~~\n\n                PPPPPPPPP\n                P       P\n                P       P\n                PPPPPPPPP\n                P\n                P\n                P\n' > ~/.config/fastfetch/ap.txt
Fastfetch config
printf $'{\n  "logo": {\n    "type": "file",\n    "source": "~/.config/fastfetch/ap.txt",\n    "color": { "1": "red" }\n  },\n  "modules": [\n    "title","separator",\n    {"type":"os","format":"ApophisOS"},\n    "host","kernel","uptime","packages",\n    "shell","display","wm","terminal",\n    "cpu","memory","disk",\n    {"type":"custom","format":"PulseAudio TCP 127.0.0.1","key":"Audio"}\n  ]\n}\n' > ~/.config/fastfetch/config.jsonc
fastfetch
› Verify: ApophisOS branding, A/P logo in red, PulseAudio line visible
PHASE 20Browsers — Chromium + Firefox-Tor
Chromium = everyday browser, DuckDuckGo homepage, YouTube audio. Firefox = Tor/anonymous only. Both must be launched via wrapper scripts (Phase 24) that set PULSE_SERVER=127.0.0.1 for audio.
pkg install chromium firefox -y
PHASE 21Development Tools

code-oss

VS Code IDE

tur-repo

python3 + pip

Python runtime

main

nodejs + npm

JS runtime

main

golang

Go language

main

ruby

Ruby runtime

main

clang + make + cmake

C/C++ toolchain

main

neovim

Modern vim editor

main

git + gh

Version control

main

openssh + sqlite

SSH + database

main

tmux + perl

Multiplexer + Perl

main
pkg install code-oss -y
pkg install python python-pip nodejs golang ruby -y
pkg install clang make cmake neovim git gh openssh sqlite tmux perl -y
PHASE 22Security Tools — Verified Packages
Authorized use only. Only use on networks and systems you own or have explicit written permission to test.
Verified in Termux repos 2026: nmap (main), thc-hydra (tur), wireshark-qt (x11), netcat-openbsd (main), gobuster (main), ffuf (main), hashcat (main), whois+dnsutils+openssl (main), sqlmap (pip), metasploit (tur-hacking).

nmap

Network scanner

main ✅

thc-hydra

Login brute-force

tur-repo ✅

wireshark-qt

Packet capture GUI

x11-repo ✅

netcat-openbsd

TCP/UDP utility

main ✅

gobuster + ffuf

Dir/web fuzzing

main ✅

hashcat

Password cracker

main ✅

sqlmap

SQL injection

pip ✅

metasploit

Exploitation framework

tur-hacking ✅
pkg install nmap thc-hydra wireshark-qt netcat-openbsd gobuster ffuf hashcat whois dnsutils openssl -y
pip install sqlmap
pkg install metasploit -y
› metasploit is ~300MB — large download
PHASE 23Tor + proxychains + 14-Eyes Exclusion
Tor routes traffic only for apps explicitly sent through it via torsocks or proxychains-ng. The 14-Eyes ExcludeExitNodes config prevents exit through surveillance alliance nations. StrictNodes 1 enforces it.
14-Eyes nations excluded: US, UK, AU, CA, NZ (Five Eyes) + FR, DE, BE, IT, ES, NL, DK, NO, SE.
pkg install tor torsocks proxychains-ng -y
printf $'strict_chain\nproxy_dns\nquiet_mode\n[ProxyList]\nsocks5 127.0.0.1 9050\n' > $PREFIX/etc/proxychains.conf
mkdir -p $PREFIX/var/lib/tor && printf $'\nExcludeExitNodes {us},{gb},{au},{ca},{nz},{fr},{de},{be},{it},{es},{nl},{dk},{no},{se}\nExcludeNodes {us},{gb},{au},{ca},{nz},{fr},{de},{be},{it},{es},{nl},{dk},{no},{se}\nStrictNodes 1\n' >> $PREFIX/etc/tor/torrc
Tor start/stop/status scripts
printf $'#!/data/data/com.termux/files/usr/bin/bash\necho "[*] Starting Tor..."\ntor --RunAsDaemon 1 --PidFile $HOME/.tor.pid --DataDirectory $PREFIX/var/lib/tor\nsleep 4\npgrep -x tor && echo "[+] Tor running. SOCKS5: 127.0.0.1:9050" || echo "[-] Tor failed"\n' > ~/tor-start.sh && chmod +x ~/tor-start.sh
printf $'#!/data/data/com.termux/files/usr/bin/bash\npkill -x tor && echo "[+] Tor stopped." || echo "[-] Tor was not running."\n' > ~/tor-stop.sh && chmod +x ~/tor-stop.sh
printf $'#!/data/data/com.termux/files/usr/bin/bash\npgrep -x tor && echo "[+] Tor RUNNING" || echo "[-] Tor STOPPED"\n' > ~/tor-status.sh && chmod +x ~/tor-status.sh
bash ~/tor-start.sh && sleep 5 && torsocks curl -s https://check.torproject.org/api/ip
› Verify: IsTor:true in the output confirms Tor is routing traffic
PHASE 24App Launchers — .desktop Files with Audio
All apps that need audio must export PULSE_SERVER=127.0.0.1. These .desktop files appear in Rofi automatically. Chromium opens DuckDuckGo as homepage.
Block 1 — Chromium + Firefox-Tor
mkdir -p ~/.local/share/applications ; printf $'[Desktop Entry]\nName=Chromium\nExec=env PULSE_SERVER=127.0.0.1 chromium --homepage="https://duckduckgo.com" --no-sandbox\nIcon=chromium\nType=Application\nCategories=Network;WebBrowser;\n' > ~/.local/share/applications/chromium-apophis.desktop ; printf $'[Desktop Entry]\nName=Firefox (Tor)\nExec=env PULSE_SERVER=127.0.0.1 torsocks firefox\nIcon=firefox\nType=Application\nCategories=Network;WebBrowser;\n' > ~/.local/share/applications/firefox-tor.desktop
Block 2 — Terminal + Files + Audio Mixer
printf $'[Desktop Entry]\nName=Terminal\nExec=xfce4-terminal\nIcon=org.xfce.terminal\nType=Application\nCategories=System;\n' > ~/.local/share/applications/apophis-terminal.desktop ; printf $'[Desktop Entry]\nName=Files\nExec=thunar\nIcon=system-file-manager\nType=Application\nCategories=System;\n' > ~/.local/share/applications/apophis-files.desktop ; printf $'[Desktop Entry]\nName=Audio Mixer\nExec=pavucontrol\nIcon=multimedia-volume-control\nType=Application\nCategories=Audio;\n' > ~/.local/share/applications/apophis-audio.desktop
Block 3 — Tor Start + Tor Stop + Tor Status
printf $'[Desktop Entry]\nName=Tor Start\nExec=xfce4-terminal -e "bash ~/tor-start.sh"\nIcon=preferences-system-network\nType=Application\nCategories=System;\n' > ~/.local/share/applications/tor-start.desktop ; printf $'[Desktop Entry]\nName=Tor Stop\nExec=xfce4-terminal -e "bash ~/tor-stop.sh"\nIcon=preferences-system-network\nType=Application\nCategories=System;\n' > ~/.local/share/applications/tor-stop.desktop ; printf $'[Desktop Entry]\nName=Tor Status\nExec=xfce4-terminal -e "bash ~/tor-status.sh"\nIcon=preferences-system-network\nType=Application\nCategories=System;\n' > ~/.local/share/applications/tor-status.desktop
Block 4 — Security tools + register all
printf $'[Desktop Entry]\nName=Nmap\nExec=xfce4-terminal -e "nmap"\nIcon=applications-system\nType=Application\nCategories=System;Security;\n' > ~/.local/share/applications/nmap.desktop ; printf $'[Desktop Entry]\nName=Wireshark\nExec=env PULSE_SERVER=127.0.0.1 wireshark\nIcon=wireshark\nType=Application\nCategories=System;Security;\n' > ~/.local/share/applications/wireshark.desktop ; update-desktop-database ~/.local/share/applications/
PHASE 25Termux:Boot — Auto-Start on Device Boot
Requires Termux:Boot APK installed and opened at least once. Waits for Android to fully boot then launches ApophisOS automatically.
mkdir -p ~/.termux/boot && printf $'#!/data/data/com.termux/files/usr/bin/bash\ntermux-wake-lock\nuntil [ "$(getprop sys.boot_completed)" = "1" ]; do sleep 2; done\nsleep 3\nbash /data/data/com.termux/files/home/start-apophis.sh\n' > ~/.termux/boot/start-apophis-boot.sh && chmod +x ~/.termux/boot/start-apophis-boot.sh
cat ~/.termux/boot/start-apophis-boot.sh
› Verify: termux-wake-lock line present, start-apophis.sh path correct
PHASE 26Termux:Widget — Home Screen Shortcuts
Requires Termux:Widget APK installed. Long-press Android home screen → Widgets → Termux:Widget → tap to place. Each script = one tappable widget.
mkdir -p ~/.shortcuts && printf $'#!/data/data/com.termux/files/usr/bin/bash\nbash /data/data/com.termux/files/home/start-apophis.sh\n' > ~/.shortcuts/Launch-ApophisOS.sh && printf $'#!/data/data/com.termux/files/usr/bin/bash\nbash /data/data/com.termux/files/home/tor-start.sh\n' > ~/.shortcuts/Tor-Start.sh && printf $'#!/data/data/com.termux/files/usr/bin/bash\nbash /data/data/com.termux/files/home/tor-stop.sh\n' > ~/.shortcuts/Tor-Stop.sh && chmod +x ~/.shortcuts/*.sh
ls -la ~/.shortcuts/
PHASE 27Fix Phantom Process Killer — Android 12+
Required on Android 12+. Without this fix Termux:X11 gets killed randomly. Requires ADB from a PC or second device.
Manual ADB step — run from PC with USB debugging enabled:
Guide: github.com/EDLLT/TermuxDisablePhantomProcess
PHASE 28Battery Optimization Exemption
Manual step: Android Settings → Apps → Termux → Battery → Unrestricted. Repeat for Termux:X11 and Termux:Boot. Without this Android kills Termux mid-session.
Guide: dontkillmyapp.com
PHASE 29Storage Optimization
pkg clean && apt-get autoremove -y
mkdir -p ~/storage/shared/.apophis/cache/apt ~/storage/shared/.apophis/cache/pip ~/storage/shared/Projects
mkdir -p $PREFIX/var/cache/apt/archives && rm -rf $PREFIX/var/cache/apt/archives && ln -s ~/storage/shared/.apophis/cache/apt $PREFIX/var/cache/apt/archives
rm -rf ~/.cache/pip && ln -s ~/storage/shared/.apophis/cache/pip ~/.cache/pip
PHASE 30Launch ApophisOS Mobile Shell
bash ~/start-apophis.sh
Termux:X11 display scaling — per device: Pull down Android notification → Termux:X11 → Output → Scaled → adjust visually. Pointer → Direct Touch. The -dpi 180 flag stays unchanged. X11 overrides it and persists.
Run once inside xfce4-terminal after first launch:
gtk-update-icon-cache -f -t $PREFIX/share/icons/Papirus-Dark && update-desktop-database ~/.local/share/applications/
fastfetch
Audio test: Tap ☧ APOPHIS panel button → Chromium → YouTube → play video. If no audio run: pulseaudio --kill && pulseaudio --start then relaunch browser.

■ Source Reference — Verified 2026

ComponentMethodSource / Notes
TermuxAPKf-droid.org
Termux:X11APKGitHub Actions — app-universal-debug.apk
Termux:BootAPKf-droid.org — open once after install
Termux:WidgetAPKf-droid.org
XFCE4pkg install xfce4x11-repo — DO NOT install xfce4-goodies
rofipkg install rofix11-repo — full screen mobile launcher
pulseaudiopkg install pulseaudiomain — TCP module for browser audio
Breeze-Dark GTKgit clone + cpdirruk1/gnome-breeze — folders: Breeze-gtk / Breeze-dark-gtk
Fluent cursorwgetvinceliuice/Fluent-icon-theme tag 2023-02-01
Wallpaperwgetphoenixbyrd/Termux_XFCE — dark_waves.png
All XFCE4 settingsxfconf-queryPhases 12-15 — no XML editing needed
nmap / thc-hydra / wireshark-qtpkg installmain / tur-repo / x11-repo ✅
gobuster / ffuf / hashcatpkg installmain ✅
sqlmappip installPyPI ✅
metasploitpkg installtur-hacking ✅ ~300MB
tor + torsocks + proxychains-ngpkg installmain ✅
Phantom process fixADBEDLLT/TermuxDisablePhantomProcess