
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.
— Available Now —
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.
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.
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.
Complete apt-based rootfs. Install anything from the Ubuntu repos — no restrictions.
Real Wayland compositor. Proper windowed apps. Touch-optimized panel and full-screen app drawer.
Phone calls, SMS, camera, and GPS stay on Android. One swipe back, one swipe forward.
Runs entirely in userspace. No bootloader unlock, no warranty void, no flashing.
Full browser with PWA support via PWAsForFirefox. Install any web app directly to the desktop.
Plasma starts automatically when your phone boots. Unlock your phone, you're in Linux.
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.
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.
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.
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.
20+ years of professional experience. Designed for everyone. If you have a question, the person who built it is one tap away.
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 WhatsAppOr email redneckefhutton@gmail.com
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.
Signed release build. Includes Ubuntu 25.10 rootfs bootstrapper, KDE Plasma launcher, and auto-boot service.
Get ApophisOS — $4.99Purchase 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.
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.
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
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.
ⓘPrevents Android from killing ApophisOS in the background.
Long-press icon → ⓘ info → Battery → Unrestricted
Required for the ApophisOS overlay and floating taskbar to appear on top of the desktop.
Long-press icon → ⓘ info → Display over other apps → Allow
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.
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.
Two browsers — Falkon for general browsing, Chromium for PWAs from the Apophis App Store. Both require sandbox fixes to run inside proot.
Native KDE browser using QtWebEngine. Lightweight, touch-friendly, no snap.
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.
Long-press the orb → Display → paste → Done. This is the final step.
Two-finger swipe from the left edge toward the right. Two fingers are required to avoid triggering the Android back gesture.
Hold the Display button for ~1 second to open the script editor. A regular tap launches the session — long-press edits it.
Clear existing content and paste exactly:
Tap Display (regular tap). KDE Plasma desktop appears with taskbar and Falkon browser. First boot takes 20–40 seconds.
In Falkon: Settings → Configure Falkon → Search → set DuckDuckGo as default.
KDE Plasma on Ubuntu 25.10 — fully configured and ready to use.
All native apt packages — no snaps, no PPAs, no flatpaks. All work inside proot.
apt install commands one at a time. Each may take a few minutes depending on package size and connection speed.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.
The script runs automatically from start to finish — no input required. When it completes your desktop will be fully configured and populated with icons.
apt install.Should show QTWEBENGINE_DISABLE_SANDBOX=1. If not, repeat Phase 7.
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.
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.
Open http://localhost:8080 in Firefox and install from the toolbar.
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.
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 StoreQuestions about which tier is right for your device?
Ask on WhatsAppYou 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.
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.
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.
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.
› 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.
| 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.
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.
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.
Yes. Radio, modem, audio, Bluetooth, camera, sensors, GPU — everything works, accessed through the vendor HAL directly. No hardware capabilities are sacrificed.
Yes. The Apophis Terminal and Plasma Lite layer coexist with the Android userspace rather than replacing it. Nothing existing breaks. Linus' golden rule: honored.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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:
Then relaunch — it will re-download the rootfs fresh.
Long-press the Display button in the orb menu and make sure your start script is exactly:
Run this inside the terminal to update all packages:
Then try launching again. Outdated packages are the most common cause of Plasma crashes.
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.
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.
Long-press Display in the orb menu and change the DPI value:
Edit the start script and change -dpi 160 to -dpi 180 or -dpi 200. Higher = larger.
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.
You must install x11-repo first before installing nightly. Run these in order:
Make sure you're on WiFi. If it hangs, press Ctrl+C and run again — it will resume the download. If it fails repeatedly:
The X server lock file is stuck. Run this in Termux:
Then run your start script again.
Run this inside your distro:
Run this inside your distro — replace chromium with chromium-browser if on Ubuntu or Fedora:
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.
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.
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 WhatsAppOr email redneckefhutton@gmail.com
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.
All from F-Droid or GitHub only. Never Play Store.
| App | Source | Notes |
|---|---|---|
| Termux | f-droid.org | Base terminal — F-Droid signed only |
| Termux:X11 | GitHub Actions — app-universal-debug.apk | X11 display server |
| Termux:Boot | f-droid.org | Auto-launch on device boot — open once after install |
| Termux:Widget | f-droid.org | Home screen tap shortcuts |
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
pkg install x11-repo -y && pkg install tur-repo -y && pkg update -y
pkg install termux-x11-nightly pulseaudio dbus xorg-xrdb -y
pkg install wget git unzip curl fastfetch -y
dpkg --remove --force-remove-reinstreq ffmpeg gst-libav parole xfce4-goodies 2>/dev/null; apt-get clean && apt-get updatepkg 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
pkg install papirus-icon-theme -y
pkg install virglrenderer-android -y
rm -f $PREFIX/share/icons/Papirus-Dark/icon-theme.cache && gtk-update-icon-cache -f -t $PREFIX/share/icons/Papirus-Dark
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.shprintf $'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.shprintf $'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
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/
cd ~
mkdir -p $HOME/.local/share/themes/Breeze-Dark/xfwm4
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
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
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 ~
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
mkdir -p ~/.config/xfce4/xfconf/xfce-perchannel-xml ~/.config/xfce4/panel ~/.config/rofi ~/.local/share/applications ~/Desktop ~/Downloads ~/Projects
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
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
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
xfconf-query -c xfce4-desktop -p /desktop-icons/style -s 0 --create -t int
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
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
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
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
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
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
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.rasiprintf $'* {\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.rasiprintf $'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.rasiprintf $'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.rasiecho '@import "apophis.rasi"' >> ~/.config/rofi/config.rasi
mkdir -p ~/.config/gtk-3.0 && printf $'.xfce4-panel { border-radius: 0px; }\n' > ~/.config/gtk-3.0/gtk.cssprintf $'[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
mkdir -p ~/.config/fastfetch
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
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.jsoncfastfetch
pkg install chromium firefox -y
VS Code IDE
Python runtime
JS runtime
Go language
Ruby runtime
C/C++ toolchain
Modern vim editor
Version control
SSH + database
Multiplexer + Perl
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
Network scanner
Login brute-force
Packet capture GUI
TCP/UDP utility
Dir/web fuzzing
Password cracker
SQL injection
Exploitation framework
pkg install nmap thc-hydra wireshark-qt netcat-openbsd gobuster ffuf hashcat whois dnsutils openssl -y
pip install sqlmap
pkg install metasploit -y
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/torrcprintf $'#!/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
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
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
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
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/
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
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/
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
bash ~/start-apophis.sh
gtk-update-icon-cache -f -t $PREFIX/share/icons/Papirus-Dark && update-desktop-database ~/.local/share/applications/
fastfetch
pulseaudio --kill && pulseaudio --start then relaunch browser.| Component | Method | Source / Notes |
|---|---|---|
| Termux | APK | f-droid.org |
| Termux:X11 | APK | GitHub Actions — app-universal-debug.apk |
| Termux:Boot | APK | f-droid.org — open once after install |
| Termux:Widget | APK | f-droid.org |
| XFCE4 | pkg install xfce4 | x11-repo — DO NOT install xfce4-goodies |
| rofi | pkg install rofi | x11-repo — full screen mobile launcher |
| pulseaudio | pkg install pulseaudio | main — TCP module for browser audio |
| Breeze-Dark GTK | git clone + cp | dirruk1/gnome-breeze — folders: Breeze-gtk / Breeze-dark-gtk |
| Fluent cursor | wget | vinceliuice/Fluent-icon-theme tag 2023-02-01 |
| Wallpaper | wget | phoenixbyrd/Termux_XFCE — dark_waves.png |
| All XFCE4 settings | xfconf-query | Phases 12-15 — no XML editing needed |
| nmap / thc-hydra / wireshark-qt | pkg install | main / tur-repo / x11-repo ✅ |
| gobuster / ffuf / hashcat | pkg install | main ✅ |
| sqlmap | pip install | PyPI ✅ |
| metasploit | pkg install | tur-hacking ✅ ~300MB |
| tor + torsocks + proxychains-ng | pkg install | main ✅ |
| Phantom process fix | ADB | EDLLT/TermuxDisablePhantomProcess |