How suz41/fishbowl works
Fishbowl is an Android ARM64 host and launcher for Jellyfin. The principal workflow is: a user opens the app, Fishbowl prepares its embedded runtime, starts the foreground server service, launches Jellyfin, and exposes the server to network clients for streaming. The UI also manages media paths, logs, settings, and diagnostics. The tree and excerpts directly support service orchestration, storage preferences, and the embedded Termux terminal layer; Jellyfin internals and some UI wiring are represented only where the README documents them.
Components 22
Fishbowl UI
- Main App UI
app/src/main/java/com/fishbowl/app/JellyfinDroidActivity.java - Logs UI
app/src/main/java/com/fishbowl/app/JellyfinLogsActivity.java - Settings UI
app/src/main/java/com/fishbowl/app/JellyfinSettingsActivity.java - Transcoding Diagnostics
app/src/main/java/com/fishbowl/app/TranscodingDiagnostics.java
Server Lifecycle
- Server Foreground Service
app/src/main/java/com/fishbowl/app/JellyfinServerService.java - Jellyfin Controller
app/src/main/java/com/fishbowl/app/JellyfinController.java - Runtime Bootstrapper
app/src/main/java/com/fishbowl/app/JellyfinBootstrapper.java
Media Integration
- Storage UI
app/src/main/java/com/fishbowl/app/JellyfinStorageActivity.java - Storage Preferences
app/src/main/java/com/fishbowl/app/JellyfinStorageActivity.java
Embedded Runtime
- Native Jellyfin Runtime
app/src/main/cpp/termux-bootstrap.c - Jellyfin Server Engine
app/src/main/java/com/fishbowl/app - SQLite Media Database
app/src/main/java/com/fishbowl/app - Jellyfin FFmpeg
app/src/main/java/com/fishbowl/app
Terminal Support
- Termux Service
app/src/main/java/com/termux/app/TermuxService.java - Shell Manager
termux-shared/src/main/java/com/termux/shared/termux/shell/TermuxShellManager.java - Terminal Sessions
termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java - Terminal Emulator
terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java - Terminal View
terminal-view/src/main/java/com/termux/view/TerminalView.java - Run Command API
app/src/main/java/com/termux/app/RunCommandService.java
Other components
- Device User
- Jellyfin Clients
- Android System
Connections 23
- Device User → Main App UI: opens app
- Main App UI → Server Foreground Service: starts server
- Server Foreground Service → Jellyfin Controller: starts or stops
- Jellyfin Controller → Runtime Bootstrapper: prepares runtime
- Runtime Bootstrapper → Native Jellyfin Runtime: extracts runtime
- Jellyfin Controller → Jellyfin Server Engine: launches server
- Jellyfin Server Engine → SQLite Media Database: reads and writes
- Jellyfin Server Engine → Jellyfin FFmpeg: runs transcoding
- Jellyfin Server Engine → Jellyfin Clients: streams media
- Server Foreground Service → Main App UI: publishes status
- Device User → Storage UI: manages media
- Storage UI → Storage Preferences: stores paths
- Storage UI → Jellyfin Server Engine: supplies paths
- Device User → Settings UI: opens settings
- Settings UI → Transcoding Diagnostics: runs diagnostics
- Main App UI → Logs UI: opens logs
- Android System → Server Foreground Service: hosts foreground service
- Termux Service → Shell Manager: manages shells
- Shell Manager → Terminal Sessions: tracks sessions
- Terminal Sessions → Terminal Emulator: feeds terminal
- Terminal Emulator → Terminal View: renders output
- Run Command API → Termux Service: dispatches command
- Native Jellyfin Runtime → Termux Service: uses shell host