Lawrence wrote:
> On Wed, 19 Aug 2026 22:33:27 -0800, Maria Sophia wrote:
>
>> # Prerequisite: "nova.db" SQL database file created using the
>> # last-known-good-version of the Tesla Coil Nova Launcher 7.0.57
>> # <https://mobile.softpedia.com/apk/nova-launcher/7.0.57/>
>
> Why not provide your own commands for initializing a new database
> if it doesn't already exist? Save the user some work.
>
> If you want to see an example of how it's done, have look at the
> project-tags script (yes, it's a Python script) here
> <https://gitlab.com/ldo/emacs-prefs>.
Hi Lawrence,
Thanks for taking a look at the code and for making positive suggestions.
I'll take your two sets of suggestions separately, as they're different.
1. Determining the homescreen pane/folder/package hierarchy
3. Stylistically using a more Pythonic coding philosophy
I'm only responding to the first item above, as I can't possibly have any
qualms with your second suggestion, which is to improve the efficiency.
Almost always I aim for the most general solution to any specific problem
set, but in this case, the issue is non-root access to protected data.
As you noted, python is just about perfect for cross-platform needs, as I'd
wager the script likely will work on any platform, including on Android.
However, you've no doubt noticed that the Nova Launcher, while originally
well acclaimed as the best app launcher on Android, suffered from success
in that it was sold (twice!) which is why I use a last known good version.
Hence, I agree fully that it would be better to "build" the homescreen
layout using anything but a proprietary launcher such as Nova Launcher.
If we were simply archiving every single app the user has installed, then
we wouldn't need the Nova Launcher layout structure, since it would be
trivial to use adb to find all the packages installed & archive the APK(s).
But the goal of this thread is to exactly duplicate the exact layout
perfectly, so that a perfect migration can occur from one phone to another.
a. Every homescreen panel is reproduced
b. Every folder in every panel is reproduced
c. Every app icon in every folder is reproduced
etc.
How do we do get a list of panes, folders and app icons inside the folders?
At first, I used a FOSS cross-platform SQL browser to parse the SQL data.
<https://sqlitebrowser.org/>
Where I ditched that methodology early on as I lack SQL query experience.
Message-ID: <[email protected]>
Then, I tried the (deprecated but very powerful) adb backup command.
adb backup -f novadata.ab -noapk com.teslacoilsw.launcher
Where I was pleasantly surprised that allowed access to protected files.
Message-ID: <[email protected]>
So one possible general-purpose solution is to craft an adb backup
process for each and every app launcher that anyone may use on Android.
But, even then, we have to learn how to parse each & every launcher db.
As the initial problem is knowing the exact organization of the homescreen.
Of course, we can "manually" create the pane/folder/app list & once we do
that, we can populate that manual folder hierarchy with the relevant APKs.
But how do we obtain the list of panes/folders/packages on any homescreen?
The answer to that question, as far as I'm aware anyway, is that every
single Android app launcher stores its homescreen structure differently.
Worse, much worse, in fact, everything I write is for non-rooted phones.
So the app launcher must store that structure in an accessible location.
Nova does that.
Nova stores the homescreen structure in an SQL database accessible to adb.
But how do the myriad other app launchers store the homescreen structure?
Samsung One UI Home, Google Pixel Launcher and open-source alternatives
each likely store the homescreen structure in their own proprietary way.
Worse, for the proprietary launchers, we likely don't have access to that
structure without being rooted, which is, for sure, why you suggested we
determine the homescreen hierarchy some other way (using Python, perhaps).
But how?
If we resort to FOSS launchers (e.g., Lawnchair, Librechair, etc.), we
probably can solve that problem, but we still have to ask the general user
to use one of those launchers, which is likely not better than using Nova.
In summary, I can't help but agree fully with your quite reasonable
suggestion to generalize the solution so that it works with any launcher.
It would be wonderful to build a universal homescreen parser for any
launcher, but the security sandboxing of modern Android makes it difficult.
Any and all ideas will be considered since your objections are on target.
--
We learn best from helpful people who know a hellova lot more than we do.
--
https://mail.python.org/mailman3//lists/python-list.python.org