例如,假设我有一个 chrome 窗口处于活动状态,gmail 在其选项卡之间的某处打开(但不一定是活动选项卡)。
问题:有没有办法从命令行激活gmail 选项卡?
是的。我目前这样做:
1)您需要安装jq来处理在调用当前打开的 Chrome 选项卡的脚本时会得到的选项卡数据。您还需要安装chrome-remote-interface来完成从背景 - > 铬的前景激活选项卡的工作。
2)
chrome 需要在开启远程调试的情况下运行。关闭所有 Chromium 实例,并运行此命令而不是仅chromium
在终端中运行,否则此过程将不起作用:
/usr/bin/chromium --remote-debugging-port=9222 &
3)以此基础脚本为例,将其另存为act
,chmod +x
并将其放置在您用户的 bin 目录中。例如,我使用 bash 脚本,如果您是 zsh 用户,则可以移植它:
#!/usr/bin/env bash
TABS_JSON=$(chrome-remote-interface list | sed -e "s/^'//" -e "s/'$//" | jq -r 'map(select(.type == "page") | {id: .id, title: .title})')
if [[ -z $@ ]]; then
TAB_NAMES=$(echo "$TABS_JSON" | jq -r 'map(.title) | .[]')
echo "$TAB_NAMES"
else
TAB=$*
TAB_ID=$(echo "$TABS_JSON" | jq -r "map(select(.title | match(\"${TAB}\";\"i\")) | .id) | .[]")
chrome-remote-interface activate "$TAB_ID" >/dev/null
#you might need wmctrl if window does not activate.
#wmctrl -a chromium
fi
Run Code Online (Sandbox Code Playgroud)
导航到 cnn.com 和其他几个选项卡并将 cnn.com 保留在后台,切换到终端并尝试如下命令:
act cnn
Run Code Online (Sandbox Code Playgroud)
它应该激活铬窗口并切换到 cnn 选项卡。您可以自由地将其与工作流程中的 rofi 菜单或 fzf 变体进一步集成,甚至将打开的选项卡列表放入活动窗口的全局池中。
小智 6
以下脚本对我有用,但它要求您只有一个 Chrome 窗口,并且该窗口处于活动状态。调整或改进它应该很容易。
WINID=$(xdotool search --name 'Google Chrome' | head -n 1)
WINID_HEX=$(printf "0x%x" $WINID)
while true
do
xwininfo -id $WINID_HEX | grep Gmail
if [ "$?" -ne 0 ]
then
xdotool key --window $WINID ctrl+Tab
else
break
fi
sleep 2
done
Run Code Online (Sandbox Code Playgroud)
可能还有很多其他方法可以做到这一点:
归档时间: |
|
查看次数: |
6308 次 |
最近记录: |