# mryouki/youkidex-android-desktop architecture

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

- Interactive diagram: https://gitdiagram.com/mryouki/youkidex-android-desktop
- Repository: https://github.com/mryouki/youkidex-android-desktop
- Video tour (about a minute): https://gitdiagram.com/mryouki/youkidex-android-desktop/video

## Overview

YoukiDEX is an Android desktop environment: users enable its overlay or launch the desktop, then open and manage apps through a dock, taskbar, and windowed desktop. The repository also contains a substantial video-wallpaper workflow, from gallery/editor configuration through persisted settings to video playback and GL rendering. README-documented capabilities include workshop sources, plugins, multi-user controls, casting, and privileged tools. Sampled code confirms key wallpaper, shell, plugin, and user-management responsibilities; wiring for several other features is inferred only at the subsystem level.

Main entry points: [`app/src/main/java/com/youki/dex/activities/LauncherActivity.kt`](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/LauncherActivity.kt) (Desktop launcher), [`app/src/main/java/com/youki/dex/livewallpaper/service/YoukiGLWallpaperService.kt`](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/service/YoukiGLWallpaperService.kt) (Wallpaper service), [`app/src/main/java/com/youki/dex/livewallpaper/data/WallpaperConfigRepository.kt`](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/data/WallpaperConfigRepository.kt) (Wallpaper configuration), [`app/src/main/java/com/youki/dex/server/ShellManager.kt`](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/server/ShellManager.kt) (Shell client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop experience"]
  node_main["Main entry<br/>[MainActivity.kt]"]
  node_onboard["Setup and permissions"]
  node_launcher["Desktop launcher"]
  node_secondary["Display launcher"]
  node_appdrawer["App drawer<br/>[AppAdapter.kt]"]
  node_taskbar["Dock and tasks<br/>[AppTaskAdapter.kt]"]
  node_widgets["Desktop widgets"]
end

subgraph group_wallpaper["Live wallpaper"]
  node_wallpaper_gallery["Wallpaper gallery<br/>[GalleryActivity.kt]"]
  node_wallpaper_editor["Wallpaper editor<br/>[EditorActivity.kt]"]
  node_wallpaper_config["Wallpaper configuration"]
  node_wallpaper_db[("Wallpaper database")]
  node_wallpaper_service["Wallpaper service"]
  node_video["Video playback<br/>[VideoEngine.kt]"]
  node_renderer["GL renderer"]
end

subgraph group_settings["Customization and content"]
  node_settingsui["Preferences"]
  node_workshop["Workshop browser"]
  node_sources[("Workshop sources")]
  node_plugins["Plugin management<br/>[PluginManager.kt]"]
end

subgraph group_system["System integrations"]
  node_multiuser["User management"]
  node_cast["Cast integration<br/>[CastManager.kt]"]
  node_shell["Shell client<br/>[ShellManager.kt]"]
  node_shizuku["Shizuku access<br/>[ShizukoManager.kt]"]
  node_root["Root access<br/>[RootManager.kt]"]
end

subgraph group_services["Runtime services"]
  node_qa["Isolated QA"]
end

node_user(("Android user"))
node_android(("Android system"))
node_castdevice(("Cast device"))

node_user -->|"opens"| node_main
node_main -->|"starts setup"| node_onboard
node_user -->|"opens desktop"| node_launcher
node_launcher -->|"browses apps"| node_appdrawer
node_launcher -->|"manages tasks"| node_taskbar
node_launcher -->|"uses displays"| node_secondary
node_launcher -->|"hosts widgets"| node_widgets
node_user -->|"customizes"| node_settingsui
node_user -->|"chooses video"| node_wallpaper_gallery
node_wallpaper_gallery -->|"edits selection"| node_wallpaper_editor
node_wallpaper_editor -->|"saves settings"| node_wallpaper_config
node_wallpaper_config -->|"persists"| node_wallpaper_db
node_wallpaper_service -->|"observes active config"| node_wallpaper_config
node_wallpaper_service -->|"prepares playback"| node_video
node_wallpaper_service -->|"updates and renders"| node_renderer
node_user -->|"browses sources"| node_workshop
node_workshop -->|"reads sources"| node_sources
node_user -->|"manages plugins"| node_plugins
node_user -->|"manages users"| node_multiuser
node_multiuser -->|"runs privileged commands"| node_shell
node_user -->|"casts desktop or media"| node_cast
node_cast -.->|"connects"| node_castdevice
node_shizuku -.->|"launches server"| node_shell
node_root -.->|"launches server"| node_shell
node_user -->|"runs self-test"| node_qa
node_android -->|"provides permissions"| node_onboard
node_android -->|"hosts desktop"| node_launcher
node_android -->|"hosts wallpaper"| node_wallpaper_service

click node_main "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/MainActivity.kt"
click node_onboard "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/onboarding/OnboardingActivity.kt"
click node_launcher "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/LauncherActivity.kt"
click node_secondary "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/SecondaryLauncherActivity.kt"
click node_appdrawer "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/adapters/AppAdapter.kt"
click node_taskbar "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/adapters/AppTaskAdapter.kt"
click node_widgets "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/DesktopWidgetManager.kt"
click node_settingsui "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/fragments/PreferencesFragment.kt"
click node_wallpaper_gallery "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/ui/gallery/GalleryActivity.kt"
click node_wallpaper_editor "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/ui/editor/EditorActivity.kt"
click node_wallpaper_config "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/data/WallpaperConfigRepository.kt"
click node_wallpaper_db "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/data/YoukiWallpaperDatabase.kt"
click node_wallpaper_service "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/service/YoukiGLWallpaperService.kt"
click node_video "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/engine/VideoEngine.kt"
click node_renderer "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/service/WallpaperGLEngine.kt"
click node_workshop "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/WorkshopSourcesActivity.kt"
click node_sources "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/workshop/data/WorkshopDatabase.kt"
click node_plugins "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/plugins/PluginManager.kt"
click node_multiuser "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/utils/MultiUserManager.kt"
click node_cast "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/cast/CastManager.kt"
click node_shell "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/server/ShellManager.kt"
click node_shizuku "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/utils/ShizukoManager.kt"
click node_root "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/utils/RootManager.kt"
click node_qa "https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/qa/QaTestOrchestrator.kt"

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_main,node_onboard,node_launcher,node_secondary,node_appdrawer,node_taskbar,node_widgets,node_user toneBlue
class node_wallpaper_gallery,node_wallpaper_editor,node_wallpaper_config,node_wallpaper_db,node_wallpaper_service,node_video,node_renderer toneAmber
class node_settingsui,node_workshop,node_sources,node_plugins toneMint
class node_multiuser,node_cast,node_shell,node_shizuku,node_root toneRose
class node_qa,node_android,node_castdevice toneIndigo
```

## Components

### Desktop experience

- [Main entry](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/MainActivity.kt): `app/src/main/java/com/youki/dex/activities/MainActivity.kt`
- [Setup and permissions](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/onboarding/OnboardingActivity.kt): `app/src/main/java/com/youki/dex/onboarding/OnboardingActivity.kt`
- [Desktop launcher](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/LauncherActivity.kt): `app/src/main/java/com/youki/dex/activities/LauncherActivity.kt`
- [Display launcher](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/SecondaryLauncherActivity.kt): `app/src/main/java/com/youki/dex/activities/SecondaryLauncherActivity.kt`
- [App drawer](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/adapters/AppAdapter.kt): `app/src/main/java/com/youki/dex/adapters/AppAdapter.kt`
- [Dock and tasks](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/adapters/AppTaskAdapter.kt): `app/src/main/java/com/youki/dex/adapters/AppTaskAdapter.kt`
- [Desktop widgets](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/DesktopWidgetManager.kt): `app/src/main/java/com/youki/dex/livewallpaper/DesktopWidgetManager.kt`

### Live wallpaper

- [Wallpaper gallery](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/ui/gallery/GalleryActivity.kt): `app/src/main/java/com/youki/dex/livewallpaper/ui/gallery/GalleryActivity.kt`
- [Wallpaper editor](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/ui/editor/EditorActivity.kt): `app/src/main/java/com/youki/dex/livewallpaper/ui/editor/EditorActivity.kt`
- [Wallpaper configuration](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/data/WallpaperConfigRepository.kt): `app/src/main/java/com/youki/dex/livewallpaper/data/WallpaperConfigRepository.kt`
- [Wallpaper database](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/data/YoukiWallpaperDatabase.kt): `app/src/main/java/com/youki/dex/livewallpaper/data/YoukiWallpaperDatabase.kt`
- [Wallpaper service](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/service/YoukiGLWallpaperService.kt): `app/src/main/java/com/youki/dex/livewallpaper/service/YoukiGLWallpaperService.kt`
- [Video playback](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/engine/VideoEngine.kt): `app/src/main/java/com/youki/dex/livewallpaper/engine/VideoEngine.kt`
- [GL renderer](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/livewallpaper/service/WallpaperGLEngine.kt): `app/src/main/java/com/youki/dex/livewallpaper/service/WallpaperGLEngine.kt`

### Customization and content

- [Preferences](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/fragments/PreferencesFragment.kt): `app/src/main/java/com/youki/dex/fragments/PreferencesFragment.kt`
- [Workshop browser](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/activities/WorkshopSourcesActivity.kt): `app/src/main/java/com/youki/dex/activities/WorkshopSourcesActivity.kt`
- [Workshop sources](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/workshop/data/WorkshopDatabase.kt): `app/src/main/java/com/youki/dex/workshop/data/WorkshopDatabase.kt`
- [Plugin management](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/plugins/PluginManager.kt): `app/src/main/java/com/youki/dex/plugins/PluginManager.kt`

### System integrations

- [User management](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/utils/MultiUserManager.kt): `app/src/main/java/com/youki/dex/utils/MultiUserManager.kt`
- [Cast integration](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/cast/CastManager.kt): `app/src/main/java/com/youki/dex/cast/CastManager.kt`
- [Shell client](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/server/ShellManager.kt): `app/src/main/java/com/youki/dex/server/ShellManager.kt`
- [Shizuku access](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/utils/ShizukoManager.kt): `app/src/main/java/com/youki/dex/utils/ShizukoManager.kt`
- [Root access](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/utils/RootManager.kt): `app/src/main/java/com/youki/dex/utils/RootManager.kt`

### Runtime services

- [Isolated QA](https://github.com/mryouki/youkidex-android-desktop/blob/main/app/src/main/java/com/youki/dex/qa/QaTestOrchestrator.kt): `app/src/main/java/com/youki/dex/qa/QaTestOrchestrator.kt`

### Other components

- **Android user**
- **Android system**
- **Cast device**

## Connections

- Android user → Main entry: opens
- Main entry → Setup and permissions: starts setup
- Android user → Desktop launcher: opens desktop
- Desktop launcher → App drawer: browses apps
- Desktop launcher → Dock and tasks: manages tasks
- Desktop launcher → Display launcher: uses displays
- Desktop launcher → Desktop widgets: hosts widgets
- Android user → Preferences: customizes
- Android user → Wallpaper gallery: chooses video
- Wallpaper gallery → Wallpaper editor: edits selection
- Wallpaper editor → Wallpaper configuration: saves settings
- Wallpaper configuration → Wallpaper database: persists
- Wallpaper service → Wallpaper configuration: observes active config
- Wallpaper service → Video playback: prepares playback
- Wallpaper service → GL renderer: updates and renders
- Android user → Workshop browser: browses sources
- Workshop browser → Workshop sources: reads sources
- Android user → Plugin management: manages plugins
- Android user → User management: manages users
- User management → Shell client: runs privileged commands
- Android user → Cast integration: casts desktop or media
- Cast integration → Cast device: connects
- Shizuku access → Shell client: launches server
- Root access → Shell client: launches server
- Android user → Isolated QA: runs self-test
- Android system → Setup and permissions: provides permissions
- Android system → Desktop launcher: hosts desktop
- Android system → Wallpaper service: hosts wallpaper
