Answers:
以下脚本适用于我,但它要求您只有一个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
可能还有许多其他方法可以执行此操作:
是。我目前这样做:
1),您需要安装jq来处理在调用将激活Chrome中当前打开的选项卡的脚本时将得到的选项卡数据。您还需要安装chrome-remote-interface
2)
铬需要在远程调试打开的情况下运行。关闭所有铬实例,然后运行此命令,而不是仅chromium
在终端中运行,否则此过程将无法进行:
/usr/bin/chromium --remote-debugging-port=9222 &
3)使用此脚本将其另存为“ act”,chmod +x
并将其放置在用户的bin目录中:
#!/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
导航到cnn.com和其他几个选项卡,并将cnn.com保留在后台,切换到终端并尝试如下命令:
act cnn
它应该激活铬窗口并切换到cnn选项卡。让我知道是否可行!
在linux(Debian)中,我使用google-chrome URL
(例如:)google-chrome google.com
。将打开一个新选项卡。
键入google-chrome --help
以获取更多详细说明。
我为Mac找到了这个(但没有尝试):chrome-cli open <url> -n
命令。
这个perl代码对我有用:例如,findTab.pl Chrome Gmail
。它会使屏幕翻转一堆,并且可以更改其他窗口中的选项卡(理论上,它检查了12次,即如果找不到任何内容,只要您在窗口中没有<5个选项卡,就应该将窗口保留在原始选项卡上窗口)。
如果您windowactivate
以前不使用过key
,它将无法在我的Ubuntu系统上使用;与非常古老的安全协议有关。
我认为,如果有不止一件事情,就无法保证会找到什么。根据其他xdotool的经验,我怀疑重复使用时可能会发现不同的东西。
perl可能不是此脚本的不错选择,但我不知道bash。
#! /usr/bin/perl
## findTab.pl
## usage findTab appName tabName
use strict;
my $maxTabs=12;
my ($app, $tab) = @ARGV;
my @wins = split /\s+/, `xdotool search --desktop 0 --name $app`;
foreach my $win (@wins){
my $title;
for (my $i=0;$i<$maxTabs;$i++){
system ("xdotool windowactivate $win");
$title = `xwininfo -id $win | grep $tab`;
last if $title;
system("xdotool key --window $win ctrl+Page_Down");
}
last if $title;
}
xwininfo
将接受小数$WINID
。