Vous pouvez presque y arriver avec un peu d'Applescript.
Ce script lira tous les "Enfants" de votre fichier de signets existant et les réécrira dans l'ordre que vous aurez spécifié. Les "Enfants" se composent d'abord de l'historique, de la barre de signets, du menu des signets et de la liste de lecture, donc vous pourriez vouloir laisser les 4 premiers éléments en place. Après cela, spécifiez l'ordre que vous souhaitez - la recherche automatique d'un ordre alphabétique reste un exercice.
set tfile to (path to library folder from user domain as text) & "Safari:BookmarksWorking.plist"
tell application "System Events"
set childrenOrdered to make new property list item at end of property list items of contents of property list file tfile with properties {kind:list, name:"childrenOrdered"}
set myOrdering to {1, 2, 3, 4, 6, 5, 7} -- your preferred order
repeat with i in myOrdering
set thisChild to (property list item i of property list item "Children" of property list file tfile)
set thisKind to kind of thisChild
set thisValue to value of thisChild
tell childrenOrdered
make new property list item at end with properties {kind:thisKind, value:thisValue}
end tell
end repeat
-- Instead of overwriting the contents of "Children", this empties the whole file. So do the rename manually for now.
--set (value of (property list item "Children" of property list file tfile)) to (value of childrenOrdered)
end tell
Je m'attendais à ce que le dernier set
de la ligne script pour remplacer le contenu de "Children" par le tableau ordonné. Malheureusement, cela semble aboutir à un fichier vide (0 octet) ! AppleScript considère que le champ nom est en lecture seule, donc le changer à la place ne fonctionnera pas non plus.
Cependant, en renommant manuellement les éléments dans un éditeur de liste de propriétés (XCode, éditeur de texte, etc.) de manière à ce que Children soit mis de côté et orderedChildren à sa place, le nouvel ordre apparaît dans Safari au redémarrage.
C'est plutôt maladroit, mais si cela va dans la bonne direction, cela pourrait être nettoyé et automatisé.