Я хочу, чтобы периодически появлялось оповещение/диалоговое окнона переднем планена моем Mac.
Я попробовал комбинацию AppleScript и launchd
и мне удалось периодически запускать скрипт (фактически преобразованный в приложение) через launchd. Однако окно оповещения не отображается поверх всех других окон (скорее полностью скрыто, пока я не перейду к нему с помощью Tab – хотя оноделаетначать через launchd
). Как мне вывести его на передний план?
Мой сценарий следующий:
on run
activate me --> tried to get alert in foreground
--> didn't help, though
display alert "Should show up in foreground..."
end run
Мой launch.plist (в /Users/bernhard/Library/LaunchAgents/
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>bernhard.sitstraight.plist</string>
<key>Program</key>
<string>/Users/bernhard/programming/periodic.app/Contents/MacOS/applet</string>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1200</integer>
</dict>
</plist>
решение1
Получил ответ наСпросите по-другому:
Решение состоит в том, чтобыopen
приложение, которое больше похоже на двойной щелчок по иконке приложения. То есть, нужно заменить программу, которая будет вызвана, /usr/bin/open
и передать приложение в качестве аргумента следующим образом в launchd.plist:
<key>Program</key>
<string>/usr/bin/open</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>/Users/bernhard/programming/periodic.app</string>
</array>
Первый аргумент (в данном случае open
) фактически передается как argv[0]
и, следовательно, не имеет значения здесь. Фактический первый аргумент тогда /Users/[...]/periodic.app
– каталог приложения, а не фактический двоичный файл.