Eliminar servicios en OS X

15

Estoy buscando eliminar algunos servicios por completo, o al menos de la lista en el panel de preferencias Teclado. He intentado:

  1. Servicio de depurador . Solo elimina los servicios del menú, algo que ha podido hacer desde las Preferencias del sistema desde 10.6.
  2. Eliminando archivos en ~/Library/Services/y /Library/Services/. Es solo que la mayoría de las aplicaciones de terceros no ponen sus servicios allí.
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices. Elimina los servicios de la lista en Preferencias del sistema. Pero también invalida la firma del código del paquete, y las actualizaciones pueden revertir los cambios.

Supongo que tendrías que conformarte con la última opción y asignar nuevas firmas codesigncuando sea necesario. ¿Pero hay alguna manera más fácil?

Lri
fuente
Ah, la belleza de OS X complica las cosas que deberían ser simples.
cregox
¿Qué versión de OS X estás ejecutando? Los aspectos internos de OS X tienden a cambiar drásticamente entre las versiones principales.
Majenko
55
@Cawas: eliminar servicios es simple: va a la lista en Preferencias del sistema y los desmarca. Lo que Lri quiere hacer, por alguna razón, es eliminarlos y hacer que sean imposibles de restaurar. ¿Por qué debería ser fácil romper cosas?
LaC
@LaC es probablemente una cuestión de gustos en este caso. En mi caso quería el viejo Expose. pero permítame revertir su pregunta: es simple agregar el servicio a esa lista; ¿por qué no debería ser simple eliminarlo por completo y mantenerlo limpio si el administrador así lo desea?
cregox
AFAICT, es igual de simple. Agrega un servicio colocándolo en Biblioteca / Servicios o instalando una aplicación que lo proporciona. Elimina un servicio eliminándolo de la Biblioteca / Servicios o eliminando la aplicación que lo proporciona.
LaC

Respuestas:

3
#!/bin/sh

applist="Path Finder
Skim
TextWrangler"
IFS=$'\n'

for appname in $applist; do
    apppath=$(mdfind -onlyin /Applications/ -onlyin ~/Applications/ \
    -onlyin /Developer/Applications/ -onlyin /System/Library/CoreServices/ \
    'kMDItemKind == Application' | grep -i "/$appname.app$" | head -1)
    echo $apppath
    date=$(date '+%y%m%d%-H%M%S')
    cp "$apppath/Contents/Info.plist" "$apppath/Contents/Info-$date.plist"
    defaults delete "$apppath/Contents/Info" NSServices
    codesign -f -s - "$apppath"
done
Lri
fuente
¿Algún tipo de certificado en particular en el paso 2?
Daniel Beck