Page 1 of 1
Forum

Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!

Topics for particular software or systems: Start your topic link with the name of the application or system.
For example “MacOS X – Your question“, or “MS Word – Your Tip or Trick“.

Please note that switching to another language when reading a post will not bring you to the same post, in Dutch, as there is no translation for that post!



Share:
Notifications
Clear all

[Solved] macOS - Change how application name is displayed in LaunchPad

1 Posts
1 Users
0 Reactions
1,082 Views
 Hans
(@hans)
Famed Member Admin
Joined: 11 years ago
Posts: 2785
Topic starter  

Took me some work to find out how this works under macOS (tested with Sonoma beta) but I’m not sure how far back (OS version) this works, and I’m not sure how future proof this is either. It’s not like I found this in the documentation from Apple 😜

So this is info and all at your won risk!

For starters: Launchpad looks at the .app bundle name (the .app directory/package), and pretty much ignores most of the info.plist.
However it DOES stores the .app name in a SQLite database.

You can find the db like so (it has a funky name, different per system/user):

echo /private$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad/db/db

So in my case this results in:

/private/var/folders/m5/trfpp5ld12j55z3_mmqrr_hm0000gn/0/com.apple.dock.launchpad/db/db

Now the funky thing is that my favorite SQLite editor (Free: Valentina Studio) somehow cannot open this, but the command line sqlite CAN …
In Terminal:

sqlite3 /private$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad/db/db

Now on the prompt you can type “.fullschema” which shows the database structure (I removed the triggers and indexes from the output to keep it more readable):

CREATE TABLE dbinfo (key VARCHAR, value VARCHAR);
CREATE TABLE items (rowid INTEGER PRIMARY KEY ASC, uuid VARCHAR, flags INTEGER, type INTEGER, parent_id INTEGER NOT NULL, ordering INTEGER);
CREATE TABLE apps (item_id INTEGER PRIMARY KEY, title VARCHAR, bundleid VARCHAR, storeid VARCHAR,category_id INTEGER, moddate REAL, bookmark BLOB);
CREATE TABLE groups (item_id INTEGER PRIMARY KEY, category_id INTEGER, title VARCHAR);
CREATE TABLE downloading_apps (item_id INTEGER PRIMARY KEY, title VARCHAR, bundleid VARCHAR, storeid VARCHAR, category_id INTEGER, install_path VARCHAR);
CREATE TABLE categories (rowid INTEGER PRIMARY KEY ASC, uti VARCHAR);
CREATE TABLE app_sources (rowid INTEGER PRIMARY KEY ASC, uuid VARCHAR, flags INTEGER, bookmark BLOB, last_fsevent_id INTEGER, fsevent_uuid VARCHAR);
CREATE TABLE image_cache (item_id INTEGER, size_big INTEGER, size_mini INTEGER, image_data BLOB, image_data_mini BLOB);

 

If you run this select statement

SELECT * FROM apps;

 

you’ll get a list of apps … AND you can update the title
For example like so:

UPDATE apps SET title='Banana' WHERE item_id=223;

 

(eg. item_id 223 = ApplePiBaker on my Mac)

When digging through the database I could find “ApplePiBaker” (filed: apps.title) as text only once (which is now “Banana”).
Took me again a bit of testing, but killing the Dock reloads the Launchpad:

killall Dock

 

Hope this is useful to someone!

 

Tip:

SQLITE updates can be done straight from the command line, for example:

Find item_id:

sqlite3 /private$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad/db/db "SELECT item_id FROM apps WHERE title LIKE ‘%ApplePiBaker%’;"

 

Response: 223

 

And now update that title name:

sqlite3 /private$(getconf DARWIN_USER_DIR)com.apple.dock.launchpad/db/db "UPDATE apps SET title='BananaPiBaker' WHERE item_id=223;"

   
ReplyQuote
Share: