====== Changing the default launcher on the Blackview BV5300 Pro ======
I have a **Blackview BV5300 Pro** smartphone; I managed to [[blackview_bv5300_pro|root the phone]] to gain administrator privileges and now I want to change the default Blackview launcher which is called **BvLauncher**. I wish also to disable or remove several system apps (some from Google, others from Blackview), which annoy me because I don't need them, but they spawn running processes and require to be updated from time to time.
The main reason for me using a different launcher is because BvLauncer has a bug preventing to disable the **At a Glance** widget. Another bug prevents the resizing of widgets, e.g. I cannot have a 3x3 [[https://f-droid.org/bo/packages/ws.xsoh.etar/|Etar calendar]] widget or a 3x3 [[https://f-droid.org/bo/packages/com.termux.widget/|Termux:widget]].
I suspect also that the Blackview launcher is somewhat a spyware, because the phone tries hardly to prevent you from choosing another Home app the app is always restarted even if you force-stop it (the same apply to the other Blackview launcher, called **DKGameMode**).
===== Lawnchair =====
{{.:bv5300pro:bv5300-pro-lawnchair-launcher.png?180 |Lawnchair launcher on the Blackview BV5300 Pro}}
Obviously I want an **open source** launcher, so I ignored the plethora of launcers available on the Google Play store. In the past I used the **[[https://f-droid.org/packages/amirz.rootless.nexuslauncher/|Rootless Pixel Launcher]]** from F-Droid, but unfortunately the app was not ported for newer Android versions.
Then I came across **[[https://lawnchair.app/|Lawnchair launcher]]** which seems a very promising open source project. Unfortunately it does not have a build available on F-Droid or other repositories, so I resorted on downloading the **Version 14 Beta 2** as an apk file.
Being an open source project (souce code available on [[https://github.com/LawnchairLauncher/|GitHub]]), it is not surprise that you can find plenty of Lawnchair clones on the Google Play store or F-Droid. Often the clone does not even mention being a clone and it does not make the proper attributions. I feel very suspicious (and angry) about that packages, so I avoided them by far. Two examples of such sospicious packages are [[https://play.google.com/store/apps/details?id=app.homelauncher|Home Launcher]] and [[https://play.google.com/store/apps/details?id=app.pixel_launcher|Pixel Launcher]].
===== QuickSwitch =====
After installing Lawnchair I set it as the **default Home app**, from the Android Settings. The first problem I encounterd was that setting the Home app do not survive a phone reboot: after a restart the Home app is restored to the stock BvLauncher. Another problem is that **the //Recents// provider** (the list of opened apps accessible through the soft navigation button of Android system bar) remains set to BvLauncher, where it sould be provided by Lawnchair itself. As far I can understand, in newer Androids the //recents provider// must be a **//system app//**, while Lawnchair is installed as a normal user app.
{{ .:bv5300pro:quickswitch-lawnchair.png?direct&220|QuickSwitch app}}
To solve this problem I installed a Magisk module called **[[https://github.com/skittles9823/QuickSwitch|QuickSwitch]]**. This is a zip archive to be added as a Magisk module. Indeed I used Magisk to root my BV5300 //systemlessly// (e.g. by changing only the boot partition, not the system one).
QuickSwitch was created to permit the user to choose the //recents// provider on Android 9+, the module also promote the selected launcher as a //system app//. You install the zip file from the //Modules// icon of the Magisk app; once installed and rebooted, you will find the QuickSwitch companion app. Launch it and you will see a list of //recents// providers (the stock BvLauncher and the installed Lawnchair in my case). I selected Lawnchair and the app configured the Magisk modules accordingly: the Lawnchair app is removed from the user apps and moved into the module itself, so it will be installed //systemless// on each reboot as a system app. Other settings into the module will set Lawnchair as the recents provider.
**NOTICE**: To work properly I had to install **QuickSwitch 4.0.3**. The previous version 4.0.2 worked only partially: it moves the launcher as a system app, but it cannot set it as the recents provider, which remains stuck to the stock BvLauncher.
**NOTICE**: QuickSwitch installs iteself as a Magisk module, you can find it into **/data/adb/modules/quickswitch/**. The Lawnchair app is actually removed from the //user space apps// and re-installed as a //system app// on each reboot. This installation is performed //systemless// i.e. without actually changing the system partition, but merging some directories into the volatile running system at boot time. You can find the app installed by this module into something like **/data/adb/modules/quickswitch/system/priv-app/QuickSwitch-app.lawnchair-NNN/** (where "NNN" are three random digits). This means that - if you remove this Magisk module - the Lawnchair app will be removed too.
If you have a shell on the device, e.g. the Termux terminal, you can **configure the module on the command line** instead of using the companion app. Open the terminal and execute as root:
/data/adb/modules/quickswitch/quickswitch --ch=app.lawnchair
===== De-Bloater =====
**[[https://f-droid.org/it/packages/com.sunilpaulmathew.debloater/|De-Blater]]** is another useful app that creates and install a Magisk module. This enables you to hide some apps that cannot be uninstalled (e.g. all the system apps that come preloaded on the stock ROM).
It comes in the form of an app, which requires a device rooted with Magisk. When you launch it, you can select one or more apps to be hidden. Actually **the system partition is not modified** and the apps remains installed. A Magisk mudule is installed instead which - at boot time - makes some //systemless// changes, removing that apps only on the running system.
When you //remove// an app with De-Bloater, it detects if it is a system app which received an update. This means that the app is installed actually twice: the original one into the system partition (which is not deletable) and the update into the user partition. In this case De-Bloater suggests you to delete the update before, so De-Bloater will disable the original one only.
Having installed Lawnchair as an alternative Home app and recents provider, I can hide the stock **BvLauncher** app so that the com.blackview.launcher process would no longer execute. The same is for the **Game mode** (DKGameMode.apk), an alternative launcher provided by Blackview intended for the heavy gamers.
When you //remove// an app with De-Bloater, the De-bloater Magisk module is updated creating a dummy file which will override the actual app into the running system at next reboot. The dummy file contains just the name of the app removed. If you //restore// the app in De-Bloater, the dummy file is removed.
Now that I understand how De-Bloater works, I prefer to configure it manually (be sure to remove the app update and check the installation path before removing it by hand). To hide **DKLauncher** and **DKLauncherOverlayFramework** I create two files in **/data/adb/modules/De-bloater/**:
mkdir -p /data/adb/modules/De-bloater/system/system_ext/priv-app/DKLauncher/
mkdir -p /data/adb/modules/De-bloater/system/system_ext/overlay/
echo "BvLauncher" \
> /data/adb/modules/De-bloater/system/system_ext/priv-app/DKLauncher/DKLauncher.apk
echo "com.blackview.launcher.overlay.framework" \
> /data/adb/modules/De-bloater/system/system_ext/overlay/DKLauncherOverlayFramework.apk
After a reboot, this has the effect to disable entirely the two packages (apk files). Indeed BvLauncher was gone completely and my only Home app is Lawnchair.
The following is the list of the app I have hidden (actually this is a merged list of apps that I have de-bloated from Android 12 and Android 13 customized by Blackview):
/system/app/DKApkUpdate/DKApkUpdate.apk
/system/app/DKChildMode/DKChildMode.apk
/system/app/DKFeedback/DKFeedback.apk
/system/app/DKFileTrans/DKFileTrans.apk
/system/app/DKFocusMode/DKFocusMode.apk
/system/app/DKGameCenter/DKGameCenter.apk
/system/app/DKGameMode/DKGameMode.apk
/system/app/DKHealth/DKHealth.apk
/system/app/DKLiveWallpaper/DKLiveWallpaper.apk
/system/app/DKNoteBook/DKNoteBook.apk
/system/app/DKWeather/DKWeather.apk
/system/priv-app/DKFrozenApp/DKFrozenApp.apk
/system/priv-app/GoogleFit/GoogleFit.apk
/system/priv-app/UserGuide/UserGuide.apk
/system/product/app/Drive/Drive.apk
/system/product/app/Duo/Duo.apk
/system/product/app/Keep/Keep.apk
/system/product/app/Photos/Photos.apk
/system/product/app/Videos/Videos.apk
/system/product/app/YTMusic/YTMusic.apk
/system/product/overlay/DKDarkModeOne/DKDarkModeOneOverlay.apk
/system/product/overlay/DKDarkModeThree/DKDarkModeThreeOverlay.apk
/system/product/overlay/DKDarkModeTwo/DKDarkModeTwoOverlay.apk
/system/product/priv-app/AndroidAutoStub/AndroidAutoStub.apk
/system/product/priv-app/DKLeftScreen/DKLeftScreen.apk
/system/product/priv-app/DKRadioService/DKRadioService.apk
/system/product/priv-app/FilesGoogle/FilesGoogle.apk
/system/product/priv-app/FindMyDevice/FindMyDevice.apk
/system/product/priv-app/Wellbeing/Wellbeing.apk
/system/system_ext/app/DKFmRadio/DKFmRadio.apk
/system/system_ext/overlay/DKLauncherOverlayFramework.apk
/system/system_ext/priv-app/DKLauncher/DKLauncher.apk
^ Google ^^^
| AndroidAutoStub.apk | com.google.android.projection.gearhead | Android Auto |
| Drive.apk | com.google.android.apps.docs | Google Drive |
| Duo.apk | com.google.android.apps.tachyon | Google Meet |
| FilesGoogle.apk | com.google.android.apps.nbu.files | Files by Google |
| FindMyDevice.apk | com.google.android.apps.adm | Google Find My Device |
| GoogleFit.apk | com.google.android.apps.fitness | Google Fit |
| Keep.apk | com.google.android.keep | Keep Notes |
| Photos.apk | com.google.android.apps.photos | Google Photos |
| UserGuide.apk | com.android.manual | Manual |
| Videos.apk | com.google.android.videos | Google TV |
| Wellbeing.apk | com.google.android.apps.wellbeing | Digital Wellbeing |
| YTMusic.apk | com.google.android.apps.youtube.music | YouTube Music |
^ Blackview ^^^
| DKApkUpdate.apk | com.blackview.apkupgrade | |
| DKChildMode.apk | com.blackview.childmode | Child mode |
| DKDarkModeOneOverlay.apk | com.blackview.darkmode.one | DarkModeOne |
| DKDarkModeThreeOverlay.apk | com.blackview.darkmode.three | DarkModeOne |
| DKDarkModeTwoOverlay.apk | com.blackview.darkmode.two | DarkModeOne |
| DKFeedback.apk | com.blackview.userfeedback | User feedback |
| DKFileTrans.apk | com.blackview.filetrans | Data Migration Assistant |
| DKFmRadio.apk | com.android.fmradio | FM Radio |
| DKFrozenApp.apk | com.blackview.frozenapp | Cold Room |
| DKGameCenter.apk | com.blackview.fungamecenter | FunCenter |
| DKHealth.apk | com.blackview.health | Health |
| DKLauncher.apk | com.blackview.launcher | BvLauncher |
| DKLauncherOverlayFramework.apk | com.blackview.launcher.overlay_framework | |
| DKLeftScreen.apk | com.blackview.leftscreen | browser |
| DKLiveWallpaper.apk | com.blackview.wallpaper | LiveWallpaper |
| DKNoteBook.apk | com.blackview.notebook | Notebook |
| DKRadioService.apk | com.blackview.radioservice | DKRadioService |
| DKWeather.apk | com.blackview.weather | Weather |
===== Download =====
^ Resource ^ Local download ^ Official link ^ Notes ^
^ QuickSwitch v4.0.3 | {{.:bv5300pro:quickswitch-v4.0.3.zip|QuickSwitch-v4.0.3.zip}} | [[https://t.me/QuickstepSwitcherReleases/139|Telegram channel]] | QuickSwitch releases are distributed through the **QuickstepSwitcherReleases** Telegram channel. |