Я запускаю сценарий терминала, и я действительно хотел бы отправить варианты выбора в графический интерфейс OS X, подобно тому, как choice.com
работает для Windows / DOS, но версия GUI.
Я знаю, что могу использовать команду choose from list
, но я бы предпочел более родное приложение, потому что я думаю, что оно будет работать быстрее, а также будет более стабильным и более простым для взаимодействия с ним.
Я установил Platypus, и мне нравится, как у него есть возможность выводить данные в окно графического интерфейса, но мне бы хотелось, чтобы функциональность передавала данные обратно в сценарий из такого окна.
Одним из примеров сценария может быть простой способ выбора из списка папок. Вот как это выглядит, когда я делаю это с помощью Applescript:
set listOfNames to {}
tell application "Finder"
set filelist to every window
repeat with currentFile in filelist
set currentFileName to (POSIX path of (target of currentFile as alias)) as string
copy currentFileName to the end of listOfNames
end repeat
end tell
set mySelection to choose from list listOfNames
Тем не менее, я бы предпочел не использовать Applescript.
Ресурсы
Пока я не смогу найти (или собрать) идеальное приложение для этого, мне, возможно, придется использовать Applescript. Я собираюсь перечислить несколько ресурсов, которые я нашел:
Умный способ сделать многострочный яблочный скрипт из терминала:
Код отсюда:
#!/bin/sh
# filename: find_me
# usage from Terminal prompt: find_me "Last First"
osascript -e "set the_name to \"$1\"" -e 'on find_me (the_name)
tell application "Address Book"
set the_people to every person
repeat with this_name in the_people
if name of this_name contains the_name then
set result to name of this_name & "\n"
repeat with e_info in emails of this_name
set result to result & value of e_info & " "
end repeat
set result to result & "\n"
repeat with p_info in phones of this_name
set result to result & value of p_info & " "
end repeat
return result
end if
end repeat
end tell
end find_me' -e 'find_me(the_name)'
Также на этой странице стоит отметить: "osascript пока не предоставляет способа передать аргументы скрипту"
«Но есть обходной путь:»
call osascript -e 'set thename to '$1 -e 'load script "/path/to/script"' -e 'look_up_name(thename)'
И мой вклад, способ заставить диалог быть в фокусе:
#!/bin/sh
osascript -e "set front_app_name to short name of (info for (path to frontmost application))
set listOfNames to {"a", "b", "c"}
tell application front_app_name to choose from list listOfNames"
Также полезно отметить, что вы можете использовать несколько команд -e, чтобы передать несколько строк для запуска.