C'è un modo per attivare una particolare scheda di Chrome tramite bash?


11

Supponiamo, ad esempio, che abbia una finestra di Chrome attiva con gmail aperto da qualche parte tra le sue schede (ma non necessariamente la scheda attiva).

Domanda: esiste un modo per attivare la scheda Gmail dalla riga di comando?

Risposte:


6

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:

  • Utilizzando Chromium e modificane il codice sorgente
  • Scrivere un'estensione per Chrome che passa alla scheda corretta quando viene soddisfatta una determinata condizione
  • Utilizzando strumenti come xmacro
  • Eccetera.

Nota: xwininfoaccetterà un decimale $WINID.
Meuh

La soluzione necessita di codice per impedire il loop infinito quando la scheda Gmail non è aperta.
Gonki,

2

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 chromiumnel terminale, altrimenti questo processo non funzionerà:

/usr/bin/chromium --remote-debugging-port=9222 &


3) usa questo script salvandolo come "act", chmod +xe 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!


0

In Linux (Debian) uso google-chrome URL(esempio:) google-chrome google.com. Una nuova scheda sarebbe aperta.

Digitare google-chrome --helpper una descrizione più dettagliata.


Ho trovato questo per mac (ma non ho provato): chrome-cli open <url> -ncomando.

Dipende da https://github.com/prasmussen/chrome-cli


0

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 windowactivateprima 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;
}

0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.