Estoy tratando de construir un Servicio que haga lo siguiente:
Indagando e inspirándome en publicaciones como Copiar la ruta del directorio actual al portapapeles y MacYourself Copiar la ruta del archivo o carpeta al portapapeles en Mac OS X Lion Llegué al punto en que puedo obtener las rutas de la selección, pero Parece que estoy atascado al intentar obtener la ruta de la ventana actual si la selección está vacía.
ACTUALIZACIÓN 13-dic-2013. Tengo algunos comentarios útiles (consulte https://apple.stackexchange.com/a/113612/7488 ; gracias @Flavin), así que actualicé el código al siguiente:
on run {input, parameters}
set l to {}
tell application "Finder"
set sel to (get selection)
if not sel = {} then -- there are some file/folders selected
repeat with f in (get selection)
set end of l to POSIX path of (f as alias)
end repeat
else --no stuff is selected, get the current location path
set end of l to POSIX path of (insertion location as alias)
end if
end tell
set text item delimiters to linefeed
set the clipboard to (l as text)
end run
La lógica parece sólida y funciona siempre que tenga "algo" seleccionado en Finder.
Sospecho que el Servicio podría no estar "Activo" cuando no hay nada seleccionado (es decir, cuando el resultado deseado sería copiar la ruta actual al portapapeles).
En esta situación, la ventana del Finder aparece así:
Pero intentar activar el Servicio muestra una lista de servicios "vacía":
Cuando tengo algo seleccionado, la lista de Servicios se rellena:
La "Copiar ruta de archivo" que he definido está asociada con "Archivos y carpetas" en las Preferencias de servicios. ¿Cuál podría ser el problema?
Creo =
que es lo que estás buscando.
set sel to (get selection)
if not sel = {} then
--stuff is selected
else
--no stuff is selected
end if
O quitar el not
y voltear los casos
set sel to (get selection)
if sel = {} then
--no stuff is selected
else
--stuff is selected
end if
Ahora funciona. La clave está en cómo se define el servicio "Automator".
Cuando se configuró inicialmente, el Servicio de Automator se definió como "Archivos o Carpeta" en "Finder":
Entonces en las Preferencias el Servicio está asociado a Archivos y Carpetas:
Y el resultado es que el servicio no está "activo" cuando no hay selección (obtenemos la misma imagen que en la pregunta):
Cambiando la definición del servicio a "Sin entrada":
Significa que el Servicio está disponible cuando no hay selección en Finder:
Revisando en las Preferencias de Servicios, ahora el Servicio está asociado a la categoría "General":
Y el comportamiento es el esperado.
jjarava