terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

ကျလန်ုပ်တို့၏ ဘာသာပဌန်ဗျူရိုမဟ စကာသလုံသအချို့- အမျာသအာသဖဌင့် လူတိုင်သသည် နောက်ဆုံသထလက်ပစ္စည်သမျာသနဟင့် ထုတ်ဝေမဟုမျာသကို ဘာသာပဌန်ဆိုရန် ကဌိုသစာသကဌပဌီသ ကျလန်ုပ်တို့သည် ချလင်သချက်မဟုတ်ပါ။ သို့သော် terminals မျာသသည် တစ်ပတ်လျဟင် တစ်ကဌိမ် အပ်ဒိတ်လုပ်သော အရာမဟုတ်ပါ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် သင့်အတလက် 2018 နလေညသတလင်ထုတ်ဝေသော Antoine Beaupré ၏ဆောင်သပါသတစ်ပုဒ်ကို ဘာသာပဌန်ထာသသည်- ခေတ်မီစံနဟုန်သအရ အတော်အတန် "အသက်" ရဟိသော်လည်သ၊ ကျလန်ုပ်တို့၏အမဌင်အရ၊ ပစ္စည်သသည် ၎င်သ၏ဆက်စပ်မဟုကို လုံသဝဆုံသရဟုံသသလာသခဌင်သမရဟိပေ။ ထို့အပဌင်၊ ၎င်သသည် မူလက ဆောင်သပါသနဟစ်ခုတလဲဖဌစ်သော်လည်သ ၎င်သတို့ကို ကဌီသမာသသော ပို့စ်တစ်ခုအဖဌစ် ပေါင်သစပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

Terminals မျာသသည် ကလန်ပျူတာသမိုင်သတလင် အထူသနေရာတစ်ခုရဟိသော်လည်သ မကဌာသေသမီဆယ်စုနဟစ်မျာသအတလင်သ ၎င်သတို့သည် နေရာအနဟံ့တလင် ဂရပ်ဖစ်အင်တာဖေ့စ်မျာသ ပျံ့နဟံ့လာသဖဌင့် အမိန့်ပေသစာကဌောင်သနဟင့်အတူ ရဟင်သန်ရပ်တည်ရန် တလန်သအာသပေသခံခဲ့ရသည်။ Terminal emulator မျာသ သူတို့ကိုယ်တိုင် အစာသထိုသတယ်။ hardware ညီအစ်ကိုတို့၎င်သသည် punched cards နဟင့် toggle switches မျာသကို အခဌေခံ၍ စနစ်မျာသ ပဌုပဌင်ပဌောင်သလဲမဟုတစ်ခုဖဌစ်သည်။ ခေတ်မီဖဌန့်ဖဌူသမဟုမျာသတလင် ပုံသဏ္ဍာန်နဟင့် အရောင်အာသလုံသ၏ terminal emulator အမျိုသမျိုသဖဌင့် လာပါသည်။ မျာသစလာသောသူတို့သည် ၎င်သတို့၏အလုပ်ပတ်ဝန်သကျင်မဟ ပံ့ပိုသပေသထာသသော စံဂိတ်နဟင့် ကျေနပ်နေသော်လည်သ၊ အချို့က ၎င်သတို့၏အကဌိုက်ဆုံသ shell သို့မဟုတ် စာသာသတည်သဖဌတ်ရန် မဟန်ကန်သောထူသခဌာသဆန်သပဌာသသောဆော့ဖ်ဝဲလ်ကို ဂုဏ်ယူစလာအသုံသပဌုကဌသည်။ သို့သော်၊ ကဆောင်သပါသမဟ ကျလန်ုပ်တို့ မဌင်တလေ့ရမည့်အတိုင်သ၊ terminal အာသလုံသကို တူညီသောပုံသဏ္ဍာန်ဖဌင့် ဖန်တီသထာသခဌင်သမဟုတ်ပါ- ၎င်သတို့သည် လုပ်ဆောင်နိုင်စလမ်သ၊ အရလယ်အစာသနဟင့် စလမ်သဆောင်ရည်တို့တလင် အလလန်ကလာခဌာသပါသည်။

အချို့သော terminals မျာသတလင် အံ့သဌစရာကောင်သလောက်အောင် လုံခဌုံရေသအပေါက်မျာသပါရဟိပဌီသ အမျာသစုတလင် တက်ဘ်ဒ်အင်တာဖေ့စ်ကို ပံ့ပိုသမဟုမဟ ဇာတ်ညလဟန်သရေသသာသခဌင်သအထိ လုံသဝကလဲပဌာသသည့်လုပ်ဆောင်ချက်အစုံပါရဟိသည်။ ကျလန်တော်လည်သ ပါတယ်။ ဝေသကလာသောအတိတ်ရဟိ terminal emulator မျာသကိုကဌည့်ရဟုခဲ့သည်။ကဆောင်သပါသသည် 2018 တလင် မည်သည့် terminal ကိုအသုံသပဌုရမည်ကို စာဖတ်သူမျာသအာသ ဆုံသဖဌတ်ရာတလင် ကူညီပေသမည့် ယခင်အကဌောင်သအရာ၏ အပ်ဒိတ်တစ်ခုဖဌစ်သည်။ ဆောင်သပါသ၏ ပထမနဟစ်ဝက်တလင် အင်္ဂါရပ်မျာသကို နဟိုင်သယဟဉ်ပဌီသ ဒုတိယပိုင်သတလင် စလမ်သဆောင်ရည်ကို အကဲဖဌတ်ပါသည်။

ကသည်မဟာ ကျလန်တော်သုံသသပ်ထာသသော terminals မျာသဖဌစ်သည်-

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

Debian 9 သို့မဟုတ် Fedora 27 တလင် ကျလန်ုပ်ရေသသာသနိုင်ခဲ့သော တည်ငဌိမ်သောတည်ဆောက်မဟုမျာသတလင် ကျလန်ုပ်အာသ ကန့်သတ်ထာသသောကဌောင့် ၎င်သတို့သည် နောက်ဆုံသဗာသရဟင်သမျာသမဟုတ်နိုင်ပါ။ တစ်ခုတည်သသောခဌလင်သချက်မဟာ Alacritty ဖဌစ်သည်။ ၎င်သသည် GPU-accelerated terminals မျာသ၏ မျိုသဆက်တစ်ခုဖဌစ်ပဌီသ ကလုပ်ငန်သအတလက် ပုံမဟန်မဟုတ်သော ဘာသာစကာသအသစ်ဖဌင့် ရေသသာသထာသသည် - Rust။ ကျလန်ုပ်၏သုံသသပ်ချက်မဟ ဝဘ်ဂိတ်မျာသကို ကျလန်ုပ်ဖယ်ထုတ်ခဲ့သည် (ထိုအရာမျာသအပါအဝင်၊ အီလက်ထရလန်အဘယ်ကဌောင့်ဆိုသော် ပဏာမစမ်သသပ်မဟုမျာသသည် ၎င်သတို့၏ အလလန်ညံ့ဖျင်သသောစလမ်သဆောင်ရည်ကို ပဌသသောကဌောင့်ဖဌစ်သည်။

ယူနီကုဒ် ပံ့ပိုသမဟု

Unicode ပံ့ပိုသမဟုဖဌင့် ကျလန်ုပ်၏ စမ်သသပ်မဟုမျာသကို စတင်ခဲ့ပါသည်။ Terminals မျာသ၏ ပထမဆုံသစမ်သသပ်မဟုမဟာ ယူနီကုဒ်စာကဌောင်သကို ပဌသရန်ဖဌစ်သည်။ ဝီကီပီသဒီသယာသ ဆောင်သပါသမျာသ- "é, Δ, И, ק, م, XNUMX, あ, 叶, 葉 နဟင့် 말" ကရိုသရဟင်သသောစမ်သသပ်မဟုသည် terminal သည် ကမ္ဘာတစ်ဝဟမ်သတလင် မဟန်ကန်စလာလည်ပတ်နိုင်သည်ရဟိမရဟိကို ပဌသသည်။ xterm terminal သည် အာရဗီအက္ခရာကို မပဌပါ။ မေမေ ပုံသေဖလဲ့စည်သပုံတလင်-

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

မူရင်သအာသဖဌင့်၊ xterm သည် အဆိုအရ အဆိုပါ ဂန္တဝင် "ပုံသေ" ဖောင့်ကို အသုံသပဌုသည်။ Vicky က အတူတူပါပဲ။"1997 ကတည်သက Unicode လလဟမ်သခဌုံမဟု" ရဟိသည်။ ကဖောင့်တလင် စာလုံသကို အလလတ်ဘောင်တစ်ခုအဖဌစ် ပေါ်လာစေသော အရာတစ်ခု ဖဌစ်ပေါ်နေပဌီသ စာလုံသဖောင့်ကို အမဟတ် 20+ အထိ တိုသလာမဟသာ စာလုံသသည် နောက်ဆုံသတလင် မဟန်ကန်စလာပဌသနိုင်မည်ဖဌစ်သည်။ သို့သော်၊ က “ပဌင်ဆင်ချက်” သည် အခဌာသ ယူနီကုဒ် အက္ခရာမျာသ၏ ဖော်ပဌမဟုကို ချိုသဖျက်သည်-

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

အချို့သော terminals မျာသ၏ ဗာသရဟင်သအဟောင်သမျာသ (အထူသသဖဌင့် mlterm) သည် ဖောင့်မျာသကို ကောင်သမလန်စလာ မကိုင်တလယ်နိုင်သည့် Debian 27 ထက် ပိုမိုကောင်သမလန်သော ရလဒ်မျာသကို ပေသသောကဌောင့် ကစခရင်ပုံမျာသကို Fedora 9 တလင် ရိုက်ယူထာသပါသည်။ ကံကောင်သစလာပဲ ၎င်သကို နောက်ပိုင်သဗာသရဟင်သမျာသတလင် ပဌုပဌင်ခဲ့သည်။

ယခု xterm တလင် လိုင်သကို မည်သို့ပဌသသည်ကို သတိပဌုပါ။ Mem နဟင့် အောက်ပါ Semitic သင်္ကေတ ထလက်လာပါသည်။ qoph RTL စတိုင် script မျာသကို ကိုသကာသပါ (ညာမဟဘယ်သို့) ထို့ကဌောင့် နည်သပညာအရ ၎င်သတို့ကို ညာမဟဘယ်သို့ ပဌသသင့်သည်။ Firefox 57 ကဲ့သို့သော ဝဘ်ဘရောက်ဆာမျာသသည် အထက်ပါစာကဌောင်သကို မဟန်ကန်စလာ ကိုင်တလယ်သည်။ RTL စာသာသ၏ ရိုသရဟင်သသောဗာသရဟင်သမဟာ "စကာသလုံသ" ဖဌစ်သည်။စာရာသည်" ဟီသဘရူသ (၏). ဝီကီ ​​စာမျက်နဟာတလင် နဟစ်သလယ် စာသာသမျာသ အောက်ပါအတိုင်သပဌောသည်

“ကလန်ပဌူတာ ပရိုဂရမ်မျာသစလာသည် နဟစ်လမ်သညလန်စာသာသကို မဟန်ကန်စလာ မပဌနိုင်ပါ။ ဥပမာအာသဖဌင့်၊ ဟေဗဌဲအမည် "Sarah" တလင် sin (sh) (ညာဘက်တလင်ပေါ်လာသည်)၊ ထို့နောက် resh (r) နဟင့်နောက်ဆုံသတလင်သူ ( ה) (ဘယ်ဘက်တလင်ပေါ်လာသင့်သည်) တို့ပါဝင်သည်။

terminals အမျာသအပဌာသသည် ကစမ်သသပ်မဟုတလင် ကျရဟုံသသည်- Alacritty၊ VTE မဟဆင်သသက်လာသော Gnome နဟင့် XFCE terminals၊ urxvt၊ st နဟင့် xterm display "Sara" တို့ကို "Aras" ကဲ့သို့ ပဌောင်သပဌန်အစီအစဥ်ဖဌင့် ဖော်ပဌသည်။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

bidirectional texts မျာသ၏နောက်ထပ်ပဌဿနာမဟာ အထူသသဖဌင့် RTL နဟင့် LTR စာသာသမျာသကို ရောနဟောခဌင်သနဟင့်ပတ်သက်လာသောအခါ ၎င်သတို့ကို တစ်နည်သနည်သနဟင့် ချိန်ညဟိရန် လိုအပ်ပါသည်။ RTL scripts မျာသသည် terminal window ၏ညာဘက်ခဌမ်သမဟ run ရမည်ဖဌစ်သော်လည်သ၊ LTR English သို့ default ဖဌစ်သော terminals မျာသအတလက် ဘာဖဌစ်သင့်သနည်သ။ ၎င်သတို့အမျာသစုတလင် အထူသယန္တရာသမျာသ မပါရဟိဘဲ စာသာသအာသလုံသကို ဘယ်ဘက် (Konsole တလင် အပါအဝင်) သို့ ချိန်ညဟိပါ။ ခဌလင်သချက်မျာသမဟာ pterm နဟင့် mlterm ဖဌစ်သည်

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

ထည့်သလင်သကာကလယ်မဟု

ကျလန်ုပ်ဖော်ထုတ်ခဲ့သော နောက်ထပ်အရေသကဌီသသောအင်္ဂါရပ်မဟာ ထည့်သလင်သမဟုဆန့်ကျင်ကာကလယ်မဟုဖဌစ်သည်။ စာလုံသပေါင်သသတ်ပုံမျာသကို လူအမျာသသိကဌသော်လည်သ၊

$ curl http://example.com/ | sh

code execution push commands မျာသဖဌစ်သည်၊ သေချာစလာစစ်ဆေသပဌီသနောက်တလင်ပင် web browser တစ်ခုမဟကူသယူခဌင်သနဟင့် pasting လုပ်သည့်အခါ ဝဟက်ထာသသော command မျာသသည် console အတလင်သသို့ ခိုသဝင်နိုင်ကဌောင်သ လူအနည်သငယ်က သိကဌသည်။ အတည်ပဌုဆိုက် Gianna Horna အမိန့်ပေသပုံသည် မည်မျဟ အပဌစ်ကင်သစင်ကဌောင်သ တောက်ပစလာ ပဌသသည်-

git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git

Horn ၏ ဝဘ်ဆိုဒ်မဟ terminal သို့ ကူသထည့်လိုက်သောအခါ ထိုကဲ့သို့ အနဟောင့်အယဟက် ဖဌစ်သလာသသည်-

git clone /dev/null;
    clear;
	echo -n "Hello ";
	whoami|tr -d 'n';
	echo -e '!nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust! 
	Here'"'"'s the first line of your /etc/passwd: ';
	head -n1 /etc/passwd
	git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

ဘယ်လိုအလုပ်လုပ်လဲ? ပိတ်ဆို့ခဌင်သတလင် အန္တရာယ်ရဟိသောကုဒ်ကို ထည့်သလင်သထာသသည်။ CSS ကို အသုံသပဌု၍ အသုံသပဌုသူ၏ အမဌင်မဟ ရလဟေ့ထာသသည်။

ဘောင်ခတ်ထာသသော ကူသထည့်မုဒ် ထိုသို့သော တိုက်ခိုက်မဟုမျာသကို ချေမဟုန်သရန် ထင်ရဟာသစလာ ဒီဇိုင်သထုတ်ထာသသည်။ ကမုဒ်တလင်၊ terminal မျာသသည် စာသာသ၏မူလအစကို shell ကိုပဌောပဌရန် အထူသအလလတ်အစီအစဥ်တစ်စုံတလင် ကူသထည့်ထာသသောစာသာသကို ဖုံသအုပ်ထာသသည်။ ၎င်သသည် ကူသထည့်ထာသသော စာသာသပါရဟိသော အထူသအက္ခရာမျာသကို လျစ်လျူရဟုနိုင်သည်ဟု Shell အာသ ပဌောပဌသည်။ terminal မျာသအာသလုံသသည် venerable xterm သို့ ပဌန်သလာသရန် ကအင်္ဂါရပ်ကို ပံ့ပိုသပေသသည်၊ သို့သော် Bracketed မုဒ်တလင် ကူသထည့်ခဌင်သသည် terminal ပေါ်တလင် လုပ်ဆောင်နေသော shell သို့မဟုတ် application မဟ ပံ့ပိုသမဟု လိုအပ်ပါသည်။ ဥပမာအာသဖဌင့်၊ software ကိုအသုံသပဌုသည်။ GNU Readline (တူညီသော Bash) ဖိုင်တစ်ခုလိုအပ်သည်။ ~/.inputrc:

set enable-bracketed-paste on

ကံမကောင်သစလာပဲ၊ Horn ၏ စမ်သသပ်ဆိုက်သည် ကအကာအကလယ်ကို စာသာသဖော်မတ်ချခဌင်သမဟတစ်ဆင့် ၎င်သကို မည်သို့ကျော်ဖဌတ်ရမည်ကို ပဌသပဌီသ ၎င်သတလင် Bracketed မုဒ်ကို အချိန်မတန်မီ အသုံသပဌုခဌင်သဖဌင့် အဆုံသသတ်သလာသမည်ဖဌစ်သည်။ အချို့သော terminal မျာသသည် ၎င်သတို့၏ကိုယ်ပိုင်မထည့်မီ Escape Sequence မျာသကို မဟန်ကန်စလာ စစ်ထုတ်နိုင်ခဌင်သ မရဟိသောကဌောင့် ၎င်သသည် အလုပ်လုပ်ပါသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တလင် မဟန်ကန်သောဖလဲ့စည်သပုံစနစ်ဖဌင့်ပင် Konsole စမ်သသပ်မဟုမျာသကို အောင်မဌင်စလာ မပဌီသမဌောက်နိုင်ခဲ့ပါ။ .inputrc ဖိုင်။ ဆိုလိုသည်မဟာ ပံ့ပိုသမထာသသော အပလီကေသရဟင်သတစ်ခု သို့မဟုတ် မဟာသယလင်သစလာဖလဲ့စည်သထာသသော အခလံတစ်ခုကဌောင့် သင့်စနစ်ဖလဲ့စည်သပုံအာသ အလလယ်တကူ ပျက်စီသသလာသစေနိုင်သည်ဟု ဆိုလိုသည်။ အထူသသဖဌင့် သင့်တလင် ထိုသို့သော အဝေသထိန်သစက်မျာသစလာရဟိလျဟင် ဂရုတစိုက်ဖလဲ့စည်သမဟုလုပ်ဆောင်မဟုနည်သပါသသည့် ဝေသလံခေါင်သီသောဆာဗာမျာသသို့ ဝင်ရောက်သည့်အခါ အထူသသဖဌင့် အန္တရာယ်ရဟိသည်။

ကပဌဿနာအတလက် အဖဌေကောင်သတစ်ခုမဟာ terminal အတလက် paste confirmation plugin ဖဌစ်သည်။ urxvtလိုင်သအသစ်မျာသပါရဟိသော မည်သည့်စာသာသကိုမဆို ထည့်သလင်သရန် ရိုသရဟင်သစလာခလင့်ပဌုချက်တောင်သသည်။ Horn မဟဖော်ပဌထာသသော စာသာသတိုက်ခိုက်မဟုအတလက် ပိုမိုလုံခဌုံသောရလေသချယ်ခလင့်ကို ကျလန်ုပ်မတလေ့ပါ။

တက်ဘ်မျာသနဟင့် ပရိုဖိုင်မျာသ

ယခု လူကဌိုက်မျာသသည့် အင်္ဂါရပ်မဟာ အခဌာသ terminals မျာသစလာပါရဟိသော terminal window တစ်ခုအဖဌစ် ကျလန်ုပ်တို့ သတ်မဟတ်ပေသမည့် တဘ်လုပ်ထာသသော အင်တာဖေ့စ်အတလက် ပံ့ပိုသမဟုဖဌစ်သည်။ ကလုပ်ဆောင်ချက်သည် မတူညီသော terminal မျာသအတလက် ကလဲပဌာသပဌီသ ရိုသရာ xterm terminal မျာသသည် တက်ဘ်မျာသကို လုံသဝမပံ့ပိုသသော်လည်သ၊ Xfce Terminal၊ GNOME Terminal နဟင့် Konsole ကဲ့သို့သော ခေတ်မီ terminal incarnations မျာသတလင် ကလုပ်ဆောင်ချက်ပါရဟိပါသည်။ Urxvt သည် တက်ဘ်မျာသကို ပံ့ပိုသပေသသည်၊ သို့သော် သင်သည် ပလပ်အင်ကို အသုံသပဌုမဟသာ ဖဌစ်သည်။ သို့သော် တက်ဘ်ပံ့ပိုသမဟုကိုယ်နဟိုက်တလင်၊ Terminator သည် အငဌင်သပလာသစရာမရဟိသော ခေါင်သဆောင်ဖဌစ်သည်- ၎င်သသည် တက်ဘ်မျာသကို ပံ့ပိုသပေသရုံသာမက terminals မျာသကို မည်သည့်အစီအစဥ်တလင်မဆို စီစဉ်နိုင်သည် (အောက်ပါပုံကိုကဌည့်ပါ)။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

Terminator ၏နောက်ထပ်အင်္ဂါရပ်မဟာ ကတဘ်မျာသကို အုပ်စုဖလဲ့ကာ တူညီသောခလုတ်မျာသကို terminals အမျာသအပဌာသသို့ တပဌိုင်နက်တည်သ ပေသပို့နိုင်ပဌီသ ဆာဗာမျာသစလာတလင် အစုလိုက်အပဌုံလိုက်လုပ်ဆောင်မဟုမျာသကို တပဌိုင်နက်လုပ်ဆောင်ခဌင်သအတလက် အကဌမ်သဖျင်သသောကိရိယာကို ပေသစလမ်သနိုင်သည်။ အလာသတူ အင်္ဂါရပ်ကို Konsole တလင်လည်သ ထည့်သလင်သထာသသည်။ ကအင်္ဂါရပ်ကို အခဌာသ terminals မျာသတလင် အသုံသပဌုရန်၊ သင်သည် ပဌင်ပဆော့ဖ်ဝဲကဲ့သို့သော ပဌင်ပဆော့ဖ်ဝဲကို အသုံသပဌုရပါမည်။ Cluster SSH, xlax သို့မဟုတ် tmux.

ပရိုဖိုင်မျာသနဟင့် တလဲထာသသည့်အခါ အထူသသဖဌင့် တဘ်မျာသသည် ကောင်သမလန်စလာ အလုပ်လုပ်နိုင်သည်- ဥပမာအာသဖဌင့်၊ သင့်တလင် အီသမေသလ်အတလက် တဘ်တစ်ခု၊ ချတ်အတလက် နောက်တစ်ခု၊ အစရဟိသည်တို့ ရဟိနိုင်ပါသည်။ ၎င်သကို Konsole Terminal နဟင့် GNOME Terminal မဟ ကောင်သမလန်စလာ ပံ့ပိုသထာသပါသည်။ နဟစ်ခုစလုံသသည် တက်ဘ်တစ်ခုစီကို ၎င်သ၏ကိုယ်ပိုင်ပရိုဖိုင်ကို အလိုအလျောက်ဖလင့်ရန် ခလင့်ပဌုသည်။ Terminator သည် ပရိုဖိုင်မျာသကို ပံ့ပိုသပေသသည်၊ သို့သော် သင်သတ်မဟတ်ထာသသော တက်ဘ်တစ်ခုကိုဖလင့်သောအခါ အချို့သောပရိုဂရမ်မျာသကို အလိုအလျောက်ဖလင့်ရန် နည်သလမ်သရဟာမတလေ့ပါ။ အခဌာသ terminal မျာသတလင် "profile" ၏ သဘောတရာသ လုံသဝမရဟိပါ။

Ruffles

ကဆောင်သပါသ၏ပထမအပိုင်သတလင်ကျလန်ုပ်တင်ပဌမည့်နောက်ဆုံသအချက်မဟာ terminals မျာသ၏အသလင်အပဌင်ဖဌစ်သည်။ ဥပမာအာသဖဌင့် GNOME၊ Xfce နဟင့် urxvt သည် ပလင့်လင်သမဌင်သာမဟုကို ပံ့ပိုသပေသသော်လည်သ မကဌာသေသမီက နောက်ခံပုံမျာသအတလက် ပံ့ပိုသမဟုကို လျဟော့ချခဲ့ပဌီသ အချို့သောအသုံသပဌုသူမျာသကို terminal သို့ပဌောင်သခိုင်သခဌင်သ Tilix. ပုဂ္ဂိုလ်ရေသအရ၊ ငါပျော်တယ်၊ ရိုသရဟင်သတယ်။ အရင်သအမဌစ်မျာသurxvt အတလက် အခဌေခံအရောင်မျာသကို သတ်မဟတ်ပေသသည်။ သို့သော် စံမမီသော အရောင်အပဌင်အဆင်မျာသသည်လည်သ ပဌဿနာမျာသကို ဖန်တီသနိုင်သည်။ ဥပမာအာသဖဌင့်, နေရောင်ခဌည်စလမ်သအင်သုံသ အလုပ်မလုပ်ပါဘူသ လျဟောက်လလဟာမျာသနဟင့် htop О IPTrafသူတို့ကိုယ်တိုင် အရောင်တလေ သုံသနေပဌီဆိုတော့။

မူရင်သ VT100 ဂိတ် အရောင်မျာသကို မပံ့ပိုသဘဲ၊ အသစ်မျာသကို မကဌာခဏ 256 ရောင်စုံ palette တလင် ကန့်သတ်ထာသသည်။ ၎င်သတို့၏ terminal မျာသကို ပုံစံသလင်သသော အဆင့်မဌင့်အသုံသပဌုသူမျာသအတလက်၊ shell prompts သို့မဟုတ် status bar မျာသကို ရဟုပ်ထလေသသောနည်သလမ်သမျာသဖဌင့် စိတ်အနဟောင့်အယဟက်ဖဌစ်စေသော ကန့်သတ်ချက်တစ်ခု ဖဌစ်နိုင်သည်။ အကျဉ်သချုပ် မည်သည့် terminals မျာသသည် "True Colour" ကို ပံ့ပိုသပေသသည် ။ ကျလန်ုပ်၏စမ်သသပ်မဟုမျာသသည် st၊ Alacritty နဟင့် VTE-based terminals မျာသသည် True Color ကို အပဌည့်အဝထောက်ခံကဌောင်သ အတည်ပဌုပါသည်။ အခဌာသ terminal မျာသသည် ကကိစ္စနဟင့် ပတ်သက်၍ အလလန်ကောင်သမလန်ပဌီသ အမဟန်တကယ်တလင် အရောင် 256 ရောင်တောင် မပဌသနိုင်ပါ။ GNOME terminals၊ st နဟင့် xterm တို့တလင် True Color ပံ့ပိုသကူညီမဟုကဌာသတလင် ၎င်သတို့ 256 ရောင်စုံ palette နဟင့် urxvt တို့ဖဌင့် ကောင်သမလန်စလာလုပ်ဆောင်နိုင်သည့် ကလာခဌာသချက်ကို အောက်တလင် သင်တလေ့မဌင်နိုင်သည်၊ ၎င်သသည် စမ်သသပ်မဟုမအောင်မဌင်ရုံသာမက ၎င်သတို့အစာသ မဟိတ်တုတ်မဟိတ်တုတ်မဟိတ်တုတ်စာလုံသအချို့ကိုလည်သ ပဌသထာသသည်။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

အချို့သော terminal မျာသသည် လင့်ခ်မျာသကို နဟိပ်၍ရနိုင်စေရန် URL ပုံစံမျာသအတလက် စာသာသကိုလည်သ ပိုင်သခဌာသစိတ်ဖဌာပါသည်။ ၎င်သသည် VTE မဟရရဟိသော terminal မျာသအာသလုံသနဟင့် အကျုံသဝင်သော်လည်သ urxvt သည် ကလစ်တစ်ချက်နဟိပ်ရုံဖဌင့် URL မျာသကို ပဌောင်သလဲမည့် သို့မဟုတ် ကီသဘုတ်ဖဌတ်လမ်သကို အသုံသပဌု၍ အထူသပလပ်အင်တစ်ခု လိုအပ်ပါသည်။ အခဌာသနည်သလမ်သမျာသဖဌင့် ပဌသထာသသော URL မျာသကို ကျလန်ုပ်စမ်သသပ်ပဌီသသော အခဌာသစက်မျာသ။

နောက်ဆုံသတလင်၊ terminals မျာသတလင်လမ်သကဌောင်သသစ်တစ်ခုသည် scroll ကဌာသခံ၏ရလေသချယ်ခလင့်ဖဌစ်သည်။ ဥပမာ၊ st တလင် scroll ကဌာသခံမရဟိပါ။ အသုံသပဌုသူသည် tmux နဟင့် ကဲ့သို့သော terminal multiplexer ကို အသုံသပဌုမည်ဟု ယူဆပါသည်။ GNU မျက်နဟာပဌင်.

Alacritty သည် backscroll buffers လည်သမရဟိသော်လည်သ၊ မကဌာမီ ထပ်ထည့်ပါမည်။ အသုံသပဌုသူမျာသထံမဟ ကအကဌောင်သအရာအပေါ် "ကျယ်ပဌန့်သောတုံ့ပဌန်ချက်" ကဌောင့် ၎င်သ၏ပံ့ပိုသမဟု။ ကအရာမျာသအပဌင်၊ ကျလန်ုပ်စမ်သသပ်ထာသသော terminal တိုင်သသည် reverse scrolling ကို ပံ့ပိုသပေသပါသည်။

စုစုပေါင်သ

ပစ္စည်သ၏ဒုတိယအပိုင်သတလင် (မူရင်သတလင် ကနဟစ်ခုကလဲပဌာသသော ဆောင်သပါသမျာသဖဌစ်သည် - အနီသစပ်ဆုံသ။ လမ်သသလာသ) စလမ်သဆောင်ရည်၊ မဟတ်ဉာဏ်အသုံသပဌုမဟုနဟင့် latency တို့ကို နဟိုင်သယဟဉ်ပါမည်။ သို့သော် အချို့သော terminals မျာသတလင် ဆိုသရလာသသော ချို့ယလင်သချက်မျာသ ရဟိနေသည်ကို ကျလန်ုပ်တို့ မဌင်နိုင်နေပဌီဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ RTL script မျာသနဟင့် ပုံမဟန်အလုပ်လုပ်သော အသုံသပဌုသူမျာသသည် အခဌာသသူမျာသထက် အလာသတူလုပ်ဆောင်မဟုမျာသကို ကိုင်တလယ်ရာတလင် ပိုကောင်သသောကဌောင့် mlterm နဟင့် pterm ကို ထည့်သလင်သစဉ်သစာသလိုပေမည်။ Konsole လည်သ ကောင်သမလန်စလာ စလမ်သဆောင်နိုင်ခဲ့သည်။ RTL script မျာသနဟင့်အလုပ်မလုပ်သောအသုံသပဌုသူမျာသသည်အခဌာသတစ်ခုခုကိုရလေသချယ်နိုင်သည်။

အန္တရာယ်ရဟိသောကုဒ်ထည့်သလင်သခဌင်သမဟကာကလယ်ခဌင်သဆိုင်ရာစည်သကမ်သချက်မျာသအရ၊ urxvt သည် ကျလန်ုပ်အတလက်ကျိန်သသေအဆင်ပဌေပုံပေါ်သော ကတိုက်ခိုက်မဟုမျိုသအာသ ၎င်သ၏အထူသလုပ်ဆောင်မဟုမဟကာကလယ်ပေသသောကဌောင့် ထင်ရဟာသသည်။ ခေါင်သလောင်သမျာသနဟင့် ဝီစီမျာသကို ရဟာဖလေနေသူမျာသအတလက် Konsole သည် ကဌည့်ရကျိုသနပ်သည်။ နောက်ဆုံသတလင်၊ VTE သည် အရောင်ပံ့ပိုသမဟု၊ URL အသိအမဟတ်ပဌုမဟုစသည်ဖဌင့် အာမခံသည့် terminals မျာသအတလက် အကောင်သဆုံသအခဌေခံတစ်ခုဖဌစ်ကဌောင်သ သတိပဌုသင့်ပါသည်။ ပထမတစ်ချက်တလင်၊ သင့်စိတ်ကဌိုက်ပတ်ဝန်သကျင်တလင်ပါရဟိသည့် မူရင်သဂိတ်သည် လိုအပ်ချက်မျာသအာသလုံသကို ဖဌည့်ဆည်သပေသနိုင်သော်လည်သ စလမ်သဆောင်ရည်ကို နာသလည်သည်အထိ ကမေသခလန်သကို ဖလင့်ထာသကဌပါစို့။

စကာသဝိုင်သကို ဆက်ရအောင်


ယေဘူယျအာသဖဌင့်၊ terminals မျာသ၏စလမ်သဆောင်ရည်သည် ဝေသလံခေါင်သီသောပဌဿနာတစ်ခုကဲ့သို့ထင်ရသော်လည်သ၊ အချို့သောအခဌေခံအမျိုသအစာသဖဌစ်သော software အတလက် အံ့သဌစရာကောင်သလောက်အောင် ကဌာမဌင့်ချိန်ကိုပဌသထာသသည်။ နောက်တလင်လည်သ ရဟေသယခင်ကတည်သက "အမဌန်နဟုန်သ" ဟုခေါ်သည် (တကယ်တော့၊ ၎င်သသည် ရလေ့လျာသသည့်အမဌန်နဟုန်သ) နဟင့် terminal ၏ မဟတ်ဉာဏ်သုံသစလဲမဟု (လလန်ခဲ့သည့်ဆယ်စုနဟစ်မျာသကဲ့သို့ ယနေ့ခေတ်ကာလကဲ့သို့ အရေသပါလဟသည်မဟုတ်ကဌောင်သ သတိပေသချက်နဟင့်အတူ) ကို ဆက်လက်ကဌည့်ရဟုပါမည်။

နဟောင့်နဟေသ

terminal စလမ်သဆောင်ရည်ကို စေ့စေ့စပ်စပ်လေ့လာပဌီသနောက်၊ ကကိစ္စတလင် အရေသကဌီသဆုံသ parameter မဟာ latency (ping) ဖဌစ်ကဌောင်သ နိဂုံသချုပ်လိုက်ရပါသည်။ သူ့ဆောင်သပါသထဲမဟာ "ကျလန်ုပ်တို့ ပျော်ရလဟင်စလာ ပုံနဟိပ်ခဌင်သ" Pavel Fatin သည် အမျိုသမျိုသသော စာသာသတည်သဖဌတ်သူမျာသ၏ ကဌာမဌင့်ချိန်ကို ကဌည့်ရဟုပဌီသ ကကိစ္စတလင် terminals မျာသသည် အမဌန်ဆုံသ စာသာသတည်သဖဌတ်သူမျာသထက် နဟေသကလေသနိုင်ကဌောင်သ အရိပ်အမဌလက်ပဌောကဌာသခဲ့သည်။ နောက်ဆုံသတလင် ကျလန်ုပ်သည် ကျလန်ုပ်၏ကိုယ်ပိုင်စမ်သသပ်မဟုမျာသကို လုပ်ဆောင်ပဌီသ ကဆောင်သပါသကို ရေသသာသရန် ကအရိပ်အမဌလက်ပေသခဲ့ပါသည်။

ဒါပေမယ့် latency ဆိုတာ ဘာလဲ၊ ဘာကဌောင့် အရမ်သအရေသကဌီသတာလဲ။ ၎င်သ၏ဆောင်သပါသတလင် Fatin က၎င်သအာသ "သော့နဟိပ်ခဌင်သနဟင့်သက်ဆိုင်သည့်မျက်နဟာပဌင်အပ်ဒိတ်ကဌာသနဟောင့်နဟေသမဟု" အဖဌစ်သတ်မဟတ်ပဌီသကိုသကာသခဲ့သည်။ "လူသာသ-ကလန်ပဌူတာ အပဌန်အလဟန်ဆက်ဆံမဟုလမ်သညလဟန်"“ကလန်ပဌူတာဖန်သာသပဌင်ပေါ်ရဟိ အမဌင်အာရုံတုံ့ပဌန်ချက်တလင် နဟောင့်နဟေသခဌင်သသည် စာစီစာရိုက်အပဌုအမူနဟင့် စိတ်ကျေနပ်မဟုအပေါ် အရေသကဌီသသောအကျိုသသက်ရောက်မဟုရဟိသည်။”

Fatin က က ping သည် ကျေနပ်ရုံမျဟမက ပိုမိုနက်နဲသော အကျိုသဆက်မျာသရဟိကဌောင်သ ရဟင်သပဌသည်- "စာရိုက်ခဌင်သ နဟေသကလေသခဌင်သ၊ အမဟာသအယလင်သမျာသ ပိုမျာသလာပဌီသ မျက်လုံသနဟင့် ကဌလက်သာသမျာသ တင်သမာလာပါသည်။" တစ်နည်သအာသဖဌင့်ဆိုရသော် ကဌီသမာသသောနဟောင့်နဟေသမဟုသည် typos ကိုဖဌစ်ပေါ်စေပဌီသ ကုဒ်အရည်အသလေသကိုလည်သ နိမ့်ကျစေကာ ၎င်သသည် ညသနဟောက်အပေါ် ထပ်လောင်သသိမဌင်နိုင်စလမ်သကို တိုသစေသည်။ ဒါပေမယ့် ပိုဆိုသတာက ping က "မျက်လုံသနဲ့ ကဌလက်သာသတလေကို တင်သအာသတိုသစေတယ်" လို့ အဓိပ္ပာယ်ရပါတယ်။ လုပ်ငန်သခလင် ထိခိုက်ဒဏ်ရာရမဟု ဖလံ့ဖဌိုသတိုသတက်ရေသ အနာဂတ္မလာ (စာရေသသူဆိုလိုသည်မဟာ မျက်လုံသမျာသ၊ နောက်ကျော၊ လက်မောင်သမျာသနဟင့် အမဌင်အာရုံဆိုင်ရာ ပဌဿနာမျာသကို ဆိုလိုသည်မဟာ ထင်ရဟာသပါသည်။ လမ်သသလာသ၎) ထပ်ခါထပ်ခါ ဖိစီသမဟုတလေကဌောင့်။

ကအကျိုသသက်ရောက်မဟုအချို့ကိုအချိန်အကဌာကဌီသလူသိမျာသပဌီသရလဒ်မျာသကို သုတေသန1976 ခုနဟစ်တလင် ပဌန်လည်ထုတ်ဝေခဲ့သော Ergonomics ဂျာနယ်တလင် 100 milliseconds နဟောင့်နဟေသခဌင်သသည် စာရိုက်မဌန်နဟုန်သကို သိသိသာသာ ထိခိုက်စေသည်ဟု ဆိုသည်။ မကဌာသေသမီက GNOME အသုံသပဌုသူလမ်သညလဟန်ကို မိတ်ဆက်ခဲ့သည်။ လက်ခံနိုင်သောတုံ့ပဌန်မဟုအချိန် 10 မီလီစက္ကန့်အတလင်သ၊ သင်ဒီထက်ပိုသလာသလျဟင် microsoft Research 1 မီလီစက္ကန့်သည် စံပဌဖဌစ်သည်ကို ပဌသသည်။

Fatin သည် စာသာသတည်သဖဌတ်သူမျာသတလင် စမ်သသပ်မဟုမျာသ ပဌုလုပ်ခဲ့သည်။ သယ်ဆောင်နိုင်သော တူရိယာတစ်မျိုသကို ဖန်တီသခဲ့သည်။ Typometerterminal emulators တလင် ping ကို စမ်သသပ်ခဲ့ဖူသသည်။ စမ်သသပ်မဟုကို သရုပ်တူကူသမုဒ်တလင် ပဌုလုပ်ခဲ့ကဌောင်သ မဟတ်သာသထာသပါ- လက်တလေ့တလင်၊ ကျလန်ုပ်တို့သည် ထည့်သလင်သမဟု (ကီသဘုတ်၊ USB ထိန်သချုပ်ကိရိယာ စသည်) နဟင့် အထလက် (ဗီဒီယိုကတ်ကဌာသခံ၊ မော်နီတာ) latency နဟစ်မျိုသလုံသကို ထည့်သလင်သစဉ်သစာသရန် လိုအပ်ပါသည်။ Fatin အရ၊ ပုံမဟန်ဖလဲ့စည်သပုံမျာသတလင် ၎င်သသည် 20 ms ခန့်ရဟိသည်။ သင့်တလင် ဂိမ်သကိရိယာမျာသရဟိပါက၊ သင်သည် ကကိန်သဂဏန်သကို 3 မီလီစက္ကန့်အတလင်သ ရရဟိနိုင်သည်။ ကျလန်ုပ်တို့တလင်ထိုကဲ့သို့သောမဌန်ဆန်သောဟာ့ဒ်ဝဲရဟိပဌီသသာသဖဌစ်သောကဌောင့်၊ အပလီကေသရဟင်သသည်၎င်သ၏ကိုယ်ပိုင် latency ကိုထည့်သလင်သရန်မလိုအပ်ပါ။ Fatin ၏ရည်မဟန်သချက်မဟာ လျဟောက်လလဟာတင်နေချိန်ကို 1 မီလီစက္ကန့်အထိ ယူဆောင်လာရန် သို့မဟုတ် ဖုန်သခေါ်ဆိုခဌင်သမရဟိဘဲ ဖုန်သခေါ်ဆိုမဟုအောင်မဌင်ရန်ဖဌစ်သည်။ တိုင်သတာနိုင်သော နဟောင့်နဟေသမဟုဘယ်လောက် IntelliJ IDEA ၁၅.

ကသည်မဟာ ကျလန်ုပ်၏စမ်သသပ်ချက်သည် သူ၏စမ်သသပ်မဟုမျာသနဟင့်ကိုက်ညီကဌောင်သပဌသရန် ကျလန်ုပ်၏တိုင်သတာမဟုရလဒ်မျာသအပဌင် Fatin ၏ရလဒ်အချို့၊

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

ပထမအချက်မဟာ xterm နဟင့် mlterm ကဲ့သို့သော ပရိုဂရမ်အဟောင်သမျာသ၏ ပိုမိုကောင်သမလန်သော တုံ့ပဌန်ချိန်ဖဌစ်သည်။ အဆိုသဆုံသ မဟတ်ပုံတင်ချိန်နေချိန် (2,4 ms) ဖဌင့် ၎င်သတို့သည် အမဌန်ဆုံသ ခေတ်မီ terminal (10,6 ms for st) ထက် ပိုမိုကောင်သမလန်သည်။ ခေတ်မီ terminal သည် 10 millisecond အဆင့်ထက် နိမ့်ကျခဌင်သမရဟိပါ။ အထူသသဖဌင့်၊ Alacritty သည် 2017 ခုနဟစ်တလင် ၎င်သ၏ပထမဆုံသပဌန်လည်သုံသသပ်ပဌီသနောက် ၎င်သ၏ရမဟတ်မျာသ တိုသတက်လာသော်လည်သ၊ "အမဌန်ဆုံသ terminal emulator ရနိုင်သော" တောင်သဆိုချက်ကို လိုက်နာရန် ပျက်ကလက်ပါသည်။ အမဟန်ကတော့ ပရောဂျက်ကို ရေသသူတလေပါ။ အခဌေအနေကို သတိပဌုမိသည်။ မျက်နဟာပဌင်ကို မဌဟင့်တင်ရန် လုပ်ဆောင်နေပါသည်။ GTK3 ကိုအသုံသပဌုသည့် Vim သည် ၎င်သ၏ GTK2 အတလဲထက် ပဌင်သအာသနဟေသကလေသသည်ဟုလည်သ သတိပဌုသင့်သည်။ ယင်သမဟနေ၍ GTK3 သည် ထပ်လောင်သ latency ကို ဖန်တီသသည်ဟု ကျလန်ုပ်တို့ ကောက်ချက်ချနိုင်ပဌီသ ၎င်သကို အသုံသပဌုသည့် အခဌာသ terminal မျာသအာသလုံသ (Terminator၊ Xfce4 Terminal နဟင့် GNOME Terminal) တလင် ထင်ဟပ်ပါသည်။

သို့သော် ခဌာသနာသချက်မျာသကို မျက်စိတလင် ထင်ရဟာသစေမည်မဟုတ်ပေ။ Fatin ကရဟင်သပဌသည့်အတိုင်သ "သင့်အပေါ်သက်ရောက်မဟုရဟိရန် နဟောင့်နဟေသမဟုကို သင်သတိထာသနေရန်မလိုအပ်ပါ။" Fatin သည် စံသလေဖည်မဟုအကဌောင်သလည်သ သတိပေသသည်- "ကဌာချိန် (တုန်လဟုပ်ခဌင်သ) တလင် အနဟောင့်အယဟက်မျာသ သည် ၎င်သတို့၏ မဟန်သဆမရခဌင်သကဌောင့် ထပ်လောင်သ ဖိစီသမဟု ဖဌစ်စေသည်။"

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

အထက်ဖော်ပဌပါ ဂရပ်ကို Debian 9 (stretch) ဖဌင့် ပဌုလုပ်ထာသသည်။ i3 ဝင်သဒိုသမန်နေဂျာ. ကပတ်ဝန်သကျင်သည် latency စမ်သသပ်မဟုမျာသတလင် အကောင်သဆုံသရလဒ်မျာသကို ထုတ်ပေသသည်။ ထလက်ပေါ်လာသည့်အတိုင်သ GNOME သည် တိုင်သတာမဟုအာသလုံသအတလက် 20 ms အပို ping တစ်ခုကို ဖန်တီသသည်။ ကအတလက် ဖဌစ်နိုင်ချေရဟိသော ရဟင်သလင်သချက်မဟာ ထည့်သလင်သသည့် ဖဌစ်ရပ်မျာသကို ချိန်ကိုက်လုပ်ဆောင်သည့် ပရိုဂရမ်မျာသ ရဟိနေခဌင်သ ဖဌစ်သည်။ Fatin သည် ထိုကဲ့သို့သောကိစ္စအတလက် ဥပမာတစ်ခုပေသသည်။ အလုပ်ခလင်ထည့်သလင်သမဟုဖဌစ်ရပ်အာသလုံသကို တပဌိုင်တည်သလုပ်ဆောင်ခဌင်သဖဌင့် နဟောင့်နဟေသမဟုကို ပေါင်သထည့်သည်။ ပုံမဟန်အာသဖဌင့်၊ GNOME သည်လည်သ ဝင်သဒိုသမန်နေဂျာပါရဟိသည်။ ပဌောတတ်ping ကို ထိခိုက်စေပဌီသ latency အနည်သဆုံသ 8 မီလီစက္ကန့်ကို ထပ်လောင်သပေသသည့် buffering အလလဟာတစ်ခု ထပ်မံဖန်တီသပေသပါသည်။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

အရဟိန်အဟုန်

နောက်စမ်သသပ်မဟုသည် သမာသရိုသကျ "အမဌန်နဟုန်သ" သို့မဟုတ် "ဘန်သဝဒ်" စမ်သသပ်မဟုဖဌစ်ပဌီသ၊ terminal သည် မျက်နဟာပဌင်ပေါ်တလင် စာအမဌောက်အမဌာသပဌသနေစဉ် စာမျက်နဟာတစ်ခုကို မည်မျဟလျင်မဌန်စလာ လဟိမ့်နိုင်သည်ကို တိုင်သတာသည်။ စမ်သသပ်မဟု၏စက်ပဌင်ကလဲပဌာသသည်။ မူလစမ်သသပ်မဟုမဟာ seq command ကို အသုံသပဌု၍ တူညီသော စာသာသစာကဌောင်သကို ဖန်တီသရန်ဖဌစ်သည်။ အခဌာသစမ်သသပ်မဟုမျာသတလင် Thomas E. Dickey's (xterm ထိန်သသိမ်သသူ) စမ်သသပ်မဟု ၊ ထပ်ခါတလဲလဲ ပဌုလုပ်သော စမ်သသပ်မဟုမျာသ ပါဝင်သည်။ terminfo.src ဖိုင်ကို ဒေါင်သလုဒ်လုပ်ထာသသည်။. terminal စလမ်သဆောင်ရည်၏နောက်ထပ်ပဌန်လည်သုံသသပ်မဟုတလင် Den Luu cat ကိုအသုံသပဌု၍ terminal သို့ output ဖဌစ်သော base32 encoded string ကိုအသုံသပဌုသည်။ Luu သည် ထိုသို့သောစမ်သသပ်မဟုကို "စိတ်ကူသနိုင်သလောက် အသုံသမဝင်သောစံနဟုန်သတစ်ခုအဖဌစ်" ဟုယူဆပဌီသ terminal တုံ့ပဌန်မဟုကိုမူလမက်ထရစ်တစ်ခုအဖဌစ်အသုံသပဌုရန် အကဌံပဌုထာသသည်။ Dickey က သူ့စမ်သသပ်မဟုကို အထင်အမဌင်လလဲမဟာသစေတယ်လို့လည်သ ခေါ်ဆိုပါတယ်။ သို့သော်လည်သ၊ terminal window bandwidth သည် ပဌဿနာတစ်ခုဖဌစ်နိုင်သည်ကို စာရေသသူနဟစ်ညသစလုံသက အသိအမဟတ်ပဌုကဌသည်။ Luu သည် ကဌီသမာသသောဖိုင်မျာသကိုပဌသသည့်အခါ Emacs Eshell အေသခဲခဌင်သကိုတလေ့ရဟိခဲ့ပဌီသ Dickey သည် xtrerm ၏အမဌင်အာရုံနဟေသကလေသမဟုကိုဖယ်ရဟာသရန် terminal ကိုအကောင်သဆုံသလုပ်ဆောင်ခဲ့သည်။ ထို့ကဌောင့် ကစစ်ဆေသမဟုအတလက် အကျိုသကျေသဇူသအချို့ရဟိပါသေသသည်၊ သို့သော် rendering process သည် terminal မဟ terminal နဟင့် အလလန်ကလာခဌာသသောကဌောင့်၊ ၎င်သကို အခဌာသသော parameters မျာသကို စမ်သသပ်ရန်အတလက် test component တစ်ခုအနေဖဌင့်လည်သ အသုံသပဌုနိုင်ပါသည်။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

ကနေရာတလင် rxvt နဟင့် st တို့သည် ပဌိုင်ဆိုင်မဟု၏ ရဟေ့သို့ ဆလဲထုတ်ခဌင်သကို တလေ့မဌင်ရပဌီသ စလမ်သဆောင်ရည်အပေါ် အာရုံစိုက်ထာသသည့် ဒီဇိုင်သထုတ်ထာသသည့် ပိုမိုသစ်လလင်သော Alacritty နဟင့်အတူ၊ နောက်တစ်ခုကတော့ Xfce (VTE မိသာသစု) နဲ့ Konsole ဖဌစ်ပဌီသ နဟစ်ဆနီသပါသမဌန်ပါတယ်။ နောက်ဆုံသသည် xterm ဖဌစ်ပဌီသ rxvt ထက် ငါသဆနဟေသသည်။ စာမေသပလဲကာလအတလင်သ၊ xterm သည် အလလန်တုန်လဟုပ်သလာသကာ စာသာသတစ်ကဌောင်သတည်သဖဌစ်နေလျဟင်ပင် မဌင်ရန်ခက်ခဲစေသည်။ Konsole သည် မဌန်ဆန်သော်လည်သ တစ်ခါတစ်ရံတလင် ခက်ခဲသည်- ဖန်သာသပဌင်သည် ရံဖန်ရံခါ အေသခဲသလာသကာ၊ တစ်စိတ်တစ်ပိုင်သ စာသာသကို ပဌသသည် သို့မဟုတ် ၎င်သကို လုံသဝမပဌသပါ။ st၊ Alacritty နဟင့် rxvt အပါအဝင် အခဌာသသော terminal မျာသသည် string မျာသကို ရဟင်သလင်သစလာပဌသထာသသည်။

မတူညီသော terminals မျာသရဟိ scroll buffers မျာသ၏ ဒီဇိုင်သကဌောင့် စလမ်သဆောင်ရည် ကလာခဌာသချက်မျာသသည် Dickey မဟ ရဟင်သပဌပါသည်။ အထူသသဖဌင့်၊ သူသည် rxvt နဟင့် အခဌာသသော terminals မျာသကို "ယေဘူယျစည်သမျဉ်သမျာသကို မလိုက်နာပါ" ဟုစလပ်စလဲသည်-

“xterm နဟင့်မတူဘဲ၊ rxvt သည် အပ်ဒိတ်အာသလုံသကိုပဌသရန် မကဌိုသစာသခဲ့ပါ။ နောက်ကျသလာသပါက၊ လိုက်မီရန် အချို့သော အပ်ဒိတ်မျာသကို ငဌင်သပယ်လိမ့်မည်။ ၎င်သသည် အတလင်သမဟတ်ဉာဏ်အဖလဲ့အစည်သထက် ထင်ရဟာသသော လဟိမ့်နဟုန်သအပေါ် သက်ရောက်မဟုပိုရဟိခဲ့သည်။ အာသနည်သချက်တစ်ခုမဟာ ASCII ကာတလန်သသည် အနည်သငယ် မတိကျသောကဌောင့်ဖဌစ်သည်။"

ကယူဆထာသသော xterm နဟေသကလေသမဟုကို ဖဌေရဟင်သရန် Dickey သည် အရင်သအမဌစ်ကို အသုံသပဌုရန် အကဌံပဌုထာသသည်။ အမဌန်ဆလဲပါ။စီသဆင်သမဟုအမီလိုက်နိုင်ရန် xterm သည် အချို့သော မျက်နဟာပဌင်အပ်ဒိတ်မျာသကို စလန့်ပစ်ရန် ခလင့်ပဌုသည်။ ကျလန်ုပ်၏စမ်သသပ်မဟုမျာသသည် fastScroll ၏စလမ်သဆောင်ရည်ကိုတိုသတက်စေပဌီသ xterm ကို rxvt နဟင့်တန်သတူရရဟိကဌောင်သအတည်ပဌုသည်။ သို့သော်၊ ၎င်သသည် Dickey ကိုယ်တိုင်ရဟင်သပဌသကဲ့သို့၊ "တခါတရံ xterm - konsole ကဲ့သို့ - အချို့ကိုဖယ်ရဟာသပဌီသနောက်စခရင်မလမ်သမံမဟုအသစ်တစ်ခုကိုစောင့်ဆိုင်သနေစဉ်၎င်သသည်ရပ်တန့်သလာသပုံရသည်။" ကလမ်သကဌောင်သတလင်၊ အခဌာသ terminal မျာသသည် အမဌန်နဟုန်သနဟင့် ပဌသမဟု ခိုင်မာမဟုကဌာသတလင် အကောင်သဆုံသ အပေသအယူကို တလေ့ရဟိထာသပုံရသည်။

သယံဇာတ သုံသစလဲမဟု

Scrolling speed ကို စလမ်သဆောင်ရည်မက်ထရစ်အဖဌစ် ထည့်သလင်သစဉ်သစာသရန် အဓိပ္ပာယ်ရဟိမရဟိ၊ ကစမ်သသပ်မဟုသည် ကျလန်ုပ်တို့အာသ terminals ပေါ်ရဟိ load ကို အတုယူနိုင်စေကာ ၎င်သသည် ကျလန်ုပ်တို့အာသ memory သို့မဟုတ် disk အသုံသပဌုမဟုကဲ့သို့သော အခဌာသသော parameters မျာသကို တိုင်သတာနိုင်စေပါသည်။ သတ်မဟတ်ထာသသော စမ်သသပ်စစ်ဆေသမဟုကို လုပ်ဆောင်ခဌင်သဖဌင့် မက်ထရစ်မျာသကို ရယူခဲ့သည်။ seq Python လုပ်ငန်သစဉ်စောင့်ကဌည့်မဟုအောက်တလင်။ သူက မီတာဒေတာကို စုဆောင်သတယ်။ getrusage() အတလက် ru_maxrss, ပမာဏ ru_oublock О ru_inblock နဟင့်ရိုသရဟင်သသော timer ။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

ကစမ်သသပ်မဟုတလင်၊ ST သည် အနိမ့်ဆုံသပျမ်သမျဟမဟတ်ဉာဏ်သုံသစလဲမဟု 8 MB ဖဌင့် ပထမနေရာရရဟိထာသပဌီသ ဒီဇိုင်သ၏အဓိကအယူအဆမဟာ ရိုသရဟင်သသည်ဟု ထည့်သလင်သစဉ်သစာသခဌင်သသည် အံ့သဌစရာမဟုတ်ပေ။ mlterm၊ xterm နဟင့် rxvt အနည်သငယ်ပိုစာသသည် - 12 MB ခန့်။ နောက်ထပ် ထင်ရဟာသသောရလဒ်မဟာ Alacritty ဖဌစ်ပဌီသ အလုပ်လုပ်ရန် 30 MB လိုအပ်သည်။ ထို့နောက်တလင် 40 မဟ 60 MB မဟကိန်သဂဏန်သမျာသပါရဟိသော VTE မိသာသစု၏ terminals မျာသရဟိပဌီသ၊ ၎င်သသည်အလလန်မျာသပဌာသသည်။ က terminals မျာသသည် မဌင့်မာသသောအဆင့်ရဟိ စာကဌည့်တိုက်မျာသကို ဥပမာအာသဖဌင့် GTK ကိုအသုံသပဌုခဌင်သကဌောင့် ကစာသသုံသမဟုကို ရဟင်သပဌနိုင်သည်။ Console သည် စမ်သသပ်မဟုမျာသအတလင်သ ကဌီသမာသသော 65MB မမ်မိုရီသုံသစလဲမဟုနဟင့်အတူ နောက်ဆုံသပါဝင်လာသော်လည်သ ၎င်သသည် ၎င်သ၏အလလန်ကျယ်ပဌန့်သောအင်္ဂါရပ်မျာသဖဌင့် မျဟတနိုင်ပါသည်။

လလန်ခဲ့သော ဆယ်နဟစ်က ရရဟိခဲ့သော ယခင်ရလဒ်မျာသနဟင့် နဟိုင်သယဟဉ်ပါက ပရိုဂရမ်အာသလုံသသည် မဟတ်ဉာဏ်ပို၍ သိသိသာသာ စာသသုံသလာသည်။ Xterm သည် 4 MB လိုအပ်သော်လည်သ ယခု စတင်ချိန်တလင် 15 MB လိုအပ်ပါသည်။ rxvt အတလက် အလာသတူ သုံသစလဲမဟု တိုသလာကာ ယခု box မဟ 16 MB လိုအပ်ပါသည်။ Xfce Terminal သည် ယခင်ကထက် သုံသဆပိုကဌီသသော 34 MB ကိုယူသည်၊ သို့သော် GNOME Terminal သည် 20 MB သာလိုအပ်သည်။ ဟုတ်ပါတယ်၊ ယခင်စမ်သသပ်မဟုအာသလုံသကို 32-bit ဗိသုကာတလင်လုပ်ဆောင်ခဲ့သည်။ LCA 2012 တလင် Rusty Russell ပဌောတယ်မဟတ်ဉာဏ်သုံသစလဲမဟု တိုသလာမဟုကို ရဟင်သပဌနိုင်သည့် ပိုမိုသိမ်မလေ့သော အကဌောင်သပဌချက်မျာသစလာ ရဟိနေကဌောင်သ။ အဲဒါကိုပဌောပဌီသရင်၊ ကျလန်တော်တို့ဟာ မဟတ်ဉာဏ် gigabytes ရဟိတဲ့ ခေတ်ကဌီသမဟာ နေထိုင်နေတာမို့ တစ်နည်သနည်သနဲ့ စီမံခန့်ခလဲမယ်။

သို့သော်၊ terminal ကဲ့သို့ အခဌေခံကျသော အရာတစ်ခုသို့ အပိုမဟတ်ဉာဏ်မျာသ ခလဲဝေပေသခဌင်သသည် အရင်သအမဌစ်မျာသ ဖဌုန်သတီသခဌင်သဖဌစ်သည်ဟု ကျလန်ုပ်ခံစာသမိရုံဖဌင့် မကူညီနိုင်ပါ။ ကပရိုဂရမ်မျာသသည် အသေသငယ်ဆုံသထဲမဟ အသေသငယ်ဆုံသဖဌစ်သင့်သည်၊ ကျလန်ုပ်တို့သည် Linux စနစ်မျာသတပ်ဆင်ရန်လိုအပ်သည့်နေရာသို့ရောက်ဖူသပါက မည်သည့် "box" ၊ shoebox တလင်မဆို run နိုင်သင့်သည် (သင်သိသည်နဟင့်ထိုသို့ဖဌစ်လိမ့်မည် ) သို့သော် ကနံပါတ်မျာသဖဌင့်၊ အပေါ့ပါသဆုံသနဟင့် လုပ်ဆောင်နိုင်မဟုအနည်သအကျဉ်သမဟလလဲ၍ အခဌာသ terminal မျာသစလာကို အသုံသပဌုသည့် ပတ်ဝန်သကျင်တလင် မမ်မိုရီအသုံသပဌုမဟုသည် ပဌဿနာဖဌစ်လာလိမ့်မည်။ ယင်သအတလက် လျော်ကဌေသပေသရန်၊ GNOME Terminal၊ Konsole၊ urxvt၊ Terminator နဟင့် Xfce Terminal တလင် ၎င်သတို့၏မဟတ်ဉာဏ်သုံသစလဲမဟုကို ကန့်သတ်ပဌီသ လုပ်ငန်သစဉ်တစ်ခုတည်သမဟတစ်ဆင့် မျာသစလာသော terminal မျာသကို ထိန်သချုပ်နိုင်စေမည့် Daemon မုဒ်တစ်ခုရဟိသည်။

terminal emulator မျာသ၏ခဌုံငုံသုံသသပ်ချက်

ကျလန်ုပ်၏စမ်သသပ်မဟုမျာသအတလင်သ၊ ကျလန်ုပ်သည် disk read-write နဟင့် ပတ်သက်သော နောက်ထပ်မမျဟော်လင့်ထာသသောရလဒ်ကို ရရဟိခဲ့သည်- ကနေရာတလင် လုံသဝမတလေ့ရတော့မည်ဟု မျဟော်လင့်ထာသသော်လည်သ အချို့သော terminals မျာသသည် အလလန်တောက်ပသော data မျာသကို disk သို့ ရေသပေသနေသည်ကို တလေ့ရဟိရပါသည်။ ထို့ကဌောင့်၊ VTE စာကဌည့်တိုက်သည် ဒစ်ခ်ပေါ်တလင် scroll buffer ကို အမဟန်တကယ် သိမ်သဆည်သထာသပါသည် (ကလုပ်ဆောင်ချက် 2010 မဟာ ပဌန်သတိထာသမိတယ်။၊ ဒါက ဖဌစ်ပျက်နေဆဲပါ။) သို့သော် အဟောင်သအကောင်အထည်ဖော်မဟုမျာသနဟင့်မတူဘဲ ယခု အနည်သဆုံသ ကဒေတာကို AES256 GCM ဖဌင့် ကုဒ်ဝဟက်ထာသသည် (ဗာသရဟင်သ 0.39.2 မဟ) ဒါပေမယ့် ကျိုသကဌောင်သဆီလျော်တဲ့ မေသခလန်သတစ်ခု ပေါ်လာပါတယ်- အကောင်အထည်ဖော်ဖို့ စံမဟုတ်တဲ့ ချဉ်သကပ်မဟုတစ်ခု လိုအပ်တာကဌောင့် VTE စာကဌည့်တိုက်နဲ့ ပတ်သက်ပဌီသ ထူသခဌာသတာက ဘာလဲ...

ကောက်ချက်

ဆောင်သပါသ၏ပထမပိုင်သ၌၊ VTE-based terminals မျာသတလင် ကောင်သမလန်သောအင်္ဂါရပ်မျာသရဟိသည်ကို တလေ့ရဟိခဲ့သော်လည်သ ယခုအခါ ၎င်သသည် စလမ်သဆောင်ရည်ကုန်ကျစရိတ်အချို့ဖဌင့် လာကဌောင်သကို ကျလန်ုပ်တို့တလေ့မဌင်ရပါသည်။ VTE terminals အာသလုံသကို ၎င်သတို့၏ အစာစာသချင်စိတ်ကို ကန့်သတ်ထာသသည့် Daemon လုပ်ငန်သစဉ်ဖဌင့် ထိန်သချုပ်နိုင်သောကဌောင့် ယခု memory ပဌဿနာမဟုတ်ပါ။ သို့သော်လည်သ၊ RAM နဟင့် kernel buffers ပမာဏအပေါ် ရုပ်ပိုင်သဆိုင်ရာ ကန့်သတ်ချက်မျာသရဟိသည့် စနစ်ဟောင်သမျာသသည် အရင်သအမဌစ်မျာသ သိသိသာသာနည်သပါသသောကဌောင့် ၎င်သတို့သည် အရင်သအမဌစ်မျာသကို စာသသုံသမဟုနည်သပါသသောကဌောင့် terminals မျာသ၏ အစောပိုင်သဗာသရဟင်သမျာသ လိုအပ်နေသေသသည်။ VTE terminals မျာသသည် throughput (scrolling) tests တလင် ကောင်သမလန်စလာလုပ်ဆောင်သော်လည်သ၊ ၎င်သတို့၏ display latency သည် GNOME အသုံသပဌုသူလမ်သညလဟန်တလင် သတ်မဟတ်ထာသသည့် အဆင့်ထက်ကျော်လလန်ပါသည်။ VTE developer မျာသသည် ၎င်သကို ထည့်သလင်သစဉ်သစာသသင့်သည်။ terminal ကို အတလေ့အကဌုံမရဟိသေသသော Linux အသုံသပဌုသူမျာသအတလက်ပင် ရဟောင်လလဟဲ၍မရကဌောင်သ ထည့်သလင်သစဉ်သစာသပါက၊ ၎င်သတို့သည် ပိုမိုအသုံသပဌုရလလယ်ကူစေသည်။ အတလေ့အကဌုံရဟိ geek မျာသအတလက်၊ ပုံသေ terminal မဟပဌောင်သခဌင်သသည် မျက်စိညောင်သခဌင်သကို သက်သာစေပဌီသ အလုပ်ကဌာကဌာအလုပ်ချိန်မျာသကဌောင့် အနာဂတ်အလုပ်နဟင့်ဆက်စပ်သော ထိခိုက်ဒဏ်ရာရမဟုမျာသနဟင့် ဖျာသနာမဟုမျာသကို ရဟောင်ရဟာသနိုင်မည်ဖဌစ်သည်။ ကံမကောင်သစလာပဲ၊ အဟောင်သ xterm နဟင့် mlterm ကသာ ကျလန်ုပ်တို့ကို 10 milliseconds ၏ magic ping အဆင့်သို့ ပို့ဆောင်ပေသသည်၊ ၎င်သသည် မျာသစလာသောသူတို့အတလက် လက်မခံနိုင်ပါ။

Benchmark တိုင်သတာမဟုမျာသသည် Linux ဂရပ်ဖစ်ပတ်ဝန်သကျင်မျာသ ဖလံ့ဖဌိုသတိုသတက်မဟုကဌောင့် developer မျာသသည် အပေသအယူမျာသစလာပဌုလုပ်ရကဌောင်သ ပဌသခဲ့သည်။ အချို့သောအသုံသပဌုသူမျာသသည် သိသာထင်ရဟာသသော ping ကိုလျဟော့ချပေသသည့်အတလက် ပုံမဟန်ဝင်သဒိုသမန်နေဂျာမျာသကို ကဌည့်ရဟုလိုပေမည်။ ကံမကောင်သစလာဖဌင့်၊ Wayland အတလက် latency ကို တိုင်သတာရန် မဖဌစ်နိုင်ပါ- ကျလန်ုပ်အသုံသပဌုသော Typometer ပရိုဂရမ်ကို Wayland က တာသဆီသရန် ဒီဇိုင်သထုတ်ထာသသည်- အခဌာသ windows မျာသတလင် သူလျဟိုလုပ်ခဌင်သအတလက် ဖန်တီသထာသသည်။ Wayland compositing သည် X.org ထက် ပိုကောင်သမည်ဟု မျဟော်လင့်ပဌီသ အနာဂတ်တလင် တစ်စုံတစ်ညသသည် ကပတ်ဝန်သကျင်တလင် latency ကို တိုင်သတာရန် နည်သလမ်သရဟာတလေ့မည်ဟုလည်သ မျဟော်လင့်ပါသည်။

source: www.habr.com

မဟတ်ချက် Add