I’ve been putting experimental code in AB to use a sqlite database for application cache.
To start, I created three tables;
create table Category (name TEXT PRIMARY KEY, id INTEGER);
create table Desktop (name TEXT, genericname TEXT, comment TEXT, exec TEXT, path TEXT PRIMARY KEY, id INTEGER);
create table DesktopCategory (desktop INTEGER, category INTEGER);
I then populate Category with the different categories, Desktop with all the applications and then the relationship table between Desktop applications and Categories.
On a warm startup (ie. everything is in filesystem cache), it saves 20% of the startup time compared to using gnome-menus.
I need to play around with this a bit more, but if it proves to be a feasible solution, then it’d be a good idea to store even more data in the database.
The biggest problem with doing it this way instead of using realtime data is obviously if AB doesn’t get started for a while and new software is added or removed. We’d end up for bad data.
Here’s AB using gnome-menus
And here’s AB using sqlite