Saya ingin memulai mutt
di 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.
Saya ingin memulai mutt
di 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.
Jawaban:
Pertama, Anda perlu memastikan bahwa ada .desktop
file yang diperlukan oleh spesifikasi XDG. Untuk program GUI, peluangnya bagus bahwa sudah ada .desktop
file yang sesuai , untuk aplikasi terminal biasanya Anda harus membuatnya sendiri. Periksa direktori /usr/share/applications
untuk file yang ada. Mungkin sudah ada mutt.desktop
file. Jika tidak ada, buat satu.
Kemudian edit file ~/.local/share/applications/mimeapps.list
dan tambahkan baris berikut
[Default Applications]
x-scheme-handler/mailto=mutt.desktop;
Register ini ditutup dengan mailto
handler. 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.
Anda perlu menulis skrip yang menentukan terminal yang ingin Anda mutt
buka. 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
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.