Aquí tienes una solución applescript. Esto debería darle una lista completa de los archivos abiertos (incluyendo la ruta completa) en la aplicación de vista previa.
Además, si algún gurú de AppleScript se encuentra con esta respuesta, le agradecería cualquier crítica constructiva que tenga que ofrecer :)
set text item delimiters to "\n"
set myList to {}
tell application "Preview"
set theDocs to get documents
repeat with eachDoc in theDocs
set thePath to path of eachDoc
copy thePath to end of myList
end repeat
end tell
set the_list to myList as text
tell application "Finder"
set myFile to "/Users/YourName/YourFolder/FileName.txt"
do shell script "date >> " & myFile
do shell script "echo " & quoted form of the_list & " >> " & myFile
end tell
Esto imprimirá la fecha actual seguida de una lista de todos los documentos abiertos en Vista Previa. Si prefiere omitir la fecha, elimine la línea:
do shell script "date >> " & myFile
Asegúrese de rellenar la información correcta en la línea:
set myFile to "/Users/YourName/YourFolder/FileName.txt"
Si desea añadir un sello con la fecha a los nombres de los archivos, sólo tiene que poner las siguientes líneas bajo el campo tell application "Finder"
bloque
set time_stamp to (do shell script "date \"+%m-%d-%y\"")
set myFile to "/Users/YourName/YourFolder/PreviewProfile_" & time_stamp & ".txt"
El terminal date
dispone de muchos formatos diferentes. Para conocer las diferentes opciones disponibles, abra su terminal y escriba man strftime
.
Después de jugar un poco más me doy cuenta de que este script se puede simplificar aún más. Esta es una versión más simplificada que evita algunos pasos innecesarios del original. Pero el resultado es el mismo de cualquier manera.
set text item delimiters to "\n"
tell application "Preview"
set theDocs to get path of every document as text
tell application "Finder"
set time_stamp to (do shell script "date \"+%m-%d-%y\"")
set myFile to "/Users/YourName/YourFolder/PreviewProfile_" & time_stamp & ".txt"
do shell script "echo " & quoted form of theDocs & " >> " & myFile
end tell
end tell
Para facilitar su uso, puede guardar este script como un servicio de Automator para utilizarlo mientras trabaja en cualquier aplicación. Para ello, basta con abrir Autómata - entonces del Archivo seleccionar menú Nuevo o ⌘N desde el teclado. A continuación, seleccione Servicio de las opciones mostradas. Cuando se abra el documento, seleccione Servicios en la columna de la izquierda. A continuación, seleccione Ejecutar AppleScript en la columna de la derecha. Pega este script en el cuadro que aparece. En las opciones desplegables de la parte superior de la página, seleccione El servicio no recibe ninguna entrada y en cualquier aplicación . A continuación, elija un nombre, guarde el archivo y debería tener un servicio disponible para utilizar en cualquier momento en el menú de servicios.
Actualización
He aquí una forma de leer y abrir la lista de archivos que acabamos de crear. Esto le permitirá elegir qué archivos desea abrir sin tener que abrir todos los archivos de la lista si no lo desea.
tell application "Finder"
set file_list to {}
set my_files to paragraphs of (read "/Users/YourName/path/to/YourFile")
repeat with nextLine in my_files
if length of nextLine is greater than 0 then
copy nextLine to the end of file_list
end if
end repeat
choose from list file_list with multiple selections allowed
set chosen_Files to the result
repeat with next_file in chosen_Files
do shell script "open " & next_file
end repeat
end tell
Espero que te ayude. Avísame si tienes algún problema.
2 votos
¿Esperamos que cada ventana abierta en Vista Previa tenga exactamente un archivo abierto como lo ve lsof? Aunque no soy un desarrollador con experiencia en Mac, parecería algo natural que Preview.app pudiera leer un archivo de imagen completo del disco a la memoria y luego realizar la llamada al sistema de cierre. Especialmente si Vista Previa estuviera mostrando docenas de archivos.
1 votos
¿Qué es el monitor de aplicaciones? ¿Quiere decir Monitor de Actividad?
1 votos
@DAVincent Tengo una ventana abierta para cada archivo, aunque sólo muestra algunos de ellos. ¿Quieres decir que la Vista Previa está cerrando los archivos y manteniendo la imagen en memoria? Entonces, otro enfoque sería hacer un watcher de los archivos abiertos por la aplicación Preview y escribirlo en algún log.
1 votos
@DAVincent, sí, me refería al Monitor de Actividad.
1 votos
Sí @Werner, has entendido lo que quería decir. Podríamos crear un script para ver Preview.app. Podría ser complicado evitar una condición de carrera en la que Preview se ejecutara demasiado rápido para que el observador se diera cuenta. Pero extrapolando mi experiencia pasada con otros ordenadores, quizás podríamos hacer que el script usara la funcionalidad de depuración del sistema para capturar cada llamada al sistema que hiciera Preview.
0 votos
(REPUTACIÓN SIN VERGÜENZA: si le parecen útiles mis comentarios, por favor, vote sobre ellos).