# langshiyunyi/dynamicislandtweak architecture

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

- Interactive diagram: https://gitdiagram.com/langshiyunyi/dynamicislandtweak
- Repository: https://github.com/langshiyunyi/dynamicislandtweak
- Video tour (about a minute): https://gitdiagram.com/langshiyunyi/dynamicislandtweak/video

## Overview

DynamicIslandTweak is a jailbroken-iOS SpringBoard tweak that overlays a Dynamic Island-style view for now-playing media and notification banners. Its main flow is platform media/notification events into the Logos hook, through the display manager’s priority and timer state, and into the overlay UI; user gestures travel back through the manager for playback and dismissal actions. A separate Settings preference bundle saves configuration and signals live reloads. The README documents additional UI states, media controls, localization, and preference options; wiring details not shown in sampled source are limited to documented relationships.

Main entry points: [`Tweak/Tweak.x`](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/Tweak.x) (Runtime hooks), [`Tweak/DIDisplayManager.m`](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIDisplayManager.m) (Display manager), [`Tweak/DIContentView.m`](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIContentView.m) (Island content UI), [`Prefs/DIRootListController.m`](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Prefs/DIRootListController.m) (Settings controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["SpringBoard runtime"]
  node_hook["Runtime hooks<br/>[Tweak.x]"]
  node_manager["Display manager<br/>[DIDisplayManager.m]"]
end

subgraph group_overlay["Overlay interface"]
  node_window["Overlay window<br/>[DIWindow.m]"]
  node_view["Island content UI<br/>[DIContentView.m]"]
  node_localization["UI localization<br/>[DILocalization.m]"]
end

subgraph group_preferences["Preferences"]
  node_prefs_controller["Settings controller"]
  node_prefs_spec["Preference definitions<br/>[Root.plist]"]
  node_prefs_store[("Preference values")]
end

subgraph group_platform["iOS services"]
  node_mediaremote["MediaRemote"]
  node_notification_center["Notification system"]
  node_darwin_notify["Darwin notifications"]
end

node_springboard(("SpringBoard"))
node_user(("Device user"))

node_springboard -->|"loads tweak"| node_hook
node_hook -->|"queries / controls"| node_mediaremote
node_mediaremote -->|"provides playback"| node_hook
node_notification_center -->|"triggers hooks"| node_hook
node_hook -->|"forwards events"| node_manager
node_manager -->|"manages display"| node_window
node_window -->|"hosts view"| node_view
node_view -->|"sends gestures"| node_manager
node_manager -->|"sends media commands"| node_mediaremote
node_user -->|"interacts"| node_view
node_prefs_controller -->|"renders settings"| node_prefs_spec
node_prefs_controller -->|"saves preferences"| node_prefs_store
node_prefs_controller -->|"posts change"| node_darwin_notify
node_darwin_notify -->|"signals reload"| node_hook
node_hook -->|"reloads preferences"| node_manager
node_view -->|"looks up strings"| node_localization

click node_hook "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/Tweak.x"
click node_manager "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIDisplayManager.m"
click node_window "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIWindow.m"
click node_view "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIContentView.m"
click node_localization "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DILocalization.m"
click node_prefs_controller "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Prefs/DIRootListController.m"
click node_prefs_spec "https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Prefs/Resources/Root.plist"

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_hook,node_manager,node_user toneBlue
class node_window,node_view,node_localization toneAmber
class node_prefs_controller,node_prefs_spec,node_prefs_store toneMint
class node_mediaremote,node_notification_center,node_darwin_notify toneRose
class node_springboard toneIndigo
```

## Components

### SpringBoard runtime

- [Runtime hooks](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/Tweak.x): `Tweak/Tweak.x`
- [Display manager](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIDisplayManager.m): `Tweak/DIDisplayManager.m`

### Overlay interface

- [Overlay window](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIWindow.m): `Tweak/DIWindow.m`
- [Island content UI](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DIContentView.m): `Tweak/DIContentView.m`
- [UI localization](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Tweak/DILocalization.m): `Tweak/DILocalization.m`

### Preferences

- [Settings controller](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Prefs/DIRootListController.m): `Prefs/DIRootListController.m`
- [Preference definitions](https://github.com/langshiyunyi/dynamicislandtweak/blob/main/Prefs/Resources/Root.plist): `Prefs/Resources/Root.plist`
- **Preference values**

### iOS services

- **MediaRemote**
- **Notification system**
- **Darwin notifications**

### Other components

- **SpringBoard**
- **Device user**

## Connections

- SpringBoard → Runtime hooks: loads tweak
- Runtime hooks → MediaRemote: queries / controls
- MediaRemote → Runtime hooks: provides playback
- Notification system → Runtime hooks: triggers hooks
- Runtime hooks → Display manager: forwards events
- Display manager → Overlay window: manages display
- Overlay window → Island content UI: hosts view
- Island content UI → Display manager: sends gestures
- Display manager → MediaRemote: sends media commands
- Device user → Island content UI: interacts
- Settings controller → Preference definitions: renders settings
- Settings controller → Preference values: saves preferences
- Settings controller → Darwin notifications: posts change
- Darwin notifications → Runtime hooks: signals reload
- Runtime hooks → Display manager: reloads preferences
- Island content UI → UI localization: looks up strings
