![[Guide] Fix separate inner and outer display DPI after One UI 8.5](https://external-preview.redd.it/KXdFaJudhccs8IfZuSFS-IcuzNruwylpgZyWY-VwDnA.png?width=320&crop=smart&auto=webp&s=3618fddf7e8049b26ff01dd31e10c3827a017d37)
[Guide] Fix separate inner and outer display DPI after One UI 8.5
After the One UI 8.5 update, it is no longer possible to set different DPI values for the inner and outer displays. I thought I would write a quick guide on how to work around this.
At the moment, the only way to change it is through wm density and ADB shell. However, this does not survive a reboot properly. After restarting, the wm density value of the currently active display is also applied to the inactive display.
This means that if the Fold is closed during boot, the outer display DPI is applied to the inner display as well, and vice versa.
Workaround
The workaround I am currently using is Tasker together with Shizuku thedjichi.
I created a Tasker task and placed it as a shortcut on my home screen. The task changes the wm density value depending on whether the device is folded or unfolded.
The only downside is that you need to run it once after every reboot when you switch to the display that was not active during startup.
This could probably be automated, but the command can only be executed when the display you want to change is currently active. wm density does not allow changing the inactive display. That made full automation too complicated for me, and a shortcut is good enough for the few times per month that I actually reboot.
This requires Tasker (paid but awesome app): https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm
Setup
First, install Shizuku thedjichi: https://github.com/thedjchi/Shizuku/releases
Then go to:
Control Shizuku with automation apps
There you will find the intents that can be used to start and stop Shizuku from Tasker.
After that, recreate the task from the code block below. Do not forget to enter the correct auth code in the intent extras.
What the task does
The task simply does the following:
- Starts Shizuku automatically
- Checks whether the taskbar is available
- Uses that to determine whether the device is folded or unfolded
- Sets the correct
wm densityvalue based on the fold state - Stops Shizuku again at the end
You can also run the task from the launcher by tapping the three dots in the top right and selecting Add to Launcher. You can pick a neat icon, I have created this using IconKitchen.
Stopping Shizuku again at the end makes sure that ADB USB debugging does not stay enabled permanently.
That is basically it. The setup is very simple, and the DPI values can be changed to whatever you prefer.
TL;DR: One UI 8.5 broke separate DPI settings for the inner and outer Fold displays. This workaround uses Tasker + Shizuku thedjichi to run the correct wm density command depending on whether the device is folded or unfolded. It needs to be run once after a reboot when switching to the display that was not active during startup.
Here is the task (do not forget to change "auth:XXXX" to your auth code and adjust DPI accordingly):
Task: Set DPI
A1: Send Intent [
Action: moe.shizuku.privileged.api.START
Cat: None
Extra: auth:XXXXX
Package: moe.shizuku.privileged.api
Target: Broadcast Receiver ]
A2: Custom Setting [
Type: Global
Name: sem_task_bar_available
Read Setting To: %Unfolded ]
A3: Wait [
MS: 0
Seconds: 2
Minutes: 0
Hours: 0
Days: 0 ]
A4: If [ %Unfolded eq 1 ]
A5: Run Shell [
Command: wm density 380
Timeout (Seconds): 5
Store Errors In: %err
Use Global Namespace: On
Use Shizuku: On
Continue Task After Error:On ]
A6: If [ %err Set ]
A7: Flash [
Text: Error: Shizuku is not running
Continue Task Immediately: On
Dismiss On Click: On ]
A8: Else
A9: Flash [
Text: DPI has been set to 380
Continue Task Immediately: On
Dismiss On Click: On ]
A10: End If
A11: Else
A12: Run Shell [
Command: wm density 410
Timeout (Seconds): 5
Store Errors In: %err
Use Global Namespace: On
Use Shizuku: On
Continue Task After Error:On ]
A13: If [ %err Set ]
A14: Flash [
Text: Error: Shizuku is not running
Continue Task Immediately: On
Dismiss On Click: On ]
A15: Else
A16: Flash [
Text: DPI has been set to 410
Long: On
Continue Task Immediately: On
Dismiss On Click: On ]
A17: End If
A18: End If
A19: Send Intent [
Action: moe.shizuku.privileged.api.STOP
Cat: None
Extra: auth:XXXXX
Package: moe.shizuku.privileged.api
Target: Broadcast Receiver ]