Ответы:
Следующий скрипт работает для меня, но он требует, чтобы у вас было только одно окно 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, чтобы возиться с данными вкладок, которые вы получите при вызове скрипта, который активирует открытые в настоящее время вкладки в chromium. также вам нужно будет установить chrome-remote-interface
2)
хром должен работать с включенной удаленной отладкой. закройте все экземпляры chromium и запустите эту команду вместо 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
команда.
Это зависит от https://github.com/prasmussen/chrome-cli
Это Perl код работает для меня: например, findTab.pl Chrome Gmail
. Он заставляет экран переворачиваться и может менять вкладки в других окнах (он 12 раз проверяет теорию, что это должно оставить ваше окно на исходной вкладке, если он ничего не найдет, если у вас <5 вкладок в окно).
Это не работает в моей системе Ubuntu, если вы не используете windowactivate
раньше key
; что-то делать с очень старыми протоколами безопасности.
Я не думаю, что есть какая-то гарантия, что он найдет, если найдется больше чем одна вещь; Я подозреваю, основываясь на другом опыте 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;
}
Ну, моя вкладка Gmail закреплена и остается первой. Этот маленький сценарий помогает мне
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Это работает в моей среде i3wm.
xwininfo
примете десятичную$WINID
.