Ka nānā ʻana o nā emulators terminal

ʻO kekahi mau huaʻōlelo mai kā mākou ʻoihana unuhi: ʻo ka mea maʻamau e hoʻoikaika nā mea a pau e unuhi i nā mea hou a me nā paʻi, a ʻaʻole mākou ʻokoʻa. Akā ʻaʻole ʻo nā terminals kahi mea e hoʻonui ʻia i hoʻokahi manawa i ka pule. No laila, ua unuhi mākou iā ʻoe i kahi ʻatikala na Antoine Beaupré, i paʻi ʻia i ka puna o 2018: ʻoiai ʻo ka nui o kona "makahiki" e nā kūlana o kēia wā, i ko mākou manaʻo, ʻaʻole i nalowale nā ​​​​mea. Eia kekahi, he ʻatikala ʻelua kēia, akā ua hoʻoholo mākou e hoʻohui iā lākou i hoʻokahi pou nui.

Ka nānā ʻana o nā emulators terminal

He wahi kūikawā ko Terminals i ka mōʻaukala kamepiula, akā i nā makahiki i hala iho nei ua koi ʻia lākou e ola ma ka ʻaoʻao o ka laina kauoha i ka lilo ʻana o nā kiʻi kiʻi i nā wahi āpau. Nā emulators terminal pani ia lakou iho mau kaikunāne lako, ʻo ia hoʻi, he hoʻololi o nā ʻōnaehana e pili ana i nā kāleka kuʻi a me nā hoʻololi hoʻololi. Hele mai nā māhele o kēia wā me nā ʻano emulators terminal o nā ʻano like ʻole a me nā kala. A ʻoiai ua ʻoluʻolu ka poʻe he nui i ka pahu maʻamau i hāʻawi ʻia e ko lākou wahi hana, hoʻohana haʻaheo kekahi i nā polokalamu exotic downright e holo i kā lākou punahele punahele a i ʻole ka mea hoʻoponopono kikokikona. Akā, e like me kā mākou e ʻike ai mai kēia ʻatikala, ʻaʻole i hana ʻia nā terminal āpau i ke kiʻi like: ʻokoʻa loa lākou i ka hana, ka nui a me ka hana.

Loaʻa i kekahi mau terminals nā puka palekana weliweli, a ʻo ka hapa nui he ʻano hana ʻokoʻa loa, mai ke kākoʻo ʻana i kahi papa kuhikuhi i ka palapala. ʻOiai mākou nānā i nā emulators terminal i ka wā i hala, He mea hou kēia ʻatikala o ka mea mua e kōkua i ka poʻe heluhelu e hoʻoholo i ka pahu e hoʻohana ai i ka makahiki 2018. Hoʻohālikelike ka hapa mua o ka ʻatikala i nā hiʻohiʻona, a ʻo ka hapa ʻelua e loiloi i ka hana.

Eia nā ʻōkuhi aʻu i nānā ai:

Ka nānā ʻana o nā emulators terminal

ʻAʻole paha kēia i nā mana hou loa, no ka mea, ua kaupalena ʻia wau i nā hale paʻa i ka manawa o ka kākau ʻana, hiki iaʻu ke ʻōwili i waho ma Debian 9 a i ʻole Fedora 27. ʻO ka ʻokoʻa wale nō ʻo Alacritty. He moʻopuna ia o nā kikowaena GPU-wikiwiki a kākau ʻia ma kahi ʻōlelo maʻamau a hou no kēia hana - Rust. Ua kāpae au i nā kikowaena pūnaewele mai kaʻu loiloi (me nā mea ma Kelepona), no ka mea, ua hōʻike nā hoʻokolohua mua i kā lākou hana maikaʻi ʻole.

Kākoʻo Unicode

Ua hoʻomaka wau i kaʻu mau hoʻokolohua me ke kākoʻo Unicode. ʻO ka hoʻāʻo mua o nā terminal e hōʻike i ke kaula Unicode mai Nā ʻatikala Wikipedia: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 a me 말.” Hōʻike kēia hōʻike maʻalahi inā hiki i ka terminal ke hana pololei ma ka honua holoʻokoʻa. ʻAʻole hōʻike ka pahu xterm i ke ʻano Arabic ʻO Mem i ka hoʻonohonoho paʻamau:

Ka nānā ʻana o nā emulators terminal

Ma ka maʻamau, hoʻohana ʻo xterm i ka font "fixed" maʻamau, e like me ʻo ia nō ʻo Vicky, loaʻa "ka uhi Unicode nui mai 1997". Aia kekahi mea e hana nei i loko o kēia font e hōʻike ʻia ai ke ʻano he kiʻi hakahaka a aia wale nō ke hoʻonui ʻia ke kikokikona kikokikona i 20+ mau helu e hoʻomaka ai ke ʻano e hōʻike pololei. Eia naʻe, ua haki kēia "hoʻoponopono" i ka hōʻike ʻana o nā huaʻōlelo Unicode ʻē aʻe:

Ka nānā ʻana o nā emulators terminal

Ua lawe ʻia kēia mau screenshots ma Fedora 27, no ka mea ua hāʻawi ʻia nā hopena ʻoi aku ka maikaʻi ma mua o Debian 9, kahi i hiki ʻole ai i kekahi mau mana kahiko o nā terminals (maliʻi mlterm) ke mālama pono i nā font. ʻO ka mea pōmaikaʻi, ua hoʻopaʻa ʻia kēia ma nā mana hope.

I kēia manawa e nānā pehea e hōʻike ʻia ai ka laina ma xterm. ʻIke ʻia ʻo ka hōʻailona Mem a me ka Semitic e hiki mai ana qoph e nānā i nā palapala ʻano RTL (hema-ʻākau), no laila, pono e hōʻike ʻia mai ka ʻākau a i ka hema. Hoʻohana pono nā polokalamu kele pūnaewele e like me Firefox 57 i ka laina i luna. ʻO kahi mana maʻalahi o ka kikokikona RTL ka huaʻōlelo "Sara" ma ka ʻōlelo Hebera (שרה). ʻAoʻao Wiki ma nā kikokikona ʻelua kuhikuhi 'ōlelo mai kēia:

“ʻAʻole hiki i nā polokalamu kamepiula he nui ke hōʻike pololei i ka kikokikona bidirectional. No ka laʻana, ʻo ka inoa Hebera "Sarah" aia nā huaʻōlelo sin (ש) (ʻike ʻia ma ka ʻākau), a laila resh (ר) a hope ʻo ia (ה) (e ʻike ʻia ma ka hema)."

Nui nā hopena i hāʻule i kēia hoʻāʻo: Alacritty, VTE-i loaʻa iā Gnome a me XFCE terminals, urxvt, st a me xterm hōʻike "Sara" ma ka ʻaoʻao hope, me he mea lā ua kākau mākou i ka inoa ʻo "Aras".

Ka nānā ʻana o nā emulators terminal

ʻO kekahi pilikia ʻē aʻe me nā kikokikona bidirectional ʻo ia ka pono e hoʻohālikelike ʻia i kekahi ʻano, ʻoi aku ka nui o ka hoʻohui ʻana i nā kikokikona RTL a me LTR. Pono e holo nā palapala RTL mai ka ʻaoʻao ʻākau o ka puka aniani, akā he aha ka mea e hana ai no nā terminal i paʻa i ka LTR English? ʻO ka hapa nui o lākou ʻaʻohe mea hana kūikawā a hoʻohālikelike i nā kikokikona āpau i ka hema (me ka Konsole). ʻO nā mea ʻokoʻa he pterm a me mlterm, e pili ana i nā maʻamau a hoʻoponopono pololei i kēlā mau laina.

Ka nānā ʻana o nā emulators terminal

Pale hoʻokomo

ʻO ka hiʻohiʻona koʻikoʻi aʻe aʻu i ʻike ai ʻo ka pale anti-insertion. ʻOiai ua ʻike nui ʻia nā ʻōlelo e like me:

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

he mau kauoha hoʻokō code, he kakaikahi ka poʻe i ʻike hiki i nā kauoha huna ke komo i loko o ka console ke kope a paʻi ʻana mai kahi polokalamu kele pūnaewele, ʻoiai ma hope o ka nānā pono ʻana. Paena hōʻoia Gianna Horna hōʻike maikaʻi i ke ʻano o ke ʻano o ke kauoha:

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

lilo ia i mea ʻino ke hoʻopili ʻia mai ka pūnaewele ʻo Horn i ka pahu:

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

Pehea ia hana? Hoʻokomo ʻia ka code malicious i ka poloka , ka mea i hoʻoneʻe ʻia mai ka ʻike o ka mea hoʻohana me ka hoʻohana ʻana i CSS.

ʻO ke ʻano hoʻopili paʻa ua hoʻolālā ʻia e pale i kēlā mau hoʻouka kaua. Ma kēia ʻano, hoʻopili nā terminals i ka kikokikona i hoʻopaʻa ʻia i ʻelua mau kaʻina pakele kūikawā e haʻi i ka pūpū e pili ana i ke kumu o ka kikokikona. Hōʻike kēia i ka pūpū hiki iā ia ke haʻalele i nā huaʻōlelo kūikawā i loko o ka kikokikona i hoʻopili ʻia. Ke kākoʻo nei nā pahu āpau i ka xterm mahalo i kēia hiʻohiʻona, akā ʻo ka hoʻopili ʻana i ke ʻano Bracketed e pono ai ke kākoʻo mai ka pūpū a i ʻole ka noi e holo ana ma ka pahu. No ka laʻana, hoʻohana lako polokalamu Laina Heluhelu GNU (ʻo Bash hoʻokahi), pono i kahi faila ~/.inputrc:

set enable-bracketed-paste on

ʻO ka mea pōʻino, hōʻike pū ka paena hoʻāʻo ʻo Horn pehea e kāpae ai i kēia pale ma o ka hoʻopili kikokikona ponoʻī a hoʻopau i ka hoʻohana ʻana i ke ʻano Bracketed iā ia. Hana ʻia kēia no ka mea ʻaʻole kānana pololei ʻana o kekahi mau pahu i nā kaʻina pakele ma mua o ka hoʻohui ʻana i kā lākou iho. No ka laʻana, i loko oʻu ʻaʻole hiki iaʻu ke hoʻopau pono i nā hoʻokolohua Konsole me ka hoʻonohonoho kūpono .inputrc waihona. ʻO ia ke ʻano hiki iā ʻoe ke hoʻopōʻino i kāu hoʻonohonoho ʻōnaehana ma muli o kahi noi i kākoʻo ʻole ʻia a i ʻole kahi pūpū i hoʻonohonoho hewa ʻia. He pilikia loa kēia i ka wā e komo ai i loko o nā kikowaena mamao, kahi i maʻa mau ai ka hana hoʻonohonoho hoʻonohonoho, ʻoi aku ka nui o nā mīkini mamao.

ʻO kahi hoʻonā maikaʻi i kēia pilikia ʻo ia ka plugin confirmation plugin no ka terminal urxvt, e noi wale ana i ka ʻae e hoʻokomo i kekahi kikokikona i loaʻa nā laina hou. ʻAʻole i loaʻa iaʻu kahi koho palekana no ka hoʻouka kikokikona i wehewehe ʻia e Horn.

Nā papa a me nā ʻaoʻao

ʻO kahi hiʻohiʻona kaulana i kēia manawa ʻo ke kākoʻo no kahi interface tabbed, a mākou e wehewehe ai i hoʻokahi puka pukaaniani e loaʻa ana i kekahi mau terminal. He ʻokoʻa kēia hana no nā ʻāpana like ʻole, a ʻoiai ʻaʻole kākoʻo nā pahu xterm kuʻuna i nā tabs, ʻoi aku ka nui o nā ʻano kikowaena hou e like me Xfce Terminal, GNOME Terminal a me Konsole i kēia hana. Kākoʻo ʻo Urxvt i nā pā, akā inā ʻoe e hoʻohana i kahi plugin. Akā ma ke ʻano o ke kākoʻo tab iā ia iho, ʻo Terminator ke alakaʻi i hoʻopaʻapaʻa ʻole ʻia: ʻaʻole ia e kākoʻo wale i nā tabs, akā hiki ke hoʻonohonoho pū i nā terminals i kēlā me kēia kauoha (e nānā i ke kiʻi ma lalo).

Ka nānā ʻana o nā emulators terminal

ʻO kahi hiʻohiʻona ʻē aʻe o Terminator ka hiki ke "hui" i kēia mau tab a hoʻouna i nā kī kī like i nā pahu he nui i ka manawa like, e hāʻawi ana i kahi mea hana maʻa no ka hana ʻana i nā hana nui ma nā kikowaena lehulehu i ka manawa like. Hoʻokomo ʻia kahi hiʻohiʻona like ma Konsole. No ka hoʻohana ʻana i kēia hiʻohiʻona ma nā ʻāpana ʻē aʻe, pono ʻoe e hoʻohana i nā polokalamu ʻaoʻao ʻekolu e like me Hui SSH, xlax ai ole ia, tmux.

Hoʻohana maikaʻi ʻia nā pā i ka wā e hui pū ʻia me nā ʻaoʻao: no ka laʻana, hiki iā ʻoe ke loaʻa i hoʻokahi papa no ka leka uila, kekahi no ke kamaʻilio ʻana, a pēlā aku. Kākoʻo maikaʻi ʻia kēia e Konsole Terminal a me GNOME Terminal. Hāʻawi nā mea ʻelua i kēlā me kēia pā e hoʻomaka aunoa i kāna ʻaoʻao ponoʻī. Kākoʻo pū ʻo Terminator i nā profiles, akā ʻaʻole hiki iaʻu ke ʻimi i kahi ala e hoʻomaka ai i kekahi mau papahana ke wehe ʻoe i kahi pā kikoʻī. ʻAʻole loaʻa ka manaʻo o ka "profile" ʻē aʻe.

ʻO Ruffles

ʻO ka mea hope aʻu e uhi ai ma ka ʻāpana mua o kēia ʻatikala ke ʻano o nā terminals. No ka laʻana, kākoʻo ʻo GNOME, Xfce a me urxvt i ka ʻike maopopo, akā ua hoʻokuʻu i ke kākoʻo no nā kiʻi hope, e koi ana i kekahi mau mea hoʻohana e hoʻololi i ka terminal. Kūleʻa. ʻO wau iho, hauʻoli wau me ia a he maʻalahi Kumuwaiwai Xres, ka mea i hoʻonohonoho i ke kumu o nā waihoʻoluʻu hope no urxvt. Eia nō naʻe, hiki i nā kumuhana kala maʻamau ke hana i nā pilikia. ʻo kahi laʻana, Hoʻopiliʻia ʻaʻole e hana me nā noi htop и IPTraf, ʻoiai ua hoʻohana mua lākou i kā lākou kala ponoʻī.

Kūlana VT100 kumu ʻaʻole i kākoʻo i nā kala, a ua kaupalena pinepine ʻia nā mea hou i kahi palette 256-color. No nā mea hoʻohana kiʻekiʻe e kāhiko ana i kā lākou mau hope, hiki ke lilo i nā ʻōkuhi shell a i ʻole nā ​​kūlana kūlana ma nā ala paʻakikī. Kaha nā ala e loaʻa ai ke kākoʻo "True Color". Ua hōʻoia kaʻu mau hoʻāʻo ʻana e kākoʻo maikaʻi ʻo st, Alacritty a me VTE-based terminals i ke kala ʻoiaʻiʻo. ʻAʻole maikaʻi loa nā hopena ʻē aʻe ma kēia ʻano a, ʻoiaʻiʻo, ʻaʻole hōʻike i nā kala 256. Ma lalo ʻoe e ʻike ai i ka ʻokoʻa ma waena o ke kākoʻo ʻO True Color i nā terminals GNOME, st a me xterm, e hana maikaʻi ana i kēia me kā lākou 256 kala kala, a me urxvt, ʻaʻole wale i hāʻule i ka hoʻāʻo, akā hōʻike pū kekahi i nā ʻano blinking ma kahi o lākou.

Ka nānā ʻana o nā emulators terminal

Hoʻokaʻawale kekahi mau pahu i nā kikokikona no nā hiʻohiʻona URL e hiki ke kaomi i nā loulou. Hoʻopili kēia i nā mea pau i loaʻa mai i ka VTE, ʻoiai ʻo urxvt e koi i kahi plugin kūikawā e hoʻololi i nā URL ma kahi kaomi a hoʻohana paha i kahi pōkole keyboard. ʻO nā pahu ʻē aʻe aʻu i hoʻāʻo ai i nā URL hōʻike ma nā ʻano ʻē aʻe.

ʻO ka mea hope loa, ʻo kahi ʻano hou i nā terminals ke koho o ka scroll buffer. No ka laʻana, ʻaʻohe scroll buffer st; ua manaʻo ʻia e hoʻohana ka mea hoʻohana i kahi terminal multiplexer e like me tmux a Paka GNU.

Loaʻa ʻole ʻo Alacritty i nā backscroll buffers, akā e hoʻohui koke ʻia kona kākoʻo ma muli o ka "manaʻo nui" ma kēia kumuhana mai nā mea hoʻohana. Ma waho aʻe o kēia mau upstarts, kēlā me kēia pahu aʻu i hoʻāʻo ai i hiki iaʻu ke loaʻa nā kākoʻo hoʻohuli ʻana.

Nā pūʻulu liʻiliʻi

Ma ka ʻāpana ʻelua o ka mea (i loko o ke kumu mua, ʻelua mau ʻatikala ʻokoʻa - ma kahi o. alahele) e hoʻohālikelike mākou i ka hana, ka hoʻohana ʻana i ka hoʻomanaʻo a me ka latency. Akā hiki iā mākou ke ʻike i kekahi o nā terminals i nīnau ʻia he mau hemahema koʻikoʻi. No ka laʻana, makemake paha nā mea hoʻohana e hana mau me nā palapala RTL e noʻonoʻo i ka mlterm a me ka pterm, no ka mea ʻoi aku ka maikaʻi o ka lawelawe ʻana i nā hana like ma mua o nā mea ʻē aʻe. Ua hana maikaʻi ʻo Konsole. Hiki i nā mea hoʻohana hana ʻole me nā palapala RTL ke koho i kahi mea ʻē aʻe.

Ma ke ʻano o ka pale ʻana i ka hoʻokomo ʻana i nā code malicious, kū i waho ʻo urxvt ma muli o kāna hoʻokō kūikawā o ka pale ʻana i kēia ʻano hoʻouka, ʻo ia ka mea kūpono iaʻu. No ka poʻe e ʻimi nei i kekahi mau bele a me nā kīkī, pono ke nānā ʻia ʻo Konsole. ʻO ka mea hope loa, pono e hoʻomaopopo ʻia he kahua maikaʻi loa ʻo VTE no nā terminals, e hōʻoiaʻiʻo ana i ke kākoʻo kala, ʻike URL, a pēlā aku. I ka nānā mua ʻana, hiki i ka terminal paʻamau e hele mai me kāu wahi punahele ke hoʻokō i nā koi āpau, akā e waiho mākou i kēia nīnau a hiki i ka hoʻomaopopo ʻana i ka hana.

E hoʻomau i ke kamaʻilio ʻana


Ma keʻano laulā, ʻike ʻia ka hana ʻana o nā terminals i kahi pilikia mamao loa, akā e like me ka mea i ʻike ʻia, hōʻike kekahi o lākou i ka latency kiʻekiʻe loa no ka polokalamu o ia ʻano kumu. Ma hope aʻe, e nānā mākou i ka mea i kapa ʻia ʻo "wikiwiki" (ʻoiaʻiʻo, ʻo ia ka wikiwiki o ka holo ʻana) a me ka hoʻohana ʻana i ka hoʻomanaʻo ʻana o ka pahu (me ka ʻōlelo hōʻike ʻaʻole koʻikoʻi kēia i kēia lā e like me nā makahiki i hala aku nei).

Hoopanee

Ma hope o ka noiʻi ʻana i ka hana terminal, ua hiki iaʻu i ka hopena ʻo ka mea nui loa i kēia ʻano ʻo ka latency (ping). Ma kāna ʻatikala “Paʻi mākou me ka hauʻoli” Ua nānā ʻo Pavel Fatin i ka latency o nā mea hoʻoponopono kikokikona like ʻole a ʻōlelo ʻia e ʻoi aku ka lohi o nā hopena ma kēia ʻano ma mua o nā mea hoʻoponopono kikokikona wikiwiki loa. ʻO kēia hōʻailona i alakaʻi iaʻu e holo i kaʻu mau hoʻokolohua ponoʻī a kākau i kēia ʻatikala.

Akā he aha ka latency, a no ke aha he mea nui ia? Ma kāna ʻatikala, ua wehewehe ʻo Fatin iā ia ʻo "ka lohi ma waena o ke kaomi ʻana i kahi kī a me ka hoʻonui ʻana o ka pale" a ʻōlelo ʻia. "Alakaʻi no ka pilina kanaka-kamepiula", e ʻōlelo ana: "He hopena koʻikoʻi ka lohi o ka manaʻo ʻike ma kahi hōʻike kamepiula i ka ʻano a me ka ʻoluʻolu."

Ua wehewehe ʻo Fatin he ʻoi aku ka hohonu o kēia ping ma mua o ka ʻoluʻolu: "ʻoi aku ka lohi o ka paʻi ʻana, ʻoi aku ka nui o nā hewa, a piʻi ka haʻalulu o ka maka a me ka ʻiʻo." I nā huaʻōlelo ʻē aʻe, hiki i ka lohi nui ke alakaʻi i nā typos a me ka haʻahaʻa haʻahaʻa o ka code code, no ka mea e alakaʻi i ka ukana cognitive hou ma ka lolo. Akā ʻo ka mea ʻoi aku ka maikaʻi ʻo ka ping "hoʻonui i ka maka a me ka ʻiʻo o ka ʻiʻo," e like me ka manaʻo ka hoʻomohala ʻana i nā ʻeha hana i ka wā e hiki mai ana (ʻIke ʻia, ʻo ka mea kākau ka manaʻo o nā pilikia me nā ʻiʻo o nā maka, ke kua, nā lima a, ʻoiaʻiʻo, ʻike - approx. alahele) ma muli o ke kaumaha mau.

Ua ʻike ʻia kekahi o kēia mau hopena no ka manawa lōʻihi, a me nā hopena noiʻi, i paʻi ʻia i ka makahiki 1976 i loko o ka puke pai ʻo Ergonomics, ʻōlelo ʻo ka lohi o 100 milliseconds "e hōʻino nui i ka wikiwiki o ke kākau ʻana." I kēia mau lā, ua hoʻokomo ʻia ka GNOME User Guide manawa pane ʻae ʻia i 10 milliseconds, a inā ʻoe e hele i mua, a laila 'Imiihana Microsoft hōʻike i ka 1 millisecond ka mea kūpono.

Ua alakaʻiʻo Fatin i kāna mau ho'āʻo ma nā mea hoʻoponopono kikokikona; ua hana ʻo ia i kahi mea paahana i kapa ʻia Typometer, ka mea aʻu i hoʻohana ai e hoʻāʻo i ka ping i nā emulators terminal. E hoʻomanaʻo ua hana ʻia ka hoʻāʻo ma ke ʻano simulation: i ka ʻoiaʻiʻo, pono mākou e noʻonoʻo i ka hoʻokomo ʻelua (keyboard, USB controller, etc.) a me ka puka (video card buffer, monitor) latency. Wahi a Fatin, i nā hoʻonohonoho maʻamau ma kahi o 20 ms. Inā loaʻa iā ʻoe nā lako pāʻani, hiki iā ʻoe ke hoʻokō i kēia helu i loko o 3 milliseconds wale nō. No ka mea ua loaʻa iā mākou ka lako wikiwiki, ʻaʻole pono ka noi e hoʻohui i kona latency. ʻO ka pahuhopu o Fatin ka lawe ʻana i ka latency noi i 1 millisecond, a i ʻole e hoʻokō i ke kelepona ʻole lohi hiki ke anae like me IntelliJ IDEA 15.

Eia nā hopena o kaʻu mau ana, a me kekahi o nā hopena a Fatin, e hōʻike ai ua ʻae kaʻu hoʻokolohua me kāna mau hoʻokolohua:

Ka nānā ʻana o nā emulators terminal

ʻO ka mea mua i hahau iaʻu ʻo ka manawa pane maikaʻi loa o nā papahana kahiko e like me xterm a me mlterm. Me ka latency hoʻopaʻa inoa ʻino loa (2,4 ms), ʻoi aku ka maikaʻi o kā lākou hana ma mua o ka pahu pahu wikiwiki loa (10,6 ms no st). ʻAʻole hāʻule ka pahu hou ma lalo o ka paepae 10 millisecond. ʻO ka mea kūikawā, ʻaʻole hiki iā Alacritty ke hoʻokō i ka koi "wikiwiki loa emulator loaʻa", ʻoiai ua hoʻomaikaʻi ʻia kāna mau helu mai kāna loiloi mua ma 2017. ʻOiaʻiʻo, nā mea kākau o ka papahana ʻike i ke kūlana a ke hana nei e hoʻomaikaʻi i ka hōʻike. Pono e hoʻomaopopo ʻia ʻo Vim me ka hoʻohana ʻana iā GTK3 kahi kauoha o ka nui o ka lohi ma mua o kāna hoa GTK2. Mai kēia hiki iā mākou ke hoʻoholo i ka hana ʻana o GTK3 i kahi latency hou aʻe, a ʻike ʻia kēia i nā ʻāpana ʻē aʻe a pau e hoʻohana ai (Terminator, Xfce4 Terminal a me GNOME Terminal).

Eia naʻe, ʻaʻole ʻike ʻia nā ʻokoʻa i ka maka. E like me ka wehewehe ʻana o Fatin, "ʻaʻole pono ʻoe e makaʻala i ka lohi no ka hopena iā ʻoe." Hoʻomaopopo pū ʻo Fatin e pili ana i ka hoʻokaʻawale maʻamau: "ʻo nā haunaele i ka latency (jitter) e hoʻonui i ke koʻikoʻi ma muli o ko lākou hiki ʻole."

Ka nānā ʻana o nā emulators terminal

Lawe ʻia ka pakuhi ma luna ma Debian 9 maʻemaʻe (stretch) me i3 luna pukaaniani. Hāʻawi kēia kaiapuni i nā hopena maikaʻi loa i nā hoʻokolohua latency. E like me ka mea i ʻike ʻia, hana ʻo GNOME i kahi 20 ms ping hou no nā ana āpau. ʻO kahi wehewehe hiki ke loaʻa i nā papahana me ka hoʻoponopono synchronous o nā hanana komo. Hāʻawi ʻo Fatin i kahi laʻana no kēlā hihia Hana hana, e hoʻohui i kahi lohi ma ka hoʻoili ʻana i nā hanana hoʻokomo a pau me ka synchronously. Ma ka maʻamau, hele mai ʻo GNOME me kahi luna puka makani ʻO Mutter, ka mea e hana i kahi papa hoʻopololei hou, e pili ana i ka ping a hoʻohui i 8 milliseconds o ka latency.

Ka nānā ʻana o nā emulators terminal

Holo wikiwiki

ʻO ka hoʻāʻo hou aʻe he hōʻike kuʻuna "wikiwiki" a i ʻole "bandwidth", e ana i ka wikiwiki o ka pahu e hiki ai ke ʻōwili i kahi ʻaoʻao me ka hōʻike ʻana i ka nui o nā kikokikona ma ka pale. ʻOkoʻa nā mechanics o ka hoʻāʻo; ʻO ka hoʻāʻo mua ʻo ia ka hana ʻana i ke kaula kikokikona me ka hoʻohana ʻana i ke kauoha seq. ʻO nā hoʻāʻo ʻē aʻe e pili ana i ka hoʻāʻo ʻana a Thomas E. Dickey (xterm maintainer), i hana pinepine ʻia hoʻoiho ʻia ka faila terminfo.src. I kekahi loiloi o ka hana terminal Den Luu hoʻohana i kahi kaula i hoʻopaʻa ʻia base32 o nā bytes random, i hoʻopuka ʻia i ka pahu me ka hoʻohana ʻana i ka pōpoki. Manaʻo ʻo Luu i ka hoʻāʻo ʻana he "mea waiwai ʻole e like me ka mea e noʻonoʻo ai" a manaʻo e hoʻohana i ka pane terminal ma ke ʻano he metric mua. Kāhea ʻo Dickey i kāna hōʻike hoʻopunipuni. Eia naʻe, hoʻomaopopo nā mea kākau ʻelua he pilikia ka bandwidth window window. Ua ʻike ʻo Luu i ka Emacs Eshell e hauʻoli ana i ka wā e hōʻike ana i nā faila nui, a ua hoʻomaikaʻi ʻo Dickey i ka pahu no ka hoʻopau ʻana i ka lohi ʻike o xtrerm. No laila aia kekahi mau pono i kēia hoʻāʻo, akā no ka mea ʻokoʻa loa ke kaʻina hana mai ka terminal a i ka terminal, hiki ke hoʻohana ʻia i mea hoʻāʻo e hoʻāʻo i nā ʻāpana ʻē aʻe.

Ka nānā ʻana o nā emulators terminal

Maanei mākou e ʻike ai i ka rxvt a me ka huki ʻana ma mua o ka hoʻokūkū, a ukali ʻia e ka Alacritty hou loa, i hoʻolālā ʻia me ka nānā ʻana i ka hana. A laila ʻo Xfce (ʻohana VTE) a me Konsole, ʻaneʻane pālua ka wikiwiki. ʻO ka hope ka xterm, ʻoi aku ka lohi ma mua o rxvt. I ka wā o ka hoʻāʻo ʻana, ua nui pū ka xterm, me ka paʻakikī o ka ʻike ʻana inā ʻo ia ka laina like. Ua wikiwiki ʻo Konsole, akā paʻakikī i kekahi manawa: maloʻo ka hōʻike i kēlā me kēia manawa, e hōʻike ana i kahi kikokikona a i ʻole hōʻike ʻole ʻia. Ua hōʻike maopopo ʻia nā kaula ʻē aʻe, me st, Alacritty, a me rxvt.

Ua wehewehe ʻo Dickey e pili ana ka ʻokoʻa o ka hana ma muli o ka hoʻolālā ʻana o nā scroll buffers ma nā ʻāpana like ʻole. ʻO ka mea nui, hoʻopiʻi ʻo ia i ka rxvt a me nā mea ʻē aʻe o "ʻaʻole hahai i nā lula maʻamau":

"ʻAʻole like me xterm, ʻaʻole i hoʻāʻo ʻo rxvt e hōʻike i nā mea hou. Inā hāʻule i hope, e hōʻole ʻo ia i kekahi mau mea hou e hopu ai. Ua ʻoi aku ka hopena o kēia i ka wikiwiki o ka ʻōwili ʻana ma mua o ka hui hoʻomanaʻo kūloko. ʻO kekahi mea hoʻihoʻi, ʻaʻole pololei ka animation ASCII. "

No ka hoʻoponopono ʻana i kēia ʻano palaualelo xterm, manaʻo ʻo Dickey e hoʻohana i ka kumuwaiwai wikiwikiScroll, e ʻae ana iā xterm e hoʻolei i kekahi mau hōʻano hou o ka pale e hoʻomau i ke kahe. Ua hōʻoia kaʻu mau hoʻāʻo e hoʻomaikaʻi ʻo fastScroll i ka hana a lawe mai i ka xterm ma ka par me rxvt. Eia naʻe, he koʻokoʻo koʻikoʻi kēia, e like me ka wehewehe ʻana ʻo Dickey iā ia iho: "i kekahi manawa xterm - e like me ka konsole - me he mea lā ke kūpaʻa ʻo ia e kali ana i kahi hoʻonohonoho hou o ka pale ma hope o ka wehe ʻia ʻana o kekahi." Ma kēia ʻano, ʻike ʻia ua loaʻa i nā terminals ʻē aʻe ka hoʻohālikelike maikaʻi loa ma waena o ka wikiwiki a me ka hōʻike pono.

Hoʻohana waiwai

Ma muli o ke kūpono o ka noʻonoʻo ʻana i ka wikiwiki o ka holo ʻana ma ke ʻano he metric hana, ʻae kēia hoʻāʻo iā mākou e hoʻohālikelike i ka ukana ma nā terminals, a laila hiki iā mākou ke ana i nā ʻāpana ʻē aʻe e like me ka hoʻomanaʻo a i ʻole ka hoʻohana ʻana i ka disk. Loaʻa nā metric ma ka holo ʻana i ka hoʻāʻo i ʻōlelo ʻia seq ma lalo o ka nānā ʻana i ke kaʻina hana Python. Ua hōʻiliʻili ʻo ia i ka ʻikepili mika getrusage() no ka mea, ru_maxrss, nui ru_oublock и ru_inblock a me kahi manawa maʻalahi.

Ka nānā ʻana o nā emulators terminal

Ma kēia hoʻāʻo, ʻo ka ST ka mea mua me ka haʻahaʻa haʻahaʻa haʻahaʻa haʻahaʻa hoʻomanaʻo hoʻomanaʻo o 8 MB, ʻaʻole ia he mea kupanaha i ka noʻonoʻo ʻana he maʻalahi ka manaʻo nui o ka hoʻolālā. ʻO ka mlterm, xterm a me rxvt e hoʻopau i kahi mea liʻiliʻi - ma kahi o 12 MB. ʻO kekahi hopena koʻikoʻi ʻo Alacritty, e koi ana i 30 MB e holo. A laila aia nā hopena o ka ʻohana VTE me nā kiʻi mai 40 a 60 MB, he nui loa. Hiki ke wehewehe ʻia kēia ʻai ʻana ma ka hoʻohana ʻana o kēia mau terminal i nā hale waihona puke kiʻekiʻe, no ka laʻana, GTK. Hele mai ʻo Konsole me ka 65MB nui o ka hoʻohana ʻana i ka hoʻomanaʻo i ka wā o nā hoʻāʻo, ʻoiai hiki ke hōʻoia ʻia e kāna mau hiʻohiʻona ākea.

Ke hoʻohālikelike ʻia i nā hopena mua i loaʻa i ʻumi makahiki i hala, ua hoʻomaka nā papahana āpau e hoʻopau i ka hoʻomanaʻo hou aʻe. Pono ʻo Xterm i ka 4 MB, akā i kēia manawa e pono ai ʻo 15 MB i ka hoʻomaka ʻana. Loaʻa ka hoʻonui like o ka hoʻohana ʻana no rxvt, i kēia manawa e koi ai i ka 16 MB ma waho o ka pahu. Lawe ʻo Xfce Terminal i ka 34 MB, ʻekolu manawa ʻoi aku ka nui ma mua, akā pono ʻo GNOME Terminal i 20 MB wale nō. ʻOiaʻiʻo, ua hoʻokō ʻia nā hoʻokolohua mua ma 32-bit architecture. Ma LCA 2012 Rusty Russell hai, he nui nā kumu maʻalahi e hiki ke wehewehe i ka piʻi ʻana o ka hoʻohana ʻana i ka hoʻomanaʻo. I ka ʻōlelo ʻana, ke noho nei mākou i kahi manawa i loaʻa iā mākou nā gigabytes o ka hoʻomanaʻo, no laila e hoʻokele mākou i kekahi ʻano.

Eia nō naʻe, ʻaʻole hiki iaʻu ke manaʻo i ka hoʻokaʻawale ʻana i ka hoʻomanaʻo hou i kahi mea nui e like me ka terminal he mea hoʻopau waiwai. ʻO kēia mau polokalamu ka mea liʻiliʻi loa o nā mea liʻiliʻi loa, hiki ke holo ma luna o kekahi "pahu", a me kahi pahu kāmaʻa, inā mākou e hele mai i kahi e pono ai lākou e hoʻolako i nā ʻōnaehana Linux (a ʻike ʻoe e hana ʻia. ). Akā me kēia mau helu, e lilo ka hoʻohana ʻana i ka hoʻomanaʻo i mea pilikia i ka wā e hiki mai ana i kekahi kaiapuni e holo ana i nā pahu he nui ʻē aʻe ma mua o kekahi o nā mea māmā a i kaupalena ʻia i ka hiki. No ka uku ʻana i kēia, GNOME Terminal, Konsole, urxvt, Terminator a me Xfce Terminal he mode Daemon e hiki ai iā ʻoe ke hoʻomalu i nā pahu he nui ma o ke kaʻina hana hoʻokahi, e kaupalena ana i kā lākou hoʻomanaʻo hoʻomanaʻo.

Ka nānā ʻana o nā emulators terminal

I kaʻu mau hoʻāʻo ʻana, ua loaʻa iaʻu kahi hopena i manaʻo ʻole ʻia e pili ana i ka heluhelu heluhelu disk: Ua manaʻo wau ʻaʻole ʻike iki ma aneʻi, akā ua ʻike ʻia ua kākau kekahi mau terminal i ka ʻikepili nui loa i ka disk. No laila, mālama maoli ka waihona VTE i kahi scroll buffer ma ka disk (kēia hiʻohiʻona ua ʻike ʻia i ka makahiki 2010, a ke hana mau nei kēia). Akā ʻaʻole like me nā hoʻokō kahiko, i kēia manawa ua hoʻopili ʻia kēia ʻikepili me ka hoʻohana ʻana iā AES256 GCM (mai ka mana 0.39.2). Akā ke kū nei kahi nīnau kūpono: he aha ka mea kūikawā e pili ana i ka waihona VTE e koi ai i kahi ala maʻamau ʻole i ka hoʻokō ...

hopena

Ma ka hapa mua o ka ʻatikala, ua ʻike mākou he mau hiʻohiʻona maikaʻi nā terminals VTE, akā i kēia manawa ke ʻike nei mākou e hele mai kēia me kekahi mau kumukūʻai hana. ʻAʻole pilikia ka hoʻomanaʻo ʻana no ka mea hiki ke hoʻokele ʻia nā terminal VTE āpau ma o ke kaʻina hana Daemon, e kaupalena ana i ko lākou makemake. Eia nō naʻe, pono paha nā ʻōnaehana kahiko i kaupalena kino i ka nui o ka RAM a me nā kernel buffers i nā mana mua o nā terminals, no ka mea ʻoi aku ka liʻiliʻi o nā kumuwaiwai. ʻOiai ua hana maikaʻi nā hopena VTE i nā hoʻāʻo throughput (scrolling), ʻoi aku ko lākou hōʻike latency ma luna o ka paepae i hoʻonohonoho ʻia ma ka GNOME User Guide. Pono paha nā mea hoʻomohala VTE e noʻonoʻo i kēia. Inā mākou e noʻonoʻo a hiki i nā mea hoʻohana Linux novice e hālāwai ana me kahi terminal he mea hiki ʻole, hiki iā lākou ke hoʻohana i ka mea hoʻohana. No nā geeks akamai, ʻo ka hoʻololi ʻana mai ka pahu paʻamau, ʻoi aku ka liʻiliʻi o ka maka a me ka hiki ke pale aku i nā ʻeha a me nā maʻi e pili ana i ka hana ma muli o nā kau hana lōʻihi. ʻO ka mea pōʻino, ʻo ka xterm kahiko a me ka mlterm wale nō e lawe iā mākou i ka paepae ping magic o 10 milliseconds, ʻaʻole i ʻae ʻia no nā mea he nui.

Ua hōʻike pū ʻia nā ana ʻo Benchmark ma muli o ka hoʻomohala ʻana o nā kaiapuni kiʻi Linux, pono nā mea hoʻomohala e hana i nā ʻano kuʻikahi. Makemake paha kekahi mau mea hoʻohana e nānā i nā luna puka makani maʻamau i ka hāʻawi ʻana i ka hōʻemi ping nui. ʻO ka mea pōʻino, ʻaʻole hiki ke ana i ka latency no Wayland: ua hana ʻia ka polokalamu Typometer aʻu i hoʻohana ai no ka mea i hoʻolālā ʻia ʻo Wayland e pale ai: ka mākaʻikaʻi ma nā puka makani ʻē aʻe. Manaʻo wau e ʻoi aku ka maikaʻi o ka haku mele ʻana o Wayland ma mua o X.org, a ke manaʻo nei hoʻi au e loaʻa i kekahi i ka wā e hiki mai ana ke ala e ana i ka latency i kēia kaiapuni.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka