Câu trả lời:
Tập lệnh sau hoạt động với tôi, nhưng nó yêu cầu bạn chỉ có một cửa sổ Chrome và cửa sổ đó phải hoạt động. Nó sẽ dễ dàng để điều chỉnh nó hoặc cải thiện nó.
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
Có lẽ có nhiều cách khác để làm điều này:
Đúng. Tôi hiện đang làm như thế này:
1) , bạn sẽ cần cài đặt jq để xử lý các dữ liệu tab mà bạn sẽ được cung cấp khi gọi tập lệnh sẽ kích hoạt các tab hiện đang mở bằng crom.
2)
crom cần được chạy khi bật gỡ lỗi từ xa. đóng tất cả các phiên bản của crom và chạy lệnh này thay vì chỉ chromium
trong thiết bị đầu cuối nếu không quá trình này sẽ không hoạt động:
/usr/bin/chromium --remote-debugging-port=9222 &
3) sử dụng tập lệnh này lưu nó dưới dạng "hành động", chmod +x
nó và đặt nó trong thư mục bin của người dùng của bạn:
#!/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
điều hướng đến cnn.com và một vài tab khác và giữ cnn.com ở chế độ nền, chuyển sang thiết bị đầu cuối và thử lệnh như vậy:
act cnn
cần kích hoạt cửa sổ crom và chuyển sang tab cnn. Cho tôi biết nếu nó hiệu quả!
Trong linux (Debian) tôi sử dụng google-chrome URL
(ví dụ google-chrome google.com
:). Một tab mới sẽ được mở.
Nhập google-chrome --help
để mô tả chi tiết hơn.
Tôi tìm thấy cái này cho mac (nhưng không thử): chrome-cli open <url> -n
lệnh.
Nó phụ thuộc vào https://github.com/prasmussen/chrom-cli
Mã perl này hoạt động với tôi: vd findTab.pl Chrome Gmail
. Nó làm cho màn hình lật một loạt và có thể thay đổi các tab trong các cửa sổ khác (nó kiểm tra 12 lần với lý thuyết rằng điều này sẽ rời khỏi cửa sổ của bạn trên tab ban đầu nếu nó không tìm thấy gì, miễn là bạn có <5 tab trong cửa sổ).
Nó không hoạt động trên hệ thống Ubuntu của tôi nếu bạn không sử dụng windowactivate
trước đó key
; một cái gì đó để làm với các giao thức bảo mật rất cũ.
Tôi không nghĩ có gì đảm bảo nó sẽ tìm thấy gì nếu có nhiều thứ để tìm; Tôi nghi ngờ dựa trên kinh nghiệm xdotool khác rằng nó có khả năng tìm thấy những thứ khác nhau khi được sử dụng nhiều lần.
perl có lẽ không phải là một lựa chọn tốt cho kịch bản này, nhưng tôi không biết 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;
}
Vâng, tab gmail của tôi được ghim và giữ đầu tiên. Kịch bản nhỏ này giúp tôi
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Nó hoạt động trên môi trường i3wm của tôi.
xwininfo
sẽ chấp nhận một số thập phân$WINID
.