回答:
次のスクリプトは、私の作品、しかし、それはあなたが唯一のクロームウィンドウを持っていることを必要とし、そのウィンドウをアクティブにします。微調整や改善は簡単です。
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
これを行う方法はおそらく他にもたくさんあります。
はい。私は現在このようにしています:
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タブに切り替わります。うまくいくかどうか教えてください!
Linux(Debian)では私が使用しますgoogle-chrome URL
(例:)google-chrome google.com
。新しいタブが開きます。
入力してgoogle-chrome --help
、より詳細な説明を表示します。
私はこれをMacで見つけました(しかし試しませんでした):chrome-cli open <url> -n
コマンド。
この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;
}
さて、私のGmailタブは固定されており、最初にとどまります。この小さなスクリプトは私を助けます
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
それは私のi3wm環境で動作します。
xwininfo
は小数を受け入れます$WINID
。