让Chrome从脚本开始到最前面

时间:2016-09-07 21:49:54

标签: macos shell google-chrome applescript

我想知道如何启动一个全新的Chrome实例(请参阅下面的脚本),该实例将被带到前面。目前,shell脚本在后台打开新的Chrome实例,这不是最佳选择。从Applescript执行shell脚本没有任何补救措施。

有趣的是,如果我直接从AppleScript使用shell命令打开Chrome,它似乎在前台打开:

set q to "'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' --user-data-dir=/tmp/1234"
do shell script q

AppleScript的

do shell script "~/bin/chrome-fresh"

Shell脚本

#!/bin/sh
# This is quite useful for front-enders, as it will launch a fresh
# Chrome instance with no loaded plugins or extensions that messes
# with your performance profiling or network debugging
#
# Install:
#       install -m 555 ~/Downloads/chrome-fresh  /usr/local/bin/

CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
ARGS="$@"

# make a fresh user directory
TMP_USERDIR=$(mktemp -d);

# avoid the dialog on the first startup
touch "$TMP_USERDIR/First Run";

# start chrome using a fresh user directory
"$CHROME"   --user-data-dir="$TMP_USERDIR"  "$ARGS"

2 个答案:

答案 0 :(得分:2)

在后台运行命令(将$!放在命令的末尾。)

使用# start chrome using a fresh user directory "$CHROME" --activate-on-launch --user-data-dir="$TMP_USERDIR" "$ARGS" & chromePid=$! sleep 2 # bring Chrome osascript -e 'tell application "System Events"' -e "tell (first process whose its unix id is \"$chromePid\" ) to set frontmost to true" -e 'end tell' 获取最后一个命令的进程ID

<Dictionary 
  x:TypeArguments="x:String, x:Object"
  xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>    
  <List x:TypeArguments="x:Int32" x:Key="key" Capacity="4">     
    <x:Int32>60371408</x:Int32>      
    <x:Int32>60371409</x:Int32>   
  </List>  
</Dictionary>

答案 1 :(得分:1)

在下面的脚本中,我使用了Applescript和Shell命令的混合。我不是壳牌专家,所以可能有最有效的方法来做到这一点。至少,这个脚本正在运行:

1)它需要包含特定名称的所有流程(即= Chrome)

2)它遍历所有找到的进程,并为每个进程获得自开始使用&#34; ps&#34; shell命令。

3)它将该时间与之前发现的时间进行比较,如果低于此时间则保留过程信息。最低时间值链接到流程的最后一个启动实例。

4)自启动以来时间最短的进程是最后一个:它将最前面的属性设置为true以使其成为前景。

O(t+klogk)

我发表了几条评论,明确了&#34; ps&#34;命令。如果有人知道如何从ps输出直接获得秒,谢谢。 (我很确定应该有一种最简单的方法!)