|
3 | 3 |
|
4 | 4 |  |
5 | 5 |  |
| 6 | +[](https://t.me/dpis_chat) |
6 | 7 |
|
7 | | -[中文说明](./README.md) | English |
| 8 | +Go to the [Main Repository](https://github.com/Kwensiu/DPIS) |
8 | 9 |
|
9 | | -DPIS is an LSPosed/Xposed-based Android module for per-app display tuning (`virtual width + font size`) without changing global system display settings. |
| 10 | +[中文说明](../README.md) | English |
10 | 11 |
|
11 | | -## Core Capabilities |
| 12 | +DPIS is an LSPosed/Xposed-based Android module for per-app interface scale, smallest width, and font size tuning. It is useful when you want specific apps to appear larger, smaller, or closer to a tablet-style layout without changing the global system display settings. |
12 | 13 |
|
13 | | -- Configure per-app virtual width (`dp`) |
14 | | -- Configure per-app font scale (`50-300%`) |
15 | | -- Both width and font support `Emulation` and `Replacement` modes |
16 | | -- App list search and filtering (`All apps` / `Configured apps`) |
17 | | -- System-layer hook toggle and safe mode |
| 14 | +## Main Features |
| 15 | + |
| 16 | +- Per-app interface scale, from `30-300%` |
| 17 | +- Per-app smallest width, for targeting a fixed `dp` width class |
| 18 | +- Per-app font scale, from `50-300%` |
| 19 | +- App search, configured-app filtering, and a landscape / large-screen detail panel |
| 20 | +- Global Prefill and Quick Templates for reusing common settings |
| 21 | +- Standard and Legacy builds for different LSPosed/Xposed environments |
18 | 22 |
|
19 | 23 | ## Requirements |
20 | 24 |
|
21 | | -- Android 8.0+ (`minSdk 26`) |
| 25 | +- Android 8.0 or later |
22 | 26 | - Rooted device |
23 | 27 | - LSPosed/Xposed installed and enabled |
24 | 28 |
|
25 | 29 | ## Quick Start |
26 | 30 |
|
27 | 31 | 1. Enable the DPIS module in LSPosed. |
28 | | -2. Select the target app in scope. In regular cases you do not need `system`. |
29 | | -3. Open DPIS and configure: |
30 | | - - Virtual width (`dp`) |
31 | | - - Font scale (`50-300%`) |
32 | | - - Width mode and font mode (`Emulation` / `Replacement`) |
33 | | -4. Save, then restart the target app process. Reboot the device if needed. |
34 | | - |
35 | | -If you use `Emulation`, also enable `system` scope in LSPosed. `Replacement` usually does not need it. |
36 | | - |
37 | | -## Modes |
38 | | - |
39 | | -| Mode | Characteristics | Best for | Notes | |
40 | | -| --- | --- | --- | --- | |
41 | | -| `Emulation` | Closer to native system behavior, usually more natural | System-like rendering consistency | Depends on system-layer hooks; some apps do not support it | |
42 | | -| `Replacement` | Direct field rewrite, more immediate | Most regular apps | May cause layout drift or scaling glitches | |
43 | | - |
44 | | -## System-Layer Hook and Safe Mode |
45 | | - |
46 | | -- `Off`: only uses in-process overrides for the target app. Recommended with `Replacement`. |
47 | | -- `On`: enables the full `system_server` path, useful for debugging and comparison. |
48 | | -- `On + Safe mode`: limits hooks to lower-risk entries (`activity-start`), recommended as the default. |
49 | | - |
50 | | -If you use `Emulation`, make sure LSPosed scope includes `system`. `Replacement` can usually work with only the target app selected. |
| 32 | +2. Select the target app in scope. |
| 33 | +3. Open DPIS, go to the app list, and choose the target app. |
| 34 | +4. Configure interface scale, smallest width, or font size. |
| 35 | +5. Save, then restart the target app for the configuration to take effect. |
51 | 36 |
|
52 | | -## Logs and Diagnostics |
| 37 | +Most users can keep the default strategy and only adjust interface scale or font size. Saving means DPIS has written the configuration, but the target app usually needs a process restart before it reads the new values. |
53 | 38 |
|
54 | | -- `Log output` is recommended off by default to reduce overhead. |
55 | | -- When enabled, high-frequency `system_server` entries are sampled and deduplicated. |
56 | | -- Font debug stats and overlay are diagnostic tools only and are not required for the normal apply path. |
| 39 | +## Configuration Tips |
57 | 40 |
|
58 | | -## Build and Test |
| 41 | +- To scale the whole app UI up or down, start with `Interface scale`. |
| 42 | +- To make an app use a tablet-like or fixed-width layout, use `Smallest width`. |
| 43 | +- To change only text size, adjust `Font size`. |
| 44 | +- If you are unsure which strategy to choose, keep `Auto`. |
| 45 | +- If the default path does not work or the app displays incorrectly, try `Compat`. |
| 46 | +- If you use system-layer behavior, also select the `system` scope in LSPosed. |
59 | 47 |
|
60 | | -```powershell |
61 | | -./gradlew :app:assembleModern101Debug :app:assembleCompat100Debug |
62 | | -./gradlew :app:testAllDebugUnitTests |
63 | | -``` |
| 48 | +When entering a small window, resizing it, or rotating the screen, DPIS tries to keep the app's scaling stable. Different apps handle window changes differently, so if the display looks wrong, restart the target app first. |
64 | 49 |
|
65 | | -Optional install commands (Windows PowerShell): |
| 50 | +## Templates and Prefill |
66 | 51 |
|
67 | | -```powershell |
68 | | -./gradlew :app:assembleModern101Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/modern101/debug/app-modern101-debug.apk" } |
69 | | -./gradlew :app:assembleCompat100Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/compat100/debug/app-compat100-debug.apk" } |
70 | | -``` |
| 52 | +- `Global Prefill` prepares draft values for apps that have not been configured yet. It does not modify existing app configurations. |
| 53 | +- `Quick Templates` save a full set of common values and apply them to multiple apps at once. |
| 54 | +- Applying a template in batch may overwrite existing target-app configurations. Check the confirmation dialog before applying. |
71 | 55 |
|
72 | | -## Project Structure |
73 | | - |
74 | | -```text |
75 | | -app/ Main Android module |
76 | | - src/main/java/ Shared production code |
77 | | - src/main/res/ Shared resources and UI |
78 | | - src/modern101/java/ libxposed API 101 specific code |
79 | | - src/compat100/java/ Legacy Xposed compatibility code |
80 | | - src/test/java/ Unit tests |
81 | | -docs/ Active documentation |
82 | | -docs/archive/ Historical archived documentation |
83 | | -refs/ Local references (LSPosed / AOSP / libxposed) |
84 | | -``` |
85 | | - |
86 | | -## Version Notes |
| 56 | +## Version Choice |
87 | 57 |
|
88 | 58 | | Variant | File name | Environment | |
89 | 59 | | --- | --- | --- | |
90 | 60 | | Standard | `DPIS_{version}.apk` | LSPosed (`libxposed API 101+`) | |
91 | 61 | | Legacy | `DPIS_{version}_legacy.apk` | Classic Xposed / frameworks without `libxposed API 101` support | |
92 | 62 |
|
93 | | -Both variants target the same user-facing feature set. The main differences are framework integration, download entry, and update behavior. Prefer the standard build and only use the legacy build when the standard one cannot load. |
94 | | - |
95 | | -For the legacy build, always follow the main repo Releases page. The LSPosed / Xposed module repository only syncs the standard APK. |
| 63 | +Prefer the Standard build. Use the Legacy build only when the Standard build cannot load or your framework does not support it. The two variants share the same package name and cannot be installed side by side. |
96 | 64 |
|
97 | | -The standard and legacy builds cannot coexist. They share the same package name, so cross-installing them overwrites the other one and may reset existing state or configuration. |
| 65 | +For the Legacy build, always follow the main repository Releases page. The LSPosed / Xposed module repository usually syncs only the Standard APK. |
98 | 66 |
|
99 | | -## Documentation |
| 67 | +## More Documentation |
100 | 68 |
|
101 | | -- Chinese README: [../README.md](../README.md) |
102 | 69 | - Active docs: [README.md](README.md) |
| 70 | +- Chinese README: [../README.md](../README.md) |
| 71 | +- Font routing notes: [font-routing.md](font-routing.md) |
| 72 | +- UI guidelines: [ui-guidelines.md](ui-guidelines.md) |
103 | 73 | - Archived docs: [archive/README.md](archive/README.md) |
104 | 74 |
|
| 75 | +Developers can find project structure, build commands, test commands, and collaboration notes in [AGENTS.md](../AGENTS.md). |
| 76 | + |
105 | 77 | ## License |
106 | 78 |
|
107 | 79 | DPIS is released under [GPL-3.0-or-later](../LICENSE). |
|
0 commit comments