# xodiosx/xodos architecture

> Architecture diagram of the GitHub repository xodiosx/xodos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xodiosx/xodos
- Repository: https://github.com/xodiosx/xodos

## Overview

XoDos is an Android terminal and desktop-emulation app combining Termux, an X server, and floating touch controls. The documented user flow is to install the XoDos system from Settings, then launch it and use Linux or Windows applications and games. The repository tree supports mapping the Android terminal/shell runtime, native X server, controller UI, and shortcut integrations. README-described guest operating systems, graphics drivers, and compatibility layers are grouped as a guest stack; their implementation is not shown in the sampled files.

Main entry points: [`app/src/main/java/com/termux/app/TermuxActivity.java`](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxActivity.java) (Termux activity), [`app/src/main/java/com/termux/app/terminal/FloatBallMenuClient.java`](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/terminal/FloatBallMenuClient.java) (Floating menu client), [`app/src/main/java/com/termux/app/TermuxService.java`](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxService.java) (Termux service), [`app/src/main/java/com/termux/app/RunCommandService.java`](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/RunCommandService.java) (Command service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_activity["Termux activity"]
  node_settings["Settings UI"]
  node_installer["System installer"]
  node_filemanager["File manager"]
end

subgraph group_shell["Terminal runtime"]
  node_bootstrap["Bootstrap support"]
  node_service["Termux service<br/>[TermuxService.java]"]
  node_shellmanager["Shell manager"]
  node_session["Terminal session<br/>[TermuxSession.java]"]
  node_emulator["Terminal emulator"]
  node_view["Terminal view<br/>[TerminalView.java]"]
end

subgraph group_desktop["Desktop and controls"]
  node_xserver["Native X server"]
  node_xcontroller["Input controller UI"]
  node_bindings["Controller bindings"]
  node_floatclient["Floating menu client"]
  node_floatmanager["Floating menu manager"]
end

subgraph group_integrations["App integrations"]
  node_commandservice["Command service"]
  node_widget["Shortcut controls"]
end

node_user(("User"))
node_guest["Linux and Wine guest"]

node_user -->|"opens install"| node_settings
node_settings -->|"starts install"| node_installer
node_installer -->|"uses bootstrap"| node_bootstrap
node_user -->|"launches app"| node_activity
node_activity -->|"starts sessions"| node_service
node_service -->|"manages shells"| node_shellmanager
node_shellmanager -->|"tracks sessions"| node_session
node_session -->|"runs terminal"| node_emulator
node_activity -->|"displays terminal"| node_view
node_view -->|"renders state"| node_emulator
node_guest -.->|"displays desktop"| node_xserver
node_user -->|"configures controls"| node_xcontroller
node_xcontroller -->|"loads and saves"| node_bindings
node_activity -->|"sets up controls"| node_floatclient
node_floatclient -->|"configures menu"| node_floatmanager
node_floatclient -->|"opens files"| node_filemanager
node_user -->|"requests command"| node_commandservice
node_commandservice -->|"dispatches execution"| node_service
node_user -->|"uses shortcuts"| node_widget
node_widget -->|"runs shortcut"| node_commandservice

click node_activity "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxActivity.java"
click node_settings "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/activities/SettingsActivity.java"
click node_installer "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxInstaller.java"
click node_bootstrap "https://github.com/xodiosx/xodos/blob/main/termux-shared/src/main/java/com/termux/shared/termux/TermuxBootstrap.java"
click node_service "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxService.java"
click node_shellmanager "https://github.com/xodiosx/xodos/blob/main/termux-shared/src/main/java/com/termux/shared/termux/shell/TermuxShellManager.java"
click node_session "https://github.com/xodiosx/xodos/blob/main/termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java"
click node_emulator "https://github.com/xodiosx/xodos/blob/main/terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java"
click node_view "https://github.com/xodiosx/xodos/blob/main/terminal-view/src/main/java/com/termux/view/TerminalView.java"
click node_xserver "https://github.com/xodiosx/xodos/tree/main/termux-x11/src/main/cpp/xserver"
click node_xcontroller "https://github.com/xodiosx/xodos/blob/main/termux-x11/src/main/java/com/termux/x11/controller/InputControllerActivity.java"
click node_bindings "https://github.com/xodiosx/xodos/tree/main/termux-x11/src/main/java/com/termux/x11/controller"
click node_floatclient "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/terminal/FloatBallMenuClient.java"
click node_floatmanager "https://github.com/xodiosx/xodos/blob/main/float-ball/src/main/java/com/termux/floatball/FloatBallManager.java"
click node_filemanager "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/XoDosFileManager.java"
click node_commandservice "https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/RunCommandService.java"
click node_widget "https://github.com/xodiosx/xodos/blob/main/wid/src/main/java/com/termux/widget/TermuxWidgetControlsProviderService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_settings,node_installer,node_filemanager,node_user toneBlue
class node_bootstrap,node_service,node_shellmanager,node_session,node_emulator,node_view toneAmber
class node_xserver,node_xcontroller,node_bindings,node_floatclient,node_floatmanager toneMint
class node_commandservice,node_widget toneRose
class node_guest toneIndigo
```

## Components

### Android app

- [Termux activity](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxActivity.java): `app/src/main/java/com/termux/app/TermuxActivity.java`
- [Settings UI](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/activities/SettingsActivity.java): `app/src/main/java/com/termux/app/activities/SettingsActivity.java`
- [System installer](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxInstaller.java): `app/src/main/java/com/termux/app/TermuxInstaller.java`
- [File manager](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/XoDosFileManager.java): `app/src/main/java/com/termux/app/XoDosFileManager.java`

### Terminal runtime

- [Bootstrap support](https://github.com/xodiosx/xodos/blob/main/termux-shared/src/main/java/com/termux/shared/termux/TermuxBootstrap.java): `termux-shared/src/main/java/com/termux/shared/termux/TermuxBootstrap.java`
- [Termux service](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/TermuxService.java): `app/src/main/java/com/termux/app/TermuxService.java`
- [Shell manager](https://github.com/xodiosx/xodos/blob/main/termux-shared/src/main/java/com/termux/shared/termux/shell/TermuxShellManager.java): `termux-shared/src/main/java/com/termux/shared/termux/shell/TermuxShellManager.java`
- [Terminal session](https://github.com/xodiosx/xodos/blob/main/termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java): `termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java`
- [Terminal emulator](https://github.com/xodiosx/xodos/blob/main/terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java): `terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java`
- [Terminal view](https://github.com/xodiosx/xodos/blob/main/terminal-view/src/main/java/com/termux/view/TerminalView.java): `terminal-view/src/main/java/com/termux/view/TerminalView.java`

### Desktop and controls

- [Native X server](https://github.com/xodiosx/xodos/tree/main/termux-x11/src/main/cpp/xserver): `termux-x11/src/main/cpp/xserver`
- [Input controller UI](https://github.com/xodiosx/xodos/blob/main/termux-x11/src/main/java/com/termux/x11/controller/InputControllerActivity.java): `termux-x11/src/main/java/com/termux/x11/controller/InputControllerActivity.java`
- [Controller bindings](https://github.com/xodiosx/xodos/tree/main/termux-x11/src/main/java/com/termux/x11/controller): `termux-x11/src/main/java/com/termux/x11/controller`
- [Floating menu client](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/terminal/FloatBallMenuClient.java): `app/src/main/java/com/termux/app/terminal/FloatBallMenuClient.java`
- [Floating menu manager](https://github.com/xodiosx/xodos/blob/main/float-ball/src/main/java/com/termux/floatball/FloatBallManager.java): `float-ball/src/main/java/com/termux/floatball/FloatBallManager.java`

### App integrations

- [Command service](https://github.com/xodiosx/xodos/blob/main/app/src/main/java/com/termux/app/RunCommandService.java): `app/src/main/java/com/termux/app/RunCommandService.java`
- [Shortcut controls](https://github.com/xodiosx/xodos/blob/main/wid/src/main/java/com/termux/widget/TermuxWidgetControlsProviderService.java): `wid/src/main/java/com/termux/widget/TermuxWidgetControlsProviderService.java`

### Other components

- **User**
- **Linux and Wine guest**

## Connections

- User → Settings UI: opens install
- Settings UI → System installer: starts install
- System installer → Bootstrap support: uses bootstrap
- User → Termux activity: launches app
- Termux activity → Termux service: starts sessions
- Termux service → Shell manager: manages shells
- Shell manager → Terminal session: tracks sessions
- Terminal session → Terminal emulator: runs terminal
- Termux activity → Terminal view: displays terminal
- Terminal view → Terminal emulator: renders state
- Linux and Wine guest → Native X server: displays desktop
- User → Input controller UI: configures controls
- Input controller UI → Controller bindings: loads and saves
- Termux activity → Floating menu client: sets up controls
- Floating menu client → Floating menu manager: configures menu
- Floating menu client → File manager: opens files
- User → Command service: requests command
- Command service → Termux service: dispatches execution
- User → Shortcut controls: uses shortcuts
- Shortcut controls → Command service: runs shortcut
