Как установить Mutt в качестве почтового клиента по умолчанию при нажатии на «mailto» на веб-странице?

Как установить Mutt в качестве почтового клиента по умолчанию при нажатии на «mailto» на веб-странице?

Я хотел запустить muttтерминал, когда я нажимаю на какой-то mailto:тег на веб-странице. Это возможно? Сейчас запускается Firefox, который мне совсем не нравится; он медленно загружается и не нужен.

решение1

Сначала вам нужно убедиться, что есть .desktopфайл, требуемый спецификацией XDG. Для программ с графическим интерфейсом велика вероятность, что подходящий .desktopфайл уже есть, для терминальных приложений обычно приходится создавать свой собственный. Проверьте каталог /usr/share/applicationsна наличие существующих файлов. Возможно, файл уже есть mutt.desktop. Если его нет, создайте его.

Затем отредактируйте файл ~/.local/share/applications/mimeapps.listи добавьте следующую строку

[Default Applications]
x-scheme-handler/mailto=mutt.desktop;

Это регистрирует mutt в mailtoобработчике. Вы можете подтвердить успешную регистрацию с помощью

xdg-mime query default 'x-scheme-handler/mailto'

который должен вывести mutt.desktop. Теперь вы можете нажать на «mailto» в chromium, и терминал должен появиться с экземпляром mutt. Не нужно даже перезапускать сеанс рабочего стола или браузер.

решение2

Вам нужно написать скрипт, который определяет терминал, который вы хотите muttоткрыть. Затем в Firefox вы можете связать этот скрипт со ссылками mailto. Например, если вы используете terminator, вы можете создать следующий скрипт.

#!/usr/bin/env bash
terminator -x "mutt '$@'"

В моем случае у меня есть постоянный выпадающий терминатор, поэтому я хочу, чтобы он был в новой вкладке. Мне также нужна палитра из 256 цветов, поэтому я использую

#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"

Кстати, это мой полный скрипт, который также отображает терминатор (если он скрыт) с помощью сочетания клавиш Ctrl+ Spaceи выводит его на передний план.

#!/usr/bin/env bash

terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"

# If necessary, unhide and focus terminator window.
windowlist=$(xprop -root | sed -rn 's/_NET_CLIENT_LIST_STACKING\(WINDOW\): window id # (.*)/\1/p' | tr -d ',')
terminator_visible=false
for i in $windowlist; do
  [[ $(xprop -id $i | grep WM_CLASS\(STRING\)) == 'WM_CLASS(STRING) = "terminator", "Terminator"' ]] && terminator_visible=true && term_id=$i
done

if [[ $terminator_visible == false ]]; then # it's hidden
  xdotool key --clearmodifiers ctrl+space
elif [[ $(xprop -id $(xdotool getactivewindow) | grep WM_CLASS\(STRING\)) != 'WM_CLASS(STRING) = "terminator", "Terminator"' ]]; then # it's visible, but not active
  xdotool windowactivate $term_id 2> /dev/null # Gives error; not sure why. XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
fi

решение3

Какую среду рабочего стола вы используете? Вам нужно проверить настройки обработчика MIME-типа, чтобы узнать, как задать конкретный обработчик для таких вещей.

решение4

Вы можете использовать xdg-mime для регистрации приложения по умолчанию. В этом случае вы запускаете на терминале:

xdg-mime default mutt.desktop 'x-scheme-handler/mailto'

И вы можете проверить, сработало ли это, запустив:

xdg-mime query default 'x-scheme-handler/mailto'

Связанный контент