AppleScript, который считывает имя активного приложения, заголовок и URL

Мне нужен AppleScript, который при запуске из командной строки вернет три вещи:

  1. имя текущего активного приложения; бывший. «Google Chrome», «Safari», «Steam», «iTunes», «Atom» и т. д.
  2. название текущего активного приложения, если оно есть
  3. если текущим активным приложением является браузер, мне нужен URL-адрес текущей активной вкладки

Примеры:

  • Гугл Хром; AppleScript: как получить URL-адрес вкладки Safari, который не удалось загрузить? - Переполнение стека; https://stackoverflow.com/
  • Айтюнс; iTunes
  • iTerm2; 1. узел test.js (спящий)
  • Safari, GitHub — рельсы/рельсы: Ruby on Rails; https://github.com/rails/rails

Я знаю, что есть некоторые подобные вопросы w. ответы здесь, в stackoverflow, но я не могу собрать их вместе, чтобы все это заработало. Был бы признателен за помощь.


person Tomasz Giba    schedule 09.02.2018    source источник
comment
Актуально: Time Sink — это коммерческое программное обеспечение для периодической записи текущего приложения и заголовка окна и анализа результатов. Однако он не отслеживает текущий URL.   -  person Rory O'Kane    schedule 29.04.2019
comment
@RoryO'Kane да, я использую Time Sink почти год. Это.. Ну, это нормально, особенно учитывая, что я заплатил за него 5 долларов. С URL-адресом в плагине вкладок и некоторой работой по настройке фильтров, он выполняет свою работу, если вы хотите отслеживать свое внимание.   -  person Tomasz Giba    schedule 29.04.2019


Ответы (1)


Я хотел сделать скрипт, который работает именно так в фоновом режиме, чтобы я мог лучше отслеживать свое время. Вот что я придумал:

tell application "System Events"
    set frontmostProcess to first process where it is frontmost
    set appName to name of frontmostProcess
end tell
tell application appName
    set windowName to the name of the front window
end tell
if appName is equal to "Safari" then
    tell application "Safari"
        set theURL to the URL of the current tab of the front window
    end tell
else if appName is equal to "Google Chrome" then
    tell application "Google Chrome"
        set theURL to the URL of the active tab of the front window
    end tell
else
    set theURL to ""
end if

return (appName, windowName, theURL)

Спасибо https://apple.stackexchange.com/a/171738 за то, что я на правильном пути.

person clwainwright    schedule 17.08.2018
comment
Этот сценарий завершится ошибкой, если приложение не поддерживает сценарии: tell application AppName to set windowName to the name of the front window не будет работать для приложений, не поддерживающих сценарии. - person CJK; 19.08.2018