如何在 OS X 上将进程 window 置于前台?
How do I bring a processes window to the foreground on OS X?
我有一个简单的 shell/python 脚本可以打开其他 windows。我想在脚本完成后将脚本所在的终端 运行 置于前台。
我知道我的 parent window 的进程 ID。 如何将给定的 window 置于前台? 我想我必须一路从 PID 中找出 window 名称。
不确定是否有合适的方法,但这对我有用:
osascript<<EOF
tell application "System Events"
set processList to every process whose unix id is 350
repeat with proc in processList
set the frontmost of proc to true
end repeat
end tell
EOF
你也可以用 osacript -e '...'
来完成。
显然将 350
更改为您想要的 pid。
感谢 Mark 的精彩回答!
稍微扩展一下:
# Look up the parent of the given PID.
# From
function get-top-parent-pid () {
PID=${1:-$$}
PARENT=$(ps -p $PID -o ppid=)
# /sbin/init always has a PID of 1, so if you reach that, the current PID is
# the top-level parent. Otherwise, keep looking.
if [[ ${PARENT} -eq 1 ]] ; then
echo ${PID}
else
get-top-parent-pid ${PARENT}
fi
}
function bring-window-to-top () {
osascript<<EOF
tell application "System Events"
set processList to every process whose unix id is
repeat with proc in processList
set the frontmost of proc to true
end repeat
end tell
EOF
}
然后您可以 运行:
bring-window-to-top $(get-top-parent-pid)
快速测试使用:
sleep 5; bring-window-to-top $(get-top-parent-pid)
换成别的东西。 5 秒后终端 运行ning 你的脚本将被发送到顶部。
我有一个简单的 shell/python 脚本可以打开其他 windows。我想在脚本完成后将脚本所在的终端 运行 置于前台。
我知道我的 parent window 的进程 ID。 如何将给定的 window 置于前台? 我想我必须一路从 PID 中找出 window 名称。
不确定是否有合适的方法,但这对我有用:
osascript<<EOF
tell application "System Events"
set processList to every process whose unix id is 350
repeat with proc in processList
set the frontmost of proc to true
end repeat
end tell
EOF
你也可以用 osacript -e '...'
来完成。
显然将 350
更改为您想要的 pid。
感谢 Mark 的精彩回答! 稍微扩展一下:
# Look up the parent of the given PID.
# From
function get-top-parent-pid () {
PID=${1:-$$}
PARENT=$(ps -p $PID -o ppid=)
# /sbin/init always has a PID of 1, so if you reach that, the current PID is
# the top-level parent. Otherwise, keep looking.
if [[ ${PARENT} -eq 1 ]] ; then
echo ${PID}
else
get-top-parent-pid ${PARENT}
fi
}
function bring-window-to-top () {
osascript<<EOF
tell application "System Events"
set processList to every process whose unix id is
repeat with proc in processList
set the frontmost of proc to true
end repeat
end tell
EOF
}
然后您可以 运行:
bring-window-to-top $(get-top-parent-pid)
快速测试使用:
sleep 5; bring-window-to-top $(get-top-parent-pid)
换成别的东西。 5 秒后终端 运行ning 你的脚本将被发送到顶部。