Calm Hill My Random Thoughts

Printing Emails with NeoMutt

လွန်ခဲ့တဲ့ ၁ နှစ်လောက်က Google Workspace Refugee ဖြစ်သွားတဲ့နောက်ပိုင်း ဘယ် Service ကိုမှ မှီခိုမနေအောင်လို့ အတော်လေးဂရုစိုက်တယ်။ သုံးနေသမျှ Email တွေလည်း iSync သုံးပြီး Sync လုပ်ထားလေ့ရှိတယ်။ Email Search ဆိုတာလည်း Google ရှိမှမဟုတ်ဘူး ကိုယ်စက်ထဲမှာကိုယ်ပဲ Notmuch သုံးပြီးတော့ Index လုပ်ထားပြီးပဲ သုံးလေ့ရှိတော့တယ်။ အစပိုင်းမှာတော့ Search လုပ်တဲ့အခါ နည်းနည်းတော့ ကသီလင်တနိုင်ပေမယ့် သုံးတာကြာလာပြီး အသားကျလာတော့လည်း အဆင်ပြေပါတယ်။

Terminal မှာ Email Client က တခါတလေမှာ Emacs ကနေ သုံးတာရှိပေမယ့် အများအားဖြင့်တော့ NeoMutt ပဲ သုံးဖြစ်တာများပါတယ်။ လွန်ခဲ့တဲ့ ၃−၄ နှစ်နဲ့ယှဉ်ကြည့်ရင် ကိုယ်အဆင်မပြေတာရှိလိုက် လိုချင်တာပြင်လိုက်နဲ့ Config တွေလည်း ကိုယ့်ရဲ့အလုပ်လုပ်ပုံ Workflow ထဲကို ရောက်နေပြီးဖြစ်လို့ မပြင်ရတာတောင် အတော်ကြာနေပါပြီ။ သာမန်အားဖြင့် Email တွေကို Print ထုတ်လေ့မရှိပေမယ့် အရင်ရက်တွေက PDF အနေနဲ့တော့ Soft copy ထုတ်ဖို့အတွက် လိုလာတယ်။ NeoMutt မှာ Print အတွက် Default အနေနဲ့ lpr နဲ့တော့ Configure လုပ်ထားပြီးသား ပါလာပေမယ့် Printer ကို သွားမှာမဟုတ်ပဲ PDF လိုချင်တဲ့အတွက် ထပ်ပြီးဖြည့်ဖို့ လိုအပ်လာတယ်။

NeoMutt မှာ Print ထုတ်မယ်ဆိုရင် print_command ဆိုတဲ့ Config variable ထဲမှာ ကိုယ်သုံးချင်တဲ့ command or script ကို ထည့်ပေးလိုက်ရုံပါပဲ NeoMutt ဘက်က ပြဿနာမဟုတ်ဘူး။ တကယ်လုပ်ရမှာက ပေးလိုက်တဲ့ Email text ကို PDF ပြောင်းဖို့အတွက်ပဲ လုပ်ပေးဖို့လိုတာ။ Mac မှာ ပါလာပြီးသားဖြစ်တဲ့ cupsfilter ကိုသုံးလို့ရပေမယ့် ထွက်လာတဲ့ PDF မှာ Font တွေက မြင်လို့အဆင်မပြေဘူး ဖြစ်နေတယ်။ ကိုယ်လိုချင်တဲ့ Font Size တို့ ပြောင်းချင်ရင်ကျ cupsfilter နဲ့က အလွယ်တကူ ပြောင်းလို့မရဘူး ဖြစ်နေတာနဲ့ တခြားသုံးလို့ရတာ လိုက်ရှာရပြန်တယ်။

enscript နဲ့ဆိုရင် text ကို PostScript အနေနဲ့ ထုတ်လို့ရတယ် PostScript ကတဆင့် PDF ကို Ghostscript ရဲ့ ps2pdf နဲ့ ပြောင်းယူရင်ရတယ် စမ်းကြည့်လိုက်တော့ ကနဦးက အဆင်ပြေတယ်။ ဒါပေမယ့် စမ်းကြည့်ရင်းနဲ့မှ တချို့ Email တွေမှာ UTF-8 နဲ့ တခြားစာလုံးတွေ ပါလာရင် ပြဿနာတက်တာတွေ့တယ်။ အခုနောက်ပိုင်း Email တွေမှာက Emoji လိုမျိုး တခြားစာလုံးတွေက ပါလာတတ်တော့ အဆင်မပြေပြန်ဘူး။ ကိုယ့်လိုပြဿနာရှိတဲ့လူ တယောက်ထဲမှ မဟုတ်တာပဲဆို ထပ်ရှာကြည့်တော့ paps ကိုရှာလို့တွေ့တယ်။ paps ကတော့ တခြားစာတွေ ပါလာလည်း အဆင်ပြေတယ် Font Size လည်း အလွယ်တကူ Parameter တခုလောက်ပဲ ထည့်ပေးရုံနဲ့ ပြင်လို့ရပါတယ်။

PDF အနေနဲ့ Print လုပ်တာက Script အနေနဲ့ ဘာမှလည်း ထူးထူးခြားခြား မဟုတ်ပါဘူး အောက်မှာပြထားသလို Bash Script တခုရေးထားလိုက်တယ်။ Quick and dirty အနေနဲ့ Print လုပ်လိုက်တဲ့ Filename ကို ရှိပြီးသားဖြစ်နေရင် Overwrite မဖြစ်သွားအောင် 1, 2, 3 တပ်ဖို့ လိုက်ရေးရမှာလည်း အဲလောက်လည်း စိတ်မရှည်တာနဲ့ $RANDOM နဲ့ File name မထပ်အောင် ထည့်ထားလိုက်တယ်။ Overwrite ဖြစ်နိုင်ခြေ ရှိသေးပေမယ့် ချက်ချင်းတော့ မဖြစ်နိုင်သလောက်ဖြစ်သလို ကိုယ်ကလည်း ထွက်လာတဲ့ File တွေကို ဒီအတိုင်းထားမှာ မဟုတ်ဘူးဆိုတော့ ပြဿနာလို့တော့ မမြင်မိပါဘူး။

~/.config/neomutt/print.sh

#!/usr/bin/env bash
paps --font="Monospace 8" | ps2pdf - > ~/Downloads/mutt-print-$RANDOM.pdf

print_command

set print_command = ~/.config/neomutt/print.sh

Script ရေးပြီးရင်တော့ neomuttrc ထဲက print_command မှာ Configure လုပ်ပေးလိုက်ရင် PDF အနေနဲ့ Print လုပ်လို့ရပါပြီ။ Print ထုတ်လိုက်ရင် ~/Downloads/mutt-print-xxx.pdf တွေအနေနဲ့ ရပါလိမ့်မယ်။ ဘယ်သူမှတော့ သုံးမှာမဟုတ်ပေမယ့် ကိုယ်အချိန်တန်လို့ မေ့သွားရင် ပြန်ကြည့်လို့ရအောင် ရေးမှတ်ထားတာပါ။