Có cách nào để kích hoạt một tab chrome cụ thể thông qua bash không?


10

Giả sử, ví dụ, tôi có một cửa sổ chrome hoạt động với gmail được mở ở đâu đó trong số các tab của nó (nhưng không nhất thiết là tab hoạt động).

Câu hỏi: Có cách nào để kích hoạt tab gmail từ dòng lệnh không?

Câu trả lời:


5

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:

  • Sử dụng Chromium và sửa đổi mã nguồn của nó
  • Viết tiện ích mở rộng cho Chrome sẽ chuyển sang tab bên phải khi đáp ứng một điều kiện nhất định
  • Sử dụng các công cụ như xmacro
  • Vân vân.

Lưu ý: xwininfosẽ chấp nhận một số thập phân $WINID.
meuh

Giải pháp cần mã để ngăn vòng lặp vô hạn khi tab Gmail không mở.
Gonki

1

Đú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ỉ chromiumtrong 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 +xnó 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ả!


0

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> -nlệnh.

Nó phụ thuộc vào https://github.com/prasmussen/chrom-cli


0

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 windowactivatetrướ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ó đả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;
}

0

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.