Bashで特定のChromeタブを有効にする方法はありますか?

Bashで特定のChromeタブを有効にする方法はありますか?

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

質問:有効にする方法はありますか?Gmail ラベルコマンドラインから?

答え1

はい。私は現在、次のことを行います。

1)あなたはインストールする必要がありますジャックタブデータを混乱させるために、Chromiumで現在開いているタブのスクリプトを呼び出すときにフィードバックを受け取ります。また、インストールする必要がありますChromeリモートインターフェースChromiumのバックグラウンド - >フォアグラウンドでタブのアクティブ化が完了しました。


2) リモートデバッグを有効にした状態でChromiumを実行する必要があります。 chromiumのすべてのインスタンスを閉じてchromium端末で実行するのではなく、このコマンドを実行してください。それ以外の場合、このプロセスは機能しません。

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


三)このデフォルトスクリプトを例として使用して保存し、actユーザーchmod +xのbinディレクトリに保存します。たとえば、私はbashスクリプトを使用します。 zshユーザーの場合は、次のように移植できます。

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

Chromeウィンドウを有効にしてcnnタブに切り替える必要があります。ワークフローで、rofi メニューまたは fzf バリアントと自由に統合または開いているタブのリストをアクティブウィンドウのグローバルプールに配置することもできます。

答え2

次のスクリプトは私のために働いた。しかし、Chromeウィンドウが1つだけアクティブになっている必要があります。修正または改善するのは簡単です。

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などのツールを使用してください。
  • など。

答え3

調整しました。ジェフリース私には効果がなかったので答えてください。

  • wmctrl -lxすべてのウィンドウとそのタイトルを取得するために使用されます。現在、タブタイトルはウィンドウタブ名内にあります。
  • wmctrl -iaChromeウィンドウをアクティブにするために使用されます。

これが結果です。

function ctab() {

  # Activate the chrome window
  wmctrl -ia "$(wmctrl -lx | grep google-chrome | awk '{ print $1}')"

  # Create a while loop that continues until it finds the correct tab.
  # Note that this will go on forever if the tab is not found
  while true; do
    
    # Check the current windows title (which includes the tab title)
    result="$(wmctrl -lx | grep google-chrome | grep "@gmail.com")"
    
    # if the title contains @gmail then exit
    [ -n "$result" ] && break 

    # If it is the incorrect title then change to the next tab
    WINID=$(xdotool search --name 'Google Chrome' | head -n 1)
    xdotool key --window $WINID ctrl+Tab

  done
}

答え4

このPerlコードは私にとって効果的でした。たとえばfindTab.pl Chrome Gmail、.itは画面を数回反転し、別のウィンドウでタブを変更できます(理論的には、ウィンドウカードに5つ未満のオプションがある限り、何も見つからない場合は12回確認します)。 、これを行うには、ウィンドウを元のタブウィンドウに保持する必要があります。

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

保証はないようです。他のxdotoolsの経験に基づいて見つけることが2つ以上ある場合は見つけるでしょう。繰り返し使用すると他のものが見つかるようです。

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

関連情報