Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow full control in OneUI? #42

Open
nekorubu opened this issue Feb 10, 2024 · 38 comments
Open

Allow full control in OneUI? #42

nekorubu opened this issue Feb 10, 2024 · 38 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@nekorubu
Copy link

nekorubu commented Feb 10, 2024

In Repainter, you can get full control over the system colors in Samsung's OneUI, even with Shizuku. The only caveat is that you have to restart the phone to apply the new colors. As for me, Repainter's full control still works on OneUI 5, though I have seen that it doesn't seem to work at all on OneUI 6. Is it possible to have the app get full control over the system palette on OneUI even with Shizuku like Repainter can?

@Mahmud0808
Copy link
Owner

Unfortunately I don't have a Samsung device.

@Mahmud0808 Mahmud0808 added the enhancement New feature or request label Feb 10, 2024
@nekorubu
Copy link
Author

Oh, I see. Is there any way I can help?

@Mahmud0808
Copy link
Owner

Probably not but thanks. It's easier to develop and test on device I own instead of building blindly and testing by others.

Maybe any dev who has oneui can help, it's an open source project, you are free to fork, modify and release your own build.

@coggy9
Copy link

coggy9 commented Feb 14, 2024

Samsung has a free remote testing service if you want to test on Samsung devices.

@Mahmud0808
Copy link
Owner

Samsung has a free remote testing service if you want to test on Samsung devices.

Can any of you provide SystemUI.apk and framework-res.apk of samsung oneui 6? Then I can maybe make some progress.

@coggy9
Copy link

coggy9 commented Feb 14, 2024

Sure. Here they are from a Z Fold 5 with the latest One UI 6.0 build.

@Mahmud0808
Copy link
Owner

Mahmud0808 commented Feb 14, 2024

Samsung has a free remote testing service if you want to test on Samsung devices.

I just created an account and it gave me 10 free credits. Now everytime I visit that link, it asks me to login, after login it reloads the test lab page and asks to login again, stuck in a login loop lol.

@muznyo
Copy link

muznyo commented Feb 14, 2024

Samsung has a free remote testing service if you want to test on Samsung devices.

I just created an account and it gave me 10 free credits. Now everytime I visit that link, it asks me to login, after login it reloads the test lab page and asks to login again, stuck in a login loop lol.

I just created an account too and it worked for me. What browser do you use? i used firefox

@Mahmud0808
Copy link
Owner

Chrome on windows 11. I will try again later in incognito mode. Probably that 10 credits won't be enough at all, but let's give it a shot.

@muznyo
Copy link

muznyo commented Feb 14, 2024

Chrome on windows 11. I will try again later in incognito mode. Probably that 10 credits won't be enough at all, but let's give it a shot.

i think credits wont be a problem
image

@Hussain96o
Copy link

Oh please no, repainter ruins the default one UI theme if you use it and you cannot use the phone's default color palette again until you factory reset. I really like that this app is only for apps color and not the system theme.

You don't need to factory reset Just stop the app again and the color palette will work again

@Xisrr1
Copy link

Xisrr1 commented Feb 17, 2024

Oh please no, repainter ruins the default one UI theme if you use it and you cannot use the phone's default color palette again until you factory reset. I really like that this app is only for apps color and not the system theme.

You don't need to factory reset Just stop the app again and the color palette will work again

When I used repainter even after disabling it won't let the default color palette settings work.

@Mahmud0808
Copy link
Owner

Mahmud0808 commented Feb 21, 2024

Unfortunately I still can't login in Samsung Test Lab. It keeps looping the login screen, I login and go to choose a device, it again asks me to login, after login it sends me back to choose a device, then again login and it keeps going on forever.

@RoootTheFox
Copy link

hi,
is there any way I can maybe help with/contribute to this?
I don't have a lot of experience in Android development (or Shizuku), but I do have general programming knowledge/experience and I'd love if I could contribute to this somehow.
I have the following hardware available to me:

  • Samsung Galaxy S23+ (primary phone, OneUI 6)
  • Samsung Galaxy A51 (old phone, OneUI 5)

(I'd like to avoid targeting my main phone first, since I rely on it and don't want things to break)

Can you give me steps for getting started with this (e.g. important Material You/SystemUI internals)?

Also, thank you for creating this project in the first place ❤️

@Mahmud0808
Copy link
Owner

Can you give me steps for getting started with this (e.g. important Material You/SystemUI internals)?

I can send a test build which I was working on blindly without any Samsung device :") don't get hopes too high cause totally blind build and most probably won't work.

@RoootTheFox
Copy link

Sure! If I can help in any way that's great :3
I'll test it first on my old phone (OneUI 5) in case something breaks, if it works there I'll test on my main phone. I'm not home yet though, so I don't have access to my old phone atm (will be in a couple hours)

@Mahmud0808
Copy link
Owner

Mahmud0808 commented Feb 28, 2024

Sure! If I can help in any way that's great :3 I'll test it first on my old phone (OneUI 5) in case something breaks, if it works there I'll test on my main phone. I'm not home yet though, so I don't have access to my old phone atm (will be in a couple hours)

ColorBlendr v1.2 Debug Samsung.zip
Here you go. Not in a hurry ofcourse.

@coggy9
Copy link

coggy9 commented Feb 28, 2024

Tried it on my Fold 5, and it crashes when tapping a color.

FATAL EXCEPTION: main
Process: com.drdisagree.colorblendr, PID: 24753
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Number
	at com.drdisagree.colorblendr.utils.MiscUtil.convertToIntArray(MiscUtil.java:65)
	at com.drdisagree.colorblendr.utils.OverlayManager.applyFabricatedColors(OverlayManager.java:221)
	at com.drdisagree.colorblendr.ui.fragments.ColorsFragment.lambda$addColorsToContainer$14(ColorsFragment.java:422)
	at com.drdisagree.colorblendr.ui.fragments.ColorsFragment.$r8$lambda$rieRlpZVMi0wGsq3TFo523NnDCQ(ColorsFragment.java:0)
	at com.drdisagree.colorblendr.ui.fragments.ColorsFragment$$ExternalSyntheticLambda8.onClick(R8$$SyntheticClass:0)
	at android.view.View.performClick(View.java:8043)
	at android.view.View.performClickInternal(View.java:8020)
	at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
	at android.view.View$PerformClick.run(View.java:31867)
	at android.os.Handler.handleCallback(Handler.java:958)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:230)
	at android.os.Looper.loop(Looper.java:319)
	at android.app.ActivityThread.main(ActivityThread.java:8913)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

@Mahmud0808
Copy link
Owner

Mahmud0808 commented Feb 28, 2024

ColorBlendr v1.2.zip
What about this one?

@RoootTheFox
Copy link

just a small question - how (un)likely is it that this will break the system? (and if it does, would it be hard to recover without factory resetting?)
asking mostly out of curiosity

@coggy9
Copy link

coggy9 commented Feb 28, 2024

Doesn't crash, but nothing changes. I'll get a logcat later today if needed.

Screen.Recording.20240228.074027.Colorblendr.mp4

@RoootTheFox
Copy link

@coggy9 iirc Repainter required you to reboot after applying on OneUI, I assume the same applies to ColorBlendr(?)

@coggy9
Copy link

coggy9 commented Feb 28, 2024

You're correct, but even after rebooting, nothing changed.

@RoootTheFox
Copy link

Doesn't crash, but nothing changes. I'll get a logcat later today if needed.

Screen.Recording.20240228.074027.Colorblendr.mp4

@coggy9 for the actual Samsung UI/OneUI elements you need to use Samsung's Theme Park (Galaxy Store), can you try a Material You app? (e.g. Google Translate)

@coggy9
Copy link

coggy9 commented Feb 28, 2024

Screenshot_20240228_075701_Translate
Translate is a default blue color, but Gboard, which is set to use the dynamic colors, is still the pink color I selected before using ColorBlendr. 🤔

@Mahmud0808
Copy link
Owner

Well, I've hit my limit on what I can do here. Maybe a developer who has a Samsung device could pitch in and lend a hand with this.

@Mahmud0808 Mahmud0808 added the help wanted Extra attention is needed label Feb 28, 2024
@RoootTheFox
Copy link

as i said, I'd love to help, but I have no idea where to start.

@Mahmud0808
Copy link
Owner

Mahmud0808 commented Feb 28, 2024

as i said, I'd love to help, but I have no idea where to start.

It's quite hard for me to explain as you said you don't have any experience with android application. You first need to find out which method is used for applying themes in OverlayManager class of framework. Then you need to study how exactly it applies colors, like what parameters are being used etc. Then you have to replicate the same behavior using Shizuku API. If it throws security warning, then you need root to call that method.
I hope this will make it little bit more clear.

@RoootTheFox
Copy link

thanks! ill see if i can maybe get something working (although I doubt I will lmao)

@RoootTheFox
Copy link

@Mahmud0808 I just tried the last build you posted, and it seems to have insufficient permissions to create a runtime resource overlay:
Screenshot_20240229_095330_LogFox

text log

From my experiments, applying RROs through Galaxy Themes works fine (that is how 1st party themes get applied), so I have a theory on what could work:

  • generate overlay package*, install it to the system
    then:
  • settings put system THEMEKEY OVERLAYPKGNAME where THEMEKEY is any of the following:
    • current_sec_active_themepackage
    • current_sec_aod_theme_package
    • current_sec_appicon_theme_package
    • current_sec_home_theme_package
    • current_sec_iris_theme_package
    • current_sec_wallpaper_theme_package
      (not sure which of these actually work, or if they work at all, but OneUI sets those values so I'm assuming they work)
  • reboot (or reload theme overlays manually somehow?)

* i am not sure if this needs to be a full-blown OneUI theme (with RRO apks nested in assets/) or if it can be just a single overlay apk

I'm currently still in the process of reverse engineering and researching the OneUI theme format in an attempt to (more or less) fully understand how a OneUI theme package is structured, what keys/files/etc are needed and ways to apply them

(side note: the OneUI themes seem to have custom AndroidManifest.xml keys for which frameworks(?) are targeted, as well as some samsung-specific permission for themes (need to do more research on that))

@Mahmud0808
Copy link
Owner

generate overlay package*, install it to the system

This can't be done without root I guess. Also the log says it requires root. So last hope is samsung-specific permission for themes that if we can grant through Shizuku, it theoretically should work.

Let's see what you can find. Good luck. :) Sadly can't help much in this case without a samsung device (and don't want one either). :(

@RoootTheFox
Copy link

I've made paste with some (maybe) helpful information (overlay list and the settings values)

the overlays/theme were installed using Hex Installer and applied through Galaxy Themes (com.samsung.High_contrast_theme_II.plus is the package name for the generated theme)

I'll probably keep infodumping here when I find new things, maybe someone else finds them useful if I can't get anything to work.

@jack5mikemotown
Copy link

Sorry if I'm misunderstanding something here, should this app be working with OneUI 6 or is that what's being figured out here? I'm not seeing any color changes, running with shizuku. None of the UI in the app or elsewhere seems to update to reflect it

@Virkkunen
Copy link

Sorry if I'm misunderstanding something here, should this app be working with OneUI 6 or is that what's being figured out here? I'm not seeing any color changes, running with shizuku. None of the UI in the app or elsewhere seems to update to reflect it

This app does work with One UI 6, but in a limited way, it can only set the main colour and the style. If you've set your colour with Theme Park, then you might not see any changes in most apps, apart from some that weren't respecting the dynamic colour theme (eg. most Google apps, the new Beeper app).

@zelodev
Copy link

zelodev commented Jul 19, 2024

generate overlay package*, install it to the system

This can't be done without root I guess. Also the log says it requires root. So last hope is samsung-specific permission for themes that if we can grant through Shizuku, it theoretically should work.

Let's see what you can find. Good luck. :) Sadly can't help much in this case without a samsung device (and don't want one either). :(

to clarify this CAN be done without root. take a look at synergy

@Mahmud0808
Copy link
Owner

to clarify this CAN be done without root. take a look at synergy

Synergy is both paid and not OSS. Can't check.

@Fede2782
Copy link

Fede2782 commented Oct 29, 2024

Hi, I'm pretty sure that these two links can help making this thing works. https://github.com/salvogiangri/KnoxPatch/blob/main/app/src/main/res/xml/sep_color_theme_meta.xml

https://github.com/salvogiangri/KnoxPatch/commits/main/app/src/main/res/xml/sep_color_theme_meta.xml

Maybe taking a look at how theme park implements it could be useful too. Currently I don't have time but once I have a bit more I will surely try to understand more about how Samsung colors works.

@Mahmud0808
Copy link
Owner

Hi, I'm pretty sure that these two links can help making this thing works. https://github.com/salvogiangri/KnoxPatch/blob/main/app/src/main/res/xml/sep_color_theme_meta.xml

https://github.com/salvogiangri/KnoxPatch/commits/main/app/src/main/res/xml/sep_color_theme_meta.xml

Maybe taking a look at how theme park implements it could be useful too. Currently I don't have time but once I have a bit more I will surely try to understand more about how Samsung colors works.

Apologies for the delayed response; I missed your message. Unfortunately, I still don't understand its purpose or how it works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests