2 votos

La lista de la barra lateral del buscador no se actualiza después de cambiar

Estoy intentando actualizar la lista de la barra lateral sin reiniciar el ordenador (en este caso la barra lateral se actualiza bien después de cambiar los valores).

Mis operaciones son:

Convertir en XML

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

Editar cambiando cosas (añadir, quitar, etc...)

(using text editor)

Convertir de nuevo en binario

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

Intentando reiniciar 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 actualiza ...

Como he dicho si reinicio el ordenador, entonces veo los cambios.

¿Alguna idea? Gracias.

P.D. Por cierto, estoy en Yosemite ... quizás tenga algo que ver

4voto

ganbustein Puntos 1016

NUNCA manipule directamente ninguno de los archivos de ~/Library/Preferences. Todas las preferencias son gestionadas por un proceso en segundo plano llamado cfprefsd (abreviatura de Core Foundation PREFerences Daemon), que sorbe y almacena en caché los archivos de ~/Library/Preferences. Antes se podía manipular los archivos de preferencias detrás de cfprefsd de la espalda, por así decirlo, pero cfprefsd recientemente se ha vuelto muy agresivo en cuanto a la cantidad de caché.

En lugar de editar uno de estos archivos, pregunte cfprefsd para obtener una copia, editar la copia, y luego enviar el contenido de la copia de vuelta a cfprefsd . Su interfaz para cfprefsd es el valores predeterminados comando de shell.

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

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)"

Tendrás que hacer que Finder sea consciente de los cambios, así que lanza

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

Recuerde que debe jugar bien con otros programas. Matar no es agradable, así que no mates nada (especialmente no cfprefsd ) que no es absolutamente necesario matar. No te pongas a jugar con el almacén persistente de otro programa mientras se está ejecutando. En particular, ya que cfprefsd siempre se está ejecutando, NUNCA altere directamente el contenido de ~/Library/Preferences/*.

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

defaults delete its.domain.name

Dejemos que cfprefsd preocuparse por deshacerse del archivo (o, como suele hacer hoy en día, reescribir un archivo esencialmente vacío sobre él).

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

Si prefiere otro formato de lista de propiedades, utilice pllist -convert ... . O dejar que el valores predeterminados escribirlo 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 mantengas tu copia, la que editas o manipulas, fuera de ~/Librería/Preferencias. Deje que valores predeterminados preocuparse por la comunicación con cfprefsd y que cfprefsd preocuparse de manipular ~/Library/Preferences.

0 votos

Excelente explicación. Muchas gracias. Sin embargo, haciendo de esa manera, los elementos no se actualizan en la barra lateral ... Después de hacer tu manera, si reinicio, entonces veo los cambios sin embargo.

0 votos

Debería actualizarse en cuanto salgas/reinicies Finder. Es posible que tengas que ordenar los últimos pasos como: salir de Finder, luego escribir por defecto..., y luego activar Finder. (Esto es para manejar el caso en el que Finder actualiza sus valores por defecto mientras sale).

1 votos

Lo siento Ganbustein, pero aún haciendo de esa última manera, no se actualiza... ¿se actualiza en tu sistema? He probado en 10.9 y 10.10

1voto

silkshakes Puntos 11

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 se toman muy en serio sus carpetas de la barra lateral, por lo que necesitábamos encontrar una forma de hacer una copia de seguridad y restaurar el contenido de sidebarlists.plist, ya que Yosemite es muy inestable.

Al principio probé este método:

Respaldo:

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 descubrí que después de reiniciar el Mac, los elementos se restablecían, pero tan pronto como se iniciaba una ventana del Finder, éste se bloqueaba y era necesario matar el Finder, borrar el plist y reiniciar antes de que el Finder volviera a funcionar.

Así que después de mucho jugar este es el resultado final y funciona como un encanto:

Respaldo:

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'

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

0 votos

Buen plan para colocar esto en el autoservicio. Gracias por profundizar en la diferencia entre defaults import y defaults write

0voto

John M Puntos 1

No creo que las listas del Finder se actualicen hasta después de reiniciar. Así que si usted está buscando para restaurar los accesos directos de la barra lateral, o la basura por completo, usted no va a ver los cambios hasta que reinicie.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X