Skip to content

Commit d74ae44

Browse files
authored
Create README.en.md
1 parent 17b0510 commit d74ae44

1 file changed

Lines changed: 123 additions & 0 deletions

File tree

README.en.md

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# DPIS
2+
<img src="https://raw.githubusercontent.com/Xposed-Modules-Repo/io.github.kwensiu.dpis/refs/heads/main/icon.png" height='70px'>
3+
4+
![GitHub Release](https://img.shields.io/github/v/release/Kwensiu/DPIS)
5+
![License](https://img.shields.io/github/license/Kwensiu/DPIS)
6+
7+
[中文说明](./README.md) | English
8+
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+
11+
## Core Capabilities
12+
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
18+
19+
## Requirements
20+
21+
- Android 8.0+ (`minSdk 26`)
22+
- Rooted device
23+
- LSPosed/Xposed installed and enabled
24+
25+
## Quick Start
26+
27+
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.
51+
52+
## Logs and Diagnostics
53+
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.
57+
58+
## Build and Test
59+
60+
```powershell
61+
./gradlew :app:assembleModern101Debug :app:assembleCompat100Debug
62+
./gradlew :app:testAllDebugUnitTests
63+
```
64+
65+
Optional install commands (Windows PowerShell):
66+
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+
```
71+
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
87+
88+
| Variant | File name | Environment |
89+
| --- | --- | --- |
90+
| Standard | `DPIS_{version}.apk` | LSPosed (`libxposed API 101+`) |
91+
| Legacy | `DPIS_{version}_legacy.apk` | Classic Xposed / frameworks without `libxposed API 101` support |
92+
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.
96+
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.
98+
99+
## Documentation
100+
101+
- Chinese README: [../README.md](../README.md)
102+
- Active docs: [README.md](README.md)
103+
- Archived docs: [archive/README.md](archive/README.md)
104+
105+
## License
106+
107+
DPIS is released under [GPL-3.0-or-later](../LICENSE).
108+
109+
## References and Thanks
110+
111+
DPIS references ideas and implementation patterns from the following open-source projects:
112+
113+
- [libxposed/api](https://github.com/libxposed/api)
114+
- [LSPosed](https://github.com/LSPosed/Lsposed)
115+
- [AdClose](https://github.com/zjyzip/AdClose)
116+
- [App Settings(Xposed-Modules-Repo)](https://github.com/Xposed-Modules-Repo/ru.bluecat.android.xposed.mods.appsettings)
117+
- [InstallerX-Revived](https://github.com/wxxsfxyzm/InstallerX-Revived)
118+
- [InxLocker](https://github.com/Chimioo/inxlocker)
119+
- [视界调节](https://www.coolapk.com/feed/70930481?s=OGJiYmE1YjEyYmQ1MmZnNjllOTNiNWF6a1610b3)
120+
121+
## Disclaimer
122+
123+
DPIS runs in a Root/LSPosed environment and carries stability and compatibility risks. Back up important data first and evaluate the risks before use.

0 commit comments

Comments
 (0)