Câu hỏi Đặt trình duyệt mặc định thành OPEN browser


Tôi đang chuyển đổi liên tục giữa các trình duyệt (ba khác nhau tại thời điểm này). Vì vậy, tôi cũng đã chuyển đổi các trình duyệt mặc định để mở thư / liên kết mới của tôi, v.v ...

Tôi cũng thấy rằng với lệnh sudo update-alternatives --config x-www-browser các trình duyệt có các ưu tiên khác nhau.

Vì vậy, tôi đã có ý tưởng rằng có thể là trình duyệt mặc định có thể là trình duyệt / s đang / đang thực sự mở và chạy! Và nếu hai người đang chạy, người có ưu tiên cao hơn được chọn. Thật không may tôi không tìm thấy bất cứ điều gì .. Điều này có thể? Sẽ thực sự tuyệt vời!

cổ vũ dmeu


4
2018-01-08 11:43


gốc


Vì vậy, nếu bạn tình cờ chạy firefox, thì tất cả các liên kết sẽ mở trong firefox, nhưng nếu bạn chạy Chromium, tất cả các liên kết sẽ sử dụng và nếu bạn đang chạy cả hai, nó sẽ sử dụng các ưu tiên để xác định liên kết nào sẽ mở liên kết ? Có thể là có thể với một số thao tác của các tập tin / bin mà bắt đầu mỗi trình duyệt, nhưng tôi sợ nó vượt quá khả năng của tôi. - Scaine
1 cho ý tưởng hay. Không bao giờ nghĩ về nó, nhưng nó có thể hữu ích ^^ - Lekensteyn
cảm ơn rất nhiều cho những câu trả lời tuyệt vời này (đã học được một số thứ mới ;-) - dmeu
Thật thú vị, nó cũng có thể làm điều này trên Mac OS X: superuser.com/questions/41878/… - Anderson Green


Các câu trả lời:


Đây là một cái gì đó hoạt động:

#!/usr/bin/env python

import sys, commands

browsers = [
    "firefox",
    "google-chrome",
    "chromium-browser",
    "epiphany-browser",
]

done = False
ps = list(i.split()[10] for i in commands.getoutput("ps aux").split("\n")[1:])
for i in browsers:
    if any(j.endswith(i) or j.endswith(i+"-bin") for j in ps) and not done:
        commands.getoutput(i + " " + (" ".join(sys.argv[1:]
            if len(sys.argv) - 1 else "")))
        done = True

if not done:
    commands.getoutput(browsers[0]["cmd"] + " " + " ".join(sys.argv[1:]))
  • Chỉ cần sắp xếp lại danh sách ở đầu tệp bất kỳ cách nào bạn thích, thêm và xóa trình duyệt. Lệnh bạn nhập sẽ là bất cứ thứ gì bạn gõ vào dòng lệnh để khởi động trình duyệt này.

  • lưu tập lệnh này ở đâu đó, nhấp chuột phải vào tập lệnh đó, truy cập thuộc tính → quyền và thiết lập thực thi. Tôi khuyên bạn nên lưu nó vào /home/<username>/.browser.

  • Tìm tệp (nhấn Ctrl+H để hiển thị các tệp ẩn), nhấp chuột phải và chọn Tính chất, sau đó đi đến Quyền và thiết lập Cho phép thực thi tệp dưới dạng chương trình.

  • Đi đến Hệ thống → Tùy chọn → Ứng dụng ưa thích, lựa chọn Tập quán và loại /home/<username>/.browser vào Chỉ huy cánh đồng.

Trình duyệt đầu tiên xuất hiện trong danh sách  đang chạy sẽ được chọn để mở trang web. Nếu không ai trong số họ đang chạy, người đầu tiên sẽ được mở ra.

Tôi đã thử nghiệm này và nó có vẻ làm việc khá tốt, không có ít hơn, cho tôi biết nếu có bất kỳ lỗi nào trong đó. Và nó sẽ rất tuyệt nếu có một phương pháp để làm điều này không liên quan đến lập trình, đây chỉ là giải pháp đặc biệt của tôi.


5
2018-01-08 13:11



hoạt động hoàn hảo nhờ! nên được bao gồm trong bản phân phối ubuntu ;-) - dmeu
@Stefano, Làm thế nào là thiết lập bước cuối cùng cho Ubuntu 15+ với Unity? - user10853


Thật là một ý tưởng hay!

Tôi ngay lập tức thiết lập này và nó hoạt động tuyệt vời trên hệ thống của tôi. Điều chỉnh kịch bản sau theo nhu cầu của bạn (bạn sẽ cần quyền superuser để cài đặt tập lệnh!):

#!/bin/bash

# looking for Firefox instances
pgrep -l '^firefox-bin$' > /dev/null

if [ $? -eq 0 ]; then
    echo
    echo "  Opening link in Firefox..."
    echo
    /usr/bin/firefox "$1"
    exit
fi

# looking for Konqueror instances
pgrep -l '^konqueror$' > /dev/null

if [ $? -eq 0 ]; then
    echo
    echo "  Opening link in Konqueror..."
    qdbus `qdbus | grep -m1 konqueror` /konqueror/MainWindow_1 org.kde.Konqueror.MainWindow.newTab "$1" False
    exit
fi

# no browser instances found, so open default browser
echo
echo -n "  No open browser found.  "

if [ -z "$1" ]; then
    echo "Opening new Firefox instance..."
    echo
    /usr/bin/firefox &
    exit
else
    echo "Opening link in new Firefox instance..."
    echo
    /usr/bin/firefox "$1" &
    exit
fi

Tập lệnh chưa sửa đổi sẽ cố gắng mở một liên kết (được chỉ định bằng $ 1) bằng cách sử dụng Firefox. Nếu không có trường hợp nào Firefox được tìm thấy, nó sẽ cố gắng tái sử dụng Konqueror. Cuối cùng, nếu không có trường hợp Konqueror được tìm thấy, tập lệnh sẽ mở một phiên bản mới của Firefox.

Khi bạn hoàn tất, hãy lưu tập lệnh tại /usr/local/bin/reuse_open_browser và chạy các lệnh sau:

sudo chmod +x /usr/local/bin/reuse_open_browser
sudo chown root:root /usr/local/bin/reuse_open_browser

sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/local/bin/reuse_open_browser 100

Sau đó chọn tập lệnh làm mặc định bằng cách chạy

sudo update-alternatives --config x-www-browser

Thưởng thức! :)


3
2018-01-08 13:10



Bạn có thể loại bỏ các đặc quyền superuser cần bằng cách lưu nó vào thư mục chính của bạn, có thể .hidden. Đặt trình duyệt web mặc định qua Ứng dụng ưa thích là mỗi người dùng. - Stefano Palazzo♦