Respuestas:
El siguiente script funciona para mí, pero requiere que solo tenga una ventana de Chrome y que esa ventana esté activa. Debería ser fácil modificarlo o mejorarlo.
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
Probablemente hay muchas otras formas de hacer esto:
Si. Actualmente lo hago así:
1) , deberás instalar jq para jugar con los datos de pestañas que recibirás cuando invoques el script que activará las pestañas abiertas actualmente en Chrome.
2)
Chrome debe ejecutarse con la depuración remota activada. cierre todas las instancias de chromium y ejecute este comando en lugar de solo chromium
en la terminal; de lo contrario, este proceso no funcionará:
/usr/bin/chromium --remote-debugging-port=9222 &
3) use este script, guárdelo como "act" chmod +x
y colóquelo en el directorio bin de su usuario:
#!/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 a cnn.com y un par de otras pestañas y mantenga cnn.com en segundo plano, cambie a terminal y pruebe el comando de la siguiente manera:
act cnn
debería activar la ventana de cromo y cambiar a la pestaña cnn. déjame saber si eso funciona!
En Linux (Debian) yo uso google-chrome URL
(ejemplo:) google-chrome google.com
. Se abriría una nueva pestaña.
Escriba google-chrome --help
para una descripción más detallada.
Encontré esto para mac (pero no lo intenté): chrome-cli open <url> -n
comando.
Depende de https://github.com/prasmussen/chrome-cli
Este código Perl funciona para mí: por ejemplo, findTab.pl Chrome Gmail
. Hace que la pantalla se voltee un montón y puede cambiar las pestañas en otras ventanas (comprueba 12 veces la teoría de que esto debería dejar su ventana en la pestaña original si no encuentra nada, siempre que tenga <5 pestañas en el ventana).
No funciona en mi sistema Ubuntu si no lo usa windowactivate
antes key
; algo que ver con protocolos de seguridad muy antiguos.
No creo que haya ninguna garantía de lo que encontrará si hay más de una cosa para encontrar; Sospecho que, según otra experiencia de xdotool, es probable que encuentre cosas diferentes cuando se usa repetidamente.
perl probablemente no sea una buena opción para este script, pero no sé 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;
}
Bueno, mi pestaña de Gmail está anclada y se queda primero. Este pequeño guion me ayuda
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Funciona en mi entorno i3wm.
xwininfo
aceptará un decimal$WINID
.