5 votos

¿Añadir un elemento a la barra de herramientas del Finder con el terminal?

Puedes cmd -arrastrar un elemento a la barra de herramientas del Finder para tenerlo ahí permanentemente, pero ¿hay alguna forma de hacerlo en el Terminal?

Lo más parecido que he encontrado es este viejo hilo: http://macscripter.net/viewtopic.php?id=21344

Lo que sugiere algo así:

defaults write com.apple.finder FXToolbarItems -array-add '<dict><key>file-data</key><dict><key>_CFURLString</key><string>"/Applications/Chess.app"</string><key>_CFURLStringType</key><integer>0</integer></dict></dict>'
killall -HUP Finder

.. o quizás...

defaults write com.apple.finder FXToolbarItems -array-add '<dict><key>file-data</key><dict><key>_CFURLString</key><string>"/Applications/Chess.app"</string><key>_CFURLStringType</key><integer>0</integer></dict><key>item-id</key><string>loc%20</string></dict>'
killall -HUP Finder

Ninguno de los dos parece funcionar. ¿Hay algo que funcione con Yosemite y superior?


Me he dado cuenta de que si añado manualmente la aplicación de Ajedrez a la barra de herramientas del Finder, y luego saco los prefijos del Finder así:

defaults read com.apple.finder >> finderprefs

Veo que lo pone así:

"TB Item Plists" =         {
        7 =             {
            "_CFURLAliasData" = <(lots of hex code)>;
            "_CFURLString" = "file:///Applications/Chess.app";
            "_CFURLStringType" = 15;
        };
    };

Así que supongo que tengo que encontrar una manera de hacerlo con defaults write


Otras investigaciones sugieren que no es aconsejable añadir elementos mediante programación: http://prod.lists.apple.com/archives/cocoa-dev/2015/May/msg00212.html

Si sabes algo diferente, me encantaría saberlo...

0 votos

Recomiendo utilizar el excelente script dockutil para manejar programáticamente los elementos del dock. dockutil --add /Applications/TextEdit.app

4voto

forquare Puntos 841

Esto es lo más lejos que he llegado, y no me funciona en El Capitán (aunque, eso podría ser algo relacionado con la beta ).

Parece que defaults no es lo suficientemente completo (¿ya?) para que consigas lo que quieres, sin embargo puedes usar PlistBuddy, que en 10.11 se encuentra actualmente en /usr/libexec/PlistBuddy para añadir/eliminar/editar archivos plist.

Estos son los dos comandos que puedes utilizar para añadir el _CFURLString y _CFURLStringType :

/usr/libexec/PlistBuddy -c 'Add "NSToolbar Configuration Browser":"TB Item Plists":8:_CFURLString string "file:///Applications/Chess.app"' ~/Library/Preferences/com.apple.finder.plist

/usr/libexec/PlistBuddy -c 'Add "NSToolbar Configuration Browser":"TB Item Plists":8:_CFURLStringType integer 15' ~/Library/Preferences/com.apple.finder.plist

El "8" que se encuentra en los dos comandos anteriores es el índice de la matriz del elemento.

No _CFURLAliasData se genera (como se sugiere en varios lugares). He probado a crear un _CFURLAliasData pero Finder no lo ha rellenado.

Otro problema es que si añado/elimino otro elemento utilizando cmd -arrastrar todos los datos que he añadido con PlistBuddy se borra

Esperemos que esta información sirva para que alguien más se acerque.

1voto

goobie Puntos 228

Además de añadir una entrada a TB Item Plists también hay que añadir una entrada a TB Item Identifiers .

El siguiente código añadirá Go2Shell a la barra de herramientas del Finder:

#!/usr/bin/env bash

PLIST=~/Library/Preferences/com.apple.finder.plist
ITEMS=`/usr/libexec/PlistBuddy -c "Print 'NSToolbar Configuration Browser:TB Default Item Identifiers'" $PLIST | sed '1d; $d'`
APP=/Applications/Go2Shell.app/Contents/MacOS/Go2ShellHelper.app/
POSITION=8

/usr/libexec/PlistBuddy -c "Delete 'NSToolbar Configuration Browser:TB Item Identifiers'" $PLIST
/usr/libexec/PlistBuddy -c "Delete 'NSToolbar Configuration Browser:TB Item Plists'" $PLIST

/usr/libexec/PlistBuddy -c "Add 'NSToolbar Configuration Browser:TB Item Identifiers' array" $PLIST
i=1
for ITEM in $ITEMS
do
  if [ $i -ne $POSITION ]; then
    /usr/libexec/PlistBuddy -c "Add 'NSToolbar Configuration Browser:TB Item Identifiers:$i' string $ITEM" $PLIST
  fi
  ((i++))
done

/usr/libexec/PlistBuddy -c "Add 'NSToolbar Configuration Browser:TB Item Plists:$POSITION:_CFURLString' string 'file://$APP'" $PLIST
/usr/libexec/PlistBuddy -c "Add 'NSToolbar Configuration Browser:TB Item Plists:$POSITION:_CFURLStringType' integer 15" $PLIST
#/usr/libexec/PlistBuddy -c "Import 'NSToolbar Configuration Browser:TB Item Plists:$POSITION:_CFURLAliasData' alias_data" $PLIST
/usr/libexec/PlistBuddy -c "Add 'NSToolbar Configuration Browser:TB Item Identifiers:$POSITION' string 'com.apple.finder.loc '" $PLIST

killall -HUP Finder
  1. Los elementos de la barra de herramientas por defecto se leen
  2. Se eliminan los identificadores y plists existentes
  3. Se añaden nuevos identificadores dejando un espacio para Go2Shell
  4. Se añade un nuevo plist e identificador para Go2Shell (el espacio después de com.apple.finder.loc es necesario)

El _CFURLAliasData está comentada, ya que no es necesaria para la barra de herramientas del Finder, y probablemente una mala idea también. Si los datos del alias son necesarios (puede ser para el Barra lateral del Finder o Dock ), el siguiente código generará un alias_data para Go2Shell y añadirlo al plist:

#!/usr/bin/env bash

APP=/Applications/Go2Shell.app/Contents/MacOS/Go2ShellHelper.app/
POSITION=8

python2 -c "from Carbon import File; print File.FSNewAlias(None, File.FSRef('$APP')).data" > alias_data
/usr/libexec/PlistBuddy -c "Import 'NSToolbar Configuration Browser:TB Item Plists:$POSITION:_CFURLAlias_Data' alias_data" ~/Library/Preferences/com.apple.finder.plist
rm alias_data

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