Risposte:
Il seguente script funziona per me, ma richiede che tu abbia solo una finestra di Chrome e quella finestra sia attiva. Dovrebbe essere facile modificarlo o migliorarlo.
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
Probabilmente ci sono molti altri modi per farlo:
Sì. Attualmente lo faccio in questo modo:
1) , dovrai installare jq per scherzare con i dati delle schede che ti verranno forniti quando invochi lo script che attiverà le schede attualmente aperte in Chrome. inoltre dovrai installare Chrome-Remote-Interface
2) il
cromo deve essere in esecuzione con il debug remoto attivato. chiudi tutte le istanze di cromo ed esegui questo comando invece che solo chromium
nel terminale, altrimenti questo processo non funzionerà:
/usr/bin/chromium --remote-debugging-port=9222 &
3) usa questo script salvandolo come "act", chmod +x
e posizionalo nella directory bin del tuo utente:
#!/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
navigare su cnn.com e un paio di altre schede e mantenere cnn.com in background, passare al terminale e provare il comando in questo modo:
act cnn
dovrebbe attivare la finestra di cromo e passare alla scheda CN. fammi sapere se funziona!
In Linux (Debian) uso google-chrome URL
(esempio:) google-chrome google.com
. Una nuova scheda sarebbe aperta.
Digitare google-chrome --help
per una descrizione più dettagliata.
Ho trovato questo per mac (ma non ho provato): chrome-cli open <url> -n
comando.
Dipende da https://github.com/prasmussen/chrome-cli
Questo codice perl funziona per me: ad es findTab.pl Chrome Gmail
. Fa capovolgere lo schermo e può cambiare le schede in altre finestre (controlla 12 volte sulla teoria che questo dovrebbe lasciare la tua finestra sulla scheda originale se non trova nulla, purché tu abbia <5 schede nella finestra).
Non funziona sul mio sistema Ubuntu se non lo usi windowactivate
prima key
; qualcosa a che fare con protocolli di sicurezza molto vecchi.
Non credo che ci sia alcuna garanzia su cosa troverà se c'è più di una cosa da trovare; Sospetto sulla base di altre esperienze di xdotool che è probabile che trovino cose diverse se usato ripetutamente.
perl probabilmente non è una buona scelta per questo script, ma non conosco 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;
}
Bene, la mia scheda Gmail è bloccata e rimane per prima. Questa piccola sceneggiatura mi aiuta
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Funziona sul mio ambiente i3wm.
xwininfo
accetterà un decimale$WINID
.