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.
Zviteshi zvine nzvimbo yakakosha munhoroondo yemakomputa, asi mumakumi emakore achangopfuura vakamanikidzwa kurarama padivi pemutsara wekuraira sezvo graphical interfaces inova ubiquitous.
Mamwe materminal ane maburi ekuchengetedza anokatyamadza, uye mazhinji ane seti yemabasa akasiyana zvachose, kubva parutsigiro rwetabbed interface kusvika pakunyora. Kunyangwe isu
Heano materminals andakaongorora:
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
Unicode rutsigiro
Ndakatanga bvunzo dzangu nerutsigiro rweUnicode. Muedzo wekutanga wematerminal yaive yekuratidza Unicode tambo kubva
Nekusagadzikana, xterm inoshandisa iyo yekare "yakagadziriswa" font, iyo, maererano
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
“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".
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.
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.
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.
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).
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
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.
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
Alacritty zvakare inoshaya backscroll buffers, asi
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
Asi chii chinonzi latency, uye nei ichikosha zvakadaro? Muchinyorwa chake, Fatin akazvitsanangura se "kunonoka pakati pekudzvanya kiyi uye inoenderana skrini yekuvandudza" uye akataura.
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
Mimwe yeiyi mhedzisiro yave ichizivikanwa kwenguva yakareba, uye mhedzisiro
Fatin akaita bvunzo dzake pavapepeti vezvinyorwa; akagadzira chiridzwa chinotakurika chinonzi
Heano mibairo yezviyero zvangu, pamwe nemimwe mibairo yaFatin, kuratidza kuti kuedza kwangu kunobvumirana nemiedzo yake:
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
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.”
Iyo girafu iri pamusoro inotorwa pane yakachena Debian 9 (kutambanudza) ne
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
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
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
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
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.
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
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