Antworten:
Das folgende Skript funktioniert für mich, aber es erfordert , dass Sie nur ein Chrome - Fenster haben, und das Fenster aktiv zu sein. Es sollte einfach sein, es zu optimieren oder zu verbessern.
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
Es gibt wahrscheinlich viele andere Möglichkeiten, dies zu tun:
Ja. Ich mache es momentan so:
1) Sie müssen jq installieren , um mit den Tab-Daten herumzuspielen , die Sie beim Aufrufen des Skripts erhalten, das derzeit geöffnete Tabs in Chrom aktiviert.
2)
Chrom muss mit aktiviertem Remote-Debugging ausgeführt werden. Schließen Sie alle Chrom-Instanzen und führen Sie diesen Befehl aus, anstatt nur chromium
im Terminal. Andernfalls funktioniert dieser Prozess nicht:
/usr/bin/chromium --remote-debugging-port=9222 &
3) Verwenden Sie dieses Skript, speichern Sie es als "act" chmod +x
und legen Sie es im bin-Verzeichnis Ihres Benutzers ab:
#!/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
Navigieren Sie zu cnn.com und einigen anderen Registerkarten und lassen Sie cnn.com im Hintergrund, wechseln Sie zum Terminal und probieren Sie den Befehl wie folgt aus:
act cnn
Es sollte das Chromfenster aktivieren und zur Registerkarte cnn wechseln. Lass es mich wissen, wenn das funktioniert!
Unter Linux (Debian) verwende ich google-chrome URL
(Beispiel :) google-chrome google.com
. Ein neuer Tab wäre geöffnet.
Geben Sie google-chrome --help
für eine detailliertere Beschreibung ein.
Ich habe dies für Mac gefunden (aber nicht versucht): chrome-cli open <url> -n
Befehl.
Dies hängt von https://github.com/prasmussen/chrome-cli ab
Dieser Perl-Code funktioniert für mich: z findTab.pl Chrome Gmail
. Dadurch wird der Bildschirm umgedreht und es können Registerkarten in anderen Fenstern geändert werden (es wird 12 Mal überprüft, ob Ihr Fenster auf der ursprünglichen Registerkarte verbleiben soll, wenn nichts gefunden wird, solange Sie <5 Registerkarten in der Registerkarte haben Fenster).
Es funktioniert nicht auf meinem Ubuntu-System, wenn Sie es windowactivate
vorher nicht verwenden key
. etwas mit sehr alten Sicherheitsprotokollen zu tun.
Ich glaube nicht, dass es eine Garantie dafür gibt, was es finden wird, wenn es mehr als eine Sache zu finden gibt. Ich vermute aufgrund anderer xdotool-Erfahrungen, dass es bei wiederholter Verwendung wahrscheinlich andere Dinge findet.
Perl ist wahrscheinlich keine gute Wahl für dieses Skript, aber ich weiß nicht, 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;
}
Nun, mein Google Mail-Tab ist angeheftet und bleibt an erster Stelle. Dieses kleine Skript hilft mir
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Es funktioniert in meiner i3wm-Umgebung.
xwininfo
Akzeptiert eine Dezimalstelle$WINID
.