Show/hide Finder,如果 none 通过 AppleScript 存在,则创建新的 window
Show/hide Finder, and create new window if none exist via AppleScript
我想创建一个 AppleScript 以通过 Keyboard Maestro 中的键盘命令触发,它允许我直接切换显示或隐藏 Finder window(s)。如果在切换显示 Finder 时,如果不存在 windows,请创建一个并将其打开到我的主目录。
以下 AppleScript 有效。然而,在激活查找器和检测是否有任何打开的 windows 和 if not (window 1 exists)
之间似乎存在竞争条件,因此 delay 0.5
.
这个问题(我认为这是检测现有 Finder window 是否存在的竞争条件)导致此脚本频繁创建新的 Finder windows,而该脚本已经存在。 if not (window 1 exists)
并不总是正确的。
如果有任何想法、调整或确认这就是它的方式,我们将不胜感激!
tell application "System Events"
set activeApp to name of application processes whose frontmost is true
if ((activeApp as string) is equal to "Finder") then
set visible of process "Finder" to false
else
tell application "Finder"
activate
delay 0.5
if not (window 1 exists) then
make new Finder window
set thePath to POSIX file "/Users/jon"
set the target of the front Finder window to folder thePath
end if
end tell
end if
end tell
请尝试这种更简单的语法,它仅使用 Finder
个术语
tell application "Finder"
if frontmost then
set visible of process "Finder" to false
else
if (count windows) is 0 then reveal home
activate
end if
end tell
编辑:
要 运行 Keyboard Maestro 宏,请打开 Keyboard Maestro 编辑器,select 宏,然后从“编辑”菜单中select 复制为 > 复制 UUID。
然后在 AppleScript 中写入
tell application "Keyboard Maestro Engine" to do script "<Script-UUID>"
用复制的真实 UUID 替换 <Script-UUID>
最终我需要在 运行 计数 windows 命令之前激活 Finder,否则我会得到不一致的 window 计数。有时即使 window 已经打开,它也会是 0。到目前为止,这段代码对我来说效果很好。
tell application "Finder"
if frontmost then
set visible of process "Finder" to false
else
activate
if (count windows) is 0 then
open home
tell application "Keyboard Maestro Engine" to do script "<Script-UUID>"
end if
end if
end tell
我想创建一个 AppleScript 以通过 Keyboard Maestro 中的键盘命令触发,它允许我直接切换显示或隐藏 Finder window(s)。如果在切换显示 Finder 时,如果不存在 windows,请创建一个并将其打开到我的主目录。
以下 AppleScript 有效。然而,在激活查找器和检测是否有任何打开的 windows 和 if not (window 1 exists)
之间似乎存在竞争条件,因此 delay 0.5
.
这个问题(我认为这是检测现有 Finder window 是否存在的竞争条件)导致此脚本频繁创建新的 Finder windows,而该脚本已经存在。 if not (window 1 exists)
并不总是正确的。
如果有任何想法、调整或确认这就是它的方式,我们将不胜感激!
tell application "System Events"
set activeApp to name of application processes whose frontmost is true
if ((activeApp as string) is equal to "Finder") then
set visible of process "Finder" to false
else
tell application "Finder"
activate
delay 0.5
if not (window 1 exists) then
make new Finder window
set thePath to POSIX file "/Users/jon"
set the target of the front Finder window to folder thePath
end if
end tell
end if
end tell
请尝试这种更简单的语法,它仅使用 Finder
个术语
tell application "Finder"
if frontmost then
set visible of process "Finder" to false
else
if (count windows) is 0 then reveal home
activate
end if
end tell
编辑:
要 运行 Keyboard Maestro 宏,请打开 Keyboard Maestro 编辑器,select 宏,然后从“编辑”菜单中select 复制为 > 复制 UUID。
然后在 AppleScript 中写入
tell application "Keyboard Maestro Engine" to do script "<Script-UUID>"
用复制的真实 UUID 替换 <Script-UUID>
最终我需要在 运行 计数 windows 命令之前激活 Finder,否则我会得到不一致的 window 计数。有时即使 window 已经打开,它也会是 0。到目前为止,这段代码对我来说效果很好。
tell application "Finder"
if frontmost then
set visible of process "Finder" to false
else
activate
if (count windows) is 0 then
open home
tell application "Keyboard Maestro Engine" to do script "<Script-UUID>"
end if
end if
end tell