Bagaimana saya bisa mengatur mutt sebagai klien email default ketika saya mengklik 'mailto' di halaman web?

10

Saya ingin memulai muttdi terminal ketika saya mengklik beberapa mailto:tag di halaman web. Apakah itu mungkin? Saat ini Firefox dimulai, yang sebenarnya tidak saya sukai; itu memuat lambat dan tidak perlu.

bunga aster
sumber

Jawaban:

11

Pertama, Anda perlu memastikan bahwa ada .desktopfile yang diperlukan oleh spesifikasi XDG. Untuk program GUI, peluangnya bagus bahwa sudah ada .desktopfile yang sesuai , untuk aplikasi terminal biasanya Anda harus membuatnya sendiri. Periksa direktori /usr/share/applicationsuntuk file yang ada. Mungkin sudah ada mutt.desktopfile. Jika tidak ada, buat satu.

Kemudian edit file ~/.local/share/applications/mimeapps.listdan tambahkan baris berikut

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

Register ini ditutup dengan mailtohandler. Anda dapat mengonfirmasi pendaftaran yang berhasil dengan

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

yang seharusnya keluar mutt.desktop. Sekarang Anda dapat mengklik "mailto" di chromium dan terminal akan muncul dengan instance mutt. Bahkan tidak perlu memulai kembali sesi desktop atau browser.

Marco
sumber
1

Anda perlu menulis skrip yang menentukan terminal yang ingin Anda muttbuka. Kemudian, di Firefox, Anda dapat mengaitkan skrip ini dengan tautan mailto. Misalnya, jika Anda menggunakan terminator, Anda dapat membuat skrip berikut.

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

Dalam kasus saya, saya memiliki terminator drop-down persisten, jadi saya ingin itu di tab baru. Saya juga membutuhkan palet 256 warna, jadi saya gunakan

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

FWIW ini adalah skrip lengkap saya, yang juga menyembunyikan terminator (jika disembunyikan), menggunakan pintasan Ctrl+ Space, dan membawanya ke depan.

#!/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
Sparhawk
sumber
-1

Lingkungan desktop mana yang Anda jalankan? Anda perlu memeriksa apakah itu pengaturan tipe handler MIME tentang cara menetapkan handler spesifik untuk hal-hal semacam ini.


sumber
OpenBox, saya tidak tahu bagaimana cara mendapatkan mimetype, ini bukan file, saya tidak bisa menjalankan 'mimetype / path / to / file' untuk mengidentifikasinya
daisy