Launchpad Config
# Configurazione manuale del Launchpad di macOS
File di configurazione
/var/folders/q3/0/com.apple.dock.launchpad/db/db
-
dbinfo: informazioni generali sul database
- id speciali delle varie pagine di root, holding page, dashboard (deprecata da macOS 10.15 Catalina)
- flags utilizzate nei trigger
-
apps: tabella delle informazioni delle apps
- item_id.INT: identificativo app
- nome.CHAR
- bundleid.CHAR
- category_id.INT
- moddate.INT
- bookmark.BLOB (non si è capito cosa sia)
-
categories: elenco categorie (sembra non essere molto usato, forse con app del Mac App Store e in spotlight per indicizzare)
-
downloading_apps: tabella delle app in fase di download
-
app_sources: tabella dei tipi di uuid per fsevent
- rowid.INT
- uuid.VARCHAR
- flags.INT
- bookmark.BLOB
- last_fsevent_id.INT
- fsevent_uuid.VARCHAR
-
image_cache: tabella thumbnail applicazioni
- item_id.INT: id applicazione
- size_big.INT
- size_mini.INT
- image_data.BLOB: thumbnail della app in una pagina del launchpad
- image_data_mini.BLOB: thumbnail quando è in una cartella
-
groups: tabella dei gruppi (pagine o cartelle)
- item_id_INT: id componente (per identificarlo fra gli items)
- category_id.INT
- title.VARCHAR: nome della cartella (if any)
Per ogni cartella/pagina vengono creati due record, uno con il titolo, che determina la posizione della cartella nel launchpad, e uno con id successivo che rappresenta la prima pagina della cartella (il relativo item dovrà puntare all’id principale della cartella)
-
items: tabella generale che raccoglie tutti gli elementi che vanno disposti dentro il launchpad
- rowid.INT: id dell’elemento (app/gruppo)
- uuid.VARCHAR: uuid dell’elemento per il file system
- flags.INT: scopo sconosciuto, numeri senza riscontro in altre tabelle
- type.INT: definisce il tipo di elemento (1-root, 2-folder root, 3-pagina/cartella, 4-app, 5-download, 6-widget)
- parent_id:INT: elemento genitore che raccoglie la app (pagina o cartella)
- ordering.INT: Posizione elemento all’interno del raccoglitore parent_id
Per questa tabella sono specificati anche dei trigger per riordinare in fase di INSERT,UPDATE,DELETE
- Aggiunta di una app
Quando viene installata una nuova applicazione, questa finisce direttamente nella pagina principale: viene creato il record in
itemscon rowid pari all’id della app e parent_id della pagina libera (le pagine avranno come parent 1, corrispondente alla ROOTPAGE). Viene scatenato il triggerinsert_iteme viene corretto l’ordering delle app - Spostamento di una app nella griglia del Launchpad
Se una app viene spostata nella griglia, il suo ordinamento dovrà essere corretto di conseguenza, perciò si scatena il trigger
update_items_orderoupdate_items_order_backwardsa seconda del movimento - Una app viene spostata in un’altra pagina
Spostando la app in un’altra pagina viene cambiato il parent_id della app, che viene aggiornato dal trigger
update_item_parent - Viene creata una cartella con le app
- Per creare una cartella c’è bisogno di posizionare il riquadro bianco nella griglia e successivamente associare alla sua griglia interna le applicazioni desiderate. Vengono quindi creati due records nella tabella
groups: il primo definisce la cartella e il suo nome, il secondo (senza nome)è l’id della prima pagina della cartella a cui faranno riferimento le app. - Negli items la cartella viene registrata sotto la pagina in cui deve vivere, il puntatore punta all’id di essa con ordering 0 e il parent_id delle app nella cartella viene aggiornato con quello del puntatore. Il trigger aggiorna poi l’ordering delle app in cartella.
- Per creare una cartella c’è bisogno di posizionare il riquadro bianco nella griglia e successivamente associare alla sua griglia interna le applicazioni desiderate. Vengono quindi creati due records nella tabella
- Rimozione di un’app
Quando una app viene disinstallata, interviene il trigger
item_deletedche rimuove i relativi record dalla tabellaapps,groupsedownloading_appse riordina le rimanenti
- Rimane da capire cosa sono le flags degli items
- Cosa succede se sforo l’ordering massimo?
- Capire come usare
uuidgen
How Launchpad stores configuration by Fotis Gimian