La barra lateral del buscador no se actualizará después de cambiar

2

Estoy tratando de actualizar la barra lateral sin reiniciar la computadora (en este caso, la barra lateral se actualiza bien después de cambiar los valores).

Mis operaciones son:

Convertir a XML

plutil -convert xml1 ~/Library/Preferences/com.apple.sidebarlists.plist

Editar cosas cambiantes (agregar, eliminar, etc.)

(using text editor)

Convertir de nuevo en binario

plutil -convert binary1 ~/Library/Preferences/com.apple.sidebarlists.plist

Intentando reiniciar el Finder de muchas maneras

osascript -e 'quit app "Finder"'
sleep 1
osascript -e 'tell app "Finder" to launch'

killall Finder
killall Finder SystemUIServer
killall -HUP Finder
killall cfprefsd

pero la lista lateral nunca se actualizará ...

Como dije si reinicio la computadora, entonces veo cambios.

¿Alguna idea? ¡Gracias!

P.D. Por cierto, estoy en Yosemite ... tal vez tenga algo que ver

    
pregunta FlamingMoe 10.12.2014 - 22:23

3 respuestas

4

NUNCA manipule directamente ninguno de los archivos en ~ / Biblioteca / Preferencias. Todas las preferencias se administran mediante un proceso en segundo plano llamado cfprefsd (abreviatura de Core Foundation PREFerences Daemon), que absorbe y almacena en la memoria RAM los archivos en ~ / Library / Preferences. Solía ser que a menudo se salía con la suya manipulando los archivos de preferencias detrás de la espalda de cfprefsd , por así decirlo, pero cfprefsd se ha vuelto muy agresivo acerca de cuánto almacena en caché .

En lugar de editar uno de estos archivos, pida una copia a cfprefsd , edite la copia y luego envíe el contenido de la copia a cfprefsd . Su interfaz para cfprefsd es el comando de shell por defecto .

Por ejemplo, para editar las preferencias para el dominio com.apple.sidebarlists :

defaults read com.apple.sidebarlists > ~/Desktop/sidebarlists.txt
... edit sidebarlists.txt to your heart's content
defaults write com.apple.sidebarlist "$(cat ~/Desktop/sidebarlist.txt)"

Necesitará que Finder esté al tanto de los cambios, así que agregue

osascript -e 'tell application "Finder" to quit'
sleep 0.2 # not always necessary
osascript -e 'tell application "Finder" to activate'

Recuerda jugar bien con otros programas. Matar no es bueno, así que no mates nada (especialmente no cfprefsd ) que no necesites matar por completo. No se dé la vuelta con la tienda persistente de otro programa mientras se está ejecutando. En particular, dado que cfprefsd siempre se está ejecutando, NUNCA modifique directamente el contenido de ~ / Library / Preferences / *.

Si necesita eliminar un archivo de preferencias, la forma correcta es con:

defaults delete its.domain.name

Deje que cfprefsd se preocupe por deshacerse del archivo (o, como es habitual en la actualidad, reescribir un archivo esencialmente vacío encima de él).

El nombre de archivo ~ / Desktop / sidbarlist.txt es, por supuesto, solo un ejemplo. Use una extensión .plist en lugar de .txt si lo prefiere. El archivo estará en formato Plist de texto NextStep.

Si prefiere algún otro formato de lista de propiedades, use pllist -convert ... . O deje que el comando defaults lo escriba como un archivo .plist en un formato de su elección con

defaults write ~/Desktop/sidebarlists "$(defaults read com.apple.sidebarlists)"
... edit the file ...
defaults write com.apple.sidebarlists "$(defaults read ~/Desktop/sidebarlists)"

Pero lo importante es que guarde su copia, la que edite o manipule, fuera de ~ / Biblioteca / Preferencias. Deje que defaults se preocupe por comunicarse con cfprefsd , y deje que cfprefsd se preocupe por manipular ~ / Library / Preferences.

    
respondido por el ganbustein 11.12.2014 - 05:11
1

Gracias por publicar esta información, fue muy útil para ayudarme a encontrar una solución para el problema de la barra lateral en Yosemite.

Nuestros usuarios toman sus carpetas de la barra lateral con seriedad, por lo que tuvimos que encontrar una manera de hacer una copia de seguridad y restaurar el contenido de la lista de sidebarlists.plist, ya que Yosemite es muy inusual.

Originalmente probé este método:

Copia de seguridad:

mkdir -p /Users/Shared/SidebarBackup/

defaults read com.apple.sidebarlists.plist > /Users/Shared/SidebarBackup/SBLbackup.plist

Restaurar:

osascript -e 'tell application "Finder" to quit'

sleep 0.2

defaults delete com.applesidebarlists.plist

sleep 0.2

defaults write com.apple.sidebarlist "$(cat /Users/Shared/SidebarBackup/SBLbackup.plist)"

osascript -e 'tell application "Finder" to activate'

Y descubrió que después de reiniciar la Mac, los elementos se restauraron, pero tan pronto como iniciaste una ventana del Finder, se bombardearía y deberías eliminar el Finder, eliminar el plist y luego reiniciar antes de que el Finder volviera a funcionar.

Luego de mucho jugar, este es el resultado final y funciona como un encanto:

Copia de seguridad:

mkdir -p ~/Library/Preferences/Backups

defaults export com.apple.sidebarlists ~/Library/Preferences/Backups/Sidebarlists.plist

Restaurar:

osascript -e 'tell application "Finder" to quit'

sleep 0.2

defaults delete com.apple.sidebarlists.plist

sleep 0.2

defaults import com.apple.sidebarlists.plist ~/Library/Preferences/Backups/Sidebarlists.plist

sleep 0.2

osascript -e 'tell application "Finder" to activate'

Planee hacer de esto un elemento de autoservicio de Casper (la copia de seguridad de autoservicio funciona bien pero el script de restauración no se ejecuta correctamente ... Si no es una cosa, es otra ...)

    
respondido por el silkshakes 20.02.2015 - 13:41
0

No creo que las actualizaciones del buscador se actualicen hasta después del reinicio. Por lo tanto, si está buscando restaurar los accesos directos de la barra lateral o eliminarlos por completo, no verá los cambios hasta que reinicie.

    
respondido por el John M 02.06.2015 - 16:42

Lea otras preguntas en las etiquetas