bashを介してChromeの特定のタブをアクティブにする方法はありますか?


10

たとえば、Chromeのタブがどこかで開かれているChromeウィンドウがアクティブになっているとします(必ずしもアクティブなタブではありません)。

質問:コマンドラインからGmailタブをアクティブにする方法はありますか?

回答:


5

次のスクリプトは、私の作品、しかし、それはあなたが唯一のクロームウィンドウを持っていることを必要とし、そのウィンドウをアクティブにします。微調整や改善は簡単です。

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

これを行う方法はおそらく他にもたくさんあります。

  • Chromiumの使用とそのソースコードの変更
  • 特定の条件が満たされたときに正しいタブに切り替わるChromeの拡張機能を作成する
  • xmacroなどのツールの使用
  • 等。

注:xwininfoは小数を受け入れます$WINID
meuh

ソリューションには、Gmailのタブが開いていないときに無限ループを防ぐためのコードが必要です。
ゴンキ

1

はい。私は現在このようにしています:

1)、現在開いているタブをChromiumでアクティブにするスクリプトを呼び出したときに表示されるタブデータをいじくるにはjqをインストールする必要があります。


2) リモートデバッグをオンにしてchromiumを実行する必要があります。chromiumのすべてのインスタンスを閉じてchromium、ターミナルの代わりにこのコマンドを実行します。そうしないと、このプロセスは機能しません。

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


3)このスクリプトを使用して「act」として保存chmod +xし、ユーザーのbinディレクトリに配置します。

#!/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

cnn.comと他のいくつかのタブに移動し、cnn.comをバックグラウンドで維持し、ターミナルに切り替えて、次のようなコマンドを試してください。

act cnn

クロムウィンドウがアクティブになり、cnnタブに切り替わります。うまくいくかどうか教えてください!


0

Linux(Debian)では私が使用しますgoogle-chrome URL(例:)google-chrome google.com。新しいタブが開きます。

入力してgoogle-chrome --help、より詳細な説明を表示します。


私はこれをMacで見つけました(しかし試しませんでした):chrome-cli open <url> -nコマンド。

https://github.com/prasmussen/chrome-cliによって異なります


0

このperlコードは私にとってはうまくいきますfindTab.pl Chrome Gmail。画面をひっくり返し、他のウィンドウのタブを変更できます(5つ未満のタブがある限り、何も見つからない場合はウィンドウが元のタブに残るという理論上で12回チェックします窓)。

windowactivate以前に使用していない場合、私のUbuntuシステムでは機能しませんkey。非常に古いセキュリティプロトコルと関係があります。

検索するものが複数ある場合にが見つかるかについては、保証はないと思います。他のxdotoolの経験に基づいて、繰り返し使用するとさまざまなものが見つかる可能性があると思います。

perlはおそらくこのスクリプトには適していませんが、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

さて、私のGmailタブは固定されており、最初にとどまります。この小さなスクリプトは私を助けます

#!/bin/bash                                                                                                              

wmctrl -a $1                                                                                                             
xdotool search --onlyvisible --class $1 key Alt+1

./activate_mail.sh Chromium
./activate_mail.sh Firefox

それは私のi3wm環境で動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.