Comment faire pour que les icônes des favoris Safari (ou favicons) s'affichent correctement?


6

J'utilise Safari sur macOS Sierra. J'ai ajouté plusieurs sites couramment utilisés à ma section de favoris, comme ceci:

My favorites icons

(Il y a 10 icônes, et toutes sauf deux sont affichées comme l'icône correcte du site. Par exemple, l'icône Wikipedia contient la grande icône W. Toutefois, pour Google Drive et Gmail, les icônes sont simplement grandes moche, générique)

J'aimerais que les deux sites Google affichent correctement leurs icônes. Au début, je pensais que c’était parce que les 8 sites "correctement affichés" avaient configuré avec succès leurs "paramètres Safari" ou quelque chose du genre, alors que Google ne le faisait pas (bien que cela ne semble pas trop plausible).

Toutefois, si je me rends plutôt dans le menu supérieur de Safari, cliquez sur Signets & gt; Afficher les signets, je reçois ce qui suit:

My bookmarks list

Étrangement, ce temps, les deux sites de Google faire ont correctement affiché les icônes, alors qu’il s’agit plutôt de trois autre sites (sur les 10) qui ne sont pas affichés: à savoir Wikipedia, Amazon et New York Times.

Donc, il semble qu'il y ait deux ensembles d'icônes, "gros" et "petit", et pour les grandes icônes, Google Drive et Gmail ne s'affichent pas correctement, alors que les 8 autres le sont, et d'autre part, pour petit icônes, Google Drive et Gmail sont correctement affichés, tandis que Wikipedia, Amazon et NYTimes sont ne pas .

En fait, je me moque bien des petites icônes, mais j'aimerais vraiment que toutes les grandes icônes s'affichent correctement. Comment puis je faire ça?

Réponses:


1
#!/bin/zsh
# Fix Safari Favorites Icons

LSD="Library/Safari"; TIC="Touch Icons Cache"; TAB="cache_settings"; DIR="/$HOME/$LSD/$TIC/"
DBF="$DIR/${${TIC// /}%s*}${${(C)TAB}/_/}.db"; SQL=$(sqlite3 "$DBF" "SELECT host FROM $TAB")
diff <(ls "$DIR/Images") <(for i in "${=SQL}"; do echo ${(U)$(md5 -qs $i)}.png; done | sort)
sqlite3 "$DBF" "UPDATE $TAB SET ${${${(L)TIC// /_}#*_*}/s/_is_in}=1,download_status_flags=1"
for file in "$1"/*.png; do URL="$(plutil -convert xml1 -o - "$HOME/$LSD/Bookmarks.plist" | \
awk -F '[</>]' -v f="${${file##*/}%%.*}" '{if($3~f){for(i=0;i<3;i++)getline;print $5}}')"; \
cp -fv "$file" "$HOME/$LSD/Touch Icons Cache/Images/${(U)$(md5 -q -s $URL)}.png"; done; exit

D'ici: https://gist.github.com/dardo82/f7cc7c5c864fb5afa04bb12ecbcf3a9f

Mon script prend un dossier avec les icônes tactiles manquantes comme seul argument.

Les fichiers doivent avoir le même nom que le signet qui leur est associé.

chflags uappnd ~/Library/Safari/Touch\ Icons\ Cache/Images

vous permet de conserver toutes les favicons tout en vidant le reste du cache de Safari.

J'ai amélioré l'essentiel:

#!/bin/zsh

# Fix Safari Missing Touch Favicons

HLSD="$HOME/Library/Safari"; SCD="$HLSD/Touch Icons Cache/Images"

typeset -A BMA; BMA=($(plutil -p "$HLSD/Bookmarks.plist" \
| sed -n '/title/{h;n;n;H;x;p'$'\n''}' \
| awk -F'"' '{name=$4; getline; if($0~/\"[a-z]+:\/\//){print name" "$4}}'))

for bmn in ${(k)BMA[@]}; do
cp -v "$1/$bmn.png" "$SCD/${(U)$(md5 -qs ${${${BMA[$bmn]}#*//}%%/*})}.png"; done

1
c'est un correctif correctif simple et correct. Je ne savais pas comment utiliser le script au début avant de lire cette réponse plus attentivement, mais je vais décrire explicitement un exemple pour ceux d'entre nous comme moi qui exécutons rarement des scripts shell: si, par exemple, le signet nommé "Gmail" ne s'affiche pas une icône, téléchargez n'importe quelle icône appropriée, tel que cela , placez-le dans un dossier tel que ~ / Desktop, cd dans ce dossier, renommez le fichier "Gmail.png" puis faites "zsh fixicon", où fixicon est un fichier texte contenant le script ci-dessus, et a été "chmod + x "ed.
xdavidliu

Oui, vous avez raison, merci de prendre le temps de me parler plus verbeusement que moi ...
dardo82

2

Voici un hack qui fonctionne très bien (il faut cependant une quantité modérée de manipulation d'image simple. Voir aussi une note au bas de cette réponse pour ne pas perdre complètement ce correctif et le refaire). il semble que le problème est que les icônes données par les sites Web ont été conçues pour le marque-page. bar , qui a des icônes plus petites, et pas le safari favoris l'écran, qui a des icônes plus grandes (au moins 144 x 144).

Les icônes elles-mêmes sont stockées dans ~ / Bibliothèque / Safari / Cache des icônes tactiles / Images /, avec des noms très longs (quelque chose comme "908F6BBF6DA814ABAF917C4E7BB9E36F.png"). Lorsqu'un nouveau favori est ajouté (par exemple, New York Times, dans le cas de la question d'origine) et que l'icône s'affiche correctement dans l'écran Favoris, un fichier png 144 x 144 apparaît dans le dossier Cache susmentionné, et tout est bon et volumineux. . Cependant, si, par exemple, Gmail est ajouté, et qu'un grand G laid et non descriptif apparaît à la place de la jolie icône Gmail, cela signifie alors un minuscule png (conçu pour un signet). bar à la place de l'écran favori) apparaît dans le dossier Cache. (alternativement, si même pas un minuscule png incorrect apparaît dans ce dossier, préférez tout simplement un autre site "leurre" qui Est-ce que faites apparaître un fichier png, procédez comme suit, puis modifiez le nom et l’URL du favori ultérieurement).

Donc, pour corriger l'icône, créez simplement un autre png ayant la résolution correcte de 144 x 144 (voir la remarque ci-dessous), puis utilisez ce png créé pour remplacer le minuscule fichier "incorrect" dans le dossier Cache des icônes, en veillant à conserver la constante du nom de fichier long. Quittez Safari (Command-Q) et redémarrez. L’icône apparaît parfaitement, ainsi:

Fixed favorites screen

Notez que Gmail et Google Drive ont maintenant les icônes correctes. Je devais faire la même chose pour The Economist également, car ce site ne fournissait pas non plus de favicon 144 x 144 approprié.

Pour créer un moyen très simple de créer une icône de 144 x 144 en utilisant simplement Aperçu, il vous suffit de télécharger une image haute résolution de l'icône (Gmail, Google Drive), ou quoi que ce soit d'autre, ouvrez-la en aperçu, puis ajustez la taille de la souris à 144 . Maintenant, mettez cette image de côté et appelez-la "image A". Notez que la transparence pose parfois des problèmes aux favicons de safari (par exemple, si une région d’une image est incolore, la couleur affichée dans ces régions peut être incohérente). Si cela se produit, nous pouvons créer un fond blanc. Pour ce faire, il suffit d’appuyer sur Commande-Maj + 4 et de faire glisser une partie rectangulaire de toute partie blanche de l’écran, puis de prendre la capture d’écran résultante et de la redimensionner à 144 x 144. Enfin, prenez «l’image A» d’avant, puis copiez et collez sur cet espace blanc. Cela crée généralement une très belle icône.

Remarque importante: si l'option de menu "Développeur" est activée (par exemple, tout en haut de l'écran, près de "Signets" et "Fenêtre") est activée dans les préférences Safari, veillez à ne pas sélectionner "Effacer les caches", sinon cela supprimera également toutes les icônes que vous avez créées. En outre, le simple effacement de l'historique fait la même chose. Si vous souhaitez vraiment effacer l'historique ou effacer le cache pour obtenir plus d'espace disque, enregistrez les icônes personnalisées que vous avez créées avant d'effacer. De cette façon, vous pourrez les remettre ensuite sans avoir à les recréer.

Les caches peuvent aussi parfois être automatiquement effacés. Il est donc recommandé de créer des sauvegardes des icônes.


2
Je suggère de faire des sauvegardes de toutes les icônes que vous faites, car les dossiers de cache peuvent être effacés à tout moment, parfois par accident
Skeleton Bow

"Notez que la transparence pose des problèmes aux favicons de safari" Cela semble bien fonctionner pour moi. Semble également fonctionner pour vous, selon votre icône Google Drive, non?
Skeleton Bow

1
Ah bon point Skeleton Bow, vous avez raison de dire que l’icône de Google Drive présente un arrière-plan transparent et s’affiche correctement. Cependant, la raison pour laquelle j'ai ajouté cette note est parce que mon icône Économiste comportait une barre rouge sur du texte "transparent" et que, parfois, il affichait le texte en blanc ou en noir, ce dernier étant vraiment étrange. J'ai dû mettre un fond blanc pour que le texte s'affiche correctement. J'ai légèrement modifié ma réponse pour refléter ce qui précède.
xdavidliu

Merci! Mais oh! Je vis les problèmes que vous avez mentionnés. Je vais essayer de découvrir ce qui cause exactement ce problème de transparence…
Skeleton Bow

0

Une solution à long terme serait de contacter l'éditeur de votre site Web pour ajouter les icônes appropriées de manière appropriée.

Par exemple, je possède un site Web sur Wix, et il s’agit simplement d’ajouter quelques lignes de Code d'en-tête avec des liens vers l'image de mon icône, l'icône du site semble alors fonctionner normalement. Il devrait donc être facile de convaincre vos éditeurs préférés d’ajouter l’icône.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.