Kutarisisa kwematerminal emulators

Mazwi mashoma kubva kuhofisi yedu yeshanduro: kazhinji munhu wese anoyedza kushandura zvinyorwa zvitsva uye zvinyorwa, uye isu hatina mutsauko. Asi materminals hachisi chinhu chinogadziridzwa kamwe pasvondo. Naizvozvo, isu takakushandurira iwe chinyorwa naAntoine Beaupré, chakabudiswa muchirimo che2018: kunyangwe yakakura "zera" nemaitiro emazuva ano, mumaonero edu, zvinyorwa hazvina kurasikirwa nekukosha kwayo zvachose. Pamusoro pezvo, iyi pakutanga yaive nhevedzano yezvinyorwa zviviri, asi isu takasarudza kuzvibatanidza kuita imwe hombe positi.

Kutarisisa kwematerminal emulators

Zviteshi zvine nzvimbo yakakosha munhoroondo yemakomputa, asi mumakumi emakore achangopfuura vakamanikidzwa kurarama padivi pemutsara wekuraira sezvo graphical interfaces inova ubiquitous. Terminal emulators vakatsiva yavo Hardware hama, iyo, zvakare, yaive shanduko yehurongwa hwakavakirwa pamakadhi akaroverwa uye kushandura switch. Kugoverwa kwemazuva ano kunouya nemhando dzakasiyana dzematerminal emulators eese maumbirwo uye mavara. Uye nepo vazhinji vachigutsikana neyakajairwa terminal inopihwa nenzvimbo yavo yebasa, vamwe vanozvikudza vanoshandisa downright exotic software kumhanyisa ganda ravanofarira kana zvinyorwa zvekunyora. Asi, sezvatichaona kubva munyaya ino, haasi ese materminal akasikwa mumufananidzo mumwechete: anosiyana zvakanyanya mukushanda, ukuru uye kuita.

Mamwe materminal ane maburi ekuchengetedza anokatyamadza, uye mazhinji ane seti yemabasa akasiyana zvachose, kubva parutsigiro rwetabbed interface kusvika pakunyora. Kunyangwe isu akatarisa materminal emulators munguva yakapfuura, chinyorwa ichi igadziriso yezvakapfuura izvo zvichabatsira vaverengi kuona kuti ndeipi terminal yekushandisa muna 2018. Chikamu chekutanga chechinyorwa chinofananidza maitiro, uye hafu yechipiri inoongorora mashandiro.

Heano materminals andakaongorora:

Kutarisisa kwematerminal emulators

Idzi dzinogona kunge dzisiri shanduro dzemazuva ano, sezvo ndakanga ndisingakwanisi kune dzakagadzikana kuvaka panguva yekunyora, iyo yandakakwanisa kuburitsa paDebian 9 kana Fedora 27. Chinhu chimwe chete chiri Alacritty. Icho chizvarwa cheGPU-yakawedzera materminals uye yakanyorwa nemutauro usina kujairika uye mutsva webasa iri - Rust. Ini ndakabvisa webhu terminals kubva muongororo yangu (kusanganisira iyo iri pa Electron), nekuti bvunzo dzekutanga dzakaratidza kusaita kwavo kwakanyanya.

Unicode rutsigiro

Ndakatanga bvunzo dzangu nerutsigiro rweUnicode. Muedzo wekutanga wematerminal yaive yekuratidza Unicode tambo kubva Wikipedia zvinyorwa: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 uye 말." Iyi bvunzo yakapusa inoratidza kana iyo terminal inogona kushanda nemazvo pasi rese. xterm terminal hairatidze chiArabic chimiro ndangariro in default configuration:

Kutarisisa kwematerminal emulators

Nekusagadzikana, xterm inoshandisa iyo yekare "yakagadziriswa" font, iyo, maererano achingodaro Vicky, ine "yakakura Unicode yekuvhara kubva 1997". Pane chimwe chinhu chirikuitika mune ino font chinoita kuti hunhu huoneke senge isina chinhu furemu uye ndipo chete kana mavara awedzerwa kusvika pamakumi maviri+ mapoinzi ndipo paanozopedzisira atanga kuratidza chimiro. Nekudaro, iyi "gadziriso" inotyora kuratidzwa kwemamwe mavara eUnicode:

Kutarisisa kwematerminal emulators

Aya mascreenshots akatorwa muFedora 27, sezvo yaipa mhedzisiro iri nani pane Debian 9, apo mamwe mavhezheni ekare ematerminals (kunyanya mlterm) aisakwanisa kubata mafonti nemazvo. Sezvineiwo izvi zvakagadziriswa mune dzakazotevera shanduro.

Zvino cherechedza kuti mutsara unoratidzwa sei mu xterm. Zvinoitika kuti chiratidzo Mem uye chinotevera Semitic qoph tarisa kuRTL style zvinyorwa (kurudyi kuenda kuruboshwe), saka nehunyanzvi ivo vanofanirwa kuratidzwa kubva kurudyi kuenda kuruboshwe. Mabhurawuza ewebhu akadai seFirefox 57 anobata mutsara wepamusoro nemazvo. Iri nyore vhezheni yeRTL mavara ishoko rinoti "Сара"muchiHebheru (Sarah). Wiki peji pane bidirectional zvinyorwa anoti zvinotevera:

“Mapurogiramu mazhinji emakombuta haakwanise kuratidza mavara maviri nenzira kwayo. Somuenzaniso, zita rechiHebheru rokuti “Sarah” rinoumbwa nemabhii anoti chivi (ש) (rinooneka kurudyi), tevere resh (ר) uye pakupedzisira iye (ה) (rinofanira kuoneka kuruboshwe).”

Mazhinji materminals anotadza bvunzo iyi: Alacritty, VTE-yakatorwa Gnome uye XFCE zviteshi, urxvt, st uye xterm kuratidza "Sara" mune reverse order, sekunge takanyora zita rekuti "Aras".

Kutarisisa kwematerminal emulators

Rimwe dambudziko rine bidirectional zvinyorwa nderekuti dzinoda kuenderana neimwe nzira, kunyanya kana zvasvika pakusanganisa RTL uye LTR zvinyorwa. Zvinyorwa zveRTL zvinofanirwa kumhanya kubva kudivi rekurudyi rehwindo rekupedzisira, asi chii chinofanirwa kuitika kumaterminals anoenderana neLTR Chirungu? Mazhinji acho haana chero akakosha maitiro uye gadzirisa zvinyorwa zvese kuruboshwe (kusanganisira muKonsole). Iwo anosiya ari pterm uye mlterm, ayo anoomerera kune zviyero uye kurudyi-kugadzirisa mitsara yakadaro.

Kutarisisa kwematerminal emulators

Kudzivirirwa kwekuisa

Chinhu chinotevera chakakosha chandaona ndechekudzivirira-kupinza. Kunyangwe ichizivikanwa zvakanyanya kuti inoperetera senge:

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

ndeye kodhi kuuraya mirairo yekusundidzira, vanhu vashoma vanoziva kuti mirairo yakavanzika inogona kusveerera mukoni kana uchikopa nekuisa kubva pawebhu browser, kunyangwe mushure mekunyatsoongorora. Verification saiti Gianna Horna zvinonyatsoratidza kuti murairo hauna mhosva sei:

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

inoshanduka kuita dambudziko kana yanamirwa kubva pawebhusaiti yeNyanga kuenda kune 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

Inoshanda sei? Kodhi yakaipa inosanganisirwa mubhuroko , iyo inobviswa kunze kwemaonero emushandisi uchishandisa CSS.

Bracketed paste mode rakagadzirirwa zvakajeka kuti rirege kurwiswa kwakadaro. Mune iyi modhi, materminal anovharira zvinyorwa zvakanamirwa mune maviri ezvekutevedzana kwakakosha kutaurira goko nezvekwakabva zvinyorwa. Izvi zvinoudza shell kuti inogona kufuratira akakosha mavara anogona kunge aine mavara akanamirwa. Ese materminals kudzokera kune anoremekedzwa xterm anotsigira chimiro ichi, asi kunamira muBracketed mode inoda rutsigiro kubva kugoko kana application inomhanya pane terminal. Somuenzaniso, kushandisa software GNU Readline (Bash imwechete), inoda faira ~/.inputrc:

set enable-bracketed-paste on

Nehurombo, saiti yeNyanga yekuyedza inoratidzawo nzira yekunzvenga chengetedzo iyi kuburikidza nemavara ekuzvigadzira uye nekukasika anopedzisira ashandisa Bracketed mode kwairi. Izvi zvinoshanda nekuti mamwe materminal haanyatso kusefa kutevedzana kwekupukunyuka asati awedzera avo. Semuenzaniso, mune yangu handina kumbobvira ndakwanisa kupedzisa bvunzo dzeKonsole kunyangwe nekurongeka chaiko .inputrc file. Izvi zvinoreva kuti iwe unogona nyore kuwana yako masisitimu yakaora nekuda kweisina kutsigirwa application kana ganda rakarongedzerwa zvisizvo. Izvi zvine njodzi zvakanyanya kana uchinge wapinda mumasevha ari kure, uko kungwarira kwekugadzirisa basa hakuwanzo kuwanda, kunyanya kana uine akawanda akadaro ari kure michina.

Mhinduro yakanaka kudambudziko iri ndiyo paste yekusimbisa plugin yeiyo terminal urxvt, iyo inongokumbira mvumo yekuisa chero chinyorwa chine mitsva. Ini handina kuwana imwe yakachengeteka sarudzo yekurwiswa kwemavara kunotsanangurwa naNyanga.

Tabs uye profiles

Chinhu chakakurumbira pari zvino tsigiro yetabbed interface, yatinotsanangura seimwe terminal hwindo rine akati wandei mamwe materminal. Iri basa rinosiyana kune akasiyana materminals, uye kunyangwe echinyakare xterm materminal asingatsigire ma tabo zvachose, mamwe emazuva ano terminal incarnations akadai Xfce Terminal, GNOME Terminal uye Konsole vane basa iri. Urxvt inotsigirawo ma tabo, asi chete kana iwe ukashandisa plugin. Asi maererano nerutsigiro rwetebhu pachayo, Terminator ndiye mutungamiriri asina kupokana: haingotsigire ma tabo chete, asi inogona zvakare kuronga materminal mune chero kurongeka (ona mufananidzo pazasi).

Kutarisisa kwematerminal emulators

Chimwe chinhu cheTerminator kugona "kuunganidza" matabo aya pamwe chete uye kutumira makiyi makiyi kune akawanda materminals panguva imwe chete, ichipa chishandiso chakashata chekuita mabasa akawanda pamaseva akawanda panguva imwe chete. Chinhu chakafanana chinoitwa zvakare muKonsole. Kuti ushandise chinhu ichi mune mamwe materminal, unofanirwa kushandisa wechitatu-bato software senge Cluster SSH, xlax kana tmux.

Matebhu anoshanda zvakanyanya kana akapetwa nemaprofiles: semuenzaniso, unogona kuve netabhu imwe yeemail, imwe yekutaura, zvichingodaro. Izvi zvinonyatsotsigirwa neKonsole Terminal uye GNOME Terminal. Ose ari maviri anobvumira tebhu yega yega kuti itange yayo pachayo. Terminator inotsigirawo maprofiles, asi ini handina kuwana nzira yekuvhura otomatiki zvimwe zvirongwa kana iwe uchivhura chaiyo tab. Mamwe materminal haana pfungwa ye "profile" zvachose.

Ruffles

Chinhu chekupedzisira chandichavhara muchikamu chekutanga chechinyorwa ichi kutaridzika kwematerminals. Semuenzaniso GNOME, Xfce uye urxvt inotsigira pachena, asi ichangobva kudonhedza tsigiro yemifananidzo yekumashure, ichimanikidza vamwe vashandisi kuti vachinjire kune terminal. Tilix. Ini pachangu, ndinofara nazvo uye zviri nyore Xresource, iyo inoseta base seti yemashure mavara e urxvt. Nekudaro, asiri-akajairwa mavara matema anogona zvakare kugadzira matambudziko. Semuyenzaniso, solarized hazvishandi nezvikumbiro htop и IPTraf, sezvo vachitoshandisa mavara avo vamene.

Yekutanga VT100 terminal akanga asingatsigiri mavara, uye matsva aiwanzoganhurirwa kupendi ine mavara 256. Kune vashandisi vepamberi vanotaira materminals avo, shell inosimudzira kana masisitimu mabara munzira dzakaoma inogona kuve inogumbura muganho. Gist tracks ayo materminal ane "True Color" rutsigiro. Miedzo yangu inosimbisa kuti st, Alacritty uye VTE-based terminals inotsigira Yechokwadi Rudzi zvakakwana. Mamwe materminal haafambi zvakanaka mune izvi uye, kutaura zvazviri, haatomboratidzi 256 mavara. Pazasi unogona kuona mutsauko uripo pakati peRutsigiro Rudzi rweChokwadi muGNOME terminals, st uye xterm, idzo dzinoita basa rakanaka reizvi ne256 yavo yeruvara palette, uye urxvt, iyo isingakundikani bvunzo chete, asi inotoratidza mamwe mavara anobwaira panzvimbo pavo.

Kutarisisa kwematerminal emulators

Mamwe materminal anoongorora zvakare mavara e URL mapatani kuita kuti zvinongedzo zvibatike. Izvi zvinoshanda kune ese materminals anotorwa neVTE, nepo urxvt ichida yakakosha plugin inogona kushandura maURL nekudzvanya kana kushandisa nzira yekudimbudzira yekhibhodi. Mamwe materminal ndakaedza kuratidza maURL nedzimwe nzira.

Chekupedzisira, maitiro matsva mumaterminal ndiyo sarudzo yemupumburu buffer. Semuenzaniso, st haina scroll buffer; zvinofungidzirwa kuti mushandisi achashandisa terminal multiplexer senge tmux uye GNU Screen.

Alacritty zvakare inoshaya backscroll buffers, asi ichawedzerwa nokukurumidza rutsigiro rwayo nekuda kwe "mhinduro yakakura" pane iyi nyaya kubva kuvashandisi. Kunze kweaya ekumusoro, ese terminal andakayedza kuti ndaigona kuwana anotsigira reverse kupuruzira.

Subtotals

Muchikamu chechipiri chezvinyorwa (mukutanga izvi zvaive zvinyorwa zviviri zvakasiyana - approx. lane) tichafananidza kuita, kushandiswa kwendangariro uye latency. Asi isu tinogona kutoona kuti mamwe ematerminal ari mubvunzo ane zvikanganiso zvakakomba. Semuenzaniso, vashandisi vanogara vachishanda neRTL zvinyorwa vangangoda kufunga nezve mlterm uye pterm, sezvo vari nani pakubata mabasa akafanana kupfuura mamwe. Konsole akaitawo zvakanaka. Vashandisi vasingashande neRTL zvinyorwa vanogona kusarudza chimwe chinhu.

Panyaya yekudzivirira kubva pakuisirwa kodhi yakashata, urxvt inomira pachena nekuda kwekuita kwayo kwakasarudzika kwedziviriro kubva kurudzi urwu rwekurwisa, izvo zvinoita sezviri nyore kwandiri. Kune avo vari kutsvaga mamwe mabhero nemuridzo, Konsole yakakodzera kutarisa. Chekupedzisira, zvakakosha kucherechedza kuti VTE inzvimbo yakanakisa yematerminals, inovimbisa rutsigiro rwemavara, kuzivikanwa kweURL, zvichingodaro. Pakutanga kuona, iyo yekupedzisira terminal inouya neyako yaunofarira nharaunda inogona kuzadzisa zvese zvinodiwa, asi ngatisiyei mubvunzo uyu wakavhurika kusvika tanzwisisa mabatiro acho.

Ngatienderere mberi nehurukuro


Kazhinji, kuita kwematerminals pachayo kungaite senge dambudziko riri kure, asi sezvazvinozoitika, mamwe acho anoratidza zvinoshamisa kunonoka kwesoftware yemhando yakakosha. Zvakare zvinotevera isu tichatarisa izvo zvinowanzodaidzwa kunzi "kumhanya" (chaizvoizvo, uku ndiko kumhanyisa kumhanya) uye ndangariro kushandiswa kweiyo terminal (ine caveat kuti izvi hazvisi zvakaoma nhasi sezvazvaive makumi emakore apfuura).

Kunonoka

Mushure mekuongorora kwakadzama kwekuita kwekupedzisira, ndakasvika pakugumisa kuti iyo inonyanya kukosha parameter panyaya iyi ndeye latency (ping). Muchinyorwa chake “Tinodhinda nekunakidzwa” Pavel Fatin akatarisa kunonoka kweakasiyana mameseji edhita uye akataura kuti materminal mune iyi nyaya anogona kunonoka pane anomhanyisa mavara edhita. Yakanga iri zano rakazoita kuti ndiite bvunzo dzangu nekunyora chinyorwa ichi.

Asi chii chinonzi latency, uye nei ichikosha zvakadaro? Muchinyorwa chake, Fatin akazvitsanangura se "kunonoka pakati pekudzvanya kiyi uye inoenderana skrini yekuvandudza" uye akataura. "Nhungamiro kuHuman-Computer Interaction".

Fatin anotsanangura kuti ping iyi ine migumisiro yakadzama kupfuura kungogutsikana: “kutaipa kunononoka, kukanganisa kwakawanda kunoitika, uye kudhonzwa kwemaziso netsandanyama kunowedzera.” Mune mamwe mazwi, kunonoka kukuru kunogona kutungamira kune typos uye zvakare yakaderera kodhi yemhando, sezvo ichitungamira kune yekuwedzera yekuziva mutoro pahuropi. Asi chakanyanya kuipa ndechekuti ping "inowedzera kuomarara kweziso uye tsandanyama," zvinoita sekureva kuvandudzwa kwekukuvara kwebasa mune ramangwana (Sezviri pachena, munyori anoreva matambudziko nemisungo yemaziso, musana, maoko uye, zvechokwadi, maonero - approx. lane) nekuda kwekudzokorora kunetseka.

Mimwe yeiyi mhedzisiro yave ichizivikanwa kwenguva yakareba, uye mhedzisiro tsvakurudzo, yakabudiswa kare muna 1976 mumagazini Ergonomics, yakataura kuti kunonoka kwe100 milliseconds "kunokanganisa zvakanyanya kukurumidza kutaipa." Munguva pfupi yapfuura, iyo GNOME Mushandisi Yekushandisa yakaunzwa inogamuchirwa nguva yekupindura mu10 milliseconds, uye kana ukaenda mberi, ipapo Microsoft Research inoratidza kuti 1 millisecond yakanaka.

Fatin akaita bvunzo dzake pavapepeti vezvinyorwa; akagadzira chiridzwa chinotakurika chinonzi Typometer, yandaishandisa kuyedza ping mumaterminal emulators. Ramba uchifunga kuti bvunzo yacho yakaitwa mukuenzanisa modhi: muchokwadi, isu tinofanirwa kufunga nezve zvese zvekuisa (keyboard, USB controller, nezvimwewo) uye zvinobuda (vhidhiyo kadhi buffer, monitor) latency. Sekureva kwaFatin, mumagadzirirwo akajairwa anenge makumi maviri ms. Kana uine midziyo yekutamba, unogona kuwana iyi nhamba mumamita matatu chete. Sezvo isu tatova neayo inokurumidza hardware, iyo application haifanirwe kuwedzera yayo latency. Chinangwa chaFatin ndechekuunza application latency kune 20 millisecond, kana kutowana kufona pasina kunonoka kunoyerwa, sei mukati IntelliJ IDEA 15.

Heano mibairo yezviyero zvangu, pamwe nemimwe mibairo yaFatin, kuratidza kuti kuedza kwangu kunobvumirana nemiedzo yake:

Kutarisisa kwematerminal emulators

Chinhu chekutanga chakandibata yaive iri nani yekupindura nguva yezvirongwa zvekare zvakaita se xterm uye mlterm. Neyakaipisisa register latency (2,4 ms), vakaita zvirinani pane inomhanya yemazuva ano terminal (10,6 ms for st). Hapana terminal yemazuva ano inowira pasi pegumi millisecond chikumbaridzo. Kunyanya, Alacritty inotadza kusangana ne "inokurumidza terminal emulator iripo" kudai, kunyangwe zvibodzwa zvaro zvakavandudzika kubva payakawongorora kekutanga muna 10. Zvechokwadi, vanyori veprojekti kuziva mamiriro acho ezvinhu uye vari kushanda kuvandudza chiratidziro. Izvo zvinofanirwa kucherechedzwa kuti Vim ichishandisa GTK3 iodha yehukuru inononoka pane yayo GTK2 mumwe wake. Kubva pane izvi tinogona kugumisa kuti GTK3 inogadzira yakawedzera latency, uye izvi zvinoratidzwa mune mamwe ese materminal anoishandisa (Terminator, Xfce4 Terminal uye GNOME Terminal).

Zvisinei, kusiyana kungave kusingaonekwi neziso. Sokutsanangura kunoita Fatin, “haufaniri hako kuziva kunonoka kuti kuve nepesvedzero pauri.” Fatin anonyeverawo nezve kutsauka kwemazuva ese: “Chero nyonganyonga mukunonoka (jitter) inokonzeresa kushushikana kwakawedzerwa nekuda kwekusaziva kwayo.”

Kutarisisa kwematerminal emulators

Iyo girafu iri pamusoro inotorwa pane yakachena Debian 9 (kutambanudza) ne i3 hwindo maneja. Iyi nharaunda inoburitsa yakanakisa mhedzisiro mulatency bvunzo. Sezvazvinoitika, GNOME inogadzira imwe ping ye20 ms kune ese zviyero. Tsananguro inogoneka yeizvi kuvepo kwezvirongwa zvine synchronous processing yezviitiko zvekupinza. Fatin anopa muenzaniso wenyaya yakadaro Shanda, iyo inowedzera kunonoka nekugadzirisa zviitiko zvese zvekuisa synchronously. Nekutadza, GNOME inouyawo nemaneja wehwindo zevezeve, iyo inogadzira imwe yakawedzera yebhafa, iyo inokanganisa ping uye inowedzera angangoita masere milliseconds e latency.

Kutarisisa kwematerminal emulators

Mupumburu kumhanya

Muedzo unotevera ndewechinyakare "kumhanya" kana "bandwidth" bvunzo, iyo inoyera kuti iyo terminal inogona kukurumidza sei kupeta peji ichiratidzira akawanda mameseji pachiratidziri. Iyo mechanics yebvunzo inosiyana; bvunzo yepakutanga yaive yekungoburitsa iwo iwo mavara tambo uchishandisa iyo seq command. Mimwe miedzo inosanganisira Thomas E. Dickey's (xterm muchengeti) bvunzo, iyo inodzokororwa iyo terminfo.src faira yakatorwa. Mune kumwe kuongorora kweiyo terminal performance Den Luu inoshandisa base32 encoded tambo ye random bytes, inobuda kune terminal uchishandisa katsi. Luu anoona muyedzo wakadaro se "haubatsiri bhenji sezvaungafungidzira" uye anopa zano rekushandisa mhinduro seyekutanga metric pachinzvimbo. Dickey anodaidzirawo bvunzo yake kurasisa. Nekudaro, vese vanyori vanobvuma kuti terminal hwindo bandwidth inogona kuve nyaya. Luu akawana Emacs Eshell ichitonhora kana ichiratidza mafaera akakura, uye Dickey akakwenenzvera terminal kubvisa xtrerm yekuona husimbe. Saka pachine chimwe chakanakira bvunzo iyi, asi sezvo maitiro ekupa akasiyana zvakanyanya kubva kune terminal kuenda kune terminal, inogona zvakare kushandiswa sechikamu chekuyedza kuyedza mamwe ma paramita.

Kutarisisa kwematerminal emulators

Pano tinoona iyo rxvt uye st kudhonza pamberi pemakwikwi, ichiteverwa neakanyanya kutsva Alacritty, iyo yakagadzirwa nekutarisa kuita. Inotevera ndeye Xfce (VTE mhuri) neKonsole, iyo inomhanya kaviri. Yekupedzisira ndeye xterm, inononoka kashanu pane rxvt. Munguva yekuyedzwa, xterm zvakare yakanyungudika zvakanyanya, zvichiita kuti kupfuura zvinyorwa zviome kuona kunyangwe wanga uri mutsetse mumwe chete. Konsole yaimhanya, asi yainetsa dzimwe nguva: chiratidziro chaiita chando nguva nenguva, chichiratidza chidimbu chemavara kana kusachiratidza zvachose. Mamwe materminal airatidza tambo zvakajeka, kusanganisira st, Alacritty, uye rxvt.

Dickey anotsanangura kuti mutsauko wekuita unokonzerwa nekugadzirwa kwemabhafa emupumburu munzvimbo dzakasiyana. Kunyanya, anopomera rxvt uye mamwe materminals e "kusatevedzera mirairo yakajairika":

"Kusiyana ne xterm, rxvt haina kuedza kuratidza zvese zvinogadziridzwa. Kana ikawira kumashure, inoramba zvimwe zvigadziriso kuti zvibate. Izvi zvakave nemhedzisiro yakakura pane inoratidzika yekumhanyisa kumhanya pane pane yemukati memory organisation. Imwe dhizaini yaive yekuti iyo ASCII animation yaive isina kurongeka."

Kugadzirisa izvi zvinofungidzirwa xterm husimbe, Dickey anokurudzira kushandisa sosi fastScroll, zvichibvumira xterm kurasa zvimwe zvigadziriso zvescreen kuti zvifambirane nekuyerera. Miedzo yangu inosimbisa kuti fastScroll inovandudza mashandiro uye inounza xterm padivi ne rxvt. Izvi, zvisinei, igwara rakashata, sekutsanangura kunoita Dickey pachake: "dzimwe nguva xterm - senge konsole - inoita kunge yakamira sezvainomirira seti nyowani yezvigadziriso zvescreen mushure mekunge mamwe abviswa." Mune iyi vheji, zvinoita sekunge mamwe materminal akawana yakanakisa kuwirirana pakati pekumhanya uye kuratidza kutendeseka.

Resource kushandiswa

Pasinei nekuti zvine musoro kufunga kupuruzira kumhanya seyekuita metric, iyi bvunzo inotitendera kutevedzera mutoro pamaterminals, izvo zvinotitendera kuyera mamwe ma paramita akadai sendangariro kana dhisiki kushandiswa. Mametrics akawanikwa nekumhanyisa bvunzo yakatarwa seq pasi pePython process monitoring. Akaunganidza meter data getrusage() nokuti ru_maxrss, huwandu ru_oublock и ru_inblock uye nyore timer.

Kutarisisa kwematerminal emulators

Muyedzo iyi, ST inotora nzvimbo yekutanga ine yakaderera avhareji yekurangarira kushandiswa kwe8 MB, izvo hazvishamise tichifunga kuti pfungwa huru yedhizaini iri nyore. mlterm, xterm uye rxvt inodya zvishoma - ingangoita 12 MB. Imwe mhedzisiro yakakurumbira ndeye Alacritty, inoda 30 MB kuti imhanye. Ipapo kune zviteshi zvemhuri yeVTE ine nhamba kubva pamakumi mana kusvika makumi matanhatu MB, izvo zvakawandisa. Kushandiswa uku kunogona kutsanangurwa nenyaya yekuti aya materminal anoshandisa epamusoro-level raibhurari, semuenzaniso, GTK. Konsole inouya kwekupedzisira ine whopping 40MB yekuyeuka kushandiswa panguva yekuyedzwa, kunyangwe izvi zvichigona kururamiswa nehuwandu hwayo hwakawanda hwezvinhu.

Zvichienzaniswa nemigumisiro yapfuura yakawanikwa makore gumi apfuura, mapurogiramu ose akatanga kutora zvinooneka zvakanyanya. Xterm yaiwanzoda 4 MB, asi ikozvino inoda 15 MB ichangotanga. Pane kuwedzera kwakafanana kwekushandisa kwe rxvt, iyo ikozvino inoda 16 MB kunze kwebhokisi. Xfce Terminal inotora 34 MB, iyo yakakura zvakapetwa katatu kupfuura kare, asi GNOME Terminal inoda 20 MB chete. Ehe, ese apfuura bvunzo akaitwa pa32-bit architecture. PaLCA 2012 Rusty Russell Ndakaudza, kuti kune zvikonzero zvakawanda zvisingaoneki zvinogona kutsanangura kuwedzera kwekushandisa ndangariro. Tataura izvozvo, isu tave kurarama munguva yatine gigabytes yendangariro, saka isu tichakwanisa neimwe nzira.

Nekudaro, ini handigone kubatsira asi kunzwa kuti kugovera imwe ndangariro kune chimwe chinhu chakakosha seiyo terminal kutambisa zviwanikwa. Zvirongwa izvi zvinofanirwa kunge zviri zvidiki pane zvidiki, zvinofanirwa kumhanya pane chero "bhokisi", kunyangwe bhokisi reshangu, kana tikasvika padanho ravanoda kuve neLinux masisitimu (uye iwe unoziva kuti zvichadaro. ) . Asi nenhamba idzi, kushandiswa kwendangariro kuchava nyaya mune ramangwana mune chero nharaunda inomhanya akawanda materminal kunze kweashoma akareruka uye akanyanya kushomeka mukugona. Kuripa izvi, GNOME Terminal, Konsole, urxvt, Terminator uye Xfce Terminal vane Daemon mode inokubvumira kudzora materminals akawanda kuburikidza nekuita kamwe chete, kudzikamisa ndangariro dzavo.

Kutarisisa kwematerminal emulators

Panguva yekuyedzwa kwangu, ndakasvika kune imwe mhedzisiro isingatarisirwe maererano nedhisiki kuverenga-kunyora: Ini ndaitarisira kuona chero chinhu pano, asi zvakazoitika kuti mamwe materminal anonyora iyo yakanyanya voluminous data kune disk. Saka, raibhurari yeVTE inochengeta mupumburu buffer pane diski (ichi chimiro yakaonekwa kare muna 2010, uye izvi zvichiri kuitika). Asi kusiyana nekuita kwekare, ikozvino data iyi yakavharidzirwa uchishandisa AES256 GCM (kubva mushanduro 0.39.2) Asi mubvunzo une musoro unomuka: chii chakakosha nezve raibhurari yeVTE zvekuti inoda nzira isiri-yakajairwa kuita ...

mhedziso

Muchikamu chekutanga chechinyorwa, takaona kuti VTE-based terminals ine yakanaka seti yezvimiro, asi ikozvino tinoona kuti izvi zvinouya neimwe mitengo yekuita. Ikozvino ndangariro haisi nyaya nekuti ese maVTE terminals anogona kudzorwa kuburikidza neDaemon maitiro, ayo anodzikamisa chishuwo chavo. Nekudaro, masisitimu echikuru ane zvimiro zvemuviri pahuwandu hwe RAM uye kernel buffers angave achiri kuda mavhezheni ekutanga ematerminals, sezvo achidya mashoma zviwanikwa. Kunyangwe zviteshi zveVTE zvakaita zvakanaka mukuyedza (kupenya) bvunzo, yavo yekuratidzira latency iri pamusoro pechikumbaridzo chakaiswa muGNOME User Guide. Vagadziri veVTE vanofanirwa kufunga nezve izvi. Kana tikafunga kuti kunyangwe vashandisi veLinux vanosangana neterminal hazvigoneke, vanogona kuita kuti iwedzere mushandisi. Kune vane ruzivo geeks, kuchinjika kubva kune yakasarudzika terminal kungatoreva kushoma kweziso uye kugona kudzivirira mune ramangwana kukuvara-ane chekuita nebasa nehurwere nekuda kwezvikamu zvebasa refu. Nehurombo, chete yekare xterm uye mlterm inotisvitsa kune mashiripiti ping chikumbaridzo chegumi milliseconds, izvo zvisingagamuchirwe kune vakawanda.

Benchmark zviyero zvakaratidzawo kuti nekuda kwekuvandudzwa kweLinux graphical nharaunda, vanogadzira vaifanira kuita akati wandei. Vamwe vashandisi vangangoda kutarisa mamaneja emahwindo enguva dzose sezvavanopa kuderedzwa kwakanyanya kweping. Nehurombo, zvakange zvisingaite kuyera latency yeWayland: chirongwa cheTypometer chandakashandisa chakagadzirirwa izvo Wayland yakagadzirirwa kudzivirira: kusora pane mamwe mahwindo. Ndinovimba kuti Wayland compositing inoita zvirinani pane X.org, uye ndinovimba zvakare kuti mune ramangwana mumwe munhu achawana nzira yekuyera latency munzvimbo ino.

Source: www.habr.com

Voeg