Выберите браузер для открытия ссылки в

Первый сообщает UUID файловой системы ext4 на блочном устройстве md . Это помогает системе однозначно идентифицировать файловую систему среди файловых систем, доступных в системе. Это хранится в структуре файловой системы, то есть в данных, хранящихся на устройстве MD.

Второй - это UUID RAID-устройства. Это помогает подсистеме md однозначно идентифицировать это конкретное устройство RAID. В частности, он помогает идентифицировать все блочные устройства, принадлежащие массиву RAID. Он хранится в метаданных массива (на каждом члене). Члены массива также имеют свой собственный UUID (в системе md они также могут иметь UUID разделов, если они являются разделами GPT (которые сами по себе будут храниться в таблице разделов GPT) или тома LVM ...).

blkid немного вводит в заблуждение, поскольку он возвращает идентификатор структуры, хранящейся на устройстве (для таких структур, о которых он знает, как большинство файловых систем, элементы LVM и устройства подкачки). Также обратите внимание, что нередко встречаются блочные устройства со структурами с идентичными UUID (например, снимки состояния LVM). А блочное устройство может содержать что угодно, включая вещи, в структуру которых не входит UUID.

Так, например, у вас может быть система с 3 дисками с разделением GPT.Эти диски могут иметь всемирное имя , которое однозначно идентифицирует их. Допустим, 3 диска разбиты на разделы по одному разделу каждый ( / dev / sd [abc] 1 ). У каждого раздела будет GPT UUID, хранящийся в таблице разделов GPT.

Если эти разделы составляют массив MD RAID5. Каждый получит md UUID как член RAID, а массив получит UUID как md RAID-устройство.

Этот / dev / md0 может быть дополнительно разбит на разделы с помощью MSDOS или GPT. Например, у нас может быть раздел / dev / md0p1 с GPT UUID (хранится в таблице разделов GPT, которая хранится в данных / dev / md0).

Это, в свою очередь, может быть физический том для LVM. Таким образом, он получит UUID PV. Группа томов также будет иметь VG UUID.

В этой группе томов вы должны создать логические тома, каждый из которых получит LV UUID.

На одном из этих LV (например, / dev / VG / LV ) вы можете создать файловую систему ext4. Эта файловая система получит UUID ext4.

blkid / dev / VG / LV даст вам (ext4) UUID этой файловой системы. Но как раздел внутри тома VG он также получит UUID раздела (некоторые схемы разделения, такие как MSDOS / MBR, не имеют UUID). Эта группа томов состоит из PV участников, которые сами являются другими блочными устройствами. blkid / dev / md0p1 предоставит вам UUID PV. У него также есть UUID раздела в таблице GPT на / dev / md0 . / dev / md0 сам создан из других блочных устройств. blkid / dev / sda1 вернет UUID участника рейда.У него также есть UUID раздела в таблице GPT на / dev / sda .

3
10.12.2018, 22:28
4 ответа

Ради своих собственных нужд я собрал следующий скрипт. Он использует xdotoolдля получения списка запущенных браузеров (, исправленных для Firefox + Chrome прямо сейчас ). Он отображает результаты в виде списка и позволяет выбрать соответствующий браузер. Он переключается на рабочий стол (Я использую i3wm ), активирует окно браузера и вводит URL-адрес. Это определенно не самый красивый код... Но он работает:)

#!/usr/bin/env python3

import sys
import tkinter
import subprocess

URL = sys.argv[1] if len(sys.argv) > 1 else None
SEARCH_STRING = 'Mozilla Firefox|Google Chrome'

def get_options():
    cmd = ['xdotool','search','--name',SEARCH_STRING]
    result = subprocess.run(cmd, stdout=subprocess.PIPE)
    window_ids = result.stdout.decode('utf-8').rstrip().split("\n")

    options = []
    for id in window_ids:
        cmd = ['xdotool','getwindowname', id]
        result = subprocess.run(cmd, stdout=subprocess.PIPE)
        title = result.stdout.decode('utf-8').rstrip()
        options.append((title, id))

    return options

def kill_window(event = None):
    root.destroy()

def select_prev_option(event):
    val = curr_var.get()
    idx = [i for i, option in enumerate(OPTIONS) if option[1] == val][0]
    if idx > 0:
        curr_var.set(OPTIONS[idx-1][1])

def select_next_option(event):
    val = curr_var.get()
    idx = [i for i, option in enumerate(OPTIONS) if option[1] == val][0]
    if idx < len(OPTIONS)-1:
        curr_var.set(OPTIONS[idx+1][1])

def execute_option(e = None):
    window_id = curr_var.get()

    cmd = ['xdotool', 'get_desktop']
    result = subprocess.run(cmd, stdout=subprocess.PIPE)
    current_desktop = int(result.stdout.decode('utf-8').rstrip())

    cmd = ['xdotool', 'get_desktop_for_window', window_id]
    result = subprocess.run(cmd, stdout=subprocess.PIPE)
    window_desktop = int(result.stdout.decode('utf-8').rstrip())

    if current_desktop != window_desktop:
        cmd = ['xdotool', 'set_desktop', str(window_desktop)]
        result = subprocess.run(cmd, stdout=subprocess.PIPE)

    cmd = [ 'xdotool', 'windowactivate', '--sync', window_id ]
    result = subprocess.run(cmd, stdout=subprocess.PIPE)

    if URL:
        cmd = [
            'xdotool', 'key','--clearmodifiers','--window', window_id, 'ctrl+t',
            'sleep', '.1',
            'type', '--clearmodifiers', URL
        ]
        result = subprocess.run(cmd, stdout=subprocess.PIPE)

        cmd = ['xdotool','key','--clearmodifiers','--window', window_id, 'Return']
        result = subprocess.run(cmd, stdout=subprocess.PIPE)

    kill_window()


root = tkinter.Tk()
root.tk.call('tk', 'scaling', 4.0)
root.attributes('-type', 'dialog')

OPTIONS = get_options()

curr_var = tkinter.StringVar()
curr_var.set(OPTIONS[0][1])

max_len = max([len(t) for t, i in OPTIONS])

for text, mode in OPTIONS:
    b = tkinter.Radiobutton(
        root,
        text=text,
        variable=curr_var,
        value=mode,
        indicatoron=0,
        font=("Arial", 12),
        width=max_len,
        anchor=tkinter.W,
        command=execute_option
    )
    b.pack(anchor=tkinter.W)


root.bind("<j>", select_next_option)
root.bind("<Down>", select_next_option)
root.bind("<k>", select_prev_option)
root.bind("<Up>", select_prev_option)
root.bind("<Return>", execute_option)

root.bind("<Control-q>", kill_window)
root.bind("<Control-w>", kill_window)
root.protocol("WM_DELETE_WINDOW", kill_window)

root.mainloop()

Я создал файл рабочего стола, указывающий на этот скрипт, и установил браузер по умолчанию, используя:

xdg-settings set default-web-browser browserpicker.desktop
xdg-mime default browserpicker.desktop x-scheme-handler/https
xdg-mime default browser.desktop x-scheme-handler/http
0
27.01.2020, 21:15

Вы можете использовать переменную среды браузера:

export BROWSER=firefox
or
export BROWSER=/path/to/browser

Это изменит браузер по умолчанию, который будет использоваться в сеансе пользователя.

Вы можете написать скрипт, который спрашивает, какой браузер открыть, а затем установить его в качестве браузера по умолчанию. Затем каждый раз, когда вы нажимаете на ссылку, она будет спрашивать вас.

Просто установите аргумент $1, чтобы он отправлялся в выбранный вами браузер, чтобы он открывал эту ссылку.

Может выглядеть примерно так:

#!/bin/bash
website=$1
echo "What browser do you want to use?  chrome firefox "
read browsera
$browsera $website

Вы можете сделать его настолько красивым, насколько захотите. Сделайте так, чтобы он ловил недопустимые аргументы и все такое. Вы даже можете заставить его анализировать ввод и в зависимости от того, какой сайт открыт в заранее определенном браузере.

5
27.01.2020, 21:15

Вы можете использовать xdg-mime, чтобы установить приложение по умолчанию для открытия URL-адресов без изменения браузера по умолчанию.(xdg-settingsиспользуется для установки браузера по умолчанию):

Получите приложение по умолчанию (в вашем случае firefox):

xdg-mime query default x-scheme-handler/http
xdg-mime query default x-scheme-handler/https

Чтобы установить Google -Chrome в качестве приложения по умолчанию, используйте следующую команду:

xdg-mime default google-chrome.desktop x-scheme-handler/http
xdg-mime default google-chrome.desktop x-scheme-handler/https
1
27.01.2020, 21:15

Простое решение сzenity

enter image description here

  • создать /usr/bin/выбрать -браузер
#!/bin/sh

BROWSER=$(zenity --list --radiolist --text '' --column='check' --column=browser --title='select your browser' TRUE "chromium" FALSE "firefox" FALSE "google-chrome-stable")
$BROWSER $* &

Для настройки ОС (Manjaro для меня):

  • создать .local/share/applications/select -browser.desktop
[Desktop Entry]
Version=1.1
Type=Application
Name=Select browser
GenericName=Navigateur Web
Comment=Accéder à Internet
Icon=google-chrome
Exec=/usr/bin/select-browser %U
Actions=new-window;new-private-window;NewShortcut;NewShortcut1;
MimeType=text/html;text/xml;application/xhtml_xml;image/webp;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
Categories=Network;WebBrowser;
StartupNotify=true
StartupWMClass=select-browser
  • изменить .local/share/applications/defaults.list
  • бегxdg-settings set default-web-browser select-browser.desktop
3
19.04.2020, 12:50

Теги

Похожие вопросы