|
| 1 | +# TronBrowser on Ubuntu Touch (click) |
| 2 | + |
| 3 | +Packages the noarch TronBrowser launcher as an Ubuntu Touch **click** app so it |
| 4 | +appears in the app grid and opens `http(s)` links. |
| 5 | + |
| 6 | +## The honest constraint (read this first) |
| 7 | + |
| 8 | +Ubuntu Touch **confines** click apps under AppArmor and ships the Morph/Oxide |
| 9 | +web engine — **not** a desktop Chromium. Running the *real* Ungoogled Chromium |
| 10 | +(the whole point of TronBrowser, incl. `--tor`) therefore needs a **Libertine** |
| 11 | +container, where a normal `chromium` is installed and driven by the bundled |
| 12 | +`tron` shim. This is the same full-parity engine as the desktop build — it just |
| 13 | +runs inside Libertine rather than under strict confinement. |
| 14 | + |
| 15 | +Because Chromium-in-Libertine needs an `unconfined` AppArmor profile |
| 16 | +(`tronbrowser.apparmor`), this click is intended for **sideloading / the |
| 17 | +OpenStore "unconfined" track**, not the confined default. See |
| 18 | +[`../../docs/mobile-architecture.md`](../../docs/mobile-architecture.md) (Track 2). |
| 19 | + |
| 20 | +## One-time device setup (Libertine) |
| 21 | + |
| 22 | +In the Terminal app or over `adb shell`: |
| 23 | + |
| 24 | +```bash |
| 25 | +libertine-container-manager create -i tron -n TronBrowser -t chroot |
| 26 | +libertine-container-manager install-package -i tron -p chromium |
| 27 | +``` |
| 28 | + |
| 29 | +The wrapper (`tronbrowser-ut`) then runs `libertine-launch -i tron tron <url>`. |
| 30 | +Override the container id with `TRONBROWSER_LIBERTINE_ID`. |
| 31 | + |
| 32 | +## Build the click |
| 33 | + |
| 34 | +```bash |
| 35 | +# 1) produce the noarch tarball (once) |
| 36 | +bash apps/desktop/scripts/build-release.sh v3.7.2 linux |
| 37 | +# 2) stage + build the click (arm64 default; also armhf/amd64) |
| 38 | +bash distribution/ubuntu-touch/build.sh v3.7.2 arm64 |
| 39 | +``` |
| 40 | + |
| 41 | +`build.sh` stages `install/` and, if [Clickable](https://clickable-ut.dev) (or |
| 42 | +the raw `click` tool) is installed, emits a `.click` into `dist/`. Without a |
| 43 | +builder it leaves the validated `install/` tree. |
| 44 | + |
| 45 | +## Install on device |
| 46 | + |
| 47 | +```bash |
| 48 | +clickable install --arch arm64 # from this dir, device in dev mode |
| 49 | +# or push the .click and: pkcon install-local --allow-untrusted dist/*.click |
| 50 | +``` |
| 51 | + |
| 52 | +## Files |
| 53 | + |
| 54 | +- `manifest.json` — click manifest (`@CLICK_ARCH@` + version filled by build.sh). |
| 55 | +- `tronbrowser.apparmor` — `unconfined` (required for Chromium-in-Libertine). |
| 56 | +- `tronbrowser.desktop` — app-grid entry (`Exec=tronbrowser-ut %u`). |
| 57 | +- `tronbrowser-ut` — entry wrapper: `libertine-launch` → bundled `tron`. |
| 58 | +- `clickable.yaml` — Clickable `pure` builder config. |
0 commit comments