Respostas:
O script a seguir funciona para mim, mas exige que você tenha apenas uma janela do Chrome e essa janela esteja ativa. Deve ser fácil ajustá-lo ou melhorá-lo.
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
Provavelmente existem muitas outras maneiras de fazer isso:
Sim. Atualmente, faço assim:
1) , você precisará instalar o jq para mexer com os dados da guia que serão alimentados ao chamar o script que ativará as guias abertas no momento no chromium.
2) o
cromo precisa estar em execução com a depuração remota ativada. feche todas as instâncias do chromium e execute este comando em vez de apenas chromium
no terminal, caso contrário, esse processo não funcionará:
/usr/bin/chromium --remote-debugging-port=9222 &
3) use este script e salve-o como "act", chmod +x
e coloque-o no diretório bin do usuário:
#!/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
navegue até cnn.com e algumas outras guias e mantenha o cnn.com em segundo plano, alterne para terminal e tente o comando da seguinte maneira:
act cnn
deve ativar a janela do cromo e mudar para a guia cnn. deixe-me saber se isso funciona!
No Linux (Debian) eu uso google-chrome URL
(exemplo google-chrome google.com
:). Uma nova guia seria aberta.
Digite google-chrome --help
para uma descrição mais detalhada.
Encontrei isso para o chrome-cli open <url> -n
comando mac (mas não tentei):.
Depende de https://github.com/prasmussen/chrome-cli
Este código perl funciona para mim: por exemplo findTab.pl Chrome Gmail
,. Isso faz com que a tela vire um monte e mude de guia em outras janelas (verifica 12 vezes a teoria de que isso deve deixar sua janela na guia original se não encontrar nada, desde que você tenha <5 guias na janela).
Não funciona no meu sistema Ubuntu se você não o usa windowactivate
antes key
; algo a ver com protocolos de segurança muito antigos.
Não acho que haja garantia sobre o que encontrar, se houver mais de uma coisa a encontrar; Suspeito, com base em outra experiência do xdotool, que é provável que encontre coisas diferentes quando usado repetidamente.
O perl provavelmente não é uma boa escolha para esse script, mas não sei o 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;
}
Bem, minha guia do Gmail está afixada e permanece em primeiro lugar. Este pequeno script me ajuda
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Funciona no meu ambiente i3wm.
xwininfo
aceitará um decimal$WINID
.