快速背景:新手机,长时间用户;不怕linux和脚本;不是母语为英语的人,所以对我的翻译很好:)
我目前正在使用RedQuits使x红色按钮退出应用程序,而不仅仅是关闭窗口。
这是一个很棒的程序,但是有一个小问题(对我来说):一个人无法选择哪些应用程序应该保持默认行为(x关闭窗口,而不是应用程序)。
所以我找到了一个名为Stoplight的非常古老的(2006)应用程序,它完全符合我的要求:选择哪些程序不应受到影响。
不幸的是,Stoplight不再起作用了。
所以,我试着看看脚本做了什么(它是一个.bundle),但看起来好像已经编译了。
问题:
感谢。
我找到了解决问题的方法 我创建了一个AppleScript来监视在后台运行的没有窗口的进程 如果该过程不在白名单中,请将其关闭。
我稍后会发布剧本,但说实话,我不喜欢我的解决方案,仍然想知道你们是否有任何想法。
所以我不接受我的回答是正确的。
编辑(2013-09-26)
我们应该将问题迁移到https://apple.stackexchange.com/吗?
答案 0 :(得分:2)
这可能不是您想要听到的,但您可以使用CMD-Q键盘快捷键执行此操作。
但是,如果您需要过滤哪种应用程序适用于您,可以使用键盘快捷方式:
服务在no input
any application
on run {input, parameters}
tell application (path to frontmost application as text) to quit
return input
end run
现在这是非常简单的 - 它 应该所有应用程序,没有例外,就像CMD-Q一样。您应该能够编辑applescript以在此处添加某种应用过滤。
答案 1 :(得分:0)
这是我的解决方法。我对它不满意,因为它每10秒循环一次“退出”过程 将它发布在这里以防万一它可以帮助任何人...
#!/usr/bin/osascript
-- INICIO DAS FUNCOES EXTRAS
set app_path to path to current application
set app_name to get name of me
set myPath to path to me
tell application "Finder" to set myFolder to (container of myPath) as string
set commonScript to load script alias ((myFolder) & "FuncoesExtras.scpt")
-- FIM DAS FUNCOES EXTRAS
set WhiteList to {app_name, "App Store", "iTunes", "Finder", "Mail"}
repeat
tell application "System Events"
repeat with this_app in (get processes whose background only is false and windows is {})
set NomeDoApp to the name of this_app
if NomeDoApp is not in WhiteList then
try
tell NomeDoApp to quit
log_event("App " & NomeDoApp & " encerrado com sucesso", "FecharProgramas") of commonScript
on error
do shell script "killall " & quoted form of NomeDoApp
log_event("Forcando interrupcao do App " & NomeDoApp, "FecharProgramas") of commonScript
end try
end if
end repeat
end tell
tell application "System Events" to set myPID to (unix id of processes whose name is app_name)
do shell script ("/usr/bin/renice 18 " & myPID)
delay 10
end repeat
我仍然愿意接受建议。