たとえば、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 -ia
Chromeウィンドウをアクティブにするために使用されます。
これが結果です。
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;
}