我想从特定域打开多个选项卡,每个选项卡都具有 bash 脚本中定义的不同资产。为了避免被服务器禁止,我每隔 5 秒打开一个选项卡,如下所示:
for ((i = 0; i < nWebsite; i = i + 1)); do
(firefox -new-tabs "${WebsiteString[i]}" > /dev/null 2>&1 &)
sleep 5
done
但是,不幸的是,每当打开一个新选项卡时,焦点就会转移到 Firefox,并且由于我想打开多个选项卡,它会持续很长时间。
如何最小化上述 for 循环中的每个选项卡?
我尝试了以下方法:
for ((i = 0; i < nWebsite; i = i + 1)); do
(firefox -new-tab "${WebsiteString[i]}" > /dev/null 2>&1 &)
xdotool getactivewindow windowminimize
sleep 5
done
但这并不能解决问题,因为焦点仍然转移到新窗口,然后该窗口被最小化。
虽然我要求使用 Firefox,但如果该解决方案也适用于 google-chrome,那就太好了!
答案1
我思考解决方案是您没有保存当前活动窗口 ID。
从这一页
xdotool getactivewindow > ~/.window_id
for ((i = 0; i < nWebsite; i = i + 1)); do
(firefox -new-tab "${WebsiteString[i]}" > /dev/null 2>&1 &)
xdotool windowfocus $(cat ~/.window_id)
xdotool windowactivate $(cat ~/.window_id)
sleep 5
done
当然,这将为循环的每次迭代执行此操作。如果您希望在循环完成时(25 秒后)将 xdtools 放在循环之外,如下所示:
xdotool getactivewindow > ~/.window_id
for ((i = 0; i < nWebsite; i = i + 1)); do
(firefox -new-tab "${WebsiteString[i]}" > /dev/null 2>&1 &)
sleep 5
done
xdotool windowfocus $(cat ~/.window_id)
xdotool windowactivate $(cat ~/.window_id)