Webページのmailto:
タグをクリックしたときに、ターミナルでmutt
を開始したかったのです。それは可能ですか?現在Firefoxが起動していますが、私はあまり好きではありません。読み込みが遅く、不要です。
まず、XDG仕様で必要な.desktop
ファイルがあることを確認する必要があります。 GUIプログラムの場合、適切な.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」をクリックすると、端末にmuttインスタンスがポップアップ表示されます。デスクトップセッションやブラウザを再起動する必要もありません。
mutt
で開く端末を指定するスクリプトを作成する必要があります。次に、Firefoxで、このスクリプトをmailtoリンクに関連付けることができます。たとえば、ターミネーターを使用している場合は、次のスクリプトを作成できます。
#!/usr/bin/env bash
terminator -x "mutt '$@'"
私の場合、永続的なドロップダウンターミネーターがあるので、新しいタブに配置したいと思います。 256色のパレットも必要なので、
#!/usr/bin/env bash
terminator --new-tab -x "TERM=xterm-256color; mutt '$@'"
FWIWこれは私の完全なスクリプトであり、ショートカットを使用してターミネーター(非表示の場合)も再表示します 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