Réponses:
Le script suivant fonctionne pour moi, mais il nécessite que vous n'ayez qu'une seule fenêtre Chrome et que cette fenêtre soit active. Il devrait être facile de le modifier ou de l'améliorer.
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
Il existe probablement de nombreuses autres façons de procéder:
Oui. Je le fais actuellement comme ceci:
1) , vous devrez installer jq pour jouer avec les données d'onglet que vous obtiendrez lorsque vous invoquerez le script qui activera les onglets actuellement ouverts en chrome. vous devrez également installer chrome-remote-interface
2) le
chrome doit être exécuté avec le débogage à distance activé. fermez toutes les instances de chrome et exécutez cette commande au lieu de simplement chromium
dans le terminal, sinon ce processus ne fonctionnera pas:
/usr/bin/chromium --remote-debugging-port=9222 &
3) utilisez ce script, enregistrez-le comme "act", chmod +x
et placez-le dans le répertoire bin de votre utilisateur:
#!/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
accédez à cnn.com et à quelques autres onglets et gardez cnn.com en arrière-plan, passez au terminal et essayez la commande comme suit:
act cnn
il devrait activer la fenêtre de chrome et passer à l'onglet cnn. faites-moi savoir si cela fonctionne!
Sous linux (Debian) j'utilise google-chrome URL
(exemple:) google-chrome google.com
. Un nouvel onglet serait ouvert.
Tapez google-chrome --help
pour une description plus détaillée.
J'ai trouvé ceci pour mac (mais je n'ai pas essayé): chrome-cli open <url> -n
commande.
Cela dépend de https://github.com/prasmussen/chrome-cli
Ce code perl fonctionne pour moi: par exemple findTab.pl Chrome Gmail
. Il fait basculer l'écran un tas et peut changer d'onglet dans d'autres fenêtres (il vérifie 12 fois la théorie selon laquelle cela devrait laisser votre fenêtre sur l'onglet d'origine s'il ne trouve rien, tant que vous avez <5 onglets dans le fenêtre).
Cela ne fonctionne pas sur mon système Ubuntu si vous ne l'utilisez pas windowactivate
auparavant key
; quelque chose à voir avec des protocoles de sécurité très anciens.
Je ne pense pas qu'il y ait une garantie de ce qu'il trouvera s'il y a plus d'une chose à trouver; Je soupçonne, sur la base d'autres expériences de xdotool, qu'il est susceptible de trouver différentes choses lorsqu'il est utilisé à plusieurs reprises.
perl n'est probablement pas un bon choix pour ce script, mais je ne sais pas 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;
}
Eh bien, mon onglet gmail est épinglé et reste le premier. Ce petit script m'aide
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Cela fonctionne sur mon environnement i3wm.
xwininfo
acceptera une décimale$WINID
.