<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Edlaug</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Edlaug"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Edlaug"/>
	<updated>2026-05-12T15:03:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Vaba_Tarkvara_Teadmuskeskus&amp;diff=146237</id>
		<title>Vaba Tarkvara Teadmuskeskus</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Vaba_Tarkvara_Teadmuskeskus&amp;diff=146237"/>
		<updated>2026-05-07T01:41:16Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Viited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Nimetus=&lt;br /&gt;
* EST &#039;&#039;&#039;TalTechi Vabavara Teadmuskeskus&#039;&#039;&#039; (TVTK, VTK)&lt;br /&gt;
* ENG &#039;&#039;&#039;TalTech Free Software Knowledge Center&#039;&#039;&#039; (TFSKC)&lt;br /&gt;
&lt;br /&gt;
Selgitus: vaba tarkvara ja vabavara on samatähenduslikud sõnad (sünonüümid).&lt;br /&gt;
&lt;br /&gt;
=Algus=&lt;br /&gt;
TalTechi Vabavara Teadmuskeskus sai alguse 04.11.2021 kl 14.00-15.30 toimunud [https://portal.taltech.ee/wiki/show/et:ulikoolist:it-teaduskond:didaktikakeskus:main IT Didaktikakeskuse] virtuaalsel seminaril &amp;quot;[https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-04_tehnoloogiline-j2tkusuutlikkus/2021-11-04_tehnoloogiline-j2tkusuutlikkus.sozi.html Tehnoloogiline jätkusuutlikkus]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Väärtused=&lt;br /&gt;
Vaba tarkvara väärtused [https://media.fsfe.org/w/eh5oAFR9VNwqPzUtBzm8sb lühidalt video kujul].&lt;br /&gt;
=Eesmärgid=&lt;br /&gt;
Ennekõike tagada tehnoloogiline jätkusuutlikkus. Eesmärk on luua kogu Eestit kattev tugivõrgustik keskusega igas maakonnas.&lt;br /&gt;
&lt;br /&gt;
=Võimalused ülikoolis=&lt;br /&gt;
Võimalused ülikoolis on kirjeldatud 04.11.2021 toimunud seminaril alates [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-04_tehnoloogiline-j2tkusuutlikkus/2021-11-04_tehnoloogiline-j2tkusuutlikkus.sozi.html#frame8556 19. slaidist].&lt;br /&gt;
&lt;br /&gt;
=Tegevussuunad=&lt;br /&gt;
&lt;br /&gt;
* teavitustegevus - teavitada kogukonda vabavarast ja selle võimalustest&lt;br /&gt;
* rakendustegevus - vabavara juurutamine organisatsioonides (haridusasutustes, ettevõtetes, jne)&lt;br /&gt;
* teadustegevus - teadusuuringud&lt;br /&gt;
* terminoloogia arendamine - vabavaraga seotud terminoloogia&lt;br /&gt;
* õppematerjalid - vabavaraga seotud õppematerjalide arendamine kooliastmete kaupa ja ka üldisel tasemel&lt;br /&gt;
* koolitused - vabavaraga seotud koolituste, seminaride, töötubade, jne korraldamine&lt;br /&gt;
* kasutajatugi - vabavaraga seotud tehniline tugi&lt;br /&gt;
* tarkvaraarendus - vabavaraga seotud tarkvaraarendus, sh häirivamate vigade parandus&lt;br /&gt;
* küberturve ja militaareesmärgid - vabavaraga seotud kuberturve, riigikaitse&lt;br /&gt;
* koostöö - eri organisatsioonidega koostöö&lt;br /&gt;
&lt;br /&gt;
Tegemist on teenustega, millel igaühel peab tulema ka oma eelarve ja tuleb leida ka tegijad. Ennekõike võiks see olla riigi finantseeritud, eesmärgiga katta ära avaliku sektori vajadused. Kuna maksumaksja raha eest neid tegevusi finantseeritakse, siis avalikule sektorile peaks need teenused ka tasuta olema. Teised sektorid peaksid maksma teenuste ees tasu.&lt;br /&gt;
&lt;br /&gt;
=Tehnoloogiliste vabaduste päevad=&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalfreedomfoundation.org/ Digital Freedom Foundation (DFF)] on mittetulunduslik organisatsioon, kes korraldab erinevaid tehnoloogiliste vabaduste päevi:&lt;br /&gt;
* &#039;&#039;&#039;Education Freedom Day&#039;&#039;&#039; - 21.märts - Eesmärgiks on levitada teadmisi ja teadlikkust vabatarkvara ja vabade õpperessursside kasutamise eelistest hariduses.&lt;br /&gt;
* &#039;&#039;&#039;Document Freedom Day&#039;&#039;&#039; - märtsi viimane kolmapäev. Eesmärgiks on tähistada ja tõsta teadlikkust avatud standarditest, eriti failivormingute osas.&lt;br /&gt;
* &#039;&#039;&#039;Hardware Freedom Day&#039;&#039;&#039; - aprilli viimane kolmapäev. Eesmärgiks on tähistada ja teadvustada avatud riistvaraprojekte ning nendesse panustamise võimalusest.&lt;br /&gt;
* &#039;&#039;&#039;Culture Freedom Day&#039;&#039;&#039; - maikuu kolmas laupäev. Eesmärgiks on harida kogu maailma avalikkust vaba kultuuri kasutamise ja julgustamise eeliste kohta ning pakkuda rahvusvahelist päeva, mis toimiks vaba kultuurikunstnike edendamise platvormina.&lt;br /&gt;
* &#039;&#039;&#039;Software Freedom Day&#039;&#039;&#039; - septembri kolmas laupäev. Eesmärgiks on suurendada teadlikkust vabatarkvarast ja selle eelistest ning julgustada selle kasutamist. Seda päeva on ka Eestis, sh IT Kolledžis tähistatud koos vabatarkvara paigaldamise üritusega Installfest. &lt;br /&gt;
&lt;br /&gt;
=Partnerlus=&lt;br /&gt;
&lt;br /&gt;
VTT juht Edmund Laugasson on ühtlasi ka [https://alvatal.ee/ Avatud Lähtekoodiga ja Vaba Tarkvara Liidu] juhatuse liige.&lt;br /&gt;
&lt;br /&gt;
=Suhtlus=&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://nc.itcollege.ee/call/mi67u9u5 põhiline vestlus]&#039;&#039;&#039; ([https://en.wikipedia.org/wiki/Nextcloud Nextcloud] Talk): tekst (ajalugu säilib), heli, video, salvestusvõimalus puudub (võimalik näiteks arvutis [https://obsproject.com/ OBS Studio] abil)&lt;br /&gt;
* [https://nc.itcollege.ee/apps/bbb/b/gsEMHjxCdnarDRgf täiendav võimalus] ([https://en.wikipedia.org/wiki/BigBlueButton BigBlueButton]): tekst (ajalugu ei säili), heli, video, salvestusvõimalus hetkel puudub (võimalik näiteks arvutis [https://obsproject.com/ OBS Studio] abil)&lt;br /&gt;
&lt;br /&gt;
=Liitumine=&lt;br /&gt;
&lt;br /&gt;
Palume Vaba Tarkvara Teadmusekeskusega liitumise soov edastada [[#Juhtimine|keskuse juhile]].&lt;br /&gt;
&lt;br /&gt;
=Juhtimine=&lt;br /&gt;
&lt;br /&gt;
Vaba Tarkvara Teadmuskeskuse juht&lt;br /&gt;
* [https://taltech.ee/kontaktid/it-kolledz/edmund-laugasson Edmund Laugasson], ETIS: [https://www.etis.ee/CV/Edmund_Laugasson/est EST], [https://www.etis.ee/CV/Edmund_Laugasson/eng ENG]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
* [https://vabavarakeskus.ee/ vabavarakeskus.ee]&lt;br /&gt;
* [https://fsfe.org/news/2021/news-20211015-01.en.html seadmeneutraalsus ja tarkvara taaskasutus] ([https://fsfe.org/news/2021/news-20210127-01.en.html uudis selle kohta])&lt;br /&gt;
* [[Vaba tarkvara kompetentsikeskus|Varasem algatus]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146236</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146236"/>
		<updated>2026-05-06T21:43:09Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad Moodle&#039;is, käesoleval viki leht on üldine teave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS1: [https://ois.taltech.ee/aine/ICA0001 EST] | [https://ois.taltech.ee/subject/ICA0001 ENG]&lt;br /&gt;
** ÕIS2: [https://ois2.taltech.ee/uusois/aine/ICA0001 EST] | [https://ois2.taltech.ee/uusois/subject/ICA0001 ENG]&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin.pdf PDF] | [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin-laiendatud.pdf laiendatud]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud, assistendid praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146235</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146235"/>
		<updated>2026-05-06T21:41:58Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad Moodle&#039;is, käesoleval viki leht on üldine teave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS1: [https://ois.taltech.ee/aine/ICA0001 EST]&lt;br /&gt;
** ÕIS2: [https://ois2.taltech.ee/uusois/aine/ICA0001 EST] | [https://ois2.taltech.ee/uusois/subject/ICA0001 ENG]&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin.pdf PDF] | [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin-laiendatud.pdf laiendatud]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud, assistendid praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Sissejuhatus_infotehnoloogiasse_ja_riistvarasse&amp;diff=146234</id>
		<title>Sissejuhatus infotehnoloogiasse ja riistvarasse</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Sissejuhatus_infotehnoloogiasse_ja_riistvarasse&amp;diff=146234"/>
		<updated>2026-05-06T21:40:54Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Sissejuhatus infotehnoloogiasse ja riistvarasse&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Introduction to Informatics and hardware&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0012&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole.&lt;br /&gt;
&lt;br /&gt;
Anda lühiülevaade informaatikast tervikuna. Tutvustada arvutiriistvara, -tarkvara ja selle tööpõhimõtteid ning enamlevinud probleeme ja võimalikke lahendusi. Anda lühiülevaade IT arengust.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse praktilised oskused. Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja infot leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad käesoleval viki lehel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
Aine läbinud õppur:&lt;br /&gt;
* teab arvutikomponentide otstarvet&lt;br /&gt;
* oskab valida ja hankida arvutiriistvara &lt;br /&gt;
* tunneb levinud operatsioonisüsteeme ja rakendustarkvara ning oskab neid paigaldada ja seadistada&lt;br /&gt;
* oskab lahendada riistvara ja tarkvara probleeme&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart:&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/inf-hw/ainekaart/INF-HW.pdf PDF] | [https://enos.itcollege.ee/~edmund/inf-hw/ainekaart/INF-HW-laiendatud.pdf laiendatud]&lt;br /&gt;
** ÕIS1 [https://ois.taltech.ee/aine/ICA0012 EST] | [https://ois.taltech.ee/subject/ICA0012 ENG]&lt;br /&gt;
** ÕIS2 [http://ois2.taltech.ee/uusois/aine/ICA0012 EST] | [http://ois2.taltech.ee/uusois/subject/ICA0012 ENG]&lt;br /&gt;
* Tunniplaan: avada [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodiga ICA0012&lt;br /&gt;
&lt;br /&gt;
=Ajakava=&lt;br /&gt;
Ajakava ehk siis tähtajad leiab [https://taltechi-ico-akadeemia.notion.site/2d1988c0bd254cc186303a6e977d2c43 siit dokumendist].&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]]&lt;br /&gt;
&lt;br /&gt;
=Õpijuhis=&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/bd25199badf44983b2c531bdb593555f Auditoorne õppetöö ülikoolis]&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/91ed1cad7d2a431eba983e926bc03cf6 Distantsõpe]&lt;br /&gt;
&lt;br /&gt;
=Virtuaalsed vahendid=&lt;br /&gt;
[https://www.notion.so/7a613741ffb94abfaae35353a1b4a982 ainega seotud keskkonnad]&lt;br /&gt;
&lt;br /&gt;
=Seminaritöö=&lt;br /&gt;
&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/daf290a361d24d19a57ef85a17cf956f seminaritöö kirjeldus, näidis, levinumad vead]&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/seminaritoo.pdf seminaritöö loenguslaidid (PDF)]&lt;br /&gt;
[https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/ seminaritöö kaust]&lt;br /&gt;
* seminaritöö rühmad ja esitamise asukoht internetis [https://moodle.taltech.ee/mod/forum/view.php?id=556417 palun kirja panna siia foorumisse Moodle&#039;i kursusel]. Tagasisidet tasub küsida otse praktikumis. Seminaritöö on rühmatöö kus siis tudengid moodustavad rühmad, jagavad ära ülesanded ja tutvustavad vormistatud töös oma panust rühmas.&lt;br /&gt;
&lt;br /&gt;
=Praktikumid=&lt;br /&gt;
&lt;br /&gt;
* Täpsemalt aine Moodle&#039;is&lt;br /&gt;
* [https://livettu.sharepoint.com/sites/MektoryXR/SitePages/Unreal-Engine-labor.aspx Virtuaalreaalsuse praktikum (Mektory)] (vajalik Uni-ID&#039;ga sisselogimine)&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/4b342c4da3f0491085cabcde2f44664a Cisco IT Essentials] inglisekeelne kursus&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/ba2e1653679649c6a8eeec14761c5964m/ PC Building Simulator] on haridusalane mäng arvuti virtuaalseks ehitamiseks&lt;br /&gt;
&lt;br /&gt;
=Loengud=&lt;br /&gt;
&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/inf-hw/loengud/ Loengute failid]&lt;br /&gt;
* Seminaritöö: [https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/seminaritoo.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
==Täiendavad materjalid==&lt;br /&gt;
NB! [[#Moodle keskkond|Aine Moodle&#039;i kursusel]] on täiendavad materjalid.&lt;br /&gt;
&lt;br /&gt;
Martin Vool, ettekanded:&lt;br /&gt;
* [https://www.youtube.com/watch?v=F9vQORL_hlI LoRa ja Raspberry Pi, osa 1] (45min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=P0Bx_fCHbFI LoRa ja Raspberry Pi, osa 2] (23min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=pDZsuY91Xks Arvuti vesijahutus, osa 1], (8 min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=UlwkvGq0RFM Arvuti vesijahutuse hooldus, osa 2], (28 min)&lt;br /&gt;
&lt;br /&gt;
=Hindamine=&lt;br /&gt;
&lt;br /&gt;
Hindamisest on räägitud [https://enos.itcollege.ee/~edmund/inf-hw/loengud/sissejuhatus/sissejuhatus_INF-HW.pdf sissejuhatava loengu slaididel].&lt;br /&gt;
&lt;br /&gt;
Võimalik ka [[#Aine arvestus eritingimustel|hindamine eritingimustel]]&lt;br /&gt;
&lt;br /&gt;
=Aine arvestus eritingimustel=&lt;br /&gt;
[https://taltechi-ico-akadeemia.notion.site/6096c267f8184bfb964eb9b5791f501f võimaluste kirjeldused]&lt;br /&gt;
&lt;br /&gt;
=Moodle keskkond=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://moodle.taltech.ee/course/view.php?id=21238 Kursuse aadress] Moodle keskkonnas.&#039;&#039;&#039; [[#Virtuaalsed vahendid|Sisselogimise teabe saab tunnis õppejõult ja leiab ka virtuaalsete vahendite all]]&lt;br /&gt;
&lt;br /&gt;
=Salvestused=&lt;br /&gt;
Kuna Echo360 on hakanud ka salvestuste vaatamiste eest tasu küsima, siis säästmise eesmärgil on videod alla laaditud ja üles pandud eraldi kausta.&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/inf-hw/viiteid.html viiteid otsinguteks]&lt;br /&gt;
*&#039;&#039;&#039;[http://enos.itcollege.ee/~edmund/materials/links.html Linuxiga jm vabatarkvaraga seotud viiteid]&#039;&#039;&#039;&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/materials/news.html Linuxi uudised, ajakirjad]&lt;br /&gt;
* vabavaraga seotud terminid: [http://enos.itcollege.ee/~edmund/materials/Floss-vabavara-skeem.png EIK serveris] | [https://viki.pingviin.org/images/9/97/Floss-vabavara-skeem.png originaalasukoht]&lt;br /&gt;
* https://sites.google.com/site/easylinuxtipsproject/&lt;br /&gt;
* käsureal ekraanipiltide tegemiseks [https://en.wikipedia.org/wiki/Scrot scrot] (vt [http://alternativeto.net/software/scrot/?license=opensource alternatiivid]), [https://github.com/naelstrof/maim maim]&lt;br /&gt;
* käsurea salvestamine ekraanivideona: [[Terminali sessioonide salvestus ja jagamine]], vt ka [http://alternativeto.net/software/asciinema/ alternatiive] ja [http://tuxdiary.com/tag/record-terminal-linux/ veel programme]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Desktop_environment töölauakeskkond] OS&#039;ides koos näidetega&lt;br /&gt;
* https://www.youtube.com/user/japolegikeeruline - saatesari kus räägitakse erinevatest IT tahkudest&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLjTBvsv2Ws0ja-ovwPAEfP8CY0cIvFYMt assapauk] - MKM&#039;i projekt &amp;quot;Assapauk&amp;quot;, küberturvalisuse näidisprobleemid tavakasutaja tasandil&lt;br /&gt;
* [[Mõned soovitused algajale Linuxi-huvilisele]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kuulamist-vaatamist&lt;br /&gt;
* [https://www.youtube.com/watch?v=kEUDjopZ3go Nutisõltuvus]&lt;br /&gt;
&lt;br /&gt;
=Varasemad=&lt;br /&gt;
* [[INF-HW-K2024]]&lt;br /&gt;
* [[INF-HW-K2023]]&lt;br /&gt;
* [[INF-HW-K2022]]&lt;br /&gt;
* [[INF-HW-K2021]]&lt;br /&gt;
* [[INF-HW-K2020]]&lt;br /&gt;
* [[INF-HW-K2019]]&lt;br /&gt;
* [[INF-HW-K2017]]&lt;br /&gt;
&lt;br /&gt;
=Tagasiside=&lt;br /&gt;
* tagasiside tudengile: praktikumide ajal + vajadusel siin toodud koostöökanalite kaudu + [[#Õppejõud|otse õppejõuga]] suheldes&lt;br /&gt;
* õppejõule saab anda tagasisidet otse tundide ajal + [[User:Edmund#suhtlusrakendused|läbi suhtlusrakenduste]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sissejuhatus infotehnoloogiasse ja riistvarasse]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Sissejuhatus_infotehnoloogiasse_ja_riistvarasse&amp;diff=146233</id>
		<title>Sissejuhatus infotehnoloogiasse ja riistvarasse</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Sissejuhatus_infotehnoloogiasse_ja_riistvarasse&amp;diff=146233"/>
		<updated>2026-05-06T21:40:31Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Sissejuhatus infotehnoloogiasse ja riistvarasse&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Introduction to Informatics and hardware&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0012&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole.&lt;br /&gt;
&lt;br /&gt;
Anda lühiülevaade informaatikast tervikuna. Tutvustada arvutiriistvara, -tarkvara ja selle tööpõhimõtteid ning enamlevinud probleeme ja võimalikke lahendusi. Anda lühiülevaade IT arengust.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse praktilised oskused. Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja infot leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad käesoleval viki lehel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
Aine läbinud õppur:&lt;br /&gt;
* teab arvutikomponentide otstarvet&lt;br /&gt;
* oskab valida ja hankida arvutiriistvara &lt;br /&gt;
* tunneb levinud operatsioonisüsteeme ja rakendustarkvara ning oskab neid paigaldada ja seadistada&lt;br /&gt;
* oskab lahendada riistvara ja tarkvara probleeme&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart:&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/inf-hw/ainekaart/INF-HW.pdf PDF] | [https://enos.itcollege.ee/~edmund/inf-hw/ainekaart/INF-HW-laiendatud.pdf laiendatud]&lt;br /&gt;
** ÕIS1 [https://ois.taltech.ee/aine/ICA0012 EST] | [https://ois.ttu.ee/subject/ICA0012 ENG]&lt;br /&gt;
** ÕIS2 [http://ois2.taltech.ee/uusois/aine/ICA0012 EST] | [http://ois2.ttu.ee/uusois/subject/ICA0012 ENG]&lt;br /&gt;
* Tunniplaan: avada [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodiga ICA0012&lt;br /&gt;
&lt;br /&gt;
=Ajakava=&lt;br /&gt;
Ajakava ehk siis tähtajad leiab [https://taltechi-ico-akadeemia.notion.site/2d1988c0bd254cc186303a6e977d2c43 siit dokumendist].&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]]&lt;br /&gt;
&lt;br /&gt;
=Õpijuhis=&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/bd25199badf44983b2c531bdb593555f Auditoorne õppetöö ülikoolis]&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/91ed1cad7d2a431eba983e926bc03cf6 Distantsõpe]&lt;br /&gt;
&lt;br /&gt;
=Virtuaalsed vahendid=&lt;br /&gt;
[https://www.notion.so/7a613741ffb94abfaae35353a1b4a982 ainega seotud keskkonnad]&lt;br /&gt;
&lt;br /&gt;
=Seminaritöö=&lt;br /&gt;
&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/daf290a361d24d19a57ef85a17cf956f seminaritöö kirjeldus, näidis, levinumad vead]&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/seminaritoo.pdf seminaritöö loenguslaidid (PDF)]&lt;br /&gt;
[https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/ seminaritöö kaust]&lt;br /&gt;
* seminaritöö rühmad ja esitamise asukoht internetis [https://moodle.taltech.ee/mod/forum/view.php?id=556417 palun kirja panna siia foorumisse Moodle&#039;i kursusel]. Tagasisidet tasub küsida otse praktikumis. Seminaritöö on rühmatöö kus siis tudengid moodustavad rühmad, jagavad ära ülesanded ja tutvustavad vormistatud töös oma panust rühmas.&lt;br /&gt;
&lt;br /&gt;
=Praktikumid=&lt;br /&gt;
&lt;br /&gt;
* Täpsemalt aine Moodle&#039;is&lt;br /&gt;
* [https://livettu.sharepoint.com/sites/MektoryXR/SitePages/Unreal-Engine-labor.aspx Virtuaalreaalsuse praktikum (Mektory)] (vajalik Uni-ID&#039;ga sisselogimine)&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/4b342c4da3f0491085cabcde2f44664a Cisco IT Essentials] inglisekeelne kursus&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/ba2e1653679649c6a8eeec14761c5964m/ PC Building Simulator] on haridusalane mäng arvuti virtuaalseks ehitamiseks&lt;br /&gt;
&lt;br /&gt;
=Loengud=&lt;br /&gt;
&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/inf-hw/loengud/ Loengute failid]&lt;br /&gt;
* Seminaritöö: [https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/seminaritoo.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
==Täiendavad materjalid==&lt;br /&gt;
NB! [[#Moodle keskkond|Aine Moodle&#039;i kursusel]] on täiendavad materjalid.&lt;br /&gt;
&lt;br /&gt;
Martin Vool, ettekanded:&lt;br /&gt;
* [https://www.youtube.com/watch?v=F9vQORL_hlI LoRa ja Raspberry Pi, osa 1] (45min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=P0Bx_fCHbFI LoRa ja Raspberry Pi, osa 2] (23min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=pDZsuY91Xks Arvuti vesijahutus, osa 1], (8 min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=UlwkvGq0RFM Arvuti vesijahutuse hooldus, osa 2], (28 min)&lt;br /&gt;
&lt;br /&gt;
=Hindamine=&lt;br /&gt;
&lt;br /&gt;
Hindamisest on räägitud [https://enos.itcollege.ee/~edmund/inf-hw/loengud/sissejuhatus/sissejuhatus_INF-HW.pdf sissejuhatava loengu slaididel].&lt;br /&gt;
&lt;br /&gt;
Võimalik ka [[#Aine arvestus eritingimustel|hindamine eritingimustel]]&lt;br /&gt;
&lt;br /&gt;
=Aine arvestus eritingimustel=&lt;br /&gt;
[https://taltechi-ico-akadeemia.notion.site/6096c267f8184bfb964eb9b5791f501f võimaluste kirjeldused]&lt;br /&gt;
&lt;br /&gt;
=Moodle keskkond=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://moodle.taltech.ee/course/view.php?id=21238 Kursuse aadress] Moodle keskkonnas.&#039;&#039;&#039; [[#Virtuaalsed vahendid|Sisselogimise teabe saab tunnis õppejõult ja leiab ka virtuaalsete vahendite all]]&lt;br /&gt;
&lt;br /&gt;
=Salvestused=&lt;br /&gt;
Kuna Echo360 on hakanud ka salvestuste vaatamiste eest tasu küsima, siis säästmise eesmärgil on videod alla laaditud ja üles pandud eraldi kausta.&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/inf-hw/viiteid.html viiteid otsinguteks]&lt;br /&gt;
*&#039;&#039;&#039;[http://enos.itcollege.ee/~edmund/materials/links.html Linuxiga jm vabatarkvaraga seotud viiteid]&#039;&#039;&#039;&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/materials/news.html Linuxi uudised, ajakirjad]&lt;br /&gt;
* vabavaraga seotud terminid: [http://enos.itcollege.ee/~edmund/materials/Floss-vabavara-skeem.png EIK serveris] | [https://viki.pingviin.org/images/9/97/Floss-vabavara-skeem.png originaalasukoht]&lt;br /&gt;
* https://sites.google.com/site/easylinuxtipsproject/&lt;br /&gt;
* käsureal ekraanipiltide tegemiseks [https://en.wikipedia.org/wiki/Scrot scrot] (vt [http://alternativeto.net/software/scrot/?license=opensource alternatiivid]), [https://github.com/naelstrof/maim maim]&lt;br /&gt;
* käsurea salvestamine ekraanivideona: [[Terminali sessioonide salvestus ja jagamine]], vt ka [http://alternativeto.net/software/asciinema/ alternatiive] ja [http://tuxdiary.com/tag/record-terminal-linux/ veel programme]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Desktop_environment töölauakeskkond] OS&#039;ides koos näidetega&lt;br /&gt;
* https://www.youtube.com/user/japolegikeeruline - saatesari kus räägitakse erinevatest IT tahkudest&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLjTBvsv2Ws0ja-ovwPAEfP8CY0cIvFYMt assapauk] - MKM&#039;i projekt &amp;quot;Assapauk&amp;quot;, küberturvalisuse näidisprobleemid tavakasutaja tasandil&lt;br /&gt;
* [[Mõned soovitused algajale Linuxi-huvilisele]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kuulamist-vaatamist&lt;br /&gt;
* [https://www.youtube.com/watch?v=kEUDjopZ3go Nutisõltuvus]&lt;br /&gt;
&lt;br /&gt;
=Varasemad=&lt;br /&gt;
* [[INF-HW-K2024]]&lt;br /&gt;
* [[INF-HW-K2023]]&lt;br /&gt;
* [[INF-HW-K2022]]&lt;br /&gt;
* [[INF-HW-K2021]]&lt;br /&gt;
* [[INF-HW-K2020]]&lt;br /&gt;
* [[INF-HW-K2019]]&lt;br /&gt;
* [[INF-HW-K2017]]&lt;br /&gt;
&lt;br /&gt;
=Tagasiside=&lt;br /&gt;
* tagasiside tudengile: praktikumide ajal + vajadusel siin toodud koostöökanalite kaudu + [[#Õppejõud|otse õppejõuga]] suheldes&lt;br /&gt;
* õppejõule saab anda tagasisidet otse tundide ajal + [[User:Edmund#suhtlusrakendused|läbi suhtlusrakenduste]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sissejuhatus infotehnoloogiasse ja riistvarasse]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Shellshare&amp;diff=146232</id>
		<title>Shellshare</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Shellshare&amp;diff=146232"/>
		<updated>2026-04-24T00:18:11Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Eesti keeles=&lt;br /&gt;
IT Kolledž: http://linux.itcollege.ee:3000&amp;lt;br&amp;gt;&lt;br /&gt;
avalik teenus: https://shellshare.net/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Võimalus jagada [https://et.wikipedia.org/wiki/K%C3%A4surida käsurida] reaalajas veebipõhiselt ja võimaldada õppuritel paremini jälgida tunnis antud käske ja nende väljundit ja vältida ümberkirjutamisest tekkivaid vigu. Võimalus ka [https://et.wikipedia.org/wiki/Virtuaalmasin virtuaalmasinast] otse käsurida edastada. Edastamine toimub vaid vaatamisrežiimis. Kui soovitakse muutmisrežiimis (&#039;&#039;aka collaborative hacking&#039;&#039;) siis näiteks vabavaraline [https://upterm.dev/ upterm] võib huvi pakkuda.&lt;br /&gt;
&lt;br /&gt;
==Paigaldamine==&lt;br /&gt;
&#039;&#039;&#039;Uusima shellshare&#039;i versiooni kiire paigaldus Linuxis kestprogrammi [https://en.wikipedia.org/wiki/Bash_(Unix_shell) Bash] korral&#039;&#039;&#039;&lt;br /&gt;
 mkdir -p ~/.local/bin/ &amp;amp;&amp;amp; wget -q --show-progress https://get.shellshare.net/?os=linux -O ~/.local/bin/shellshare &amp;amp;&amp;amp; chmod u+x ~/.local/bin/shellshare&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;alias lühikäsunimi=&#039;shellshare --server http://linux.itcollege.ee:3000 --room ruuminimi --password ruumisalasõna&#039;&amp;quot; &amp;gt;&amp;gt; ~/.bash_aliases &amp;amp;&amp;amp; source ~/.bash_aliases&lt;br /&gt;
&lt;br /&gt;
Palun asendada &#039;&#039;lühikäsunimi, ruuminimi, ruumisalasõna&#039;&#039; soovitud väärtustega.&lt;br /&gt;
&lt;br /&gt;
Kasutatud otsiteekonna (&#039;&#039;path&#039;&#039;) toimimiseks [https://en.wikipedia.org/wiki/Bash_(Unix_shell) Bash&#039;i] korral tuleb jälgida, et &#039;&#039;~/.bashrc&#039;&#039; sisaldaks ridu:&lt;br /&gt;
 # set PATH so it includes user&#039;s private bin if it exists&lt;br /&gt;
 if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
    PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&#039;&#039;~/.bashrc&#039;&#039; muudatuste jõustamiseks:&lt;br /&gt;
 source ~/.bashrc&lt;br /&gt;
... või siis sulgeda kõik senised terminalide sessioonid ja avada uuesti terminal.&lt;br /&gt;
Kui on mõni [https://en.wikipedia.org/wiki/Category:Unix_shells teine kestprogramm] kasutusel, siis tuleb jälgida selle seadistuse nõudeid.&lt;br /&gt;
&lt;br /&gt;
Edaspidi piisab terminali avamisest ja saab määratud lühikäsunime sisestades kiirelt kasutada. Selle käivitamisel öeldakse terminalis ka aadress, mille pealt teised siis terminali sisestatud käske näevad, peaaegu reaalajas. Seda aadressi saab aegsasti ka õppuritele jagada, mida tunni ajal siis avada saab.&lt;br /&gt;
&lt;br /&gt;
* skripti allalaadimine https://github.com/vitorbaptista/shellshare/releases - valida &#039;&#039;Latest Release&#039;&#039;&lt;br /&gt;
** on olemas ka [https://shellshare.net programmi koduleht] kus allalaadimise viide kuid võib juhtuda, et see ei tööta&lt;br /&gt;
* lahtipakitud kaustast leiab skripti &#039;&#039;public/bin/shellshare&#039;&#039; - selle võib ka ringi nimetada &#039;&#039;shellshare.py&#039;&#039; ja kopeerida endale meelepärasesse asukohta, võib paralleelselt ka sobivasse kohta veebis paigutada, et kiirelt näiteks [https://et.wikipedia.org/wiki/Virtuaalmasin virtuaalmasinasse] alla laadida&lt;br /&gt;
&lt;br /&gt;
==Edastamine==&lt;br /&gt;
Käsurea (peaaegu) reaalajas edastamise alustamiseks:&lt;br /&gt;
* kiire lahendus&lt;br /&gt;
 shellshare&lt;br /&gt;
See käivitab juhuslikult loodud räsiga aadressi, nähtav https://shellshare.net/r/&amp;lt;räsi&amp;gt;&lt;br /&gt;
* saab ka ette anda ruumi ja salasõna&lt;br /&gt;
 shellshare --room ruuminimi --password salasõna&lt;br /&gt;
Siis on see nähtav aadressil https://shellshare.net/r/ruuminimi&lt;br /&gt;
&lt;br /&gt;
IT Kolledži serveri kaudu edastamine:&lt;br /&gt;
 shellshare --server http://linux.itcollege.ee:3000 --room ruuminimi --password salasõna&lt;br /&gt;
Siis on see nähtav aadressil http://linux.itcollege.ee:3000/r/ruuminimi&lt;br /&gt;
* asendada&lt;br /&gt;
** &#039;&#039;asukoht&#039;&#039; tegeliku &#039;&#039;shellshare.py&#039;&#039; asukohaga arvuti kõvakettal&lt;br /&gt;
** &#039;&#039;ruuminimi&#039;&#039; soovitud nimega&lt;br /&gt;
** &#039;&#039;salasõna&#039;&#039; soovitud salasõnaga&lt;br /&gt;
* veebi edastatud käsud on kopeeritavad, ajalugu vaadatav tagasi kerides (ei ole soovitav käsurida vahepeal puhastada)&lt;br /&gt;
* ka käsureal avatavad failid, man-lehed jne on kuvatavad; liikumine, klaviatuuri abil teksti märkimine kuvatakse ka veebivoos&lt;br /&gt;
&lt;br /&gt;
Toetatud on ka mitmest terminalist korraga samale aadressile käsurea edastamine - nii on võimalik samaaegselt edastada käsurida klassiarvutist, [https://et.wikipedia.org/wiki/Virtuaalmasin virtuaalmasinast] jne korraga samale sessioonile - nii on õppuri jaoks info ühes kohas. Info tuleb ära kopeerida, sest edastamise lõppemisel ja akna sulgemisel ajalugu ei säili.&lt;br /&gt;
&lt;br /&gt;
==Kiire kasutamine==&lt;br /&gt;
Võimalus teha ka lühikäsk ehk [https://en.wikipedia.org/wiki/Alias_(command) alias] (vt [[Alias bash shellis]], &#039;&#039;[[.bash_aliases]]&#039;&#039;), [https://et.wikipedia.org/wiki/Skriptimiskeel skript] vms käsurea jagamise kiireks käivitamiseks soovitud ruuminimega&lt;br /&gt;
&lt;br /&gt;
==Edastamise lõpetamine==&lt;br /&gt;
Käsurea edastamise lõpetamine: &#039;&#039;exit+Enter&#039;&#039;, sageli toimib ka &#039;&#039;CTRL+D&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Erilised tänud==&lt;br /&gt;
&#039;&#039;&#039;Erilised tänud TalTechi IT Kolledži Linuxi administraatorile Veiko Tuul serveripoole käivitamise ja selle suurepärase võimaluse loomise eest!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Viited==&lt;br /&gt;
* https://shellshare.net/&lt;br /&gt;
* https://github.com/vitorbaptista/shellshare/&lt;br /&gt;
&lt;br /&gt;
=in English=&lt;br /&gt;
IT College: http://linux.itcollege.ee:3000&amp;lt;br&amp;gt;&lt;br /&gt;
public service: https://shellshare.net/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an option to share [https://en.wikipedia.org/wiki/Command-line_interface command-line] over Internet in real time using [https://en.wikipedia.org/wiki/Python_(programming_language) Python]. This allows for students to follow lecturer commands and its output and avoid mistakes of rewriting commands. Streaming is going only in read-only mode. If there is edit mode needed (&#039;&#039;aka collaborative hacking&#039;&#039;) then probably free and open-source [https://upterm.dev/ upterm] is one of the choices you may be interested in.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quick install for newest version of shellshare in Linux in case of [https://en.wikipedia.org/wiki/Bash_(Unix_shell) Bash] shell&#039;&#039;&#039;&lt;br /&gt;
 mkdir -p ~/.local/bin/ &amp;amp;&amp;amp; wget -q --show-progress https://get.shellshare.net/?os=linux -O ~/.local/bin/shellshare &amp;amp;&amp;amp; chmod u+x ~/.local/bin/shellshare&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;alias shortname=&#039;shellshare --server http://linux.itcollege.ee:3000 --room roomname --password roompassword&#039;&amp;quot; &amp;gt;&amp;gt; ~/.bash_aliases &amp;amp;&amp;amp; source ~/.bash_aliases&lt;br /&gt;
&lt;br /&gt;
Please replace &#039;&#039;shortname, roomname, roompassword&#039;&#039; with appropriate values, you wish to use.&lt;br /&gt;
&lt;br /&gt;
For ensuring the used path works in case of [https://en.wikipedia.org/wiki/Bash_(Unix_shell) Bash] there must be in &#039;&#039;~/.bashrc&#039;&#039; the following lines:&lt;br /&gt;
 # set PATH so it includes user&#039;s private bin if it exists&lt;br /&gt;
 if [ -d &amp;quot;$HOME/.local/bin&amp;quot; ] ; then&lt;br /&gt;
    PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
for applying changes in &#039;&#039;~/.bashrc&#039;&#039;:&lt;br /&gt;
 source ~/.bashrc&lt;br /&gt;
... or close all existing Bash terminal sessions and reopen the terminal.&lt;br /&gt;
If there is any [https://en.wikipedia.org/wiki/Category:Unix_shells other shell] in use, then its configuration requirements must be followed.&lt;br /&gt;
&lt;br /&gt;
From now on, it is enough to open the terminal and you can quickly use it by entering the specified short command name. When started, the terminal also says the address from which others can then see the commands entered in the terminal, in near real time. This address can also be shared with students in a timely manner, which students can then open during class.&lt;br /&gt;
&lt;br /&gt;
* download the appropriate script at https://github.com/vitorbaptista/shellshare/releases - choose &#039;&#039;Latest Release&#039;&#039;&lt;br /&gt;
** there is also [https://shellshare.net program homepage] where download command is described but it might happen that the site is offline&lt;br /&gt;
* from unpacked folder there can be found the script in &#039;&#039;public/bin/shellshare&#039;&#039; - this can be renamed to &#039;&#039;shellshare.py&#039;&#039; and copy whenever needed. There is also possible to copy unpacked shellshare script to somewhere in the web so you can quickly download e.g. into [https://en.wikipedia.org/wiki/Virtual_machine virtual machine].&lt;br /&gt;
&lt;br /&gt;
==Streaming==&lt;br /&gt;
To start (almost) real-time command line streaming:&lt;br /&gt;
* fast connection&lt;br /&gt;
 shellshare&lt;br /&gt;
This will launch a randomly generated hashed address, visible at https://shellshare.net/r/&amp;lt;hash&amp;gt;&lt;br /&gt;
* you can also specify a room and password&lt;br /&gt;
 shellshare --room roomname --password password&lt;br /&gt;
Then it will be visible at https://shellshare.net/r/roomname&lt;br /&gt;
&lt;br /&gt;
Streaming via IT College server:&lt;br /&gt;
 shellshare --server http://linux.itcollege.ee:3000 --room roomname --password password&lt;br /&gt;
Then it will be visible at http://linux.itcollege.ee:3000/r/roomname&lt;br /&gt;
* replace&lt;br /&gt;
** &#039;&#039;roomname&#039;&#039; with the name&lt;br /&gt;
** &#039;&#039;password&#039;&#039; with the password&lt;br /&gt;
* commands sent to the web are copyable, history can be viewed by scrolling back (it is not recommended to clean the command line while using shellshare)&lt;br /&gt;
* files opened on the command line, man pages, etc. are also displayed; movement, text marking using the keyboard are also displayed in the web stream&lt;br /&gt;
&lt;br /&gt;
Transmitting a command line from multiple terminals to the same address at the same time is also supported - this way it is possible to simultaneously transmit a command line from a class computer, [https://en.wikipedia.org/wiki/Virtual_machine from a virtual machine], etc. to the same session at the same time - this way the information is in one place for the student. The information must be copied, because the history is not preserved when the transmission ends and the window is closed.&lt;br /&gt;
&lt;br /&gt;
==Fast usage==&lt;br /&gt;
There can be an [https://en.wikipedia.org/wiki/Alias_(command) alias] created (see also &#039;&#039;[[.bash_aliases]]&#039;&#039;), [https://en.wikipedia.org/wiki/Scripting_language script] etc to start quickly streaming command-line with appropriate settings.&lt;br /&gt;
&lt;br /&gt;
==Stop streaming==&lt;br /&gt;
To stop command-line streaming: &#039;&#039;exit+Enter&#039;&#039;, usually also &#039;&#039;CTRL+D&#039;&#039; works.&lt;br /&gt;
&lt;br /&gt;
==Special thanks==&lt;br /&gt;
&#039;&#039;&#039;Special thanks goes to TalTech IT College Linux administrator Veiko Tuul to set up server side and offering such a great opportunity!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* https://shellshare.net/&lt;br /&gt;
* https://github.com/vitorbaptista/shellshare/&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=.bash_aliases&amp;diff=146231</id>
		<title>.bash aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=.bash_aliases&amp;diff=146231"/>
		<updated>2026-04-23T21:58:18Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&#039;line&#039;&amp;gt;&lt;br /&gt;
# Preliminary version in Estonian can be found at http://viki.pingviin.org/Alias  &lt;br /&gt;
#  &lt;br /&gt;
# Also from http://enos.itcollege.ee/~edmund/materials/bash  &lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Some bash aliases&lt;br /&gt;
###################&lt;br /&gt;
# systemd aliases #&lt;br /&gt;
alias cli=&#039;sudo systemctl isolate multi-user.target&#039; # switch to multiuser command-line interface&lt;br /&gt;
alias gui=&#039;sudo systemctl isolate graphical.target&#039; # switch to multiuser graphical user interface&lt;br /&gt;
alias rescue=&#039;sudo systemctl isolate rescue.target&#039; # switch to rescue mode, single user environment&lt;br /&gt;
alias emergency=&#039;sudo systemctl isolate emergency.target&#039; # switch to deeper rescue mode, only root shell&lt;br /&gt;
###################&lt;br /&gt;
# EndeavourOS, Arch Linux, Manjaro Linux, etc.&lt;br /&gt;
alias u=&#039;yay -Syyuu &amp;amp;&amp;amp; flatpak update&#039; #update, upgrade but confirm manually, also update flatpak packages - use if using flatpak&lt;br /&gt;
alias k=&#039;yay -Scc --noconfirm &amp;amp;&amp;amp; yay -Yc &amp;amp;&amp;amp; flatpak uninstall --unused&#039; #clean already installed packages caches with no confirmation&lt;br /&gt;
alias i=&#039;yay -Sy&#039; #install&lt;br /&gt;
alias oka=&#039;yay -Ss&#039; #remote search&lt;br /&gt;
alias oko=&#039;yay -Qs&#039; #local search&lt;br /&gt;
alias n=&#039;yay -Si&#039; #show information&lt;br /&gt;
alias e=&#039;yay -Rsn&#039; #remove completely&lt;br /&gt;
alias ae=&#039;yay -Yc&#039; #remove orphan dependencies&lt;br /&gt;
alias varamud=&#039;sudo reflector --verbose -c EE -c FI -c LV --protocol https --sort rate --latest 10 --save /etc/pacman.d/mirrorlist&#039; # use estonian, finnish, latvian repositories and choose 10 fastest of them - especially you notice updates are taking too long time, then possibly too far repositories are in use, more reading at https://www.howtogeek.com/automating-mirror-list-updates-on-arch-linux/ and check also /etc/xdg/reflector/reflector.conf config file, which is pretty self explanatory&lt;br /&gt;
alias ammu=&#039;yay -Sy archlinux-keyring endeavouros-keyring&#039; # update GPG keys packages forcibly in first place while long time ago updated and system claims packages are faulty due to keys mismatch - check your distro *-keyring packages in addition of arch linux one, here is example of EndeavourOS but according your distro you might have additional keyring packages that needs to be forcibly updated before you can continue with rest of packages update&lt;br /&gt;
alias votmed=&#039;sudo pacman-key --refresh-keys &amp;amp;&amp;amp; sudo gpg --refresh-keys&#039;&lt;br /&gt;
alias votmed2=&#039;sudo pacman-key --populate archlinux endeavouros&lt;br /&gt;
alias puhasta=&#039;sudo rm -fr /var/lib/pacman/sync/* &amp;amp;&amp;amp; rm -fr ~/.cache/yay/* ~/.config/yay/*&#039;&lt;br /&gt;
#alias ug=&#039;sudo grub-mkconfig -o /boot/grub/grub.cfg&#039; #update GRUB but today is already systemd-boot, etc&lt;br /&gt;
#alias uefi=&#039;sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=EndeavourOS-grub&#039; # if GRUB in use, this is how to reinstall it in EndeavourOS - nowadays UEFI is already usually in /efi and not in /boot/efi - check this before using this command with GRUB&lt;br /&gt;
#&lt;br /&gt;
# EXIF data removal from images&lt;br /&gt;
# https://archlinux.org/packages/extra/any/perl-image-exiftool/&lt;br /&gt;
# install: yay -Sy perl-image-exiftool --needed&lt;br /&gt;
# https://linuxhandbook.com/remove-exif-data/&lt;br /&gt;
alias exif=&#039;exiftool -overwrite_original -all= *.jpg&#039;&lt;br /&gt;
#&lt;br /&gt;
# Linux Mint, Ubuntu, Debian, etc.&lt;br /&gt;
#alias u=&#039;sudo apt update &amp;amp;&amp;amp; sudo apt full-upgrade &amp;amp;&amp;amp; flatpak update&#039;&lt;br /&gt;
#alias k=&#039;sudo ldconfig &amp;amp;&amp;amp; sudo dpkg --configure -a &amp;amp;&amp;amp; sudo apt-get clean &amp;amp;&amp;amp; flatpak uninstall --unused&#039;&lt;br /&gt;
#alias i=&#039;sudo apt install&#039;&lt;br /&gt;
#alias oka=&#039;apt search&#039;&lt;br /&gt;
#alias oko=&#039;dpkg -l|grep -i&#039;&lt;br /&gt;
#alias n=&#039;sudo apt show&#039;&lt;br /&gt;
#alias e=&#039;sudo apt purge&#039;&lt;br /&gt;
#alias ae=&#039;sudo apt purge --auto-remove&#039;&lt;br /&gt;
#alias p=&#039;sudo apt-cache policy&#039;&lt;br /&gt;
#alias f=&#039;sudo apt install -f&#039;&lt;br /&gt;
#alias ug=&#039;sudo update-grub&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Transfer&lt;br /&gt;
# https://transfer.sh&lt;br /&gt;
# usage: transfer file.txt - replace &amp;quot;file.txt&amp;quot; with real one&lt;br /&gt;
# up to 10 GB, files stored for 14 days&lt;br /&gt;
transfer() { if [ $# -eq 0 ]; then echo -e &amp;quot;No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md&amp;quot;; return 1; fi &lt;br /&gt;
tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename &amp;quot;$1&amp;quot; | sed -e &#039;s/[^a-zA-Z0-9._-]/-/g&#039;); curl --progress-bar --upload-file &amp;quot;$1&amp;quot; &amp;quot;https://transfer.sh/$basefile&amp;quot; &amp;gt;&amp;gt; $tmpfile; else curl --progress-bar --upload-file &amp;quot;-&amp;quot; &amp;quot;https://transfer.sh/$1&amp;quot; &amp;gt;&amp;gt; $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; }&lt;br /&gt;
###########################################################################&lt;br /&gt;
alias clean=&#039;rm ~/.local/share/recently-used.xbel 2&amp;gt;/dev/null&#039; #clean recently used files list&lt;br /&gt;
alias neti=&#039;ping neti.ee -c3&#039;&lt;br /&gt;
#&lt;br /&gt;
# What is my IP address?&lt;br /&gt;
alias ipinfo=&#039;curl ipinfo.io&#039;&lt;br /&gt;
alias ipinfo-ip=&#039;curl ipinfo.io/ip ; echo&#039;&lt;br /&gt;
alias ipinfo-hostname=&#039;curl ipinfo.io/hostname ; echo&#039;&lt;br /&gt;
alias ipinfo-city=&#039;curl ipinfo.io/city ; echo&#039;&lt;br /&gt;
alias ipinfo-region=&#039;curl ipinfo.io/region ; echo&#039;&lt;br /&gt;
alias ipinfo-country=&#039;curl ipinfo.io/country ; echo&#039;&lt;br /&gt;
alias ipinfo-loc=&#039;curl ipinfo.io/loc ; echo&#039;&lt;br /&gt;
alias ipinfo-org=&#039;curl ipinfo.io/org ; echo&#039;&lt;br /&gt;
# sudo apt update &amp;amp;&amp;amp; sudo apt install curl -y &amp;amp;&amp;amp; sudo apt clean&lt;br /&gt;
###########################################################################&lt;br /&gt;
# weather https://askubuntu.com/questions/390329/weather-from-terminal&lt;br /&gt;
# help: https://wttr.in/:help (web browser default language will define language for weather)&lt;br /&gt;
# help: https://wttr.in/:help?lang=et&lt;br /&gt;
# curl wttr.in/:help , curl wttr.in/:help?lang=et&lt;br /&gt;
alias weather-tallinn=&#039;curl wttr.in/tallinn&#039;&lt;br /&gt;
alias weather2-tallinn=&#039;curl v2.wttr.in/tallinn?lang=et&#039;&lt;br /&gt;
alias weather-tartu=&#039;curl wttr.in/tartu&#039;&lt;br /&gt;
alias weather2-tartu=&#039;curl v2.wttr.in/tartu?lang=et&#039;&lt;br /&gt;
alias weather-viljandi=&#039;curl wttr.in/viljandi&#039;&lt;br /&gt;
alias weather2-viljandi=&#039;curl v2.wttr.in/viljandi?lang=et&#039;&lt;br /&gt;
alias weather-rapla=&#039;curl wttr.in/rapla&#039;&lt;br /&gt;
alias weather2-rapla=&#039;curl v2.wttr.in/rapla?lang=et&#039;&lt;br /&gt;
alias weather-pärnu=&#039;curl wttr.in/pärnu&#039;&lt;br /&gt;
alias weather2-pärnu=&#039;curl v2.wttr.in/pärnu?lang=et&#039;&lt;br /&gt;
alias weather-vändra=&#039;curl wttr.in/vändra&#039;&lt;br /&gt;
alias weather2-vändra=&#039;curl v2.wttr.in/vändra?lang=et&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Logging with SSH keyfile example with checking key both in text and visual mode. Replace with appropriate data&lt;br /&gt;
#&lt;br /&gt;
#alias sshalias=&#039;ssh-keyscan -t ecdsa address.ee | ssh-keygen -lv -f - &amp;amp;&amp;amp; ssh -X -i ~/.ssh/keyfile -o VisualHostKey=yes user@address.ee&#039;&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Power management&lt;br /&gt;
alias power-lock-suspend=&#039;sudo physlock -du $USER; sudo systemctl suspend&#039;&lt;br /&gt;
# sudo apt update &amp;amp;&amp;amp; sudo apt install physlock -y &amp;amp;&amp;amp; sudo apt clean&lt;br /&gt;
# https://groups.google.com/forum/#!topic/qubes-users/4dnNv5eYgq4&lt;br /&gt;
# https://github.com/muennich/physlock&lt;br /&gt;
alias power-off=&#039;systemctl poweroff&#039;&lt;br /&gt;
alias power-reboot=&#039;systemctl reboot&#039;&lt;br /&gt;
alias power-halt=&#039;systemctl halt&#039;&lt;br /&gt;
alias power-suspend=&#039;systemctl suspend&#039;&lt;br /&gt;
alias power-hibernate=&#039;systemctl hibernate&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# RADIOSTATIONS&lt;br /&gt;
# http://icecast.err.ee/&lt;br /&gt;
# http://icecast.mmm.elion.ee:8080/&lt;br /&gt;
# http://striiming.trio.ee/&lt;br /&gt;
# http://www.raadio.ee&lt;br /&gt;
# http://www.raadio.net&lt;br /&gt;
# https://www.liveradio.ie/&lt;br /&gt;
# http://www.w3.ee&lt;br /&gt;
# http://et.wikipedia.org/wiki/Eesti_raadiojaamade_loend&lt;br /&gt;
# http://www.neti.ee/cgi-bin/teema/INFO_JA_MEEDIA/Raadio/&lt;br /&gt;
# http://www.neti.ee/cgi-bin/teema/INFO_JA_MEEDIA/Raadio/ON-LINE/&lt;br /&gt;
# http://www.rhm.ee/raadio/raadiojaam.html&lt;br /&gt;
# http://www.google.com/Top/World/Eesti/Meedia/Raadio/&lt;br /&gt;
# http://www.tvnewsradio.com/ee/raadio.htm&lt;br /&gt;
# http://www.di.fm&lt;br /&gt;
# http://somafm.com&lt;br /&gt;
# http://www.surfmusic.de&lt;br /&gt;
# http://www.micromusic.net&lt;br /&gt;
# http://www.1club.fm/radioChannelGuide.htm&lt;br /&gt;
# http://www.m2radio.fr&lt;br /&gt;
# http://radiomap.eu/ee/&lt;br /&gt;
# https://www.raadio.net/&lt;br /&gt;
# https://levira.com/en/services/broadcasting/radio-broadcasting-fm-web/&lt;br /&gt;
# https://www.ttja.ee/et/valdkonnad-teenused/sideteenused/raadioside/tv-ja-raadioringhaaling - here are PDF-files from officially allowed radio stations in Estonia&lt;br /&gt;
# https://wiki.kuus.eu/index.php/Eesti_raadiod_onlines&lt;br /&gt;
#&lt;br /&gt;
# Streaming Directories:&lt;br /&gt;
# http://dir.xiph.org/ (http://www.icecast.org/)&lt;br /&gt;
# http://www.shoutcast.com/&lt;br /&gt;
# http://www.internet-radio.com/&lt;br /&gt;
# http://www.live365.com/&lt;br /&gt;
# http://www.listenlive.eu/&lt;br /&gt;
# http://www.radiotunes.com/&lt;br /&gt;
# http://radiotuna.com/&lt;br /&gt;
# http://tunein.com/&lt;br /&gt;
# http://www.977music.com/&lt;br /&gt;
# http://www.radioguide.fm/&lt;br /&gt;
# http://www.radio.de/&lt;br /&gt;
#&lt;br /&gt;
# MPlayer and codecs installation&lt;br /&gt;
# https://help.ubuntu.com/community/MPlayer - install mediaplayer&lt;br /&gt;
# https://help.ubuntu.com/community/RestrictedFormats - install codecs&lt;br /&gt;
# sudo apt update &amp;amp;&amp;amp; sudo apt install mplayer mplayer-fonts k|x|l|ubuntu-restricted-extras -y &amp;amp;&amp;amp; sudo apt clean #choose one of the restricted extras package according used ubuntu flavour&lt;br /&gt;
#&lt;br /&gt;
# MPV - new era mediaplayer based on MPlayer, also for smart devices&lt;br /&gt;
# https://mpv.io/installation/&lt;br /&gt;
#&lt;br /&gt;
##########################################################################&lt;br /&gt;
# Estonian National Broadcasting Company (ERR) - http://www.err.ee/&lt;br /&gt;
# http://icecast.err.ee/&lt;br /&gt;
#&lt;br /&gt;
# Klassikaraadio - http://klassikaraadio.err.ee/&lt;br /&gt;
alias radio-kl-128-mp3=&#039;mpv http://icecast.err.ee/klassikaraadio.mp3.m3u&#039;&lt;br /&gt;
alias radio-kl-128-opus=&#039;mpv http://icecast.err.ee/klassikaraadio.opus.m3u&#039;&lt;br /&gt;
alias radio-kl-64-mp3=&#039;mpv http://icecast.err.ee/klassikaraadiomadal.mp3.m3u&#039;&lt;br /&gt;
alias radio-kl-64-opus=&#039;mpv http://icecast.err.ee/klassikaraadiomadal.opus.m3u&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Klassikaraadio&amp;quot; -e &amp;quot;mpv http://icecast.err.ee/klassikaraadio.opus.m3u&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# Raadio 2 - http://r2.err.ee/&lt;br /&gt;
alias radio-r2-128-mp3=&#039;mpv http://icecast.err.ee/raadio2.mp3.m3u&#039;&lt;br /&gt;
alias radio-r2-128-opus=&#039;mpv http://icecast.err.ee/raadio2.opus.m3u&#039;&lt;br /&gt;
alias radio-r2-64-mp3=&#039;mpv http://icecast.err.ee/raadio2madal.mp3.m3u&#039;&lt;br /&gt;
alias radio-r2-64-opus=&#039;mpv http://icecast.err.ee/raadio2madal.opus.m3u&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Raadio 2&amp;quot; -e &amp;quot;mpv http://icecast.err.ee/raadio2.mp3.m3u&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# Raadio 4 - http://r4.err.ee/&lt;br /&gt;
alias radio-r4-128-mp3=&#039;mpv http://icecast.err.ee/raadio4.mp3.m3u&#039;&lt;br /&gt;
alias radio-r4-128-opus=&#039;mpv http://icecast.err.ee/raadio4.opus.m3u&#039;&lt;br /&gt;
alias radio-r4-64-mp3=&#039;mpv http://icecast.err.ee/raadio4madal.mp3.m3u&#039;&lt;br /&gt;
alias radio-r4-64-opus=&#039;mpv http://icecast.err.ee/raadio4madal.opus.m3u&#039;&lt;br /&gt;
#&lt;br /&gt;
# Raadio Tallinn - http://raadiotallinn.err.ee/&lt;br /&gt;
alias radio-rt-128-mp3=&#039;mpv http://icecast.err.ee/raadiotallinn.mp3.m3u&#039;&lt;br /&gt;
alias radio-rt-128-opus=&#039;mpv http://icecast.err.ee/raadiotallinn.opus.m3u&#039;&lt;br /&gt;
alias radio-rt-64-mp3=&#039;mpv http://icecast.err.ee/raadiotallinnmadal.mp3.m3u&#039;&lt;br /&gt;
alias radio-rt-64-opus=&#039;mpv http://icecast.err.ee/raadiotallinnmadal.opus.m3u&#039;&lt;br /&gt;
#&lt;br /&gt;
# Vikerraadio - http://vikerraadio.err.ee/&lt;br /&gt;
alias radio-vr-128-mp3=&#039;mpv http://icecast.err.ee/vikerraadio.mp3.m3u&#039;&lt;br /&gt;
alias radio-vr-128-opus=&#039;mpv http://icecast.err.ee/vikerraadio.opus.m3u&#039;&lt;br /&gt;
alias radio-vr-64-mp3=&#039;mpv http://icecast.err.ee/vikerraadiomadal.mp3.m3u&#039;&lt;br /&gt;
alias radio-vr-64-opus=&#039;mpv http://icecast.err.ee/vikerraadiomadal.opus.m3u&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Vikerraadio&amp;quot; -e &amp;quot;mpv http://icecast.err.ee/vikerraadio.opus.m3u&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
##########################################################################&lt;br /&gt;
# https://www.eestimeedia.ee/tegevusalad/raadio/&lt;br /&gt;
#&lt;br /&gt;
# http://kuku.postimees.ee/&lt;br /&gt;
alias radio-kuku-aac=&#039;mpv http://striiming.trio.ee/kuku.aac&#039;&lt;br /&gt;
alias radio-kuku-mp3=&#039;mpv http://striiming.trio.ee/kuku.mp3&#039;&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/kuku.mp3&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/kuku.aac&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Kuku&amp;quot; -e &amp;quot;mpv https://router.euddn.net/8103046e16b71d15d692b57c187875c7/kuku.mp3&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# http://myhits.postimees.ee/&lt;br /&gt;
alias radio-myhits-aac=&#039;mpv http://striiming.trio.ee/myhits.aac&#039;&lt;br /&gt;
alias radio-myhits-mp3=&#039;mpv http://striiming.trio.ee/myhits.mp3&#039;&lt;br /&gt;
# http://striiming.trio.ee:8008/myhits_high.mp3&lt;br /&gt;
# http://striiming.trio.ee/myhits_low.mp3&lt;br /&gt;
# http://router.euddn.net/8103046e16b71d15d692b57c187875c7/myhits.mp3&lt;br /&gt;
# http://router.euddn.net/8103046e16b71d15d692b57c187875c7/myhits.aac&lt;br /&gt;
#&lt;br /&gt;
# https://elmar.elu24.ee/ , https://elmar.elu24.ee/radio&lt;br /&gt;
# https://www.elu24.ee/build-wu-v5/39.bundle-724da730ae1c9618e9a7.js&lt;br /&gt;
alias radio-elmar-aac=&#039;mpv http://striiming.trio.ee/elmar.aac&#039;&lt;br /&gt;
alias radio-elmar-mp3=&#039;mpv http://striiming.trio.ee/elmar.mp3&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Elmar&amp;quot; -e &amp;quot;mpv https://router.euddn.net/8103046e16b71d15d692b57c187875c7/elmar.mp3&amp;quot;&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/elmar.aac&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/elmar.mp3&lt;br /&gt;
#&lt;br /&gt;
# http://www.dfm.ee http://www.dfm.ee/online/play.html ./js/index.js&lt;br /&gt;
alias radio-dfm-aac=&#039;mpv http://striiming.trio.ee/dfm.aac&#039;&lt;br /&gt;
alias radio-dfm-mp3=&#039;mpv http://striiming.trio.ee/dfm.mp3&#039;&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/dfm.mp3&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/dfm.aac&lt;br /&gt;
#&lt;br /&gt;
# http://www.narodnoeradio.ee&lt;br /&gt;
alias radio-narodnoe-aac=&#039;mpv http://striiming.trio.ee/narodnoe.aac&#039;&lt;br /&gt;
alias radio-narodnoe-mp3=&#039;mpv http://striiming.trio.ee/narodnoe.mp3&#039;&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/narodnoe.mp3&lt;br /&gt;
# https://router.euddn.net/8103046e16b71d15d692b57c187875c7/narodnoe.aac&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
#&lt;br /&gt;
# Babahh Media&lt;br /&gt;
# http://retro.babahhcdn.com/&lt;br /&gt;
# http://skyplus.babahhcdn.com/&lt;br /&gt;
# http://sky.babahhcdn.com/&lt;br /&gt;
#&lt;br /&gt;
# https://sky.ee/&lt;br /&gt;
alias radio-retrofm=&#039;mpv http://retro.babahhcdn.com/RETRO&#039;&lt;br /&gt;
# http://retro.babahhcdn.com/RETROFM_boadcast.m3u&lt;br /&gt;
# http://retro.babahhcdn.com/retro.m3u&lt;br /&gt;
# http://retro.babahhcdn.com/retro1.mp3.m3u&lt;br /&gt;
# http://retro.babahhcdn.com/retro2.mp3.m3u&lt;br /&gt;
alias radio-nrj=&#039;mpv http://retro.babahhcdn.com/NRJ.m3u&#039;&lt;br /&gt;
alias radio-nrj-dnb=&#039;mpv http://retro.babahhcdn.com/NRJdnb.m3u&#039;&lt;br /&gt;
#alias radio-nrj-house=&#039;mpv http://retro.babahhcdn.com/NRJhouse.m3u&#039;&lt;br /&gt;
#&lt;br /&gt;
# Russkoje Radio - http://www.russkoeradio.fm/ , https://www.russkoeradio.fm/online?station=russkoe-radio&lt;br /&gt;
alias radio-rr=&#039;mpv https://skyplus.babahhcdn.com/RR&#039;&lt;br /&gt;
# http://retro.babahhcdn.com/RR.m3u&lt;br /&gt;
#&lt;br /&gt;
# Russkoje Radio Rap&lt;br /&gt;
alias radio-rrap=&#039;mpv https://skymedia.babahhcdn.com/rrap&#039;&lt;br /&gt;
#http://retro.babahhcdn.com/rrap.m3u&lt;br /&gt;
#&lt;br /&gt;
# Russkoje Radio Rock&lt;br /&gt;
alias radio-rrock=&#039;mpv https://skymedia.babahhcdn.com/rrock&#039;&lt;br /&gt;
#http://retro.babahhcdn.com/rrock.m3u&lt;br /&gt;
#&lt;br /&gt;
# Sky Radio - http://www.sky-radio.fm/ - venekeelne&lt;br /&gt;
# http://player.sky-radio.fm/PlayerContent/SkyRadio/js/settings.js&lt;br /&gt;
alias radio-sky=&#039;mpv http://sky.babahhcdn.com/SKY&#039;&lt;br /&gt;
#http://retro.babahhcdn.com/SKY.m3u&lt;br /&gt;
alias radio-skyplus=&#039;mpv http://skyplus.babahhcdn.com/SKYPLUS&#039;&lt;br /&gt;
#http://retro.babahhcdn.com/SKYPLUS.m3u&lt;br /&gt;
#http://retro.babahhcdn.com/SKYPLUS_boadcast.m3u&lt;br /&gt;
#http://retro.babahhcdn.com/skyplus.m3u&lt;br /&gt;
alias radio-skydance=&#039;mpv http://sky.babahhcdn.com/SKYdance&#039;&lt;br /&gt;
# http://retro.babahhcdn.com/SKYdance.m3u&lt;br /&gt;
alias radio-skygold=&#039;mpv http://sky.babahhcdn.com/SKYgold&#039;&lt;br /&gt;
#http://retro.babahhcdn.com/SKYgold.m3u&lt;br /&gt;
alias radio-rockfm=&#039;mpv http://retro.babahhcdn.com/rck.m3u&#039;&lt;br /&gt;
alias radio-rockfm-metal=&#039;mpv http://retro.babahhcdn.com/rckmetal.m3u&#039;&lt;br /&gt;
alias radio-skyplus-gold=&#039;mpv http://retro.babahhcdn.com/skyplus_gold.mp3.m3u&#039;&lt;br /&gt;
alias radio-skyplus-top40=&#039;mpv http://retro.babahhcdn.com/skyplus_top40.mp3.m3u&#039;&lt;br /&gt;
alias radio-skyplus-dance=&#039;mpv http://retro.babahhcdn.com/skyplusdance.m3u&#039;&lt;br /&gt;
#&lt;br /&gt;
# Star FM - http://starfm.tv3.ee/&lt;br /&gt;
alias radio-starfm=&#039;mpv https://ice.leviracloud.eu/star96-aac&#039;&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
# PowerHit Radio - http://power.tv3.ee/&lt;br /&gt;
alias radio-powerhit=&#039;mpv http://stream.power.ee/PHR.m3u&#039;&lt;br /&gt;
# https://ice.leviracloud.eu/phr96-aac&lt;br /&gt;
#&lt;br /&gt;
# Radio Volna https://volna.tv3.ee/&lt;br /&gt;
alias radio-volna=&#039;mpv https://ice.leviracloud.eu/volna96-aac&#039;&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Raadio7 http://www.raadio7.ee/&lt;br /&gt;
alias radio-raadio7=&#039;mpv https://edge05.cdn.bitflip.ee:8888/R7&#039;&lt;br /&gt;
#&lt;br /&gt;
# eraldi käivitusikooni loomisel:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv --player-operation-mode=pseudo-gui --title=&#039;Raadio 7&#039; https://edge05.cdn.bitflip.ee:8888/R7; done&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# Pereraadio http://www.pereraadio.ee/&lt;br /&gt;
alias radio-pere-tartu=&#039;mpv http://icecast.pereraadio.ee/Tartu&#039;&lt;br /&gt;
# kuna Pereraadio kipub katkema, siis saab kirjutada ka lõputu tsüklina:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv http://icecast.pereraadio.ee/Tartu; done&amp;quot;&lt;br /&gt;
# sulgemiseks: killall sh mpv&lt;br /&gt;
#&lt;br /&gt;
# eraldi käivitusikooni loomisel:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv --player-operation-mode=pseudo-gui --title=&#039;Tartu Pereraadio&#039; http://icecast.pereraadio.ee/Tartu&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# http://bee.pereraadio.ee:8000/listen.pls&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Tartu Pereraadio&amp;quot; -e &amp;quot;mpv http://icecast.pereraadio.ee/Tartu&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
alias radio-pere-tallinn=&#039;mpv http://icecast.pereraadio.ee/Tallinn&#039;&lt;br /&gt;
# kuna Pereraadio kipub katkema, siis saab kirjutada ka lõputu tsüklina:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv http://icecast.pereraadio.ee/Tallinn; done&amp;quot;&lt;br /&gt;
# sulgemiseks: killall sh mpv&lt;br /&gt;
#&lt;br /&gt;
# eraldi käivitusikooni loomisel:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv --player-operation-mode=pseudo-gui --title=&#039;Tallinna Pereraadio&#039; http://icecast.pereraadio.ee/Tallinn; done&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
# Pereraadio in Russian&lt;br /&gt;
alias radio-pere-semeinoe=&#039;mpv http://icecast.pereraadio.ee/Semeinoje&#039;&lt;br /&gt;
alias radio-pere-eli=&#039;mpv http://icecast.pereraadio.ee/RadioEli&#039;&lt;br /&gt;
#&lt;br /&gt;
# Kuressaare Pereraadio http://www.pereraadio.com/&lt;br /&gt;
alias radio-pere-kuressaare=&#039;mpv http://icecast.pereraadio.ee/Kuressaare&#039;&lt;br /&gt;
# kuna Pereraadio kipub katkema, siis saab kirjutada ka lõputu tsüklina:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv http://icecast.pereraadio.ee/Kuressaare; done&amp;quot;&lt;br /&gt;
# sulgemiseks: killall sh mpv&lt;br /&gt;
#&lt;br /&gt;
# eraldi käivitusikooni loomisel:&lt;br /&gt;
# sh -c &amp;quot;while true; do mpv --player-operation-mode=pseudo-gui --title=&#039;Kuressaare Pereraadio&#039; http://icecast.pereraadio.ee/Kuressaare; done&amp;quot;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# http://icecast.mmm.elion.ee:8080/&lt;br /&gt;
#&lt;br /&gt;
# Ruut FM - http://www.ruutfm.ee/&lt;br /&gt;
alias radio-ruutfm=&#039;mpv http://sc1.treraadio.ee:8010/tre&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Ruut FM&amp;quot; -e &amp;quot;mpv http://sc1.treraadio.ee:8010/tre&amp;quot;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Ring FM - http://www.ringfm.ee/ , http://www.ringfm.ee/ring/kuula-otse/&lt;br /&gt;
alias radio-ringfm=&#039;mpv http://sc2.treraadio.ee/ringfm&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Marta FM - http://www.martafm.ee/ , live.martafm.ee&lt;br /&gt;
alias radio-martafm=&#039;mpv http://icecast.mmm.elion.ee:8080/MartaFM&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Raadio TRE - http://www.treraadio.ee/ , http://tre.ee/&lt;br /&gt;
#&lt;br /&gt;
alias radio-tre-rapla=&#039;mpv http://sc1.treraadio.ee:8002/tre&#039;&lt;br /&gt;
#http://sc1.treraadio.ee:8002/listen.pls&#039;&lt;br /&gt;
#http://151.80.180.93:8002/tre&lt;br /&gt;
alias radio-tre-kesk-eesti=&#039;mpv http://sc2.treraadio.ee:8004/tre&#039;&lt;br /&gt;
alias radio-tre-pohja-eesti=&#039;mpv http://sc2.treraadio.ee/pohja-tre&#039;&lt;br /&gt;
alias radio-tre-parnu=&#039;mplayer http://icecast.mmm.elion.ee:8080/paikeseraadio&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Raadio TRE&amp;quot; -e &amp;quot;mpv http://sc1.treraadio.ee:8002/tre&amp;quot;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Tartu Noorteraadio - http://www.noorteraadio.ee/&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Tartu Noorteraadio&amp;quot; -e &amp;quot;mplayer http://tartunoored.ee:8010/stream&amp;quot;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Raadio Mania - http://www.mania.ee/ - closed&lt;br /&gt;
# alias radio-mania=&#039;mpv http://icecast.linxtelecom.com:8000/mania.mp3.m3u&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Raadio Mania&amp;quot; -e &amp;quot;mpv http://icecast.linxtelecom.com:8000/mania.mp3.m3u&amp;quot;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Raadio Kadi - http://www.kadi.ee/ (levitaja: http://www.eqcomputer.com)&lt;br /&gt;
alias radio-kadi=&#039;mpv https://kadi.babahhcdn.com/kadi&#039;&lt;br /&gt;
# x-terminal-emulator -T &amp;quot;Raadio Kadi&amp;quot; -e &amp;quot;mpv https://kadi.babahhcdn.com/kadi&amp;quot;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Nõmme Raadio - http://www.nommeraadio.ee/&lt;br /&gt;
alias radio-nommeraadio=&#039;mplayer http://149.210.138.12:8000/nommeraadio&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# dance&lt;br /&gt;
#alias nashe96=&#039;mpv http://www.nashe.ua/radio.m3u&#039;&lt;br /&gt;
#alias nashe128=&#039;mpv http://www.nashe.ua/nashe.m3u&#039;&lt;br /&gt;
#alias swh-latvia=&#039;mpv http://www.radioswh.lv/swhlivee_s.m3u&#039;&lt;br /&gt;
#alias radio1=&#039;mplayer http://netshow.play.cz:8000/radio1.mp3&#039;&lt;br /&gt;
alias radio-t4e_main=&#039;mplayer http://out03.t4e.dj:80/main_high.mp3&#039;&lt;br /&gt;
alias radio-t4e_hard=&#039;mplayer http://out03.t4e.dj:80/hard_high.mp3&#039;&lt;br /&gt;
alias radio-t4e_club=&#039;mplayer http://out03.t4e.dj:80/club_high.mp3&#039;&lt;br /&gt;
alias radio-t4e_lounge=&#039;mplayer http://out03.t4e.dj:80/lounge_high.mp3&#039;&lt;br /&gt;
alias radio-iwayhigh_dub_electro_chill=&#039;mpv http://iwayhigh.net:8000/listen.pls&#039;&lt;br /&gt;
alias radio-iwayhigh_guidance2=&#039;mpv http://iwayhigh.net:8002/listen.pls&#039;&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Organ&lt;br /&gt;
alias orel-organmagic=&#039;mpv http://www.outpostradio.com/organmagic/play.m3u&#039;&lt;br /&gt;
alias orel-baroque=&#039;mpv http://www.positivelybaroque.com/320eu&#039;&lt;br /&gt;
# http://www.positivelybaroque.com/320&lt;br /&gt;
alias orel-oe=&#039;mpv https://play.organlive.com:7060/320&#039;&lt;br /&gt;
# https://www.organexperience.com/&lt;br /&gt;
###########################################################################&lt;br /&gt;
# TV&lt;br /&gt;
###########################################################################&lt;br /&gt;
# Estonian National Broadcasting Company (http://www.err.ee/) TV-channels&lt;br /&gt;
#&lt;br /&gt;
# Web player http://otse.err.ee/:&lt;br /&gt;
#&lt;br /&gt;
alias tv-etv=&#039;mpv http://sb.err.ee/live/etv.m3u8&#039;&lt;br /&gt;
alias tv-etv2=&#039;mpv http://sb.err.ee/live/etv2.m3u8&#039;&lt;br /&gt;
alias tv-etv+=&#039;mpv http://sb.err.ee/live/etvpluss.m3u8&#039;&lt;br /&gt;
# workaround&lt;br /&gt;
#alias tv-etv=&#039;sh -c &amp;quot;while true; do mpv --network-timeout=2 http://sb.err.ee/live/etv.m3u8; done&amp;quot;&#039;&lt;br /&gt;
#alias tv-etv2=&#039;sh -c &amp;quot;while true; do mpv --network-timeout=2 http://sb.err.ee/live/etv2.m3u8; done&amp;quot;&#039;&lt;br /&gt;
#alias tv-etv+=&#039;sh -c &amp;quot;while true; do mpv --network-timeout=2 http://sb.err.ee/live/etvpluss.m3u8; done&amp;quot;&#039;&lt;br /&gt;
#alias tv-kill=&#039;sh -c &amp;quot;killall -9 sh mpv&amp;quot;&#039;&lt;br /&gt;
#&lt;br /&gt;
# Webcam test&lt;br /&gt;
#&lt;br /&gt;
alias wc1=&#039;flatpak run io.mpv.Mpv av://v4l2:/dev/video0 --profile=low-latency&#039;&lt;br /&gt;
alias wc2=&#039;flatpak run io.mpv.Mpv av://v4l2:/dev/video1 --profile=low-latency&#039;&lt;br /&gt;
alias wc3=&#039;flatpak run io.mpv.Mpv av://v4l2:/dev/video2 --profile=low-latency&#039;&lt;br /&gt;
#alias wc1=&#039;mpv av://v4l2:/dev/video0 --profile=low-latency&#039;&lt;br /&gt;
#alias wc2=&#039;mpv av://v4l2:/dev/video1 --profile=low-latency&#039;&lt;br /&gt;
#alias wc3=&#039;mpv av://v4l2:/dev/video2 --profile=low-latency&#039;&lt;br /&gt;
#alias wc1=&#039;mplayer tv:// -tv driver=v4l2:device=/dev/video0&#039;&lt;br /&gt;
#alias wc2=&#039;mplayer tv:// -tv driver=v4l2:device=/dev/video1&#039;&lt;br /&gt;
#alias wc3=&#039;mplayer tv:// -tv driver=v4l2:device=/dev/video2&#039;&lt;br /&gt;
#alias vlcwc1=&#039;vlc v4l2:///dev/video0&#039;&lt;br /&gt;
#alias vlcwc2=&#039;vlc v4l2:///dev/video1&#039;&lt;br /&gt;
#alias vlcwc3=&#039;vlc v4l2:///dev/video2&#039;&lt;br /&gt;
alias vlcwc1=&#039;flatpak run org.videolan.VLC v4l2:///dev/video0&#039;&lt;br /&gt;
alias vlcwc2=&#039;flatpak run org.videolan.VLC v4l2:///dev/video1&#039;&lt;br /&gt;
alias vlcwc3=&#039;flatpak run org.videolan.VLC v4l2:///dev/video2&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=146198</id>
		<title>User:Edmund</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=146198"/>
		<updated>2026-03-03T12:08:18Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* LaTeX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Edmund Laugasson =&lt;br /&gt;
* [[#eesti keeles|eesti keeles]]&lt;br /&gt;
* [[#in English|in English]]&lt;br /&gt;
&lt;br /&gt;
==eesti keeles==&lt;br /&gt;
* lektor TalTech IT Kolledžis&lt;br /&gt;
* haridustase: magister (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi_kasutajad_TalTech_IT_Kolled%C5%BEi_personali_seas aktiivne Linuxi-kasutaja]&lt;br /&gt;
* [https://taltech.ee/kontaktid/it-kolledz/edmund-laugasson nimeline otsing ülikooli veebis]&lt;br /&gt;
&lt;br /&gt;
===suhtlusrakendused===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], vt [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegramm.html programmist täpsemalt]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [[keybase|lisateave]]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ rakendusest]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
teised suhtlusviisid&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ rohkem turvalisemad]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ vähem turvalisemad]&lt;br /&gt;
* [https://www.securemessagingapps.com/ lisainfo suhtlusrakenduste turvalisuse ja privaatsuse kohta]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kasutajat ei ole vaja näiteks [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] puhul ja see ka veebipõhine. Jitsi Meet olemas ka IT Kolledži serveris https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-post===&lt;br /&gt;
&#039;&#039;&#039;NB! Kui vähegi võimalik, siis palun failid edastada&#039;&#039;&#039;&lt;br /&gt;
* [[#pilv|pilvsalvestuse]] (eelistatud)&lt;br /&gt;
* [[#suhtlusrakendused|suhtlusrakenduse]]&lt;br /&gt;
... kaudu. Siis piisab, kui pilvsalvestuses jagatud kataloogi link edastada eelistatult suhtlusrakenduse või siis ka e-posti teel.&lt;br /&gt;
&lt;br /&gt;
Näiteks ülikoolis on kasutusel Uni-ID, mis on ühendatud MS Teamsiga. Seega võib vabalt seda kasutada failide edastamiseks, kataloogi jagamiseks, jne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldiselt e-post ei ole failivahetuseks mõeldud.&#039;&#039;&#039; Seda enam, et tihti tekib vajadus ka faile muuta, mistõttu tuleb siis fail(id) uuesti saata. Iga saatmisega tekib kahes kohas koopiad mittevajalikest failidest: nii saatja kui saaja postkastis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
Võimalus saata krüpteeritud e-kiri:&amp;lt;br&amp;gt;&lt;br /&gt;
sõrmejälg ja avaliku võtme allalaadimine: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Krüpteerimata e-kiri on sisuliselt avalik kiri!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===telefon===&lt;br /&gt;
* sisetelefon 842&lt;br /&gt;
* telefon laual +3726285842&lt;br /&gt;
* telefon taskus +37258659428&lt;br /&gt;
&lt;br /&gt;
===videokõne===&lt;br /&gt;
* Jitsi Meet (eelistatud, saab ka ekraani jagada)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (eelistatud)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (varuvariant)&lt;br /&gt;
** ka mistahes muu kanali nime võib valida - palun mulle siis ka öelda (nt suhtlusrakenduse kaudu)&lt;br /&gt;
* sobib ka teine mõni rakendus kuid siis eraldi kokkuleppel&lt;br /&gt;
&lt;br /&gt;
===kabinet===&lt;br /&gt;
* 516 (5.korrus)&lt;br /&gt;
&lt;br /&gt;
===tunnid===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 Tunniplaani leiab siit aadressilt.]&lt;br /&gt;
&lt;br /&gt;
===pilv===&lt;br /&gt;
Jagamiseks pilvsalvestuses, ka suhtlemisel:&lt;br /&gt;
* edmund punkt laugasson ätt gmail punkt com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com/ Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
*  Microsofti pilv&lt;br /&gt;
** [https://nc.itcollege.ee IT Kolledži Nextcloud] (soovitav) - edlaug ätt taltech punkt ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug ätt ttu punkt ee (klient Linuxile: [https://github.com/IsmaelMartinez/teams-for-linux/releases mitteametlik]| [https://teams.microsoft.com/downloads ametlik (sh veebipõhine)])&lt;br /&gt;
* [[Keybase]] - lisaks suhtlemisele ka suur võrguketas + krüpteeritud Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
TalTechi serveris Overleaf&lt;br /&gt;
* kasutaja: uni-id, ilma @taltech.ee&#039;ta&lt;br /&gt;
* https://overleaf.cs.taltech.ee&lt;br /&gt;
* https://overleaf.cs.taltech.ee/templates&lt;br /&gt;
&lt;br /&gt;
Avalik Overleaf&lt;br /&gt;
* Overleafi konto: edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Overleafi sõbralink (annab lisakettaruumi jne)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeXi mallid Overleafis]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Kontakti leidmine===&lt;br /&gt;
Tasub helistada kui e-postile, suhtlusrakendustele vastata ei ole jõudnud. Üldiselt kui ülikoolis olen siis on lisaks tundidele veel tudengitega kohtumised. Tasub ka ÕIS&#039;ist (Õppeinfosüsteem) uurida, mis ruumis minu tunnid toimuvad ja sealt võib ka mind kätte saada.&lt;br /&gt;
Üldiselt on telefon hääletu peal tundide, vahetundide ajal ja seetõttu ei pruugi olla võimalik telefoni teel kätte saada sel ajal. Teinekord kui on tunnivälisel ajal tudengitega kohtumised siis telefon on endiselt hääletu peal. Seetõttu leiab mind üles [[#tunnid|ruumidest kus tunnid on toimunud]] või ka [[#kabinet|minu kabinetist]].&lt;br /&gt;
&lt;br /&gt;
===Diplomitöö===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html diplomitöö]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ täiendav teave]&lt;br /&gt;
&lt;br /&gt;
==in English==&lt;br /&gt;
* lecturer in TalTech IT College&lt;br /&gt;
* education: Master of Science (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi-kasutajad_EIK_personali_seas active Linux user]&lt;br /&gt;
* [https://taltech.ee/en/contacts/it-college/edmund-laugasson search by name from university web]&lt;br /&gt;
&lt;br /&gt;
===messaging applications===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], see [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegram.html more about the program]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [https://keybase.io/download download the program]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ about the app]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
other communication ways&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ more secure]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ less secure]&lt;br /&gt;
* [https://www.securemessagingapps.com/ additional information about messaging apps security and privacy]&lt;br /&gt;
&lt;br /&gt;
E.g. no user needed in case of [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] and it is also web-based.  Jitsi Meet exist also at IT College server https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-mail===&lt;br /&gt;
&#039;&#039;&#039;NB! Whenever possible, please send files via&#039;&#039;&#039;&lt;br /&gt;
* [[#cloud|cloud storage]] (preferred)&lt;br /&gt;
* [[#messaging_applications|messaging applications]]&lt;br /&gt;
Then you can just send the shared folder link, preferally via messaging applications or also via email.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E.g. in university we have Uni-ID, which is connected with MS Teams. So, you can freely use it to send files, share folder, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Email is not meant for file exchange in general.&#039;&#039;&#039; All the more so because you often need to change the files, so you have to resubmit the file(s). Each send creates copies of unnecessary files in two places: in both the sender&#039;s and recipient&#039;s mailboxes...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
An option to send encrypted e-mail:&amp;lt;br&amp;gt;&lt;br /&gt;
fingerprint and public key download: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Unencrypted e-mail is basically a public one!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===phone===&lt;br /&gt;
* internal phone 842&lt;br /&gt;
* phone on the desk +3726285842&lt;br /&gt;
* phone in the pocket +37258659428&lt;br /&gt;
===video call===&lt;br /&gt;
* Jitsi Meet (preferred, also screen sharing supported)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (preferred)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (fallback)&lt;br /&gt;
** also any other channel name could be chosen - please tell also to me (e.g. via messaging app)&lt;br /&gt;
* also other app could suit but with separate agreement&lt;br /&gt;
&lt;br /&gt;
===office===&lt;br /&gt;
* 516 (5th floor)&lt;br /&gt;
&lt;br /&gt;
===lessons===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 My lessons can be found from here.]&lt;br /&gt;
&lt;br /&gt;
===cloud===&lt;br /&gt;
For sharing via cloud storages, also communicating:&lt;br /&gt;
* edmund dot laugasson specialsign gmail dot com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
* Microsoft cloud&lt;br /&gt;
** [https://nc.itcollege.ee IT College Nextcloud] (suggested) - edlaug specialsign taltech dot ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug specialsign ttu dot ee (client for Linux: [https://github.com/IsmaelMartinez/teams-for-linux/releases unofficial]| [https://teams.microsoft.com/downloads official (incl. web-based)])&lt;br /&gt;
* [[Keybase]] - in addition of communication also large network drive + encrypted Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
Overleaf in TalTech own server&lt;br /&gt;
* user: uni-id, without @taltech.ee&lt;br /&gt;
* https://overleaf.cs.taltech.ee&lt;br /&gt;
* https://overleaf.cs.taltech.ee/templates&lt;br /&gt;
&lt;br /&gt;
Public Overleaf&lt;br /&gt;
* Account at Overleaf: edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Friend link at Overleaf (gives additional storage space, etc.)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeX templates at Overleaf]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Finding a contact===&lt;br /&gt;
It is worth to call if I haven&#039;t responded to e-mail, messaging applications. Usually when I am in university then there are also meetings with students in addition to lessons. Also there can be checked from SIS (Study Information System) in which room I have lessons and it may be possible to reach me there.&lt;br /&gt;
Usually the phone is muted during lectures, breaks and therefore reaching by phone might not possible. Also during meetings outside lecture time the phone might be still muted. Therefore it would be possible to reach me [[#lessons|from rooms I had lessons]] or [[#office|my office]].&lt;br /&gt;
&lt;br /&gt;
===Diploma thesis===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html main article about supervising diploma thesis]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ additional information collected here] - most of still in Estonian - please use machine translation (e.g. [https://translate.google.com/ Google Translate]).&lt;br /&gt;
Do not hesitate to ask - also supervising in English is possible.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=146197</id>
		<title>User:Edmund</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=146197"/>
		<updated>2026-03-03T12:07:25Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* LaTeX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Edmund Laugasson =&lt;br /&gt;
* [[#eesti keeles|eesti keeles]]&lt;br /&gt;
* [[#in English|in English]]&lt;br /&gt;
&lt;br /&gt;
==eesti keeles==&lt;br /&gt;
* lektor TalTech IT Kolledžis&lt;br /&gt;
* haridustase: magister (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi_kasutajad_TalTech_IT_Kolled%C5%BEi_personali_seas aktiivne Linuxi-kasutaja]&lt;br /&gt;
* [https://taltech.ee/kontaktid/it-kolledz/edmund-laugasson nimeline otsing ülikooli veebis]&lt;br /&gt;
&lt;br /&gt;
===suhtlusrakendused===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], vt [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegramm.html programmist täpsemalt]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [[keybase|lisateave]]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ rakendusest]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
teised suhtlusviisid&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ rohkem turvalisemad]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ vähem turvalisemad]&lt;br /&gt;
* [https://www.securemessagingapps.com/ lisainfo suhtlusrakenduste turvalisuse ja privaatsuse kohta]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kasutajat ei ole vaja näiteks [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] puhul ja see ka veebipõhine. Jitsi Meet olemas ka IT Kolledži serveris https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-post===&lt;br /&gt;
&#039;&#039;&#039;NB! Kui vähegi võimalik, siis palun failid edastada&#039;&#039;&#039;&lt;br /&gt;
* [[#pilv|pilvsalvestuse]] (eelistatud)&lt;br /&gt;
* [[#suhtlusrakendused|suhtlusrakenduse]]&lt;br /&gt;
... kaudu. Siis piisab, kui pilvsalvestuses jagatud kataloogi link edastada eelistatult suhtlusrakenduse või siis ka e-posti teel.&lt;br /&gt;
&lt;br /&gt;
Näiteks ülikoolis on kasutusel Uni-ID, mis on ühendatud MS Teamsiga. Seega võib vabalt seda kasutada failide edastamiseks, kataloogi jagamiseks, jne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldiselt e-post ei ole failivahetuseks mõeldud.&#039;&#039;&#039; Seda enam, et tihti tekib vajadus ka faile muuta, mistõttu tuleb siis fail(id) uuesti saata. Iga saatmisega tekib kahes kohas koopiad mittevajalikest failidest: nii saatja kui saaja postkastis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
Võimalus saata krüpteeritud e-kiri:&amp;lt;br&amp;gt;&lt;br /&gt;
sõrmejälg ja avaliku võtme allalaadimine: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Krüpteerimata e-kiri on sisuliselt avalik kiri!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===telefon===&lt;br /&gt;
* sisetelefon 842&lt;br /&gt;
* telefon laual +3726285842&lt;br /&gt;
* telefon taskus +37258659428&lt;br /&gt;
&lt;br /&gt;
===videokõne===&lt;br /&gt;
* Jitsi Meet (eelistatud, saab ka ekraani jagada)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (eelistatud)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (varuvariant)&lt;br /&gt;
** ka mistahes muu kanali nime võib valida - palun mulle siis ka öelda (nt suhtlusrakenduse kaudu)&lt;br /&gt;
* sobib ka teine mõni rakendus kuid siis eraldi kokkuleppel&lt;br /&gt;
&lt;br /&gt;
===kabinet===&lt;br /&gt;
* 516 (5.korrus)&lt;br /&gt;
&lt;br /&gt;
===tunnid===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 Tunniplaani leiab siit aadressilt.]&lt;br /&gt;
&lt;br /&gt;
===pilv===&lt;br /&gt;
Jagamiseks pilvsalvestuses, ka suhtlemisel:&lt;br /&gt;
* edmund punkt laugasson ätt gmail punkt com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com/ Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
*  Microsofti pilv&lt;br /&gt;
** [https://nc.itcollege.ee IT Kolledži Nextcloud] (soovitav) - edlaug ätt taltech punkt ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug ätt ttu punkt ee (klient Linuxile: [https://github.com/IsmaelMartinez/teams-for-linux/releases mitteametlik]| [https://teams.microsoft.com/downloads ametlik (sh veebipõhine)])&lt;br /&gt;
* [[Keybase]] - lisaks suhtlemisele ka suur võrguketas + krüpteeritud Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
TalTechi serveris Overleaf&lt;br /&gt;
* kasutaja: uni-id, ilma @taltech.ee&#039;ta&lt;br /&gt;
* https://overleaf.cs.taltech.ee&lt;br /&gt;
* https://overleaf.cs.taltech.ee/templates&lt;br /&gt;
&lt;br /&gt;
Avalik Overleaf&lt;br /&gt;
* Overleafi konto: edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Overleafi sõbralink (annab lisakettaruumi jne)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeXi mallid Overleafis]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Kontakti leidmine===&lt;br /&gt;
Tasub helistada kui e-postile, suhtlusrakendustele vastata ei ole jõudnud. Üldiselt kui ülikoolis olen siis on lisaks tundidele veel tudengitega kohtumised. Tasub ka ÕIS&#039;ist (Õppeinfosüsteem) uurida, mis ruumis minu tunnid toimuvad ja sealt võib ka mind kätte saada.&lt;br /&gt;
Üldiselt on telefon hääletu peal tundide, vahetundide ajal ja seetõttu ei pruugi olla võimalik telefoni teel kätte saada sel ajal. Teinekord kui on tunnivälisel ajal tudengitega kohtumised siis telefon on endiselt hääletu peal. Seetõttu leiab mind üles [[#tunnid|ruumidest kus tunnid on toimunud]] või ka [[#kabinet|minu kabinetist]].&lt;br /&gt;
&lt;br /&gt;
===Diplomitöö===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html diplomitöö]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ täiendav teave]&lt;br /&gt;
&lt;br /&gt;
==in English==&lt;br /&gt;
* lecturer in TalTech IT College&lt;br /&gt;
* education: Master of Science (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi-kasutajad_EIK_personali_seas active Linux user]&lt;br /&gt;
* [https://taltech.ee/en/contacts/it-college/edmund-laugasson search by name from university web]&lt;br /&gt;
&lt;br /&gt;
===messaging applications===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], see [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegram.html more about the program]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [https://keybase.io/download download the program]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ about the app]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
other communication ways&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ more secure]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ less secure]&lt;br /&gt;
* [https://www.securemessagingapps.com/ additional information about messaging apps security and privacy]&lt;br /&gt;
&lt;br /&gt;
E.g. no user needed in case of [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] and it is also web-based.  Jitsi Meet exist also at IT College server https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-mail===&lt;br /&gt;
&#039;&#039;&#039;NB! Whenever possible, please send files via&#039;&#039;&#039;&lt;br /&gt;
* [[#cloud|cloud storage]] (preferred)&lt;br /&gt;
* [[#messaging_applications|messaging applications]]&lt;br /&gt;
Then you can just send the shared folder link, preferally via messaging applications or also via email.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E.g. in university we have Uni-ID, which is connected with MS Teams. So, you can freely use it to send files, share folder, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Email is not meant for file exchange in general.&#039;&#039;&#039; All the more so because you often need to change the files, so you have to resubmit the file(s). Each send creates copies of unnecessary files in two places: in both the sender&#039;s and recipient&#039;s mailboxes...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
An option to send encrypted e-mail:&amp;lt;br&amp;gt;&lt;br /&gt;
fingerprint and public key download: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Unencrypted e-mail is basically a public one!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===phone===&lt;br /&gt;
* internal phone 842&lt;br /&gt;
* phone on the desk +3726285842&lt;br /&gt;
* phone in the pocket +37258659428&lt;br /&gt;
===video call===&lt;br /&gt;
* Jitsi Meet (preferred, also screen sharing supported)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (preferred)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (fallback)&lt;br /&gt;
** also any other channel name could be chosen - please tell also to me (e.g. via messaging app)&lt;br /&gt;
* also other app could suit but with separate agreement&lt;br /&gt;
&lt;br /&gt;
===office===&lt;br /&gt;
* 516 (5th floor)&lt;br /&gt;
&lt;br /&gt;
===lessons===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 My lessons can be found from here.]&lt;br /&gt;
&lt;br /&gt;
===cloud===&lt;br /&gt;
For sharing via cloud storages, also communicating:&lt;br /&gt;
* edmund dot laugasson specialsign gmail dot com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
* Microsoft cloud&lt;br /&gt;
** [https://nc.itcollege.ee IT College Nextcloud] (suggested) - edlaug specialsign taltech dot ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug specialsign ttu dot ee (client for Linux: [https://github.com/IsmaelMartinez/teams-for-linux/releases unofficial]| [https://teams.microsoft.com/downloads official (incl. web-based)])&lt;br /&gt;
* [[Keybase]] - in addition of communication also large network drive + encrypted Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
* Account at Overleaf: edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Friend link at Overleaf (gives additional storage space, etc.)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeX templates at Overleaf]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Finding a contact===&lt;br /&gt;
It is worth to call if I haven&#039;t responded to e-mail, messaging applications. Usually when I am in university then there are also meetings with students in addition to lessons. Also there can be checked from SIS (Study Information System) in which room I have lessons and it may be possible to reach me there.&lt;br /&gt;
Usually the phone is muted during lectures, breaks and therefore reaching by phone might not possible. Also during meetings outside lecture time the phone might be still muted. Therefore it would be possible to reach me [[#lessons|from rooms I had lessons]] or [[#office|my office]].&lt;br /&gt;
&lt;br /&gt;
===Diploma thesis===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html main article about supervising diploma thesis]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ additional information collected here] - most of still in Estonian - please use machine translation (e.g. [https://translate.google.com/ Google Translate]).&lt;br /&gt;
Do not hesitate to ask - also supervising in English is possible.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146022</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146022"/>
		<updated>2026-02-06T04:53:36Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Õppejõud */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad Moodle&#039;is, käesoleval viki leht on üldine teave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS: [https://ois2.taltech.ee/uusois/aine/ICA0001 EST] | [https://ois2.taltech.ee/uusois/subject/ICA0001 ENG]&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin.pdf PDF] | [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin-laiendatud.pdf laiendatud]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud, assistendid praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146021</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=146021"/>
		<updated>2026-02-06T01:05:19Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad Moodle&#039;is, käesoleval viki leht on üldine teave.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS: [https://ois2.taltech.ee/uusois/aine/ICA0001 EST] | [https://ois2.taltech.ee/uusois/subject/ICA0001 ENG]&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin.pdf PDF] | [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin-laiendatud.pdf laiendatud]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146018</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146018"/>
		<updated>2026-02-05T02:28:47Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Rühmatöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
Olemas ka võimalus luua sama videokõne sees eraldi alamrühmasid (ingl &#039;&#039;breakout room&#039;&#039;) ja seeläbi rühmatööd videokõne ajal teha.&lt;br /&gt;
* https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
* https://jitsi.support/wiki/jitsi-breakout-rooms-setup/&lt;br /&gt;
[[File:Jitsi-breakout-rooms.png|600px|Jitsi Meeti rühmatöö]]&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146017</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146017"/>
		<updated>2026-02-05T02:24:01Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Rühmatöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
Olemas ka võimalus luua sama videokõne sees eraldi alamrühmasid (ingl &#039;&#039;breakout room&#039;&#039;) ja seeläbi rühmatööd videokõne ajal teha.&lt;br /&gt;
* https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
* https://jitsi.support/wiki/jitsi-breakout-rooms-setup/&lt;br /&gt;
[[File:Jitsi-breakout-rooms.png]]&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Jitsi-breakout-rooms.png&amp;diff=146016</id>
		<title>File:Jitsi-breakout-rooms.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Jitsi-breakout-rooms.png&amp;diff=146016"/>
		<updated>2026-02-05T02:21:12Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: Jitsi rühmatöö (ingl breakout room)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Jitsi rühmatöö (ingl breakout room)&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146015</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146015"/>
		<updated>2026-02-05T01:59:49Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Rühmatöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
Olemas ka võimalus luua sama videokõne sees eraldi alamrühmasid (ingl &#039;&#039;breakout room&#039;&#039;) ja seeläbi rühmatööd videokõne ajal teha.&lt;br /&gt;
* https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
* https://jitsi.support/wiki/jitsi-breakout-rooms-setup/&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146014</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146014"/>
		<updated>2026-02-05T01:59:19Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Rühmatöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
Olemas ka võimalus luua sama videokõne sees eraldi alamrühmasid ja seeläbi rühmatööd videokõne ajal teha.&lt;br /&gt;
* https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
* https://jitsi.support/wiki/jitsi-breakout-rooms-setup/&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146013</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146013"/>
		<updated>2026-02-05T01:58:35Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Rühmatöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
* https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
* https://jitsi.support/wiki/jitsi-breakout-rooms-setup/&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146012</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146012"/>
		<updated>2026-02-05T01:58:08Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Rühmatöö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
- https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
- https://jitsi.support/wiki/jitsi-breakout-rooms-setup/&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146011</id>
		<title>Jitsi Meet</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Jitsi_Meet&amp;diff=146011"/>
		<updated>2026-02-05T01:56:40Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Kasutamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Millega tegemist=&lt;br /&gt;
* [https://jitsi.org/jitsi-meet/ koduleht]&amp;lt;ref&amp;gt;https://jitsi.org/jitsi-meet/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* vabavaraline, veebipõhine veebinaritarkvara&lt;br /&gt;
** veebinar - veebipõhine seminar - igaüks saab oma ekraani jagada ja rääkida&lt;br /&gt;
** saab paigaldada ka oma serverisse&lt;br /&gt;
** võimalus kasutada videokonverentsi, -vestluse vms pidamiseks&lt;br /&gt;
* [https://en.wikipedia.org/wiki/WebRTC WebRTC]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC&amp;lt;/ref&amp;gt; tehnoloogia&lt;br /&gt;
* veebilehitsejapõhine, [https://en.wikipedia.org/wiki/WebRTC#Support toetatud veebilehitsejad]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/WebRTC#Support&amp;lt;/ref&amp;gt;&lt;br /&gt;
** soovitav kasutada [https://en.wikipedia.org/wiki/Chromium_(web_browser) Chromium]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)&amp;lt;/ref&amp;gt;, [https://en.wikipedia.org/wiki/Google_Chrome Google Chrome]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Google_Chrome&amp;lt;/ref&amp;gt; vms analoog&lt;br /&gt;
* võimalus kasutada [https://jitsi.org/blog/introducing-presenter-mode/ esineja režiimi]&amp;lt;ref&amp;gt;https://jitsi.org/blog/introducing-presenter-mode/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* ei piira osalejate arvu - pigem saabub piir ühenduskiiruse vms piirangute tõttu&lt;br /&gt;
* alati on kindel püsilink - tekib esimese kasutaja ühendumisel ja kustub viimase lahkumisel&lt;br /&gt;
* võimalus jagada ekraani, (veebi)kaamera videot&lt;br /&gt;
* olemas ka tekstivestluse võimalus, mille ajalugu kustub kui viimane lahkub&lt;br /&gt;
* vajadusel&lt;br /&gt;
** saab kaitsta salasõnaga&lt;br /&gt;
** ühenduda ka telefoninumbrile helistamise kaudu&lt;br /&gt;
* olemas eraldi nutiseadme rakendused&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=org.jitsi.meet Android]&amp;lt;ref&amp;gt;https://play.google.com/store/apps/details?id=org.jitsi.meet&amp;lt;/ref&amp;gt;&lt;br /&gt;
** [https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes iOS]&amp;lt;ref&amp;gt;https://apps.apple.com/us/app/jitsi-meet/id1165103905?uo=4&amp;amp;at=11l6hc&amp;amp;app=itunes&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://en.gravatar.com/ Gravatari]&amp;lt;ref&amp;gt;https://en.gravatar.com/&amp;lt;/ref&amp;gt; kaudu võimalus oma pilt siduda e-postiga, mida Jitsi Meet näitab kasutajapildina kui summutada veebikaamera&lt;br /&gt;
* sätete alt (&#039;&#039;Settings&#039;&#039;) saab seadistada eestikeelseks (kui uuendamata server siis ei pruugi olla seda võimalust)&lt;br /&gt;
* võimalus määrata, et kõik ühenduvad mikrofon summutatult&lt;br /&gt;
* võimalus liidestada kalendritega (MS Outlook, Google)&lt;br /&gt;
* võimalusi lisandub veelgi...&lt;br /&gt;
=Kasutamine=&lt;br /&gt;
&lt;br /&gt;
Võib olla nõus avalehel pakutud ühenduse nimega. Teine võimalus on avalehel olevasse lahtrisse või ka veebilehitseja aadressireale peale kaldkriipsu kohe ise kirjutada soovitud nimetus.&lt;br /&gt;
&lt;br /&gt;
Sobivad kõik sümbolid, mida internetiaadressides saab kasutada. Ennem teistele aadressi saatmist tasub soovitud nimetus siiski ka ise järgi testida (ka nutiseadmes), et üllatusi vältida.&lt;br /&gt;
&lt;br /&gt;
Ühenduse nimetus tasub valida piisavalt selge ja pikk, et ei oleks väga kerge ära arvata. Sõna asemel kasutada pigem lauset või mõnda pikemat fraasi.&lt;br /&gt;
&lt;br /&gt;
Kui on kasutada Chromium või mõni selle põhjal toimiv veebilehitseja (Google Chrome, Brave, jt), siis saab kasutada ka rakenduse režiimi ja luua spetsiaalne käivitusikoon kiireks ja mugavaks käivitamiseks.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chromium --password-store=basic --app=https://meet.itcollege.ee/ComprehensiveTortoisesRepresentNearly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--password-store=basic&#039;&#039; lülitab välja süsteemse saladuste rakenduse kasutamise Linuxis ja siis ei avata eraldi dialoogiakent, mis küsib saladuste rakenduse jaoks eraldi salasõna sinna salvestatud saladuste kaitseks. Kui ka tuleb see aken ja seal jätta lahtrid tühjaks, siis salasõna ei määrata ja edaspidi saab vaid Enter&#039;iga edasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;--app&#039;&#039; lülitab sisse rakenduse režiimi ehk siis kaotab ära aadressirea, kerimisribad ja jääb mulje, et veebiaadress avanes kui eraldi rakendus&lt;br /&gt;
&lt;br /&gt;
=Rühmatöö=&lt;br /&gt;
https://jitsi.support/how-to/jitsi-breakout-rooms/&lt;br /&gt;
&lt;br /&gt;
=Soovitused=&lt;br /&gt;
* ühendumisel:&lt;br /&gt;
** anda luba nii mikrofoni kui veebikaamera kasutamiseks - neid saab alati summutada. Keelamisel ei pruugi lubade muutmine enam nii lihtne olla. Kui läks midagi valesti siis esialgu lihtsam ja kiirem on sulgeda veebilehitseja ja proovida sama Jitsi aadressiga uuesti.&lt;br /&gt;
** summutada mikrofon ja veebikaamera - avada vaid siis kui on vajadus rääkida - nii välditakse mittevajalike helidega kõneleja ja kuulajate segamist&lt;br /&gt;
* määrata oma nimi (avaekraanil või ka sätete alt) - nii teavad ka teised osalejad kellega on au&lt;br /&gt;
* luua eelnevalt Gravatari konto ja siduda vähemalt ühe oma e-postiga soovitud pilt, mida näidatakse kui veebikaamera on summutatud - nii ollakse teistele nähtav ka siis kui veebikaameraga pilti ei näidata&lt;br /&gt;
&lt;br /&gt;
=Serverid=&lt;br /&gt;
* https://meet.itcollege.ee/ - IT Kolledži server&amp;lt;ref&amp;gt;https://meet.itcollege.ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* https://nc.itcollege.ee/ IT Kolledži serveris olev pilvsalvestus Nextcloud, mille koosseisus on [https://nc.itcollege.ee/apps/spreed/ Talk], mis omakorda sisaldab Jitsi Meeti&amp;lt;ref&amp;gt;https://nc.itcollege.ee/&amp;lt;/ref&amp;gt; See võimaldab kontrollitumat ligipääsu võrreldes käesolevas loetelus toodud vabakasutusega serveriga. Nextcloudi kaudu saab kasutada ka [https://bigbluebutton.org/ BigBlueButtonit], mida on soovitavam kasutada kuna sobib paremini akadeemilisteks tegevusteks.&lt;br /&gt;
* https://duckduckgo.com/?q=jitsi+public+server - avalike serverite otsing&amp;lt;ref&amp;gt;https://duckduckgo.com/?q=jitsi+public+server&amp;lt;/ref&amp;gt; (on pidevas muutumises)&lt;br /&gt;
** https://meet.jit.si/ - levinum avalik server&amp;lt;ref&amp;gt;https://meet.jit.si/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** http://jitsi.random-redirect.de/ juhuvalikuga avalik server&amp;lt;ref&amp;gt;http://jitsi.random-redirect.de/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.init7.net/en/ avalik server &amp;lt;ref&amp;gt;https://meet.init7.net/en/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://meet.nitrokey.com/ avalik server &amp;lt;ref&amp;gt;https://meet.nitrokey.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://ladatano.partidopirata.com.ar/jitsimeter/ avalike Jitsi Meet&#039;i serverite nimekiri koos koormuse kirjeldusega &amp;lt;ref&amp;gt;https://ladatano.partidopirata.com.ar/jitsimeter/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/ Saksamaal, Šveitsis, Austrias asuvad avalikud Jitsi Meet&#039;i serverid &amp;lt;ref&amp;gt;https://vpntester.org/blog/kostenlose-jitsimeet-server-liste/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** https://pads.ccc.de/jitsiliste veel üks nimekiri &amp;lt;ref&amp;gt;https://pads.ccc.de/jitsiliste&amp;lt;/ref&amp;gt;&lt;br /&gt;
* veebilehitseja aadressireal serveriaadressi järele peale kaldkriipsu võib kohe soovitud kanalinimetuse kirjutada ja &#039;&#039;Enter&#039;&#039; vajutada - siis luuakse kohe vastav kanal või kui on olemas siis ühinetakse sellega.&lt;br /&gt;
&lt;br /&gt;
=Oma server=&lt;br /&gt;
Oma server ei sõltu kellestki teisest ja ei ole nii ülekoormatud kui avalikud serverid.&lt;br /&gt;
Jitsi Meeti serveri paigaldamise juhised leiab peatükist &#039;&#039;Installation&#039;&#039;:&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet&lt;br /&gt;
&lt;br /&gt;
Tulenevalt nõudlikest nõuetest komponentide versioonidele võib tekkida soov paigaldada Jitsi Meeti serveri konteinerisse pandud versioon:&lt;br /&gt;
* https://github.com/jitsi/docker-jitsi-meet&lt;br /&gt;
* https://jitsi.org/blog/jitsi-meets-docker/&lt;br /&gt;
&lt;br /&gt;
=Võimalike probleemide lahendamine=&lt;br /&gt;
&lt;br /&gt;
==Õigused==&lt;br /&gt;
&lt;br /&gt;
Ühendumisel on soovitav anda luba mikrofoni ja veebikaamera kasutamiseks. Need saab alati summutada ja taas lubada vajadusel. Hiljem võib õiguste muutmine tülikaks osutuda. Kiire lahendusena tasub esimese võimalusena proovida veebilehitseja sulgeda ja uuesti avada. Muidugi saab õigusi ka aadressirea kaudu muuta - sageli on selle ees vastavad ikoonid (sõltub veebilehitsejast), millest saab jagamise õigusi muuta (näiteks hiire vasaku või parema klahviga neid avades ja sätteid muutes).&lt;br /&gt;
&lt;br /&gt;
==Heli==&lt;br /&gt;
&lt;br /&gt;
Kuna veebipõhine siis värskendamine sageli aitab:&lt;br /&gt;
* &#039;&#039;&#039;CTRL+F5&#039;&#039;&#039; või ka &#039;&#039;&#039;SHIFT+F5&#039;&#039;&#039; (sõltub veebilehitsejast) - vahemälu arvestamata veebilehe uuestilaadimine&lt;br /&gt;
* eelnevalt tasub teha [[#Testimine|helitestimist]]&lt;br /&gt;
&lt;br /&gt;
==Võrk==&lt;br /&gt;
&lt;br /&gt;
Eelnevalt tasub teha [[#Testimine|testimist]], et välistada võimalikud võrguprobleemid.&lt;br /&gt;
&lt;br /&gt;
Kindlasti peab kliendipoolel olema lubatud liiklus Jitsi serveri suunas portidel &#039;&#039;&#039;443/tcp, 4443/tcp, 1000/udp&#039;&#039;&#039;. Kui mingi (korporatiivne) turvavigur udp vahel toimetab siis konkreetse kliendi kvaliteeti oodata ei ole.&lt;br /&gt;
&lt;br /&gt;
Võimalusel tasub olla ühenduses kaabliga ja mitte üle õhu. Kiirus 128 kbps alla ja üles võiks olla kasutatava kvaliteediga videovestluse jaoks piisav. Kui kiirus on ebapiisav, tasub esimese asjana video välja lülitada ja jätta vaid heli.&lt;br /&gt;
&lt;br /&gt;
==Ülekoormus==&lt;br /&gt;
Kui tegemist ühesuunalise üritusega kus suur vaatajate arv siis saab ülekoormust vältida YouTube LIVE&#039;i ülekandega, mida ka Jitsi Meet toetab. Nii ei pea Jitsi aadressi üldse jagama vaid ainult YouTube&#039;i otseülekande aadressi. Võimalik luua püsikood ülekandeks, et ei peaks iga kord uut koodi YouTube&#039;is looma ja kliendipoolel sisestama.&lt;br /&gt;
&lt;br /&gt;
==Segaja==&lt;br /&gt;
Võimaliku veebinari, videokonverentsi segaja vältimise võimalused:&lt;br /&gt;
* kasutada [[#Modereeritud versioon|modereeritud versiooni]]&lt;br /&gt;
* kasutada uut [https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100 Lobby võimalust]&amp;lt;ref&amp;gt;https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100&amp;lt;/ref&amp;gt; - ligi saab vaid see keda moderaator lubab&lt;br /&gt;
* kasutada [https://jitsi.org/blog/e2ee/ täiendavat otspunktkrüpteerimise võimalust]&amp;lt;ref&amp;gt;https://jitsi.org/blog/e2ee/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* kaitsta sessioon salasõnaga - siis saavad ühenduda vaid need kes teavad salasõna. Mõistlik on salasõna mitte edastada avalikult ja paluda ka osalejatelt mõistvat suhtumist ning mitte levitada ligipääsuandmeid ehk siis vestluse aadressi ja salasõna.&lt;br /&gt;
** Kui segaja siiski teab salasõna siis:&lt;br /&gt;
** vahetada salasõna (&#039;&#039;NB! Jälgi, et ei jaga oma Jitsi Meeti akent kuna siis on muudetud salasõna segajale näha!&#039;&#039;)&lt;br /&gt;
** seejärel visata segaja välja&lt;br /&gt;
** olemasolevad kasutajad jäävad ühendusse&lt;br /&gt;
** segaja ei saa enam ühenduda kuna salasõna on muutunud&lt;br /&gt;
&lt;br /&gt;
Tasub ka uurida:&lt;br /&gt;
* [https://jitsi.org/security/ täiendatavalt turvalisuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/security/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://jitsi.org/blog/category/security-and-privacy/ lisateave turvalisuse ja privaatsuse kohta]&amp;lt;ref&amp;gt;https://jitsi.org/blog/category/security-and-privacy/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md turva- ja privaatsusprobleemidest teatada siin]&amp;lt;ref&amp;gt;https://github.com/jitsi/jitsi-meet/blob/master/SECURITY.md&amp;lt;/ref&amp;gt;&lt;br /&gt;
Tulevikus võib [[#Täiendavad võimalused|veelgi võimalusi lisanduda]].&lt;br /&gt;
&lt;br /&gt;
=Salvestamine=&lt;br /&gt;
* veebilehitseja laienduse kaudu arvutisse: [https://recordrtc.org/ RecordRTC]&amp;lt;ref&amp;gt;https://recordrtc.org/&amp;lt;/ref&amp;gt;, [https://chrome.google.com/webstore/detail/recordrtc/ndcljioonkecdnaaihodjgiliohngojp Chrome&#039;i laiendus], ([https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording GitHubi varamu]&amp;lt;ref&amp;gt;https://github.com/muaz-khan/Chrome-Extensions/tree/master/screen-recording&amp;lt;/ref&amp;gt;). Uurida võib veel ka [https://chrome.google.com/webstore/detail/vimeo-record-screen-webca/ejfmffkmeigkphomnpabpdabfddeadcb Vimeo Record laiendust].&lt;br /&gt;
* [https://www.youtube.com/live_dashboard YouTube LIVE]&amp;lt;ref&amp;gt;https://www.youtube.com/live_dashboard&amp;lt;/ref&amp;gt; (vt [https://support.google.com/youtube/answer/2474026 ka juhist] &amp;lt;ref&amp;gt;https://support.google.com/youtube/answer/2474026&amp;lt;/ref&amp;gt;) - otseülekanne koos automaatse salvestamisega (vaatajakoormus langeb YouTube&#039;i serveritele), [https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/ siin ka Jitsi juhis YouTube&#039;i ülekande tegemiseks]&amp;lt;ref&amp;gt;https://jitsi.org/blog/live-streaming-with-jitsi-and-youtube/&amp;lt;/ref&amp;gt;&lt;br /&gt;
** YouTube&#039;i otseülekandeid saab teha kasutajaga, mis on isikustatud ehk siis seotud telefoninumbriga - aastas saab ühe numbriga kuni kaks kontot siduda (muidugi võivad tingimused ka muutuda). Probleeme võib olla salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama. Juuni 2020 seisuga ei saa salvestust pausile panna.&lt;br /&gt;
* [https://www.dropbox.com/ Dropbox]&amp;lt;ref&amp;gt;https://www.dropbox.com/&amp;lt;/ref&amp;gt; - salvestamine ([https://en.wikipedia.org/wiki/MPEG-4_Part_14 MP4]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/MPEG-4_Part_14&amp;lt;/ref&amp;gt;-vormingus). Juuni 2020 seisuga ei saa salvestust pausile panna. Lisaks võib olla probleeme salvestamise käivitamisega kuna virtuaalne salvestusseade võib olla hõivatud. Seega tasub aegsasti seda käivitada kui üritus peab kindlal ajal algama.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Comparison_of_screencasting_software ekraanisalvestustarkvara]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Comparison_of_screencasting_software&amp;lt;/ref&amp;gt; - siin võib olla probleemiks, et ei saa salvestada samal ajal nii enda kui osalejate kõnelemist kuid tasub eelnevalt testida. Üldjuhul saab määrata kindla ala ekraanist, mida salvestatakse. Üldjuhul annab võimaluse salvestust ka pausile panna.&lt;br /&gt;
** [https://obsproject.com/ OBS Studio]&amp;lt;ref&amp;gt;https://obsproject.com/&amp;lt;/ref&amp;gt; - sobib erinevatele OSidele, võimaldab omakorda ka otseülekannet YouTube&#039;i ning mujalegi teha.&lt;br /&gt;
** [https://alternativeto.net/list/1088/screen-recorders-linux- GNU/Linuxile, mitmed neist sobivad ka teistele OSidele]&amp;lt;ref&amp;gt;https://alternativeto.net/list/1088/screen-recorders-linux-&amp;lt;/ref&amp;gt; (nt [https://en.wikipedia.org/wiki/SimpleScreenRecorder SimpleScreenRecorder]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/SimpleScreenRecorder&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/simplescreenrecorder/?platform=linux alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/simplescreenrecorder/?platform=linux&amp;lt;/ref&amp;gt;)&lt;br /&gt;
** MS Windowsile: [https://mathewsachin.github.io/Captura/ Captura]&amp;lt;ref&amp;gt;https://mathewsachin.github.io/Captura/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/captura/?platform=windows alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/captura/?platform=windows&amp;lt;/ref&amp;gt;&lt;br /&gt;
** macOSile: [https://getkap.co/ Kap]&amp;lt;ref&amp;gt;https://getkap.co/&amp;lt;/ref&amp;gt; ja [https://alternativeto.net/software/kap/?platform=mac alternatiivid]&amp;lt;ref&amp;gt;https://alternativeto.net/software/kap/?platform=mac&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilisem salvestatud video lõikamine näiteks programmide [https://en.wikipedia.org/wiki/Avidemux Avidemux]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Avidemux&amp;lt;/ref&amp;gt;, [https://mifi.github.io/lossless-cut/ LosslessCut]&amp;lt;ref&amp;gt;https://mifi.github.io/lossless-cut/&amp;lt;/ref&amp;gt;, jne abil. Kes vajab põhjalikumat vahendit siis näiteks  [https://en.wikipedia.org/wiki/Shotcut Shotcut]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Shotcut&amp;lt;/ref&amp;gt; vms [https://alternativeto.net/software/shotcut/ analoog]&amp;lt;ref&amp;gt;https://alternativeto.net/software/shotcut/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Rakenduse režiim veebilehitsejas=&lt;br /&gt;
Chromiumi ja [https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium sellepõhiste veebilehitsejate]&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium&amp;lt;/ref&amp;gt; puhul saab käivitada rakenduserežiimis (aadressi-, kerimisriba peidetud) ehk siis näiteks käivituskäsuga&lt;br /&gt;
 chromium --app=URL&lt;br /&gt;
...ja nii saab luua Jitsi Meeti otsekäivitusikoonid töölauale, tegumiribale, peamenüüsse kiireks kindla aadressi käivitamiseks sõltumata kasutatavast operatsioonisüsteemist laua-, sülearvutis.&lt;br /&gt;
Veel üks [https://alternativeto.net/category/browsers/chromium-based/ nimekiri Chromiumi-põhistest veebilehitsejatest]&amp;lt;ref&amp;gt;https://alternativeto.net/category/browsers/chromium-based/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Eraldi rakendused=&lt;br /&gt;
* https://github.com/jitsi/jitsi-meet-electron - MS Windows, macOS, GNU/Linux (AppImage, *.deb, jne)&lt;br /&gt;
* [https://aur.archlinux.org/packages/jitsi-meet-desktop-bin/ Arch Linuxile ja selle põhjal tehtud distrotele]&lt;br /&gt;
* [https://flathub.org/apps/details/org.jitsi.jitsi-meet Flatpaki konteinerrakendus paljudele Linuxi distrotele]&lt;br /&gt;
* [https://jitsi.org/downloads/ nutiseadmete rakendused]&lt;br /&gt;
=Modereeritud versioon=&lt;br /&gt;
Avalik server https://moderated.jitsi.net/&lt;br /&gt;
&lt;br /&gt;
Siin saab olla üks või mitu moderaatorit ja teised on kasutaja õigustes.&lt;br /&gt;
&lt;br /&gt;
Lisateave paigaldamiseks, seadistamiseks:&lt;br /&gt;
* https://github.com/jitsi/moderated-meetings&lt;br /&gt;
* https://community.jitsi.org/t/how-to-enable-moderated-meet/104947&lt;br /&gt;
&lt;br /&gt;
=Täiendavad võimalused=&lt;br /&gt;
* Täiendavate võimaluste kohta kirjutatakse [https://jitsi.org/blog/ Jitsi ajaveebis]&amp;lt;ref&amp;gt;https://jitsi.org/blog/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [https://fslab.de/jitsi/room-ownership Huvitav lahendus ühes Saksamaa ülikoolis]&amp;lt;ref&amp;gt;https://fslab.de/jitsi/room-ownership&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisaks toimub aeg-ajalt ka ühisprogrammeerimisüritusi:&lt;br /&gt;
* [https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards 2021.aprillis toimunud ürituse tulemused] &amp;lt;ref&amp;gt;https://joinup.ec.europa.eu/collection/sharing-and-reuse-it-solutions/news/jitsi-hackathon-eu1025k-awards&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testimine=&lt;br /&gt;
Ühendust ja heliseadmeid saab testida:&lt;br /&gt;
* https://test.webrtc.org/ - üldine WebRTC test&amp;lt;ref&amp;gt;https://test.webrtc.org/&amp;lt;/ref&amp;gt; (sh võrk)&lt;br /&gt;
* https://janus.conf.meetecho.com/echotest.html - helitest&amp;lt;ref&amp;gt;https://janus.conf.meetecho.com/echotest.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Seminar=&lt;br /&gt;
25.11.2021 toimus Tallinna Tehnikakõrgkooli Didaktikarühma seminar Jitsi Meeti teemal: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-11-25_Jitsi-Meet/2021-11-25_Jitsi-Meet.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
Lisaks tasub vaadata ka 14.10.2021 toimunud Tallinna Tehnikakõrgkooli Didaktikarühma OBS Studio seminari, mis aitab kaasa ka Jitsi Meeti vestluste salvestamisele kui ka virtuaalkaamera kasutamisele Jitsi Meetis: [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.html HTML], [https://enos.itcollege.ee/~edmund/it-didaktika/2021-10-14_OBS-Studio/2021-10-14_OBS-Studio.sozi.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=Viited=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Vaba_Tarkvara_Teadmuskeskus]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=145931</id>
		<title>User:Edmund</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=145931"/>
		<updated>2025-12-22T19:16:11Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* LaTeX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Edmund Laugasson =&lt;br /&gt;
* [[#eesti keeles|eesti keeles]]&lt;br /&gt;
* [[#in English|in English]]&lt;br /&gt;
&lt;br /&gt;
==eesti keeles==&lt;br /&gt;
* lektor TalTech IT Kolledžis&lt;br /&gt;
* haridustase: magister (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi_kasutajad_TalTech_IT_Kolled%C5%BEi_personali_seas aktiivne Linuxi-kasutaja]&lt;br /&gt;
* [https://taltech.ee/kontaktid/it-kolledz/edmund-laugasson nimeline otsing ülikooli veebis]&lt;br /&gt;
&lt;br /&gt;
===suhtlusrakendused===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], vt [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegramm.html programmist täpsemalt]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [[keybase|lisateave]]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ rakendusest]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
teised suhtlusviisid&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ rohkem turvalisemad]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ vähem turvalisemad]&lt;br /&gt;
* [https://www.securemessagingapps.com/ lisainfo suhtlusrakenduste turvalisuse ja privaatsuse kohta]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kasutajat ei ole vaja näiteks [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] puhul ja see ka veebipõhine. Jitsi Meet olemas ka IT Kolledži serveris https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-post===&lt;br /&gt;
&#039;&#039;&#039;NB! Kui vähegi võimalik, siis palun failid edastada&#039;&#039;&#039;&lt;br /&gt;
* [[#pilv|pilvsalvestuse]] (eelistatud)&lt;br /&gt;
* [[#suhtlusrakendused|suhtlusrakenduse]]&lt;br /&gt;
... kaudu. Siis piisab, kui pilvsalvestuses jagatud kataloogi link edastada eelistatult suhtlusrakenduse või siis ka e-posti teel.&lt;br /&gt;
&lt;br /&gt;
Näiteks ülikoolis on kasutusel Uni-ID, mis on ühendatud MS Teamsiga. Seega võib vabalt seda kasutada failide edastamiseks, kataloogi jagamiseks, jne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldiselt e-post ei ole failivahetuseks mõeldud.&#039;&#039;&#039; Seda enam, et tihti tekib vajadus ka faile muuta, mistõttu tuleb siis fail(id) uuesti saata. Iga saatmisega tekib kahes kohas koopiad mittevajalikest failidest: nii saatja kui saaja postkastis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
Võimalus saata krüpteeritud e-kiri:&amp;lt;br&amp;gt;&lt;br /&gt;
sõrmejälg ja avaliku võtme allalaadimine: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Krüpteerimata e-kiri on sisuliselt avalik kiri!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===telefon===&lt;br /&gt;
* sisetelefon 842&lt;br /&gt;
* telefon laual +3726285842&lt;br /&gt;
* telefon taskus +37258659428&lt;br /&gt;
&lt;br /&gt;
===videokõne===&lt;br /&gt;
* Jitsi Meet (eelistatud, saab ka ekraani jagada)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (eelistatud)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (varuvariant)&lt;br /&gt;
** ka mistahes muu kanali nime võib valida - palun mulle siis ka öelda (nt suhtlusrakenduse kaudu)&lt;br /&gt;
* sobib ka teine mõni rakendus kuid siis eraldi kokkuleppel&lt;br /&gt;
&lt;br /&gt;
===kabinet===&lt;br /&gt;
* 516 (5.korrus)&lt;br /&gt;
&lt;br /&gt;
===tunnid===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 Tunniplaani leiab siit aadressilt.]&lt;br /&gt;
&lt;br /&gt;
===pilv===&lt;br /&gt;
Jagamiseks pilvsalvestuses, ka suhtlemisel:&lt;br /&gt;
* edmund punkt laugasson ätt gmail punkt com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com/ Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
*  Microsofti pilv&lt;br /&gt;
** [https://nc.itcollege.ee IT Kolledži Nextcloud] (soovitav) - edlaug ätt taltech punkt ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug ätt ttu punkt ee (klient Linuxile: [https://github.com/IsmaelMartinez/teams-for-linux/releases mitteametlik]| [https://teams.microsoft.com/downloads ametlik (sh veebipõhine)])&lt;br /&gt;
* [[Keybase]] - lisaks suhtlemisele ka suur võrguketas + krüpteeritud Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
* Overleafi konto: edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Overleafi sõbralink (annab lisakettaruumi jne)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeXi mallid Overleafis]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Kontakti leidmine===&lt;br /&gt;
Tasub helistada kui e-postile, suhtlusrakendustele vastata ei ole jõudnud. Üldiselt kui ülikoolis olen siis on lisaks tundidele veel tudengitega kohtumised. Tasub ka ÕIS&#039;ist (Õppeinfosüsteem) uurida, mis ruumis minu tunnid toimuvad ja sealt võib ka mind kätte saada.&lt;br /&gt;
Üldiselt on telefon hääletu peal tundide, vahetundide ajal ja seetõttu ei pruugi olla võimalik telefoni teel kätte saada sel ajal. Teinekord kui on tunnivälisel ajal tudengitega kohtumised siis telefon on endiselt hääletu peal. Seetõttu leiab mind üles [[#tunnid|ruumidest kus tunnid on toimunud]] või ka [[#kabinet|minu kabinetist]].&lt;br /&gt;
&lt;br /&gt;
===Diplomitöö===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html diplomitöö]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ täiendav teave]&lt;br /&gt;
&lt;br /&gt;
==in English==&lt;br /&gt;
* lecturer in TalTech IT College&lt;br /&gt;
* education: Master of Science (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi-kasutajad_EIK_personali_seas active Linux user]&lt;br /&gt;
* [https://taltech.ee/en/contacts/it-college/edmund-laugasson search by name from university web]&lt;br /&gt;
&lt;br /&gt;
===messaging applications===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], see [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegram.html more about the program]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [https://keybase.io/download download the program]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ about the app]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
other communication ways&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ more secure]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ less secure]&lt;br /&gt;
* [https://www.securemessagingapps.com/ additional information about messaging apps security and privacy]&lt;br /&gt;
&lt;br /&gt;
E.g. no user needed in case of [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] and it is also web-based.  Jitsi Meet exist also at IT College server https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-mail===&lt;br /&gt;
&#039;&#039;&#039;NB! Whenever possible, please send files via&#039;&#039;&#039;&lt;br /&gt;
* [[#cloud|cloud storage]] (preferred)&lt;br /&gt;
* [[#messaging_applications|messaging applications]]&lt;br /&gt;
Then you can just send the shared folder link, preferally via messaging applications or also via email.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E.g. in university we have Uni-ID, which is connected with MS Teams. So, you can freely use it to send files, share folder, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Email is not meant for file exchange in general.&#039;&#039;&#039; All the more so because you often need to change the files, so you have to resubmit the file(s). Each send creates copies of unnecessary files in two places: in both the sender&#039;s and recipient&#039;s mailboxes...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
An option to send encrypted e-mail:&amp;lt;br&amp;gt;&lt;br /&gt;
fingerprint and public key download: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Unencrypted e-mail is basically a public one!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===phone===&lt;br /&gt;
* internal phone 842&lt;br /&gt;
* phone on the desk +3726285842&lt;br /&gt;
* phone in the pocket +37258659428&lt;br /&gt;
===video call===&lt;br /&gt;
* Jitsi Meet (preferred, also screen sharing supported)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (preferred)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (fallback)&lt;br /&gt;
** also any other channel name could be chosen - please tell also to me (e.g. via messaging app)&lt;br /&gt;
* also other app could suit but with separate agreement&lt;br /&gt;
&lt;br /&gt;
===office===&lt;br /&gt;
* 516 (5th floor)&lt;br /&gt;
&lt;br /&gt;
===lessons===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 My lessons can be found from here.]&lt;br /&gt;
&lt;br /&gt;
===cloud===&lt;br /&gt;
For sharing via cloud storages, also communicating:&lt;br /&gt;
* edmund dot laugasson specialsign gmail dot com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
* Microsoft cloud&lt;br /&gt;
** [https://nc.itcollege.ee IT College Nextcloud] (suggested) - edlaug specialsign taltech dot ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug specialsign ttu dot ee (client for Linux: [https://github.com/IsmaelMartinez/teams-for-linux/releases unofficial]| [https://teams.microsoft.com/downloads official (incl. web-based)])&lt;br /&gt;
* [[Keybase]] - in addition of communication also large network drive + encrypted Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
* Account at Overleaf: edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Friend link at Overleaf (gives additional storage space, etc.)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeX templates at Overleaf]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Finding a contact===&lt;br /&gt;
It is worth to call if I haven&#039;t responded to e-mail, messaging applications. Usually when I am in university then there are also meetings with students in addition to lessons. Also there can be checked from SIS (Study Information System) in which room I have lessons and it may be possible to reach me there.&lt;br /&gt;
Usually the phone is muted during lectures, breaks and therefore reaching by phone might not possible. Also during meetings outside lecture time the phone might be still muted. Therefore it would be possible to reach me [[#lessons|from rooms I had lessons]] or [[#office|my office]].&lt;br /&gt;
&lt;br /&gt;
===Diploma thesis===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html main article about supervising diploma thesis]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ additional information collected here] - most of still in Estonian - please use machine translation (e.g. [https://translate.google.com/ Google Translate]).&lt;br /&gt;
Do not hesitate to ask - also supervising in English is possible.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=145930</id>
		<title>User:Edmund</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=User:Edmund&amp;diff=145930"/>
		<updated>2025-12-22T19:15:43Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* LaTeX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Edmund Laugasson =&lt;br /&gt;
* [[#eesti keeles|eesti keeles]]&lt;br /&gt;
* [[#in English|in English]]&lt;br /&gt;
&lt;br /&gt;
==eesti keeles==&lt;br /&gt;
* lektor TalTech IT Kolledžis&lt;br /&gt;
* haridustase: magister (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi_kasutajad_TalTech_IT_Kolled%C5%BEi_personali_seas aktiivne Linuxi-kasutaja]&lt;br /&gt;
* [https://taltech.ee/kontaktid/it-kolledz/edmund-laugasson nimeline otsing ülikooli veebis]&lt;br /&gt;
&lt;br /&gt;
===suhtlusrakendused===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], vt [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegramm.html programmist täpsemalt]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [[keybase|lisateave]]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ rakendusest]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
teised suhtlusviisid&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ rohkem turvalisemad]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ vähem turvalisemad]&lt;br /&gt;
* [https://www.securemessagingapps.com/ lisainfo suhtlusrakenduste turvalisuse ja privaatsuse kohta]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kasutajat ei ole vaja näiteks [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] puhul ja see ka veebipõhine. Jitsi Meet olemas ka IT Kolledži serveris https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-post===&lt;br /&gt;
&#039;&#039;&#039;NB! Kui vähegi võimalik, siis palun failid edastada&#039;&#039;&#039;&lt;br /&gt;
* [[#pilv|pilvsalvestuse]] (eelistatud)&lt;br /&gt;
* [[#suhtlusrakendused|suhtlusrakenduse]]&lt;br /&gt;
... kaudu. Siis piisab, kui pilvsalvestuses jagatud kataloogi link edastada eelistatult suhtlusrakenduse või siis ka e-posti teel.&lt;br /&gt;
&lt;br /&gt;
Näiteks ülikoolis on kasutusel Uni-ID, mis on ühendatud MS Teamsiga. Seega võib vabalt seda kasutada failide edastamiseks, kataloogi jagamiseks, jne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Üldiselt e-post ei ole failivahetuseks mõeldud.&#039;&#039;&#039; Seda enam, et tihti tekib vajadus ka faile muuta, mistõttu tuleb siis fail(id) uuesti saata. Iga saatmisega tekib kahes kohas koopiad mittevajalikest failidest: nii saatja kui saaja postkastis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
Võimalus saata krüpteeritud e-kiri:&amp;lt;br&amp;gt;&lt;br /&gt;
sõrmejälg ja avaliku võtme allalaadimine: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Krüpteerimata e-kiri on sisuliselt avalik kiri!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===telefon===&lt;br /&gt;
* sisetelefon 842&lt;br /&gt;
* telefon laual +3726285842&lt;br /&gt;
* telefon taskus +37258659428&lt;br /&gt;
&lt;br /&gt;
===videokõne===&lt;br /&gt;
* Jitsi Meet (eelistatud, saab ka ekraani jagada)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (eelistatud)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (varuvariant)&lt;br /&gt;
** ka mistahes muu kanali nime võib valida - palun mulle siis ka öelda (nt suhtlusrakenduse kaudu)&lt;br /&gt;
* sobib ka teine mõni rakendus kuid siis eraldi kokkuleppel&lt;br /&gt;
&lt;br /&gt;
===kabinet===&lt;br /&gt;
* 516 (5.korrus)&lt;br /&gt;
&lt;br /&gt;
===tunnid===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 Tunniplaani leiab siit aadressilt.]&lt;br /&gt;
&lt;br /&gt;
===pilv===&lt;br /&gt;
Jagamiseks pilvsalvestuses, ka suhtlemisel:&lt;br /&gt;
* edmund punkt laugasson ätt gmail punkt com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com/ Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
*  Microsofti pilv&lt;br /&gt;
** [https://nc.itcollege.ee IT Kolledži Nextcloud] (soovitav) - edlaug ätt taltech punkt ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug ätt ttu punkt ee (klient Linuxile: [https://github.com/IsmaelMartinez/teams-for-linux/releases mitteametlik]| [https://teams.microsoft.com/downloads ametlik (sh veebipõhine)])&lt;br /&gt;
* [[Keybase]] - lisaks suhtlemisele ka suur võrguketas + krüpteeritud Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
* Overleafi konto: edmund punkt laugasson ätt taltech punkt ee&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Overleafi sõbralink (annab lisakettaruumi jne)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeXi mallid Overleafis]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Kontakti leidmine===&lt;br /&gt;
Tasub helistada kui e-postile, suhtlusrakendustele vastata ei ole jõudnud. Üldiselt kui ülikoolis olen siis on lisaks tundidele veel tudengitega kohtumised. Tasub ka ÕIS&#039;ist (Õppeinfosüsteem) uurida, mis ruumis minu tunnid toimuvad ja sealt võib ka mind kätte saada.&lt;br /&gt;
Üldiselt on telefon hääletu peal tundide, vahetundide ajal ja seetõttu ei pruugi olla võimalik telefoni teel kätte saada sel ajal. Teinekord kui on tunnivälisel ajal tudengitega kohtumised siis telefon on endiselt hääletu peal. Seetõttu leiab mind üles [[#tunnid|ruumidest kus tunnid on toimunud]] või ka [[#kabinet|minu kabinetist]].&lt;br /&gt;
&lt;br /&gt;
===Diplomitöö===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html diplomitöö]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ täiendav teave]&lt;br /&gt;
&lt;br /&gt;
==in English==&lt;br /&gt;
* lecturer in TalTech IT College&lt;br /&gt;
* education: Master of Science (MSc)&lt;br /&gt;
* [https://wiki.itcollege.ee/index.php/Aktiivsed_Linuxi-kasutajad_EIK_personali_seas active Linux user]&lt;br /&gt;
* [https://taltech.ee/en/contacts/it-college/edmund-laugasson search by name from university web]&lt;br /&gt;
&lt;br /&gt;
===messaging applications===&lt;br /&gt;
* [https://teams.microsoft.com/ MS Teams]&lt;br /&gt;
* [https://telegram.me/edmundlaugasson Telegram], see [http://enos.itcollege.ee/~edmund/materials/Telegram/Telegram.html more about the program]&lt;br /&gt;
* [https://keybase.io/edmundlaugasson Keybase], [https://keybase.io/download download the program]&lt;br /&gt;
* [https://cyph.me/edmundlaugasson Cyph], [https://www.cyph.com/ about the app]&lt;br /&gt;
* [https://signal.org/ Signal]&lt;br /&gt;
&lt;br /&gt;
other communication ways&lt;br /&gt;
* [https://edmund.laugasson.net/Secure-ways/ more secure]&lt;br /&gt;
* [https://edmund.laugasson.net/Insecure-ways/ less secure]&lt;br /&gt;
* [https://www.securemessagingapps.com/ additional information about messaging apps security and privacy]&lt;br /&gt;
&lt;br /&gt;
E.g. no user needed in case of [http://enos.itcollege.ee/~edmund/materials/videoconference.txt Jitsi Meet] and it is also web-based.  Jitsi Meet exist also at IT College server https://meet.itcollege.ee/&lt;br /&gt;
&lt;br /&gt;
===e-mail===&lt;br /&gt;
&#039;&#039;&#039;NB! Whenever possible, please send files via&#039;&#039;&#039;&lt;br /&gt;
* [[#cloud|cloud storage]] (preferred)&lt;br /&gt;
* [[#messaging_applications|messaging applications]]&lt;br /&gt;
Then you can just send the shared folder link, preferally via messaging applications or also via email.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E.g. in university we have Uni-ID, which is connected with MS Teams. So, you can freely use it to send files, share folder, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Email is not meant for file exchange in general.&#039;&#039;&#039; All the more so because you often need to change the files, so you have to resubmit the file(s). Each send creates copies of unnecessary files in two places: in both the sender&#039;s and recipient&#039;s mailboxes...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
An option to send encrypted e-mail:&amp;lt;br&amp;gt;&lt;br /&gt;
fingerprint and public key download: [http://edmund.laugasson.net/keys/public-key.asc 1E52 66BE EE55 BF3F 8032 E1AE 648A 604E 4B32 7997]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;NB! Unencrypted e-mail is basically a public one!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===phone===&lt;br /&gt;
* internal phone 842&lt;br /&gt;
* phone on the desk +3726285842&lt;br /&gt;
* phone in the pocket +37258659428&lt;br /&gt;
===video call===&lt;br /&gt;
* Jitsi Meet (preferred, also screen sharing supported)&lt;br /&gt;
** https://meet.itcollege.ee/ICO-edmund (preferred)&lt;br /&gt;
** https://meet.jit.si/ICO-edmund (fallback)&lt;br /&gt;
** also any other channel name could be chosen - please tell also to me (e.g. via messaging app)&lt;br /&gt;
* also other app could suit but with separate agreement&lt;br /&gt;
&lt;br /&gt;
===office===&lt;br /&gt;
* 516 (5th floor)&lt;br /&gt;
&lt;br /&gt;
===lessons===&lt;br /&gt;
&lt;br /&gt;
[https://tunniplaan.taltech.ee/#/public/teacher/13783 My lessons can be found from here.]&lt;br /&gt;
&lt;br /&gt;
===cloud===&lt;br /&gt;
For sharing via cloud storages, also communicating:&lt;br /&gt;
* edmund dot laugasson specialsign gmail dot com&lt;br /&gt;
** [https://drive.google.com/ Google Drive]&lt;br /&gt;
** [https://hangouts.google.com Google Hangouts]&lt;br /&gt;
** [https://cmap.ihmc.us/cmaptools/ Cmap Tools]&lt;br /&gt;
** [https://zoom.us/ Zoom]&lt;br /&gt;
* Microsoft cloud&lt;br /&gt;
** [https://nc.itcollege.ee IT College Nextcloud] (suggested) - edlaug specialsign taltech dot ee&lt;br /&gt;
** [https://onedrive.live.com/ MS OneDrive] - edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
** [https://teams.microsoft.com/ MS Teams] - edlaug specialsign ttu dot ee (client for Linux: [https://github.com/IsmaelMartinez/teams-for-linux/releases unofficial]| [https://teams.microsoft.com/downloads official (incl. web-based)])&lt;br /&gt;
* [[Keybase]] - in addition of communication also large network drive + encrypted Git&lt;br /&gt;
** https://keybase.io/edmundlaugasson&lt;br /&gt;
* [https://www.notion.so/ Notion]&lt;br /&gt;
** edmund dot laugasson specialsign taltech dot ee&lt;br /&gt;
&lt;br /&gt;
===LaTeX===&lt;br /&gt;
&lt;br /&gt;
* Account at Overleaf: edmund dot laugasson specialsign gmail dot com&lt;br /&gt;
* [https://www.overleaf.com/signup?ref=d20408f2945e Friend link at Overleaf (gives additional storage space, etc.)]&lt;br /&gt;
* [https://www.overleaf.com/latex/templates/tagged/taltech LaTeX templates at Overleaf]&lt;br /&gt;
* [https://kutt.it/academic-writing workshop &amp;quot;Tools for collaborative academic writing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Finding a contact===&lt;br /&gt;
It is worth to call if I haven&#039;t responded to e-mail, messaging applications. Usually when I am in university then there are also meetings with students in addition to lessons. Also there can be checked from SIS (Study Information System) in which room I have lessons and it may be possible to reach me there.&lt;br /&gt;
Usually the phone is muted during lectures, breaks and therefore reaching by phone might not possible. Also during meetings outside lecture time the phone might be still muted. Therefore it would be possible to reach me [[#lessons|from rooms I had lessons]] or [[#office|my office]].&lt;br /&gt;
&lt;br /&gt;
===Diploma thesis===&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/diplomitoo/diplomitoo_diploma-thesis.html main article about supervising diploma thesis]&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/diplomitoo/ additional information collected here] - most of still in Estonian - please use machine translation (e.g. [https://translate.google.com/ Google Translate]).&lt;br /&gt;
Do not hesitate to ask - also supervising in English is possible.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=145831</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=145831"/>
		<updated>2025-11-25T04:44:09Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad käesoleval viki lehel, osa materjale ja testid on Moodle&#039;i kursusel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS: [https://ois2.taltech.ee/uusois/aine/ICA0001 EST] | [https://ois2.taltech.ee/uusois/subject/ICA0001 ENG]&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin.pdf PDF] | [https://enos.itcollege.ee/~edmund/osadmin/est/ainekaart/OSadmin-laiendatud.pdf laiendatud]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=145830</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=145830"/>
		<updated>2025-11-25T02:21:32Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad käesoleval viki lehel, osa materjale ja testid on Moodle&#039;i kursusel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS: [https://ois2.taltech.ee/uusois/aine/ICA0001 EST] | [https://ois2.taltech.ee/uusois/subject/ICA0001 ENG]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=145829</id>
		<title>Category:Operatsioonisüsteemide administreerimine ja sidumine</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:Operatsioonis%C3%BCsteemide_administreerimine_ja_sidumine&amp;diff=145829"/>
		<updated>2025-11-25T02:19:52Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Operatsioonisüsteemid ja nende haldamine&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Operating systems and its management&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0001&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole. Seeläbi anname maksimaalset aega praktilisteks tegevusteks.&lt;br /&gt;
&lt;br /&gt;
Kursus annab põhiteadmised ja praktilised oskused olulisemateks tegevusteks operatsioonisüsteemide haldamisel. Käsitletakse kasutajate, failisüsteemide, protsesside ja tarkvara haldamist, õiguste andmist, seadmete seadistamist, ketaste haldamist, operatsioonisüsteemi paigaldamist ja haldamist, varunduse ja taastamise korraldamist, turvaprobleeme ning võrguteenuste seadistamist.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse oskused ühe konkreetse süsteemi abil.&lt;br /&gt;
&lt;br /&gt;
Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja teavet leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad käesoleval viki lehel, osa materjale ja testid on Moodle&#039;i kursusel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Õppekeel: eesti (mõned materjalid võivad siiski ka inglise keeles olla)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The subject in English is taught as a separate course.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aines on pandud suurt rõhku praktilisele tööle.&#039;&#039;&#039;&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur teab:&lt;br /&gt;
* Operatsioonisüsteemide haldamise põhialuseid&lt;br /&gt;
&lt;br /&gt;
Aine läbinud õppur oskab:&lt;br /&gt;
* Hallata kasutajaid ja gruppe&lt;br /&gt;
* Töötada failide ja kataloogidega (varundada, seada õiguseid)&lt;br /&gt;
* Hallata ja paigaldada tarkvara&lt;br /&gt;
* Hallata servereid&lt;br /&gt;
* Hallata kettaid (luua, muuta kettajagusid ja saalealasid)&lt;br /&gt;
* Suudab leida üles programmide sätetefailid ja logifailid, ning lahendada lihtsamaid probleeme, mis süsteemide halduses igapäevaselt esile kerkivad&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart&lt;br /&gt;
** ÕIS: [https://ois2.taltech.ee/aine/ICA0001 EST] | [https://ois2.taltech.ee/subject/ICA0001 ENG]&lt;br /&gt;
* Tunniplaan: [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodi ICA0001 alusel ning jälgida ka oma õpperühma kuna sama ainekoodiga võib rohkem õppeaineid olla.&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]] ja lisaks abiõppejõud praktikumide läbiviimisel.&lt;br /&gt;
&lt;br /&gt;
=Lisateave=&lt;br /&gt;
&lt;br /&gt;
Täpsemalt Moodle&#039;i kursusel, mis on igal semestril uus.&lt;br /&gt;
&lt;br /&gt;
Kes soovib, saab ka oma arvutit kasutada, see peab siis võimaldama platvormi virtualiseerimist ja selleks olema piisavate näitajatega.&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Sissejuhatus_infotehnoloogiasse_ja_riistvarasse&amp;diff=145828</id>
		<title>Sissejuhatus infotehnoloogiasse ja riistvarasse</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Sissejuhatus_infotehnoloogiasse_ja_riistvarasse&amp;diff=145828"/>
		<updated>2025-11-25T01:23:21Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Ainekaart, tunniplaan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aine nimetus eesti keeles: &#039;&#039;&#039;Sissejuhatus infotehnoloogiasse ja riistvarasse&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine nimetus inglise keeles: &#039;&#039;&#039;Introduction to Informatics and hardware&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine kood: &#039;&#039;&#039;ICA0012&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
aine maht: &#039;&#039;&#039;6 EAP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kaks esimest nädalat semestris toimuvad ainult loengud ja praktikume ei toimu. Seejärel ülejäänud 3-16 õppenädalal toimuvad ainult praktikumid ja loenguid siis enam ei ole.&lt;br /&gt;
&lt;br /&gt;
Anda lühiülevaade informaatikast tervikuna. Tutvustada arvutiriistvara, -tarkvara ja selle tööpõhimõtteid ning enamlevinud probleeme ja võimalikke lahendusi. Anda lühiülevaade IT arengust.&lt;br /&gt;
&lt;br /&gt;
Loengutes käsitletakse üldiseid teadmisi. Praktikumides omandatakse praktilised oskused. Käesolev õppeaine ei ole samm-haaval juhendite edastamine (osaliselt seda siiski ka tehakse) vaid pigem innustatakse tudengeid ise mõtlema ja infot leidma.&lt;br /&gt;
&lt;br /&gt;
Kõik ainega seotud materjalid asuvad käesoleval viki lehel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Küsi asju, mis segaseks jäid!&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=Õpiväljundid=&lt;br /&gt;
Aine läbinud õppur:&lt;br /&gt;
* teab arvutikomponentide otstarvet&lt;br /&gt;
* oskab valida ja hankida arvutiriistvara &lt;br /&gt;
* tunneb levinud operatsioonisüsteeme ja rakendustarkvara ning oskab neid paigaldada ja seadistada&lt;br /&gt;
* oskab lahendada riistvara ja tarkvara probleeme&lt;br /&gt;
&lt;br /&gt;
=Ainekaart, tunniplaan=&lt;br /&gt;
* Ainekaart:&lt;br /&gt;
** [https://enos.itcollege.ee/~edmund/inf-hw/ainekaart/INF-HW.pdf PDF] | [https://enos.itcollege.ee/~edmund/inf-hw/ainekaart/INF-HW-laiendatud.pdf laiendatud]&lt;br /&gt;
** ÕIS1 [https://ois.ttu.ee/aine/ICA0012 EST] | [https://ois.ttu.ee/subject/ICA0012 ENG]&lt;br /&gt;
** ÕIS2 [http://ois2.ttu.ee/uusois/aine/ICA0012 EST] | [http://ois2.ttu.ee/uusois/subject/ICA0012 ENG]&lt;br /&gt;
* Tunniplaan: avada [https://tunniplaan.taltech.ee/ tunniplaan.taltech.ee] ja otsida ainekoodiga ICA0012&lt;br /&gt;
&lt;br /&gt;
=Ajakava=&lt;br /&gt;
Ajakava ehk siis tähtajad leiab [https://taltechi-ico-akadeemia.notion.site/2d1988c0bd254cc186303a6e977d2c43 siit dokumendist].&lt;br /&gt;
&lt;br /&gt;
=Õppejõud=&lt;br /&gt;
[[User:Edmund|Edmund Laugasson]]&lt;br /&gt;
&lt;br /&gt;
=Õpijuhis=&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/bd25199badf44983b2c531bdb593555f Auditoorne õppetöö ülikoolis]&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/91ed1cad7d2a431eba983e926bc03cf6 Distantsõpe]&lt;br /&gt;
&lt;br /&gt;
=Virtuaalsed vahendid=&lt;br /&gt;
[https://www.notion.so/7a613741ffb94abfaae35353a1b4a982 ainega seotud keskkonnad]&lt;br /&gt;
&lt;br /&gt;
=Seminaritöö=&lt;br /&gt;
&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/daf290a361d24d19a57ef85a17cf956f seminaritöö kirjeldus, näidis, levinumad vead]&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/seminaritoo.pdf seminaritöö loenguslaidid (PDF)]&lt;br /&gt;
[https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/ seminaritöö kaust]&lt;br /&gt;
* seminaritöö rühmad ja esitamise asukoht internetis [https://moodle.taltech.ee/mod/forum/view.php?id=556417 palun kirja panna siia foorumisse Moodle&#039;i kursusel]. Tagasisidet tasub küsida otse praktikumis. Seminaritöö on rühmatöö kus siis tudengid moodustavad rühmad, jagavad ära ülesanded ja tutvustavad vormistatud töös oma panust rühmas.&lt;br /&gt;
&lt;br /&gt;
=Praktikumid=&lt;br /&gt;
&lt;br /&gt;
* Täpsemalt aine Moodle&#039;is&lt;br /&gt;
* [https://livettu.sharepoint.com/sites/MektoryXR/SitePages/Unreal-Engine-labor.aspx Virtuaalreaalsuse praktikum (Mektory)] (vajalik Uni-ID&#039;ga sisselogimine)&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/4b342c4da3f0491085cabcde2f44664a Cisco IT Essentials] inglisekeelne kursus&lt;br /&gt;
* [https://taltechi-ico-akadeemia.notion.site/ba2e1653679649c6a8eeec14761c5964m/ PC Building Simulator] on haridusalane mäng arvuti virtuaalseks ehitamiseks&lt;br /&gt;
&lt;br /&gt;
=Loengud=&lt;br /&gt;
&lt;br /&gt;
* [https://enos.itcollege.ee/~edmund/inf-hw/loengud/ Loengute failid]&lt;br /&gt;
* Seminaritöö: [https://enos.itcollege.ee/~edmund/inf-hw/seminaritoo/seminaritoo.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
==Täiendavad materjalid==&lt;br /&gt;
NB! [[#Moodle keskkond|Aine Moodle&#039;i kursusel]] on täiendavad materjalid.&lt;br /&gt;
&lt;br /&gt;
Martin Vool, ettekanded:&lt;br /&gt;
* [https://www.youtube.com/watch?v=F9vQORL_hlI LoRa ja Raspberry Pi, osa 1] (45min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=P0Bx_fCHbFI LoRa ja Raspberry Pi, osa 2] (23min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=pDZsuY91Xks Arvuti vesijahutus, osa 1], (8 min)&lt;br /&gt;
* [https://www.youtube.com/watch?v=UlwkvGq0RFM Arvuti vesijahutuse hooldus, osa 2], (28 min)&lt;br /&gt;
&lt;br /&gt;
=Hindamine=&lt;br /&gt;
&lt;br /&gt;
Hindamisest on räägitud [https://enos.itcollege.ee/~edmund/inf-hw/loengud/sissejuhatus/sissejuhatus_INF-HW.pdf sissejuhatava loengu slaididel].&lt;br /&gt;
&lt;br /&gt;
Võimalik ka [[#Aine arvestus eritingimustel|hindamine eritingimustel]]&lt;br /&gt;
&lt;br /&gt;
=Aine arvestus eritingimustel=&lt;br /&gt;
[https://taltechi-ico-akadeemia.notion.site/6096c267f8184bfb964eb9b5791f501f võimaluste kirjeldused]&lt;br /&gt;
&lt;br /&gt;
=Moodle keskkond=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://moodle.taltech.ee/course/view.php?id=21238 Kursuse aadress] Moodle keskkonnas.&#039;&#039;&#039; [[#Virtuaalsed vahendid|Sisselogimise teabe saab tunnis õppejõult ja leiab ka virtuaalsete vahendite all]]&lt;br /&gt;
&lt;br /&gt;
=Salvestused=&lt;br /&gt;
Kuna Echo360 on hakanud ka salvestuste vaatamiste eest tasu küsima, siis säästmise eesmärgil on videod alla laaditud ja üles pandud eraldi kausta.&lt;br /&gt;
&lt;br /&gt;
=Lingid=&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/inf-hw/viiteid.html viiteid otsinguteks]&lt;br /&gt;
*&#039;&#039;&#039;[http://enos.itcollege.ee/~edmund/materials/links.html Linuxiga jm vabatarkvaraga seotud viiteid]&#039;&#039;&#039;&lt;br /&gt;
* [http://enos.itcollege.ee/~edmund/materials/news.html Linuxi uudised, ajakirjad]&lt;br /&gt;
* vabavaraga seotud terminid: [http://enos.itcollege.ee/~edmund/materials/Floss-vabavara-skeem.png EIK serveris] | [https://viki.pingviin.org/images/9/97/Floss-vabavara-skeem.png originaalasukoht]&lt;br /&gt;
* https://sites.google.com/site/easylinuxtipsproject/&lt;br /&gt;
* käsureal ekraanipiltide tegemiseks [https://en.wikipedia.org/wiki/Scrot scrot] (vt [http://alternativeto.net/software/scrot/?license=opensource alternatiivid]), [https://github.com/naelstrof/maim maim]&lt;br /&gt;
* käsurea salvestamine ekraanivideona: [[Terminali sessioonide salvestus ja jagamine]], vt ka [http://alternativeto.net/software/asciinema/ alternatiive] ja [http://tuxdiary.com/tag/record-terminal-linux/ veel programme]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Desktop_environment töölauakeskkond] OS&#039;ides koos näidetega&lt;br /&gt;
* https://www.youtube.com/user/japolegikeeruline - saatesari kus räägitakse erinevatest IT tahkudest&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLjTBvsv2Ws0ja-ovwPAEfP8CY0cIvFYMt assapauk] - MKM&#039;i projekt &amp;quot;Assapauk&amp;quot;, küberturvalisuse näidisprobleemid tavakasutaja tasandil&lt;br /&gt;
* [[Mõned soovitused algajale Linuxi-huvilisele]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kuulamist-vaatamist&lt;br /&gt;
* [https://www.youtube.com/watch?v=kEUDjopZ3go Nutisõltuvus]&lt;br /&gt;
&lt;br /&gt;
=Varasemad=&lt;br /&gt;
* [[INF-HW-K2024]]&lt;br /&gt;
* [[INF-HW-K2023]]&lt;br /&gt;
* [[INF-HW-K2022]]&lt;br /&gt;
* [[INF-HW-K2021]]&lt;br /&gt;
* [[INF-HW-K2020]]&lt;br /&gt;
* [[INF-HW-K2019]]&lt;br /&gt;
* [[INF-HW-K2017]]&lt;br /&gt;
&lt;br /&gt;
=Tagasiside=&lt;br /&gt;
* tagasiside tudengile: praktikumide ajal + vajadusel siin toodud koostöökanalite kaudu + [[#Õppejõud|otse õppejõuga]] suheldes&lt;br /&gt;
* õppejõule saab anda tagasisidet otse tundide ajal + [[User:Edmund#suhtlusrakendused|läbi suhtlusrakenduste]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sissejuhatus infotehnoloogiasse ja riistvarasse]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145803</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145803"/>
		<updated>2025-11-11T06:29:58Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Autor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, november 2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* [https://dominospizza.ee/et/tallinn/ Domino Tallinn] toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. [https://dominospizza.ee/et/tallinn/ Domino Eesti ametlik veeb on siin], nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud skript&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by *precise* preferences (size, crust, toppings)&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --address &amp;quot;Näide tn 1, Tallinn&amp;quot; \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
//       --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
//       --coupon ALE --coupon MORE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --config prefs.json&lt;br /&gt;
//&lt;br /&gt;
// prefs.json shape:&lt;br /&gt;
// {&lt;br /&gt;
//   &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;delivery&amp;quot;: true, &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
//   &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
//   &amp;quot;store&amp;quot;: &amp;quot;Tondi&amp;quot;,&lt;br /&gt;
//   &amp;quot;items&amp;quot;: [&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Pepperoni&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;L&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;hand-tossed&amp;quot;,&amp;quot;add&amp;quot;:[&amp;quot;jalapeno&amp;quot;],&amp;quot;remove&amp;quot;:[]},&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Hawaii&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;M&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;thin&amp;quot;,&amp;quot;remove&amp;quot;:[&amp;quot;ananas&amp;quot;]}&lt;br /&gt;
//   ],&lt;br /&gt;
//   &amp;quot;coupons&amp;quot;:[&amp;quot;ALE&amp;quot;,&amp;quot;MORE&amp;quot;],&lt;br /&gt;
//   &amp;quot;schedule&amp;quot;: {&amp;quot;type&amp;quot;:&amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;:&amp;quot;19:00&amp;quot;} // best-effort; site dependent&lt;br /&gt;
// }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // supports: --items &amp;quot;Pepperoni:L:thin&amp;quot; &amp;quot;Hawaii:M&amp;quot;&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        // --add &amp;quot;Pepperoni:+jalapeno&amp;quot; may be repeated&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Noustu&amp;quot;)&#039;, // typo guard&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot;]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try open login modal/menu (site copy varies by lang)&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  // Try built-in search if exists; otherwise click card by text&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  // Look for toggles/checkboxes by ingredient keywords&lt;br /&gt;
  const norm = s =&amp;gt; s.toLowerCase();&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`; // modern sites often use label for topping&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`;&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off if preselected&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      // pick store by contains text&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Add requested items&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    // allow inline spec &amp;quot;Name:Size:Crust&amp;quot; strings too&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try to open profile/orders&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  // Click the first/desired order&#039;s Reorder button&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`&lt;br /&gt;
Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
Commands:&lt;br /&gt;
  init&lt;br /&gt;
    Open site and let you log in; saves cookies to ${AUTH_FILE}.&lt;br /&gt;
  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \&lt;br /&gt;
        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \&lt;br /&gt;
        [--add &amp;quot;Name:+topping&amp;quot;] [--rm &amp;quot;Name:-topping&amp;quot;] \&lt;br /&gt;
        [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await browser.close(); // new launches inside flows to keep contexts isolated&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See täiustatud skript toetab:&lt;br /&gt;
* täpseid eelistusi (suurus, koorik, lisandid/mahavõtud),&lt;br /&gt;
* delivery vs pickup (sh poe valik pickupi jaoks),&lt;br /&gt;
* mitut kupongikoodi,&lt;br /&gt;
* reorder minevikutellimustest,&lt;br /&gt;
* best-effort ajastust.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kiirjuhend&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# eeldused&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&lt;br /&gt;
# esmane login&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&lt;br /&gt;
# näide: delivery + kupongid + lisandid/mahavõtud&lt;br /&gt;
node dominos-cli-playwright.mjs order --lang et --city tallinn --delivery \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot; \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
  --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
  --coupon ALE --coupon MORE&lt;br /&gt;
&lt;br /&gt;
# pickup kindlast poest&lt;br /&gt;
node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# reorder (viimati tehtu), lisa kupong&lt;br /&gt;
node dominos-cli-playwright.mjs reorder --latest --coupon ALE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Märkus: skript avab ametliku Domino’s Estonia saidi (Tallinn) ja liigub menüüs/checkoutis; kupongid nagu ALE, MORE jms on päriselt olemasolevate promode näited nende lehel (promo-/uudiste-lehed). Wolti/Bolt Foodi API-d on suunatud partneritele (POS/integratsioon), mitte klienditellimuste CLI-ks — seetõttu kasutame Playwrighti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näitena veel eelistuste fail&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot; }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;MORE&amp;quot;, &amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See sobib otse käsuga &#039;&#039;--config dominos-prefs.json&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mida sinna panna ja miks:&lt;br /&gt;
* store: &amp;quot;Tammsaare&amp;quot; — Tallinnas on Domino’s Tammsaare/Mustakivi filiaalid (nt Woltis nähtavad; Tammsaare aadressi kinnitab ka kaardikanne). &lt;br /&gt;
* coupons: [&amp;quot;MORE&amp;quot;,&amp;quot;TEISIPAEV&amp;quot;,&amp;quot;LUNCH&amp;quot;] — need vastavad Domino’s Tallinn promo-lehtedel toodud koodidele: 2+1 (MORE), Crazy Tuesday (TEISIPAEV) ja lõunapakkumine (LUNCH). Vaata nende täpseid tingimusi promo-lehelt. &lt;br /&gt;
* Menüü/põhi-URL ja eesti/inglise lehed on samad, mida skript kasutab (/et/tallinn, /en/tallinn).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# kasutamine prefs.json&#039;iga&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisateave:&lt;br /&gt;
* https://dominospizza.ee/et/tallinn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kupongid / promokoodid&#039;&#039;&#039;&lt;br /&gt;
* LUNCH (Lunch Offer) — [https://dominospizza.ee/en/tallinn/promo/lunch-offer/ ametlik promo-leht koos tingimustega].&lt;br /&gt;
* TEISIPÄEV (Crazy Tuesday) — [https://dominospizza.ee/et/tallinn/promo/crazy-tuesday-offer/ ametlik promo/uudis, tingimused (2 M või L ühe hinnaga)]. &lt;br /&gt;
* MORE (2+1 offer) — [https://dominospizza.ee/et/tallinn/promo/21-offer/ ametlik promo-leht koos piirangutega]&lt;br /&gt;
&lt;br /&gt;
Teised kampaaniad (nt [https://dominospizza.ee/et/tallinn/promo/mega-weekend/ MEGA Weekend], [https://dominospizza.ee/et/tallinn/promo/cutting-prices/ Cutting Prices], [https://dominospizza.ee/et/tallinn/promo/tastier-together/ „Üheskoos on maitsvam!“]) — vajadusel vaata sealt jooksvaid koode ja tingimusi. &lt;br /&gt;
&lt;br /&gt;
Kõik uudised/pakkumised ühes kohas: [https://dominospizza.ee/et/tallinn/news/ ametlik “News &amp;amp; Promotions” koondleht].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Poed / aadressid (pickup’i jaoks)&#039;&#039;&#039;&lt;br /&gt;
* Tammsaare (Mustamäe): ametlik kontaktinfo [https://www.facebook.com/61552174364509/about/ Facebooki „About“] ja ka [https://www.waze.com/live-map/directions/dominos-pizza-a.-h.-tammsaare-tee-104a-tallinn?to=place.w.16187986.161814325.13392455 Waze kaardikande] järgi: A. H. Tammsaare tee 104a, Tallinn &lt;br /&gt;
* Mustakivi (Lasnamäe): avamisteated ja aadress Mustakivi tee 17 (Lasnamäe Prisma keskus) ametlikes postitustes ning keskuse lehel: [https://www.facebook.com/61552174364509/videos/dominos-n%C3%BC%C3%BCd-ka-lasnam%C3%A4el-mustakivi-tee-17/1781813672757170/ link1], [https://www.facebook.com/61552174364509/posts/olete-k%C3%BCsinud-olete-oodanud-ja-n%C3%BC%C3%BCd-see-juhtubdominos-avab-uhiuue-pitsakoha-juba/122269602386072478/ link2], [https://www.facebook.com/61552174364509/videos/dominos-mustakivi-on-avatud/721273380300326/ link3], [https://www.facebook.com/61552174364509/videos/100-tasuta-pitsat-/1237482911333608/ link4], [https://lasnamaeprisma.ee/kauplused/dominos-pizza/ link5]&lt;br /&gt;
* Platvormid (abiks poe valikul): Woltis näeb Tammsaare/Mustakivi asukohti ning „Schedule order“ märget (kasulik ajastuseks): [https://wolt.com/en/est/tallinn/brand/dominos-pizza link1], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-tammsaare link2], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-mustakivi link3] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kohaletoimetus, pickup ja ajastus&#039;&#039;&#039;&lt;br /&gt;
Ametlik rakendus ([https://play.google.com/store/apps/details?hl=en&amp;amp;id=ee.dominos.dpizza Google Play kirjeldus]): kinnitab, et saab tellida delivery (30 min) või pickup (15 min) ja valida menüüst; hea viide, et mõlemad täitmisviisid on toetatud. &lt;br /&gt;
&lt;br /&gt;
Ajastuse näide: Woltis on „Schedule order“ (Domino’s Tammsaare/Mustakivi), mida saab kasutada, kui soovid tellimust kindlale ajale. (Domino’s oma veebil ajastus võib varieeruda.) [https://wolt.com/en/est/tallinn/brand/dominos-pizza link1], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-mustakivi link2]&lt;br /&gt;
&lt;br /&gt;
Kuidas need väljad prefs.json-is allikatelt täita&lt;br /&gt;
* lang, city → võta keel/tee struktuur [https://dominospizza.ee/et/tallinn/ ametlikult avalehest].&lt;br /&gt;
* items[].name/size/crust → nimed, suurused (S–XL) ja koorikud [https://dominospizza.ee/et/tallinn/ ametlikult menüült]; [https://dominospizza.ee/et/tallinn/half_pizza/ „Half &amp;amp; Half“ korral kasuta vastavat lehte]. &lt;br /&gt;
* coupons[] → võta koodid ja tingimused promo-lehtedelt (LUNCH, TEISIPÄEV, MORE jne). &lt;br /&gt;
* pickup/delivery, store, address → kasuta poodide aadresse (Tammsaare 104a; Mustakivi 17) ning märgi, kas soovid pickup’i või kojutoomist. &lt;br /&gt;
* schedule → kui tahad ajastada, on seda mugav teha [https://wolt.com/en/est/tallinn/brand/dominos-pizza Wolti „Schedule order“] abil (või kui Domino’s veebis on parasjagu vastav valik nähtav). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud prefs.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Täpsed poeandmed: Tammsaare — A. H. Tammsaare tee 104a, 12918 Tallinn, tel. +372 633 3303 (Waze + Facebook „About“ kinnitused). &lt;br /&gt;
* Mustakivi — Mustakivi tee 17, Tallinn (ametlikud postitused kinnitavad Lasnamäe avamist ja aadressi). &lt;br /&gt;
* Menüü ja nimetused (Pepperoni, Hawaii, 5 Cheeses; suurused/koorikud): ametlik menüü Tallinna lehel (ET/EN). &lt;br /&gt;
* Kupongid, mis on koodipõhised: TEISIPAEV (Crazy Tuesday, 2 M või L ühe hinnaga, tingimused lehel). &lt;br /&gt;
* LUNCH (Lunch Offer, kood „LUNCH“, täpsemad tingimused ja upgradede hinnad promolehel). &lt;br /&gt;
* Ajastuse tugi: schedule väli alles; Domino’s enda veebil ajastus võib erineda, kuid pakkumised ja menüü on kinnitatud ametlikelt lehtedelt. Üldised promod/uuemad soodukad on koondatud „News &amp;amp; Promotions“ alla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eraldi dominos-prefs-mustakivi.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: false,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: true,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Mustakivi&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Võtan ise järgi (pickup)&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:30&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutamine&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# pickup Mustakivi poest, XL thin eelistustega&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs-mustakivi.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Veel üks dominos-prefs-mustakivi.json näide &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: false,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: true,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Mustakivi&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 11415 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 11415 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Võtan ise järgi (pickup)&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hypnotica&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Carbonara&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
    &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
    &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
    &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
    &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Half &amp;amp; Half (pool-pool) – vajab half_pizza lehe voo tuge&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:30&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Hypnotica on Domino’s Eesti menüüs (koostisosad: spinat, mozzarella, pepperoni, peekon, veiseliha, röstitud sibul, koore- ja BBQ-kaste); näha nii hinnakoondis kui ka Bolt Foodis. [https://ee.pricelisto.com/menu-prices/dominos-ee link1], [https://food.bolt.eu/en-US/1-tallinn/p/85402-domino%27s-pizza-mustam%C3%A4e link2]&lt;br /&gt;
* Carbonara on olemas (koorekastme, singi, peekoni, seente, punase sibulaga) — kirjeldus ja komplektid [https://food.bolt.eu/en-US/1-tallinn/p/85402-domino%27s-pizza-mustam%C3%A4e nähtavad Bolt Foodis]. &lt;br /&gt;
* Half &amp;amp; Half (pool-pool) on [https://dominospizza.ee/et/tallinn/half_pizza/ ametlik erileht Tallinnas (/half_pizza/)], kust saab ehitada kahe maitsega pitsa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud skript koos eelnevate eelistustega&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright) — now with Half &amp;amp; Half support&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by precise preferences (size, crust, toppings)&lt;br /&gt;
// - NEW: Builds Half &amp;amp; Half pizzas from two flavours on the /half_pizza/ flow&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --config dominos-prefs.json&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; \&lt;br /&gt;
//       --coupon ALE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//&lt;br /&gt;
// Config additions for Half &amp;amp; Half:&lt;br /&gt;
//   &amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
//     &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
//     &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
//     &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
//     &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
//     &amp;quot;note&amp;quot;: &amp;quot;optional note&amp;quot;&lt;br /&gt;
//   }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;,&lt;br /&gt;
    half_and_half: null&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot; i]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToHalfAndHalf(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;half_pizza/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const el = await page.$(`label:has-text(&amp;quot;${ing}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const el = await page.$(`label:has-text(&amp;quot;${ing}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ---------------- Half &amp;amp; Half flow ----------------&lt;br /&gt;
async function buildHalfAndHalf(page, lang, city, hh) {&lt;br /&gt;
  // Navigate to the official Half &amp;amp; Half builder page&lt;br /&gt;
  await navigateToHalfAndHalf(page, lang, city);&lt;br /&gt;
  // Choose left and right flavours by name&lt;br /&gt;
  const leftOpeners = [&#039;button:has-text(&amp;quot;Vali vasak pool&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose left&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of leftOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const leftCard = await page.$(`button:has-text(&amp;quot;${hh.left}&amp;quot;) , a:has-text(&amp;quot;${hh.left}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
  if (leftCard) await leftCard.click().catch(()=&amp;gt;{});&lt;br /&gt;
&lt;br /&gt;
  const rightOpeners = [&#039;button:has-text(&amp;quot;Vali parem pool&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose right&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of rightOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const rightCard = await page.$(`button:has-text(&amp;quot;${hh.right}&amp;quot;) , a:has-text(&amp;quot;${hh.right}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
  if (rightCard) await rightCard.click().catch(()=&amp;gt;{});&lt;br /&gt;
&lt;br /&gt;
  // Choose size &amp;amp; crust&lt;br /&gt;
  await chooseSizeAndCrust(page, hh.size || &#039;L&#039;, hh.crust || &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Add to cart&lt;br /&gt;
  await addCurrentToCart(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Half &amp;amp; Half first (if any), then single-flavour items&lt;br /&gt;
  if (opts.half_and_half &amp;amp;&amp;amp; opts.half_and_half.left &amp;amp;&amp;amp; opts.half_and_half.right) {&lt;br /&gt;
    const hh = opts.half_and_half;&lt;br /&gt;
    console.log(`Adding Half &amp;amp; Half: ${hh.left} | ${hh.right} (${hh.size||&#039;L&#039;}${hh.crust?&#039;,&#039;+hh.crust:&#039;&#039;})`);&lt;br /&gt;
    await buildHalfAndHalf(page, opts.lang, opts.city, hh);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia Advanced CLI (Playwright)\nCommands:\n  init\n    Open site and let you log in; saves cookies to ${AUTH_FILE}.\n  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \\\n        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \\\n        [--coupon CODE] [--lang et|en] [--city tallinn]\n    (Supports \&amp;quot;half_and_half\&amp;quot; in JSON config)\n  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  await browser.close(); // isolate contexts in flows&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiustatud skript, et Half &amp;amp; Half (pool-pool) töötab nüüd päriselt:&lt;br /&gt;
* lisatud buildHalfAndHalf() voog, mis avab ametliku Half &amp;amp; Half ehitaja lehe ja valib vasakule/paremale maitse, suuruse ja kooriku, siis lisab korvi; &lt;br /&gt;
* order käsul loetakse half_and_half blokk sinu JSON-ist ja lisatakse enne üksikuid pitsasid;&lt;br /&gt;
* senised funktsioonid (kupongid, pickup/delivery, ajastus) jäid alles.&lt;br /&gt;
&lt;br /&gt;
Kuidas kasutada Half &amp;amp; Half’i&lt;br /&gt;
* avada kanvases fail dominos-prefs-mustakivi.json (või dominos-prefs.json) ja jäta alles half_and_half blokk, nt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
  &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
  &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
  &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
  &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Half &amp;amp; Half – pool-pool&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* käivitada&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs-mustakivi.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145802</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145802"/>
		<updated>2025-11-11T06:24:49Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* [https://dominospizza.ee/et/tallinn/ Domino Tallinn] toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. [https://dominospizza.ee/et/tallinn/ Domino Eesti ametlik veeb on siin], nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud skript&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by *precise* preferences (size, crust, toppings)&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --address &amp;quot;Näide tn 1, Tallinn&amp;quot; \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
//       --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
//       --coupon ALE --coupon MORE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --config prefs.json&lt;br /&gt;
//&lt;br /&gt;
// prefs.json shape:&lt;br /&gt;
// {&lt;br /&gt;
//   &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;delivery&amp;quot;: true, &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
//   &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
//   &amp;quot;store&amp;quot;: &amp;quot;Tondi&amp;quot;,&lt;br /&gt;
//   &amp;quot;items&amp;quot;: [&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Pepperoni&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;L&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;hand-tossed&amp;quot;,&amp;quot;add&amp;quot;:[&amp;quot;jalapeno&amp;quot;],&amp;quot;remove&amp;quot;:[]},&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Hawaii&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;M&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;thin&amp;quot;,&amp;quot;remove&amp;quot;:[&amp;quot;ananas&amp;quot;]}&lt;br /&gt;
//   ],&lt;br /&gt;
//   &amp;quot;coupons&amp;quot;:[&amp;quot;ALE&amp;quot;,&amp;quot;MORE&amp;quot;],&lt;br /&gt;
//   &amp;quot;schedule&amp;quot;: {&amp;quot;type&amp;quot;:&amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;:&amp;quot;19:00&amp;quot;} // best-effort; site dependent&lt;br /&gt;
// }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // supports: --items &amp;quot;Pepperoni:L:thin&amp;quot; &amp;quot;Hawaii:M&amp;quot;&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        // --add &amp;quot;Pepperoni:+jalapeno&amp;quot; may be repeated&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Noustu&amp;quot;)&#039;, // typo guard&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot;]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try open login modal/menu (site copy varies by lang)&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  // Try built-in search if exists; otherwise click card by text&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  // Look for toggles/checkboxes by ingredient keywords&lt;br /&gt;
  const norm = s =&amp;gt; s.toLowerCase();&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`; // modern sites often use label for topping&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`;&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off if preselected&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      // pick store by contains text&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Add requested items&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    // allow inline spec &amp;quot;Name:Size:Crust&amp;quot; strings too&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try to open profile/orders&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  // Click the first/desired order&#039;s Reorder button&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`&lt;br /&gt;
Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
Commands:&lt;br /&gt;
  init&lt;br /&gt;
    Open site and let you log in; saves cookies to ${AUTH_FILE}.&lt;br /&gt;
  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \&lt;br /&gt;
        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \&lt;br /&gt;
        [--add &amp;quot;Name:+topping&amp;quot;] [--rm &amp;quot;Name:-topping&amp;quot;] \&lt;br /&gt;
        [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await browser.close(); // new launches inside flows to keep contexts isolated&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See täiustatud skript toetab:&lt;br /&gt;
* täpseid eelistusi (suurus, koorik, lisandid/mahavõtud),&lt;br /&gt;
* delivery vs pickup (sh poe valik pickupi jaoks),&lt;br /&gt;
* mitut kupongikoodi,&lt;br /&gt;
* reorder minevikutellimustest,&lt;br /&gt;
* best-effort ajastust.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kiirjuhend&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# eeldused&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&lt;br /&gt;
# esmane login&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&lt;br /&gt;
# näide: delivery + kupongid + lisandid/mahavõtud&lt;br /&gt;
node dominos-cli-playwright.mjs order --lang et --city tallinn --delivery \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot; \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
  --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
  --coupon ALE --coupon MORE&lt;br /&gt;
&lt;br /&gt;
# pickup kindlast poest&lt;br /&gt;
node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# reorder (viimati tehtu), lisa kupong&lt;br /&gt;
node dominos-cli-playwright.mjs reorder --latest --coupon ALE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Märkus: skript avab ametliku Domino’s Estonia saidi (Tallinn) ja liigub menüüs/checkoutis; kupongid nagu ALE, MORE jms on päriselt olemasolevate promode näited nende lehel (promo-/uudiste-lehed). Wolti/Bolt Foodi API-d on suunatud partneritele (POS/integratsioon), mitte klienditellimuste CLI-ks — seetõttu kasutame Playwrighti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näitena veel eelistuste fail&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot; }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;MORE&amp;quot;, &amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See sobib otse käsuga &#039;&#039;--config dominos-prefs.json&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mida sinna panna ja miks:&lt;br /&gt;
* store: &amp;quot;Tammsaare&amp;quot; — Tallinnas on Domino’s Tammsaare/Mustakivi filiaalid (nt Woltis nähtavad; Tammsaare aadressi kinnitab ka kaardikanne). &lt;br /&gt;
* coupons: [&amp;quot;MORE&amp;quot;,&amp;quot;TEISIPAEV&amp;quot;,&amp;quot;LUNCH&amp;quot;] — need vastavad Domino’s Tallinn promo-lehtedel toodud koodidele: 2+1 (MORE), Crazy Tuesday (TEISIPAEV) ja lõunapakkumine (LUNCH). Vaata nende täpseid tingimusi promo-lehelt. &lt;br /&gt;
* Menüü/põhi-URL ja eesti/inglise lehed on samad, mida skript kasutab (/et/tallinn, /en/tallinn).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# kasutamine prefs.json&#039;iga&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisateave:&lt;br /&gt;
* https://dominospizza.ee/et/tallinn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kupongid / promokoodid&#039;&#039;&#039;&lt;br /&gt;
* LUNCH (Lunch Offer) — [https://dominospizza.ee/en/tallinn/promo/lunch-offer/ ametlik promo-leht koos tingimustega].&lt;br /&gt;
* TEISIPÄEV (Crazy Tuesday) — [https://dominospizza.ee/et/tallinn/promo/crazy-tuesday-offer/ ametlik promo/uudis, tingimused (2 M või L ühe hinnaga)]. &lt;br /&gt;
* MORE (2+1 offer) — [https://dominospizza.ee/et/tallinn/promo/21-offer/ ametlik promo-leht koos piirangutega]&lt;br /&gt;
&lt;br /&gt;
Teised kampaaniad (nt [https://dominospizza.ee/et/tallinn/promo/mega-weekend/ MEGA Weekend], [https://dominospizza.ee/et/tallinn/promo/cutting-prices/ Cutting Prices], [https://dominospizza.ee/et/tallinn/promo/tastier-together/ „Üheskoos on maitsvam!“]) — vajadusel vaata sealt jooksvaid koode ja tingimusi. &lt;br /&gt;
&lt;br /&gt;
Kõik uudised/pakkumised ühes kohas: [https://dominospizza.ee/et/tallinn/news/ ametlik “News &amp;amp; Promotions” koondleht].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Poed / aadressid (pickup’i jaoks)&#039;&#039;&#039;&lt;br /&gt;
* Tammsaare (Mustamäe): ametlik kontaktinfo [https://www.facebook.com/61552174364509/about/ Facebooki „About“] ja ka [https://www.waze.com/live-map/directions/dominos-pizza-a.-h.-tammsaare-tee-104a-tallinn?to=place.w.16187986.161814325.13392455 Waze kaardikande] järgi: A. H. Tammsaare tee 104a, Tallinn &lt;br /&gt;
* Mustakivi (Lasnamäe): avamisteated ja aadress Mustakivi tee 17 (Lasnamäe Prisma keskus) ametlikes postitustes ning keskuse lehel: [https://www.facebook.com/61552174364509/videos/dominos-n%C3%BC%C3%BCd-ka-lasnam%C3%A4el-mustakivi-tee-17/1781813672757170/ link1], [https://www.facebook.com/61552174364509/posts/olete-k%C3%BCsinud-olete-oodanud-ja-n%C3%BC%C3%BCd-see-juhtubdominos-avab-uhiuue-pitsakoha-juba/122269602386072478/ link2], [https://www.facebook.com/61552174364509/videos/dominos-mustakivi-on-avatud/721273380300326/ link3], [https://www.facebook.com/61552174364509/videos/100-tasuta-pitsat-/1237482911333608/ link4], [https://lasnamaeprisma.ee/kauplused/dominos-pizza/ link5]&lt;br /&gt;
* Platvormid (abiks poe valikul): Woltis näeb Tammsaare/Mustakivi asukohti ning „Schedule order“ märget (kasulik ajastuseks): [https://wolt.com/en/est/tallinn/brand/dominos-pizza link1], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-tammsaare link2], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-mustakivi link3] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kohaletoimetus, pickup ja ajastus&#039;&#039;&#039;&lt;br /&gt;
Ametlik rakendus ([https://play.google.com/store/apps/details?hl=en&amp;amp;id=ee.dominos.dpizza Google Play kirjeldus]): kinnitab, et saab tellida delivery (30 min) või pickup (15 min) ja valida menüüst; hea viide, et mõlemad täitmisviisid on toetatud. &lt;br /&gt;
&lt;br /&gt;
Ajastuse näide: Woltis on „Schedule order“ (Domino’s Tammsaare/Mustakivi), mida saab kasutada, kui soovid tellimust kindlale ajale. (Domino’s oma veebil ajastus võib varieeruda.) [https://wolt.com/en/est/tallinn/brand/dominos-pizza link1], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-mustakivi link2]&lt;br /&gt;
&lt;br /&gt;
Kuidas need väljad prefs.json-is allikatelt täita&lt;br /&gt;
* lang, city → võta keel/tee struktuur [https://dominospizza.ee/et/tallinn/ ametlikult avalehest].&lt;br /&gt;
* items[].name/size/crust → nimed, suurused (S–XL) ja koorikud [https://dominospizza.ee/et/tallinn/ ametlikult menüült]; [https://dominospizza.ee/et/tallinn/half_pizza/ „Half &amp;amp; Half“ korral kasuta vastavat lehte]. &lt;br /&gt;
* coupons[] → võta koodid ja tingimused promo-lehtedelt (LUNCH, TEISIPÄEV, MORE jne). &lt;br /&gt;
* pickup/delivery, store, address → kasuta poodide aadresse (Tammsaare 104a; Mustakivi 17) ning märgi, kas soovid pickup’i või kojutoomist. &lt;br /&gt;
* schedule → kui tahad ajastada, on seda mugav teha [https://wolt.com/en/est/tallinn/brand/dominos-pizza Wolti „Schedule order“] abil (või kui Domino’s veebis on parasjagu vastav valik nähtav). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud prefs.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Täpsed poeandmed: Tammsaare — A. H. Tammsaare tee 104a, 12918 Tallinn, tel. +372 633 3303 (Waze + Facebook „About“ kinnitused). &lt;br /&gt;
* Mustakivi — Mustakivi tee 17, Tallinn (ametlikud postitused kinnitavad Lasnamäe avamist ja aadressi). &lt;br /&gt;
* Menüü ja nimetused (Pepperoni, Hawaii, 5 Cheeses; suurused/koorikud): ametlik menüü Tallinna lehel (ET/EN). &lt;br /&gt;
* Kupongid, mis on koodipõhised: TEISIPAEV (Crazy Tuesday, 2 M või L ühe hinnaga, tingimused lehel). &lt;br /&gt;
* LUNCH (Lunch Offer, kood „LUNCH“, täpsemad tingimused ja upgradede hinnad promolehel). &lt;br /&gt;
* Ajastuse tugi: schedule väli alles; Domino’s enda veebil ajastus võib erineda, kuid pakkumised ja menüü on kinnitatud ametlikelt lehtedelt. Üldised promod/uuemad soodukad on koondatud „News &amp;amp; Promotions“ alla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eraldi dominos-prefs-mustakivi.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: false,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: true,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Mustakivi&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Võtan ise järgi (pickup)&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:30&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutamine&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# pickup Mustakivi poest, XL thin eelistustega&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs-mustakivi.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Veel üks dominos-prefs-mustakivi.json näide &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: false,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: true,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Mustakivi&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 11415 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 11415 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Võtan ise järgi (pickup)&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hypnotica&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Carbonara&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
    &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
    &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
    &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
    &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Half &amp;amp; Half (pool-pool) – vajab half_pizza lehe voo tuge&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:30&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Hypnotica on Domino’s Eesti menüüs (koostisosad: spinat, mozzarella, pepperoni, peekon, veiseliha, röstitud sibul, koore- ja BBQ-kaste); näha nii hinnakoondis kui ka Bolt Foodis. [https://ee.pricelisto.com/menu-prices/dominos-ee link1], [https://food.bolt.eu/en-US/1-tallinn/p/85402-domino%27s-pizza-mustam%C3%A4e link2]&lt;br /&gt;
* Carbonara on olemas (koorekastme, singi, peekoni, seente, punase sibulaga) — kirjeldus ja komplektid [https://food.bolt.eu/en-US/1-tallinn/p/85402-domino%27s-pizza-mustam%C3%A4e nähtavad Bolt Foodis]. &lt;br /&gt;
* Half &amp;amp; Half (pool-pool) on [https://dominospizza.ee/et/tallinn/half_pizza/ ametlik erileht Tallinnas (/half_pizza/)], kust saab ehitada kahe maitsega pitsa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud skript koos eelnevate eelistustega&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright) — now with Half &amp;amp; Half support&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by precise preferences (size, crust, toppings)&lt;br /&gt;
// - NEW: Builds Half &amp;amp; Half pizzas from two flavours on the /half_pizza/ flow&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --config dominos-prefs.json&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; \&lt;br /&gt;
//       --coupon ALE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//&lt;br /&gt;
// Config additions for Half &amp;amp; Half:&lt;br /&gt;
//   &amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
//     &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
//     &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
//     &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
//     &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
//     &amp;quot;note&amp;quot;: &amp;quot;optional note&amp;quot;&lt;br /&gt;
//   }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;,&lt;br /&gt;
    half_and_half: null&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot; i]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToHalfAndHalf(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;half_pizza/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const el = await page.$(`label:has-text(&amp;quot;${ing}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const el = await page.$(`label:has-text(&amp;quot;${ing}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ---------------- Half &amp;amp; Half flow ----------------&lt;br /&gt;
async function buildHalfAndHalf(page, lang, city, hh) {&lt;br /&gt;
  // Navigate to the official Half &amp;amp; Half builder page&lt;br /&gt;
  await navigateToHalfAndHalf(page, lang, city);&lt;br /&gt;
  // Choose left and right flavours by name&lt;br /&gt;
  const leftOpeners = [&#039;button:has-text(&amp;quot;Vali vasak pool&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose left&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of leftOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const leftCard = await page.$(`button:has-text(&amp;quot;${hh.left}&amp;quot;) , a:has-text(&amp;quot;${hh.left}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
  if (leftCard) await leftCard.click().catch(()=&amp;gt;{});&lt;br /&gt;
&lt;br /&gt;
  const rightOpeners = [&#039;button:has-text(&amp;quot;Vali parem pool&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose right&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of rightOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const rightCard = await page.$(`button:has-text(&amp;quot;${hh.right}&amp;quot;) , a:has-text(&amp;quot;${hh.right}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
  if (rightCard) await rightCard.click().catch(()=&amp;gt;{});&lt;br /&gt;
&lt;br /&gt;
  // Choose size &amp;amp; crust&lt;br /&gt;
  await chooseSizeAndCrust(page, hh.size || &#039;L&#039;, hh.crust || &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Add to cart&lt;br /&gt;
  await addCurrentToCart(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Half &amp;amp; Half first (if any), then single-flavour items&lt;br /&gt;
  if (opts.half_and_half &amp;amp;&amp;amp; opts.half_and_half.left &amp;amp;&amp;amp; opts.half_and_half.right) {&lt;br /&gt;
    const hh = opts.half_and_half;&lt;br /&gt;
    console.log(`Adding Half &amp;amp; Half: ${hh.left} | ${hh.right} (${hh.size||&#039;L&#039;}${hh.crust?&#039;,&#039;+hh.crust:&#039;&#039;})`);&lt;br /&gt;
    await buildHalfAndHalf(page, opts.lang, opts.city, hh);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia Advanced CLI (Playwright)\nCommands:\n  init\n    Open site and let you log in; saves cookies to ${AUTH_FILE}.\n  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \\\n        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \\\n        [--coupon CODE] [--lang et|en] [--city tallinn]\n    (Supports \&amp;quot;half_and_half\&amp;quot; in JSON config)\n  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  await browser.close(); // isolate contexts in flows&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiustatud skript, et Half &amp;amp; Half (pool-pool) töötab nüüd päriselt:&lt;br /&gt;
* lisatud buildHalfAndHalf() voog, mis avab ametliku Half &amp;amp; Half ehitaja lehe ja valib vasakule/paremale maitse, suuruse ja kooriku, siis lisab korvi; &lt;br /&gt;
* order käsul loetakse half_and_half blokk sinu JSON-ist ja lisatakse enne üksikuid pitsasid;&lt;br /&gt;
* senised funktsioonid (kupongid, pickup/delivery, ajastus) jäid alles.&lt;br /&gt;
&lt;br /&gt;
Kuidas kasutada Half &amp;amp; Half’i&lt;br /&gt;
* avada kanvases fail dominos-prefs-mustakivi.json (või dominos-prefs.json) ja jäta alles half_and_half blokk, nt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
  &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
  &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
  &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
  &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Half &amp;amp; Half – pool-pool&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* käivitada&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs-mustakivi.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145801</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145801"/>
		<updated>2025-11-11T06:20:12Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* [https://dominospizza.ee/et/tallinn/ Domino Tallinn] toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. [https://dominospizza.ee/et/tallinn/ Domino Eesti ametlik veeb on siin], nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud skript&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by *precise* preferences (size, crust, toppings)&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --address &amp;quot;Näide tn 1, Tallinn&amp;quot; \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
//       --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
//       --coupon ALE --coupon MORE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --config prefs.json&lt;br /&gt;
//&lt;br /&gt;
// prefs.json shape:&lt;br /&gt;
// {&lt;br /&gt;
//   &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;delivery&amp;quot;: true, &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
//   &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
//   &amp;quot;store&amp;quot;: &amp;quot;Tondi&amp;quot;,&lt;br /&gt;
//   &amp;quot;items&amp;quot;: [&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Pepperoni&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;L&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;hand-tossed&amp;quot;,&amp;quot;add&amp;quot;:[&amp;quot;jalapeno&amp;quot;],&amp;quot;remove&amp;quot;:[]},&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Hawaii&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;M&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;thin&amp;quot;,&amp;quot;remove&amp;quot;:[&amp;quot;ananas&amp;quot;]}&lt;br /&gt;
//   ],&lt;br /&gt;
//   &amp;quot;coupons&amp;quot;:[&amp;quot;ALE&amp;quot;,&amp;quot;MORE&amp;quot;],&lt;br /&gt;
//   &amp;quot;schedule&amp;quot;: {&amp;quot;type&amp;quot;:&amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;:&amp;quot;19:00&amp;quot;} // best-effort; site dependent&lt;br /&gt;
// }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // supports: --items &amp;quot;Pepperoni:L:thin&amp;quot; &amp;quot;Hawaii:M&amp;quot;&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        // --add &amp;quot;Pepperoni:+jalapeno&amp;quot; may be repeated&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Noustu&amp;quot;)&#039;, // typo guard&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot;]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try open login modal/menu (site copy varies by lang)&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  // Try built-in search if exists; otherwise click card by text&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  // Look for toggles/checkboxes by ingredient keywords&lt;br /&gt;
  const norm = s =&amp;gt; s.toLowerCase();&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`; // modern sites often use label for topping&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`;&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off if preselected&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      // pick store by contains text&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Add requested items&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    // allow inline spec &amp;quot;Name:Size:Crust&amp;quot; strings too&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try to open profile/orders&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  // Click the first/desired order&#039;s Reorder button&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`&lt;br /&gt;
Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
Commands:&lt;br /&gt;
  init&lt;br /&gt;
    Open site and let you log in; saves cookies to ${AUTH_FILE}.&lt;br /&gt;
  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \&lt;br /&gt;
        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \&lt;br /&gt;
        [--add &amp;quot;Name:+topping&amp;quot;] [--rm &amp;quot;Name:-topping&amp;quot;] \&lt;br /&gt;
        [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await browser.close(); // new launches inside flows to keep contexts isolated&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See täiustatud skript toetab:&lt;br /&gt;
* täpseid eelistusi (suurus, koorik, lisandid/mahavõtud),&lt;br /&gt;
* delivery vs pickup (sh poe valik pickupi jaoks),&lt;br /&gt;
* mitut kupongikoodi,&lt;br /&gt;
* reorder minevikutellimustest,&lt;br /&gt;
* best-effort ajastust.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kiirjuhend&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# eeldused&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&lt;br /&gt;
# esmane login&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&lt;br /&gt;
# näide: delivery + kupongid + lisandid/mahavõtud&lt;br /&gt;
node dominos-cli-playwright.mjs order --lang et --city tallinn --delivery \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot; \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
  --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
  --coupon ALE --coupon MORE&lt;br /&gt;
&lt;br /&gt;
# pickup kindlast poest&lt;br /&gt;
node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# reorder (viimati tehtu), lisa kupong&lt;br /&gt;
node dominos-cli-playwright.mjs reorder --latest --coupon ALE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Märkus: skript avab ametliku Domino’s Estonia saidi (Tallinn) ja liigub menüüs/checkoutis; kupongid nagu ALE, MORE jms on päriselt olemasolevate promode näited nende lehel (promo-/uudiste-lehed). Wolti/Bolt Foodi API-d on suunatud partneritele (POS/integratsioon), mitte klienditellimuste CLI-ks — seetõttu kasutame Playwrighti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näitena veel eelistuste fail&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot; }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;MORE&amp;quot;, &amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See sobib otse käsuga &#039;&#039;--config dominos-prefs.json&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mida sinna panna ja miks:&lt;br /&gt;
* store: &amp;quot;Tammsaare&amp;quot; — Tallinnas on Domino’s Tammsaare/Mustakivi filiaalid (nt Woltis nähtavad; Tammsaare aadressi kinnitab ka kaardikanne). &lt;br /&gt;
* coupons: [&amp;quot;MORE&amp;quot;,&amp;quot;TEISIPAEV&amp;quot;,&amp;quot;LUNCH&amp;quot;] — need vastavad Domino’s Tallinn promo-lehtedel toodud koodidele: 2+1 (MORE), Crazy Tuesday (TEISIPAEV) ja lõunapakkumine (LUNCH). Vaata nende täpseid tingimusi promo-lehelt. &lt;br /&gt;
* Menüü/põhi-URL ja eesti/inglise lehed on samad, mida skript kasutab (/et/tallinn, /en/tallinn).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# kasutamine prefs.json&#039;iga&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisateave:&lt;br /&gt;
* https://dominospizza.ee/et/tallinn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kupongid / promokoodid&#039;&#039;&#039;&lt;br /&gt;
* LUNCH (Lunch Offer) — [https://dominospizza.ee/en/tallinn/promo/lunch-offer/ ametlik promo-leht koos tingimustega].&lt;br /&gt;
* TEISIPÄEV (Crazy Tuesday) — [https://dominospizza.ee/et/tallinn/promo/crazy-tuesday-offer/ ametlik promo/uudis, tingimused (2 M või L ühe hinnaga)]. &lt;br /&gt;
* MORE (2+1 offer) — [https://dominospizza.ee/et/tallinn/promo/21-offer/ ametlik promo-leht koos piirangutega]&lt;br /&gt;
&lt;br /&gt;
Teised kampaaniad (nt [https://dominospizza.ee/et/tallinn/promo/mega-weekend/ MEGA Weekend], [https://dominospizza.ee/et/tallinn/promo/cutting-prices/ Cutting Prices], [https://dominospizza.ee/et/tallinn/promo/tastier-together/ „Üheskoos on maitsvam!“]) — vajadusel vaata sealt jooksvaid koode ja tingimusi. &lt;br /&gt;
&lt;br /&gt;
Kõik uudised/pakkumised ühes kohas: [https://dominospizza.ee/et/tallinn/news/ ametlik “News &amp;amp; Promotions” koondleht].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Poed / aadressid (pickup’i jaoks)&#039;&#039;&#039;&lt;br /&gt;
* Tammsaare (Mustamäe): ametlik kontaktinfo [https://www.facebook.com/61552174364509/about/ Facebooki „About“] ja ka [https://www.waze.com/live-map/directions/dominos-pizza-a.-h.-tammsaare-tee-104a-tallinn?to=place.w.16187986.161814325.13392455 Waze kaardikande] järgi: A. H. Tammsaare tee 104a, Tallinn &lt;br /&gt;
* Mustakivi (Lasnamäe): avamisteated ja aadress Mustakivi tee 17 (Lasnamäe Prisma keskus) ametlikes postitustes ning keskuse lehel: [https://www.facebook.com/61552174364509/videos/dominos-n%C3%BC%C3%BCd-ka-lasnam%C3%A4el-mustakivi-tee-17/1781813672757170/ link1], [https://www.facebook.com/61552174364509/posts/olete-k%C3%BCsinud-olete-oodanud-ja-n%C3%BC%C3%BCd-see-juhtubdominos-avab-uhiuue-pitsakoha-juba/122269602386072478/ link2], [https://www.facebook.com/61552174364509/videos/dominos-mustakivi-on-avatud/721273380300326/ link3], [https://www.facebook.com/61552174364509/videos/100-tasuta-pitsat-/1237482911333608/ link4], [https://lasnamaeprisma.ee/kauplused/dominos-pizza/ link5]&lt;br /&gt;
* Platvormid (abiks poe valikul): Woltis näeb Tammsaare/Mustakivi asukohti ning „Schedule order“ märget (kasulik ajastuseks): [https://wolt.com/en/est/tallinn/brand/dominos-pizza link1], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-tammsaare link2], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-mustakivi link3] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kohaletoimetus, pickup ja ajastus&#039;&#039;&#039;&lt;br /&gt;
Ametlik rakendus ([https://play.google.com/store/apps/details?hl=en&amp;amp;id=ee.dominos.dpizza Google Play kirjeldus]): kinnitab, et saab tellida delivery (30 min) või pickup (15 min) ja valida menüüst; hea viide, et mõlemad täitmisviisid on toetatud. &lt;br /&gt;
&lt;br /&gt;
Ajastuse näide: Woltis on „Schedule order“ (Domino’s Tammsaare/Mustakivi), mida saab kasutada, kui soovid tellimust kindlale ajale. (Domino’s oma veebil ajastus võib varieeruda.) [https://wolt.com/en/est/tallinn/brand/dominos-pizza link1], [https://wolt.com/en/est/tallinn/restaurant/dominos-pizza-mustakivi link2]&lt;br /&gt;
&lt;br /&gt;
Kuidas need väljad prefs.json-is allikatelt täita&lt;br /&gt;
* lang, city → võta keel/tee struktuur [https://dominospizza.ee/et/tallinn/ ametlikult avalehest].&lt;br /&gt;
* items[].name/size/crust → nimed, suurused (S–XL) ja koorikud [https://dominospizza.ee/et/tallinn/ ametlikult menüült]; [https://dominospizza.ee/et/tallinn/half_pizza/ „Half &amp;amp; Half“ korral kasuta vastavat lehte]. &lt;br /&gt;
* coupons[] → võta koodid ja tingimused promo-lehtedelt (LUNCH, TEISIPÄEV, MORE jne). &lt;br /&gt;
* pickup/delivery, store, address → kasuta poodide aadresse (Tammsaare 104a; Mustakivi 17) ning märgi, kas soovid pickup’i või kojutoomist. &lt;br /&gt;
* schedule → kui tahad ajastada, on seda mugav teha [https://wolt.com/en/est/tallinn/brand/dominos-pizza Wolti „Schedule order“] abil (või kui Domino’s veebis on parasjagu vastav valik nähtav). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud prefs.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Täpsed poeandmed: Tammsaare — A. H. Tammsaare tee 104a, 12918 Tallinn, tel. +372 633 3303 (Waze + Facebook „About“ kinnitused). &lt;br /&gt;
* Mustakivi — Mustakivi tee 17, Tallinn (ametlikud postitused kinnitavad Lasnamäe avamist ja aadressi). &lt;br /&gt;
* Menüü ja nimetused (Pepperoni, Hawaii, 5 Cheeses; suurused/koorikud): ametlik menüü Tallinna lehel (ET/EN). &lt;br /&gt;
* Kupongid, mis on koodipõhised: TEISIPAEV (Crazy Tuesday, 2 M või L ühe hinnaga, tingimused lehel). &lt;br /&gt;
* LUNCH (Lunch Offer, kood „LUNCH“, täpsemad tingimused ja upgradede hinnad promolehel). &lt;br /&gt;
* Ajastuse tugi: schedule väli alles; Domino’s enda veebil ajastus võib erineda, kuid pakkumised ja menüü on kinnitatud ametlikelt lehtedelt. Üldised promod/uuemad soodukad on koondatud „News &amp;amp; Promotions“ alla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eraldi dominos-prefs-mustakivi.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: false,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: true,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Mustakivi&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 13912 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Võtan ise järgi (pickup)&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:30&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kasutamine&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# pickup Mustakivi poest, XL thin eelistustega&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs-mustakivi.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Veel üks dominos-prefs-mustakivi.json näide &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: false,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: true,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Mustakivi&amp;quot;,&lt;br /&gt;
  &amp;quot;store_addresses&amp;quot;: {&lt;br /&gt;
    &amp;quot;Tammsaare&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;A. H. Tammsaare tee 104a, 12918 Tallinn&amp;quot;,&lt;br /&gt;
      &amp;quot;phone&amp;quot;: &amp;quot;+372 633 3303&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;Mustakivi&amp;quot;: {&lt;br /&gt;
      &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 11415 Tallinn&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Mustakivi tee 17, 11415 Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Võtan ise järgi (pickup)&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hypnotica&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Carbonara&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [] }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;half_and_half&amp;quot;: {&lt;br /&gt;
    &amp;quot;size&amp;quot;: &amp;quot;XL&amp;quot;,&lt;br /&gt;
    &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;,&lt;br /&gt;
    &amp;quot;left&amp;quot;: &amp;quot;Carbonara&amp;quot;,&lt;br /&gt;
    &amp;quot;right&amp;quot;: &amp;quot;Hypnotica&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Half &amp;amp; Half (pool-pool) – vajab half_pizza lehe voo tuge&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:30&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Hypnotica on Domino’s Eesti menüüs (koostisosad: spinat, mozzarella, pepperoni, peekon, veiseliha, röstitud sibul, koore- ja BBQ-kaste); näha nii hinnakoondis kui ka Bolt Foodis. [https://ee.pricelisto.com/menu-prices/dominos-ee link1], [https://food.bolt.eu/en-US/1-tallinn/p/85402-domino%27s-pizza-mustam%C3%A4e link2]&lt;br /&gt;
* Carbonara on olemas (koorekastme, singi, peekoni, seente, punase sibulaga) — kirjeldus ja komplektid [https://food.bolt.eu/en-US/1-tallinn/p/85402-domino%27s-pizza-mustam%C3%A4e nähtavad Bolt Foodis]. &lt;br /&gt;
* Half &amp;amp; Half (pool-pool) on [https://dominospizza.ee/et/tallinn/half_pizza/ ametlik erileht Tallinnas (/half_pizza/)], kust saab ehitada kahe maitsega pitsa.&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145800</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145800"/>
		<updated>2025-11-11T05:50:21Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* [https://dominospizza.ee/et/tallinn/ Domino Tallinn] toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. [https://dominospizza.ee/et/tallinn/ Domino Eesti ametlik veeb on siin], nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Täiustatud skript&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by *precise* preferences (size, crust, toppings)&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --address &amp;quot;Näide tn 1, Tallinn&amp;quot; \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
//       --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
//       --coupon ALE --coupon MORE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --config prefs.json&lt;br /&gt;
//&lt;br /&gt;
// prefs.json shape:&lt;br /&gt;
// {&lt;br /&gt;
//   &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;delivery&amp;quot;: true, &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
//   &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
//   &amp;quot;store&amp;quot;: &amp;quot;Tondi&amp;quot;,&lt;br /&gt;
//   &amp;quot;items&amp;quot;: [&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Pepperoni&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;L&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;hand-tossed&amp;quot;,&amp;quot;add&amp;quot;:[&amp;quot;jalapeno&amp;quot;],&amp;quot;remove&amp;quot;:[]},&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Hawaii&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;M&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;thin&amp;quot;,&amp;quot;remove&amp;quot;:[&amp;quot;ananas&amp;quot;]}&lt;br /&gt;
//   ],&lt;br /&gt;
//   &amp;quot;coupons&amp;quot;:[&amp;quot;ALE&amp;quot;,&amp;quot;MORE&amp;quot;],&lt;br /&gt;
//   &amp;quot;schedule&amp;quot;: {&amp;quot;type&amp;quot;:&amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;:&amp;quot;19:00&amp;quot;} // best-effort; site dependent&lt;br /&gt;
// }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // supports: --items &amp;quot;Pepperoni:L:thin&amp;quot; &amp;quot;Hawaii:M&amp;quot;&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        // --add &amp;quot;Pepperoni:+jalapeno&amp;quot; may be repeated&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Noustu&amp;quot;)&#039;, // typo guard&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot;]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try open login modal/menu (site copy varies by lang)&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  // Try built-in search if exists; otherwise click card by text&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  // Look for toggles/checkboxes by ingredient keywords&lt;br /&gt;
  const norm = s =&amp;gt; s.toLowerCase();&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`; // modern sites often use label for topping&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`;&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off if preselected&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      // pick store by contains text&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Add requested items&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    // allow inline spec &amp;quot;Name:Size:Crust&amp;quot; strings too&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try to open profile/orders&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  // Click the first/desired order&#039;s Reorder button&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`&lt;br /&gt;
Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
Commands:&lt;br /&gt;
  init&lt;br /&gt;
    Open site and let you log in; saves cookies to ${AUTH_FILE}.&lt;br /&gt;
  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \&lt;br /&gt;
        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \&lt;br /&gt;
        [--add &amp;quot;Name:+topping&amp;quot;] [--rm &amp;quot;Name:-topping&amp;quot;] \&lt;br /&gt;
        [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await browser.close(); // new launches inside flows to keep contexts isolated&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See täiustatud skript toetab:&lt;br /&gt;
* täpseid eelistusi (suurus, koorik, lisandid/mahavõtud),&lt;br /&gt;
* delivery vs pickup (sh poe valik pickupi jaoks),&lt;br /&gt;
* mitut kupongikoodi,&lt;br /&gt;
* reorder minevikutellimustest,&lt;br /&gt;
* best-effort ajastust.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kiirjuhend&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# eeldused&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&lt;br /&gt;
# esmane login&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&lt;br /&gt;
# näide: delivery + kupongid + lisandid/mahavõtud&lt;br /&gt;
node dominos-cli-playwright.mjs order --lang et --city tallinn --delivery \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot; \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
  --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
  --coupon ALE --coupon MORE&lt;br /&gt;
&lt;br /&gt;
# pickup kindlast poest&lt;br /&gt;
node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# reorder (viimati tehtu), lisa kupong&lt;br /&gt;
node dominos-cli-playwright.mjs reorder --latest --coupon ALE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Märkus: skript avab ametliku Domino’s Estonia saidi (Tallinn) ja liigub menüüs/checkoutis; kupongid nagu ALE, MORE jms on päriselt olemasolevate promode näited nende lehel (promo-/uudiste-lehed). Wolti/Bolt Foodi API-d on suunatud partneritele (POS/integratsioon), mitte klienditellimuste CLI-ks — seetõttu kasutame Playwrighti.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Näitena veel eelistuste fail&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot; }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;MORE&amp;quot;, &amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See sobib otse käsuga &#039;&#039;--config dominos-prefs.json&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mida sinna panna ja miks:&lt;br /&gt;
* store: &amp;quot;Tammsaare&amp;quot; — Tallinnas on Domino’s Tammsaare/Mustakivi filiaalid (nt Woltis nähtavad; Tammsaare aadressi kinnitab ka kaardikanne). &lt;br /&gt;
* coupons: [&amp;quot;MORE&amp;quot;,&amp;quot;TEISIPAEV&amp;quot;,&amp;quot;LUNCH&amp;quot;] — need vastavad Domino’s Tallinn promo-lehtedel toodud koodidele: 2+1 (MORE), Crazy Tuesday (TEISIPAEV) ja lõunapakkumine (LUNCH). Vaata nende täpseid tingimusi promo-lehelt. &lt;br /&gt;
* Menüü/põhi-URL ja eesti/inglise lehed on samad, mida skript kasutab (/et/tallinn, /en/tallinn).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# kasutamine prefs.json&#039;iga&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisateave:&lt;br /&gt;
* https://dominospizza.ee/et/tallinn/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kupongid / promokoodid&#039;&#039;&#039;&lt;br /&gt;
* LUNCH (Lunch Offer) — [https://dominospizza.ee/en/tallinn/promo/lunch-offer/ ametlik promo-leht koos tingimustega].&lt;br /&gt;
* TEISIPÄEV (Crazy Tuesday) — [https://dominospizza.ee/et/tallinn/promo/crazy-tuesday-offer/ ametlik promo/uudis, tingimused (2 M või L ühe hinnaga)]. &lt;br /&gt;
* MORE (2+1 offer) — [https://dominospizza.ee/et/tallinn/promo/21-offer/ ametlik promo-leht koos piirangutega]&lt;br /&gt;
&lt;br /&gt;
Teised kampaaniad (nt [https://dominospizza.ee/et/tallinn/promo/mega-weekend/ MEGA Weekend], [https://dominospizza.ee/et/tallinn/promo/cutting-prices/ Cutting Prices], [https://dominospizza.ee/et/tallinn/promo/tastier-together/ „Üheskoos on maitsvam!“]) — vajadusel vaata sealt jooksvaid koode ja tingimusi. &lt;br /&gt;
&lt;br /&gt;
Kõik uudised/pakkumised ühes kohas: [https://dominospizza.ee/et/tallinn/news/ ametlik “News &amp;amp; Promotions” koondleht].&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145799</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145799"/>
		<updated>2025-11-11T05:47:40Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* [https://dominospizza.ee/et/tallinn/ Domino Tallinn] toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. [https://dominospizza.ee/et/tallinn/ Domino Eesti ametlik veeb on siin], nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Täiustatud skript&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// What it does&lt;br /&gt;
// - Logs in (manual, once) and stores session (auth.json)&lt;br /&gt;
// - Adds pizzas/sides by *precise* preferences (size, crust, toppings)&lt;br /&gt;
// - Applies multiple coupon codes&lt;br /&gt;
// - Chooses Delivery vs Pickup (and preferred store for Pickup)&lt;br /&gt;
// - Optional Reorder from order history&lt;br /&gt;
// - Optional scheduling (if site supports time slots)&lt;br /&gt;
// - Opens Checkout for manual payment (never submits payment)&lt;br /&gt;
//&lt;br /&gt;
// Usage (examples):&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order \&lt;br /&gt;
//       --lang et --city tallinn --delivery \&lt;br /&gt;
//       --address &amp;quot;Näide tn 1, Tallinn&amp;quot; \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
//       --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
//       --coupon ALE --coupon MORE&lt;br /&gt;
//   node dominos-cli-playwright.mjs reorder --latest&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --config prefs.json&lt;br /&gt;
//&lt;br /&gt;
// prefs.json shape:&lt;br /&gt;
// {&lt;br /&gt;
//   &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;, &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;delivery&amp;quot;: true, &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
//   &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
//   &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
//   &amp;quot;store&amp;quot;: &amp;quot;Tondi&amp;quot;,&lt;br /&gt;
//   &amp;quot;items&amp;quot;: [&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Pepperoni&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;L&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;hand-tossed&amp;quot;,&amp;quot;add&amp;quot;:[&amp;quot;jalapeno&amp;quot;],&amp;quot;remove&amp;quot;:[]},&lt;br /&gt;
//     {&amp;quot;name&amp;quot;:&amp;quot;Hawaii&amp;quot;,&amp;quot;size&amp;quot;:&amp;quot;M&amp;quot;,&amp;quot;crust&amp;quot;:&amp;quot;thin&amp;quot;,&amp;quot;remove&amp;quot;:[&amp;quot;ananas&amp;quot;]}&lt;br /&gt;
//   ],&lt;br /&gt;
//   &amp;quot;coupons&amp;quot;:[&amp;quot;ALE&amp;quot;,&amp;quot;MORE&amp;quot;],&lt;br /&gt;
//   &amp;quot;schedule&amp;quot;: {&amp;quot;type&amp;quot;:&amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;:&amp;quot;19:00&amp;quot;} // best-effort; site dependent&lt;br /&gt;
// }&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = {&lt;br /&gt;
    lang: &#039;et&#039;, city: &#039;tallinn&#039;, delivery: true, pickup: false,&lt;br /&gt;
    address: &#039;&#039;, note: &#039;&#039;, store: &#039;&#039;, items: [], coupons: [],&lt;br /&gt;
    addMap: {}, rmMap: {}, schedule: null, latest: false, config: &#039;&#039;&lt;br /&gt;
  };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const a = args[i];&lt;br /&gt;
    const [k, vRaw] = a.startsWith(&#039;--&#039;) ? a.slice(2).split(&#039;=&#039;) : [a, null];&lt;br /&gt;
    const v = vRaw ?? args[i+1];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;city&#039;: opts.city = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;delivery&#039;: opts.delivery = true; opts.pickup = false; break;&lt;br /&gt;
      case &#039;pickup&#039;: opts.pickup = true; opts.delivery = false; break;&lt;br /&gt;
      case &#039;address&#039;: opts.address = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;store&#039;: opts.store = v; if(!vRaw) i++; break;&lt;br /&gt;
      case &#039;coupon&#039;: (opts.coupons.push(v), (!vRaw &amp;amp;&amp;amp; i++)); break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // supports: --items &amp;quot;Pepperoni:L:thin&amp;quot; &amp;quot;Hawaii:M&amp;quot;&lt;br /&gt;
        if (vRaw) opts.items.push(vRaw);&lt;br /&gt;
        else { while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]); }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;add&#039;: {&lt;br /&gt;
        // --add &amp;quot;Pepperoni:+jalapeno&amp;quot; may be repeated&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.addMap[pizza]) opts.addMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;+&#039;)) opts.addMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;rm&#039;: case &#039;remove&#039;: {&lt;br /&gt;
        const [pizza, mod] = (v ?? &#039;&#039;).split(&#039;:&#039;);&lt;br /&gt;
        if (!opts.rmMap[pizza]) opts.rmMap[pizza] = [];&lt;br /&gt;
        if (mod?.startsWith(&#039;-&#039;)) opts.rmMap[pizza].push(mod.slice(1));&lt;br /&gt;
        if(!vRaw) i++;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;latest&#039;: opts.latest = true; break;&lt;br /&gt;
      case &#039;config&#039;: opts.config = v; if(!vRaw) i++; break;&lt;br /&gt;
      default: break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (opts.config &amp;amp;&amp;amp; fs.existsSync(opts.config)) {&lt;br /&gt;
    try {&lt;br /&gt;
      const cfg = JSON.parse(fs.readFileSync(opts.config, &#039;utf8&#039;));&lt;br /&gt;
      Object.assign(opts, cfg);&lt;br /&gt;
    } catch (e) { console.warn(&#039;Failed to read config json:&#039;, e.message); }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function baseUrl(lang, city) {&lt;br /&gt;
  return `https://dominospizza.ee/${lang}/${city}/`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function withContext(browser, storagePath) {&lt;br /&gt;
  const ctx = await browser.newContext(storagePath &amp;amp;&amp;amp; fs.existsSync(storagePath) ? { storageState: storagePath } : {});&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  return { ctx, page };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function acceptCookies(page) {&lt;br /&gt;
  const candidates = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Noustu&amp;quot;)&#039;, // typo guard&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Accept&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button[aria-label*=&amp;quot;Accept&amp;quot;]&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of candidates) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, startUrl) {&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try open login modal/menu (site copy varies by lang)&lt;br /&gt;
  const loginTriggers = [&#039;text=Logi sisse&#039;, &#039;text=Login&#039;, &#039;text=Sign in&#039;, &#039;button:has-text(&amp;quot;Logi sisse&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of loginTriggers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  console.log(&#039;Please complete login (and 2FA if prompted). You have 5 minutes.&#039;);&lt;br /&gt;
  try { await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 }); } catch {}&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function navigateToMenu(page, lang, city) {&lt;br /&gt;
  const url = baseUrl(lang, city) + &#039;pitsa/&#039;;&lt;br /&gt;
  await page.goto(url, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function searchAndOpenPizza(page, pizzaName) {&lt;br /&gt;
  // Try built-in search if exists; otherwise click card by text&lt;br /&gt;
  const searchSel = &#039;input[placeholder*=&amp;quot;Otsi&amp;quot; i], input[placeholder*=&amp;quot;Search&amp;quot; i]&#039;;&lt;br /&gt;
  const box = await page.$(searchSel);&lt;br /&gt;
  if (box) {&lt;br /&gt;
    await box.fill(&#039;&#039;); await box.type(pizzaName); await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${pizzaName}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function chooseSizeAndCrust(page, size, crust) {&lt;br /&gt;
  const sizeCode = (size || &#039;L&#039;).toUpperCase();&lt;br /&gt;
  const sizeLabels = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const sizeText = sizeLabels[sizeCode] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${sizeText}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
  if (crust) {&lt;br /&gt;
    const crustBtns = await page.$$(&#039;button&#039;);&lt;br /&gt;
    for (const b of crustBtns) {&lt;br /&gt;
      const t = (await b.textContent() || &#039;&#039;).toLowerCase();&lt;br /&gt;
      if (t.includes(crust.toLowerCase())) { await b.click().catch(()=&amp;gt;{}); break; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyToppings(page, add=[], remove=[]) {&lt;br /&gt;
  // Look for toggles/checkboxes by ingredient keywords&lt;br /&gt;
  const norm = s =&amp;gt; s.toLowerCase();&lt;br /&gt;
  for (const ing of add) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`; // modern sites often use label for topping&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  for (const ing of remove) {&lt;br /&gt;
    const sel = `label:has-text(&amp;quot;${ing}&amp;quot;)`;&lt;br /&gt;
    const el = await page.$(sel).catch(()=&amp;gt;null);&lt;br /&gt;
    if (el) await el.click().catch(()=&amp;gt;{}); // toggle off if preselected&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addCurrentToCart(page) {&lt;br /&gt;
  const addSelectors = [&#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of addSelectors) { const btn = await page.$(sel); if (btn) { await btn.click().catch(()=&amp;gt;{}); await page.waitForTimeout(800); return; } }&lt;br /&gt;
  throw new Error(&#039;Add to cart button not found&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function openCart(page) {&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot; i]&#039;, &#039;button[aria-label*=&amp;quot;Cart&amp;quot; i]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); await page.waitForLoadState(&#039;networkidle&#039;).catch(()=&amp;gt;{}); return; } }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function setFulfilment(page, { delivery, pickup, address, store }) {&lt;br /&gt;
  if (pickup) {&lt;br /&gt;
    const pickupBtns = [&#039;button:has-text(&amp;quot;Kaasa&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Pickup&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of pickupBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (store) {&lt;br /&gt;
      const storeOpeners = [&#039;button:has-text(&amp;quot;Vali restoran&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Choose store&amp;quot;)&#039;];&lt;br /&gt;
      for (const sel of storeOpeners) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
      // pick store by contains text&lt;br /&gt;
      const storeBtn = await page.$(`button:has-text(&amp;quot;${store}&amp;quot;)`).catch(()=&amp;gt;null);&lt;br /&gt;
      if (storeBtn) await storeBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    }&lt;br /&gt;
  } else if (delivery) {&lt;br /&gt;
    const delBtns = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
    for (const sel of delBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
    if (address) {&lt;br /&gt;
      const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot; i], input[placeholder*=&amp;quot;Aadress&amp;quot; i], input[placeholder*=&amp;quot;Address&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
      if (addrInput) {&lt;br /&gt;
        await addrInput.fill(address);&lt;br /&gt;
        await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
        await page.waitForTimeout(1500);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function applyCoupons(page, coupons=[]) {&lt;br /&gt;
  if (!coupons?.length) return;&lt;br /&gt;
  const openers = [&#039;button:has-text(&amp;quot;Sisesta sooduskood&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Enter promo code&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of openers) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  for (const code of coupons) {&lt;br /&gt;
    const input = await page.$(&#039;input[placeholder*=&amp;quot;kood&amp;quot; i], input[placeholder*=&amp;quot;code&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    const applyBtn = await page.$(&#039;button:has-text(&amp;quot;Rakenda&amp;quot;), button:has-text(&amp;quot;Apply&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (input) { await input.fill(code); }&lt;br /&gt;
    if (applyBtn) { await applyBtn.click().catch(()=&amp;gt;{}); }&lt;br /&gt;
    await page.waitForTimeout(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function maybeSchedule(page, schedule) {&lt;br /&gt;
  if (!schedule) return;&lt;br /&gt;
  const timeBtns = [&#039;button:has-text(&amp;quot;Ajasta&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Schedule&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of timeBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  if (schedule.time) {&lt;br /&gt;
    const picker = await page.$(&#039;input[type=&amp;quot;time&amp;quot;], input[name*=&amp;quot;time&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (picker) { await picker.fill(schedule.time).catch(()=&amp;gt;{}); }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doOrder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  const startUrl = baseUrl(opts.lang, opts.city);&lt;br /&gt;
  await ensureAuth(browser, startUrl);&lt;br /&gt;
  const { ctx, page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(startUrl, { waitUntil: &#039;networkidle&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
&lt;br /&gt;
  // Add requested items&lt;br /&gt;
  for (const spec of opts.items || []) {&lt;br /&gt;
    // allow inline spec &amp;quot;Name:Size:Crust&amp;quot; strings too&lt;br /&gt;
    const parsed = typeof spec === &#039;string&#039; ? (()=&amp;gt;{ const [name,size,crust] = spec.split(&#039;:&#039;); return {name, size, crust}; })() : spec;&lt;br /&gt;
    const name = parsed.name; const size = parsed.size || &#039;L&#039;; const crust = parsed.crust || &#039;&#039;;&lt;br /&gt;
    const add = (opts.addMap?.[name] || parsed.add || []);&lt;br /&gt;
    const remove = (opts.rmMap?.[name] || parsed.remove || []);&lt;br /&gt;
    console.log(`Adding ${name} (${size}${crust?&#039;,&#039;+crust:&#039;&#039;})`);&lt;br /&gt;
    await navigateToMenu(page, opts.lang, opts.city);&lt;br /&gt;
    await searchAndOpenPizza(page, name);&lt;br /&gt;
    await chooseSizeAndCrust(page, size, crust);&lt;br /&gt;
    await applyToppings(page, add, remove);&lt;br /&gt;
    await addCurrentToCart(page);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await openCart(page);&lt;br /&gt;
  await setFulfilment(page, opts);&lt;br /&gt;
  if (opts.note) {&lt;br /&gt;
    const noteArea = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
    if (noteArea) await noteArea.fill(opts.note).catch(()=&amp;gt;{});&lt;br /&gt;
  }&lt;br /&gt;
  await applyCoupons(page, opts.coupons);&lt;br /&gt;
  await maybeSchedule(page, opts.schedule);&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout — review &amp;amp; complete payment manually.&#039;);&lt;br /&gt;
  // Leave browser open for manual completion&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function doReorder(opts) {&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
  const { page } = await withContext(browser, AUTH_FILE);&lt;br /&gt;
  await page.goto(baseUrl(opts.lang, opts.city), { waitUntil: &#039;domcontentloaded&#039; });&lt;br /&gt;
  await acceptCookies(page);&lt;br /&gt;
  // Try to open profile/orders&lt;br /&gt;
  const profileBtns = [&#039;a:has-text(&amp;quot;Minu konto&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;My account&amp;quot;)&#039;,&#039;button:has-text(&amp;quot;Konto&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of profileBtns) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  const ordersLinks = [&#039;a:has-text(&amp;quot;Tellimused&amp;quot;)&#039;,&#039;a:has-text(&amp;quot;Orders&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of ordersLinks) { const el = await page.$(sel); if (el) { await el.click().catch(()=&amp;gt;{}); break; } }&lt;br /&gt;
  // Click the first/desired order&#039;s Reorder button&lt;br /&gt;
  const reorderBtn = await page.$(&#039;button:has-text(&amp;quot;Telli uuesti&amp;quot;), button:has-text(&amp;quot;Reorder&amp;quot;)&#039;).catch(()=&amp;gt;null);&lt;br /&gt;
  if (reorderBtn) {&lt;br /&gt;
    await reorderBtn.click().catch(()=&amp;gt;{});&lt;br /&gt;
    await openCart(page);&lt;br /&gt;
    await setFulfilment(page, opts);&lt;br /&gt;
    await applyCoupons(page, opts.coupons);&lt;br /&gt;
    console.log(&#039;Reorder loaded to cart. Complete manually.&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    console.warn(&#039;Could not find a Reorder button. You may need to open a specific past order manually.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039; || ![&#039;init&#039;,&#039;order&#039;,&#039;reorder&#039;].includes(cmd)) {&lt;br /&gt;
    console.log(`&lt;br /&gt;
Domino&#039;s Estonia Advanced CLI (Playwright)&lt;br /&gt;
Commands:&lt;br /&gt;
  init&lt;br /&gt;
    Open site and let you log in; saves cookies to ${AUTH_FILE}.&lt;br /&gt;
  order [--config prefs.json] [--delivery|--pickup] [--store NAME] \&lt;br /&gt;
        [--address &amp;quot;ADDR&amp;quot;] [--items &amp;quot;Name:Size:Crust&amp;quot; ...] \&lt;br /&gt;
        [--add &amp;quot;Name:+topping&amp;quot;] [--rm &amp;quot;Name:-topping&amp;quot;] \&lt;br /&gt;
        [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
  reorder [--latest] [--coupon CODE] [--lang et|en] [--city tallinn]&lt;br /&gt;
`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl(opts.lang, opts.city));&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await browser.close(); // new launches inside flows to keep contexts isolated&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    await doOrder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  if (cmd === &#039;reorder&#039;) {&lt;br /&gt;
    await doReorder(opts);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See toetab:&lt;br /&gt;
* täpseid eelistusi (suurus, koorik, lisandid/mahavõtud),&lt;br /&gt;
* delivery vs pickup (sh poe valik pickupi jaoks),&lt;br /&gt;
* mitut kupongikoodi,&lt;br /&gt;
* reorder minevikutellimustest,&lt;br /&gt;
* best-effort ajastust.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kiirjuhend&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# eeldused&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&lt;br /&gt;
# esmane login&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&lt;br /&gt;
# näide: delivery + kupongid + lisandid/mahavõtud&lt;br /&gt;
node dominos-cli-playwright.mjs order --lang et --city tallinn --delivery \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot; \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L:hand-tossed&amp;quot; &amp;quot;Hawaii:M:thin&amp;quot; \&lt;br /&gt;
  --add &amp;quot;Pepperoni:+jalapeno&amp;quot; --rm &amp;quot;Hawaii:-ananas&amp;quot; \&lt;br /&gt;
  --coupon ALE --coupon MORE&lt;br /&gt;
&lt;br /&gt;
# pickup kindlast poest&lt;br /&gt;
node dominos-cli-playwright.mjs order --pickup --store &amp;quot;Tondi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# reorder (viimati tehtu), lisa kupong&lt;br /&gt;
node dominos-cli-playwright.mjs reorder --latest --coupon ALE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Märkus: skript avab ametliku Domino’s Estonia saidi (Tallinn) ja liigub menüüs/checkoutis; kupongid nagu ALE, MORE jms on päriselt olemasolevate promode näited nende lehel (promo-/uudiste-lehed). Wolti/Bolt Foodi API-d on suunatud partneritele (POS/integratsioon), mitte klienditellimuste CLI-ks — seetõttu kasutame Playwrighti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Näitena veel eelistuste fail&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;et&amp;quot;,&lt;br /&gt;
  &amp;quot;city&amp;quot;: &amp;quot;tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;delivery&amp;quot;: true,&lt;br /&gt;
  &amp;quot;pickup&amp;quot;: false,&lt;br /&gt;
  &amp;quot;address&amp;quot;: &amp;quot;Näide tn 1, Tallinn&amp;quot;,&lt;br /&gt;
  &amp;quot;note&amp;quot;: &amp;quot;Uksekell 12&amp;quot;,&lt;br /&gt;
  &amp;quot;store&amp;quot;: &amp;quot;Tammsaare&amp;quot;,&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Pepperoni&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;hand-tossed&amp;quot;, &amp;quot;add&amp;quot;: [&amp;quot;jalapeno&amp;quot;], &amp;quot;remove&amp;quot;: [] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;Hawaii&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot;, &amp;quot;add&amp;quot;: [], &amp;quot;remove&amp;quot;: [&amp;quot;ananas&amp;quot;] },&lt;br /&gt;
    { &amp;quot;name&amp;quot;: &amp;quot;5 Cheeses&amp;quot;, &amp;quot;size&amp;quot;: &amp;quot;L&amp;quot;, &amp;quot;crust&amp;quot;: &amp;quot;thin&amp;quot; }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;coupons&amp;quot;: [&amp;quot;MORE&amp;quot;, &amp;quot;TEISIPAEV&amp;quot;, &amp;quot;LUNCH&amp;quot;],&lt;br /&gt;
  &amp;quot;schedule&amp;quot;: { &amp;quot;type&amp;quot;: &amp;quot;today&amp;quot;, &amp;quot;time&amp;quot;: &amp;quot;19:00&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See sobib otse käsuga &#039;&#039;--config dominos-prefs.json&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Mida sinna panin ja miks:&lt;br /&gt;
* store: &amp;quot;Tammsaare&amp;quot; — Tallinnas on Domino’s Tammsaare/Mustakivi filiaalid (nt Woltis nähtavad; Tammsaare aadressi kinnitab ka kaardikanne). &lt;br /&gt;
* coupons: [&amp;quot;MORE&amp;quot;,&amp;quot;TEISIPAEV&amp;quot;,&amp;quot;LUNCH&amp;quot;] — need vastavad Domino’s Tallinn promo-lehtedel toodud koodidele: 2+1 (MORE), Crazy Tuesday (TEISIPAEV) ja lõunapakkumine (LUNCH). Vaata nende täpseid tingimusi promo-lehelt. &lt;br /&gt;
* Menüü/põhi-URL ja eesti/inglise lehed on samad, mida skript kasutab (/et/tallinn, /en/tallinn).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kuidas kasutada&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# kasutamine prefs.json&#039;iga&lt;br /&gt;
node dominos-cli-playwright.mjs order --config dominos-prefs.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lisateave:&lt;br /&gt;
* https://dominospizza.ee/et/tallinn/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kupongid / promokoodid&#039;&#039;&lt;br /&gt;
* LUNCH (Lunch Offer) — [https://dominospizza.ee/en/tallinn/promo/lunch-offer/ ametlik promo-leht koos tingimustega].&lt;br /&gt;
* TEISIPÄEV (Crazy Tuesday) — [https://dominospizza.ee/et/tallinn/promo/crazy-tuesday-offer/ ametlik promo/uudis, tingimused (2 M või L ühe hinnaga)]. &lt;br /&gt;
* MORE (2+1 offer) — [https://dominospizza.ee/et/tallinn/promo/21-offer/ ametlik promo-leht koos piirangutega]&lt;br /&gt;
&lt;br /&gt;
Teised kampaaniad (nt [https://dominospizza.ee/et/tallinn/promo/mega-weekend/ MEGA Weekend], [https://dominospizza.ee/et/tallinn/promo/cutting-prices/ Cutting Prices], [https://dominospizza.ee/et/tallinn/promo/tastier-together/ „Üheskoos on maitsvam!“]) — vajadusel vaata sealt jooksvaid koode ja tingimusi. &lt;br /&gt;
&lt;br /&gt;
Kõik uudised/pakkumised ühes kohas: [https://dominospizza.ee/et/tallinn/news/ ametlik “News &amp;amp; Promotions” koondleht].&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145798</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145798"/>
		<updated>2025-11-11T05:28:59Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Pitsa käsureal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* [https://dominospizza.ee/et/tallinn/ Domino Tallinn] toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. [https://dominospizza.ee/et/tallinn/ Domino Eesti ametlik veeb on siin], nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145797</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145797"/>
		<updated>2025-11-11T05:26:44Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* Domino’s Tallinn toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab [https://dominospizza.ee/et/tallinn/ Domino Eesti veebilehe (Tallinn)] ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. Domino’s Estonia ametlik veeb on siin (Tallinn leht/promo jms), nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Avaneb veebilehitseja. Logi sisse oma Domino Eesti kontoga (vajadusel 2FA).&lt;br /&gt;
* Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seejärel vaata korv üle ja kinnita makse käsitsi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tähtsad tähelepanekud&#039;&#039;&#039;&lt;br /&gt;
* TOS &amp;amp; turvalisus: skript ei väldi CAPTCHA-sid ega 2FA-d ning ei tee makset automaatselt — see aitab vaid korvi täita ja checkouti jõuda.&lt;br /&gt;
* Asukohad &amp;amp; ametlik kanal: Domino tegutseb Tallinnas ametliku veebilehe ja rakendustedega; vajadusel võid sama brändi leida ka Wolti kaudu, kuid Wolti/Bolt Foodi kliendipoolset avalikku API-t pole (nii et veebiklõpsu-automatiseerimine on ainuke realistlik CLI-tee).&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145796</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145796"/>
		<updated>2025-11-11T04:49:52Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino’s Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* Domino’s Tallinn toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab Domino’s Estonia saidi (Tallinn) ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. Domino’s Estonia ametlik veeb on siin (Tallinn leht/promo jms), nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
– Avaneb veebilehitseja. Logi sisse oma Domino’s Estonia kontoga (vajadusel 2FA).&lt;br /&gt;
– Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145795</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145795"/>
		<updated>2025-11-11T04:49:32Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Näide: Domino’s Tallinn pitsa käsurealt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* Domino’s Tallinn toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino’s Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mida skript teeb?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* See skript avab Domino’s Estonia saidi (Tallinn) ja laseb esimesel korral käsitsi sisse logida (koos 2FA-ga), salvestab sessiooni auth.json-i;&lt;br /&gt;
* järgmistel kordadel lisab nimede järgi (nt “Pepperoni”, “Hawaii”) valitud suuruses pitsad korvi ja viib checkouti juurde, et saaksid makse käsitsi kinnitada (skript ei kinnita ega tee makset sinu eest).&lt;br /&gt;
Märkus: see on „best-effort“ automatiseerimine — veebilehe elemendid võivad muutuda. Domino’s Estonia ametlik veeb on siin (Tallinn leht/promo jms), nii et sihtkoht on korrektne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kuidas kasutada&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eeldused (Linux):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Node 18+ ja Playwright&lt;br /&gt;
sudo apt-get install -y nodejs npm  # (või nvm)&lt;br /&gt;
npm init -y&lt;br /&gt;
npm i playwright&lt;br /&gt;
npx playwright install --with-deps chromium&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laadi kanvasest fail alla nimega dominos-cli-playwright.mjs (see on juba avatud siin vestluse kõrval). Tee see käivitatavaks:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
chmod u+x dominos-cli-playwright.mjs&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esmane sisselogimine (salvestab auth.json):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
node dominos-cli-playwright.mjs init&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
– Avaneb veebilehitseja. Logi sisse oma Domino’s Estonia kontoga (vajadusel 2FA).&lt;br /&gt;
– Sulge veebilehitseja aken alles siis, kui skript teatab, et sessioon on salvestatud.&lt;br /&gt;
&lt;br /&gt;
Tellimus terminalist (lisab korvi ja avab checkouti):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line&amp;quot;&amp;gt;&lt;br /&gt;
# Näide: 1x Pepperoni (L), 1x Hawaii (M), eesti keel, Tallinn&lt;br /&gt;
node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
  --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \&lt;br /&gt;
  --address &amp;quot;Näide tn 1, Tallinn&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145794</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145794"/>
		<updated>2025-11-11T04:41:53Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Pitsa käsureal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* Domino’s Tallinn toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
====Näide: Domino’s Tallinn pitsa käsurealt====&lt;br /&gt;
&lt;br /&gt;
Playwrighti skript (Node.js):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line highlight=&amp;quot;3,6-7&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env node&lt;br /&gt;
// Minimal Playwright-based CLI to add pizzas to cart on Domino&#039;s Estonia site&lt;br /&gt;
// and navigate to checkout. It does NOT bypass login/2FA or auto-submit payment.&lt;br /&gt;
// First run `init` to log in manually; the session is saved to auth.json.&lt;br /&gt;
// Usage examples:&lt;br /&gt;
//   node dominos-cli-playwright.mjs init&lt;br /&gt;
//   node dominos-cli-playwright.mjs order --city tallinn --lang et \&lt;br /&gt;
//       --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import { chromium } from &#039;playwright&#039;;&lt;br /&gt;
import fs from &#039;fs&#039;;&lt;br /&gt;
&lt;br /&gt;
const AUTH_FILE = &#039;./auth.json&#039;;&lt;br /&gt;
&lt;br /&gt;
function parseArgs() {&lt;br /&gt;
  const args = process.argv.slice(2);&lt;br /&gt;
  const cmd = args[0] || &#039;help&#039;;&lt;br /&gt;
  const opts = { city: &#039;tallinn&#039;, lang: &#039;et&#039;, items: [], address: &#039;&#039;, note: &#039;&#039; };&lt;br /&gt;
  for (let i = 1; i &amp;lt; args.length; i++) {&lt;br /&gt;
    const [k, v] = args[i].startsWith(&#039;--&#039;) ? args[i].slice(2).split(&#039;=&#039;) : [args[i], null];&lt;br /&gt;
    switch (k) {&lt;br /&gt;
      case &#039;city&#039;: opts.city = v || args[++i]; break;&lt;br /&gt;
      case &#039;lang&#039;: opts.lang = v || args[++i]; break;&lt;br /&gt;
      case &#039;items&#039;: {&lt;br /&gt;
        // allow space-separated after --items or multiple --items flags&lt;br /&gt;
        if (v) {&lt;br /&gt;
          opts.items.push(v);&lt;br /&gt;
        } else {&lt;br /&gt;
          while (args[i+1] &amp;amp;&amp;amp; !args[i+1].startsWith(&#039;--&#039;)) opts.items.push(args[++i]);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      case &#039;address&#039;: opts.address = v || args[++i]; break;&lt;br /&gt;
      case &#039;note&#039;: opts.note = v || args[++i]; break;&lt;br /&gt;
      default:&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return { cmd, opts };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function ensureAuth(browser, baseUrl) {&lt;br /&gt;
  // If we already have auth, return storageState&lt;br /&gt;
  if (fs.existsSync(AUTH_FILE)) return AUTH_FILE;&lt;br /&gt;
&lt;br /&gt;
  const ctx = await browser.newContext();&lt;br /&gt;
  const page = await ctx.newPage();&lt;br /&gt;
  console.log(&#039;\nOpening login page. Please log in manually, including any 2FA.&#039;);&lt;br /&gt;
  await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
  // Open login (button text varies by language)&lt;br /&gt;
  const loginSelectors = [&lt;br /&gt;
    &#039;text=Logi sisse&#039;,&lt;br /&gt;
    &#039;text=Login&#039;,&lt;br /&gt;
    &#039;text=Sign in&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of loginSelectors) {&lt;br /&gt;
    const el = await page.$(sel);&lt;br /&gt;
    if (el) { await el.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;Waiting up to 5 minutes for you to finish login...&#039;);&lt;br /&gt;
  await page.waitForTimeout(10000);&lt;br /&gt;
  // Poll for profile indicator (avatar icon; site-specific, so fall back to manual)&lt;br /&gt;
  try {&lt;br /&gt;
    await page.waitForSelector(&#039;text=Logi välja,Logout,Sign out&#039;, { timeout: 300000 });&lt;br /&gt;
  } catch (e) {&lt;br /&gt;
    console.warn(&#039;Could not detect post-login state automatically. If you DID log in, we will still save cookies.&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await ctx.storageState({ path: AUTH_FILE });&lt;br /&gt;
  await ctx.close();&lt;br /&gt;
  console.log(`Saved session to ${AUTH_FILE}`);&lt;br /&gt;
  return AUTH_FILE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function addItemByName(page, name, sizeCode) {&lt;br /&gt;
  // Navigate to pizzas list and search by name, then choose size&lt;br /&gt;
  // sizeCode: &#039;S&#039; | &#039;M&#039; | &#039;L&#039; | &#039;XL&#039; (if available)&lt;br /&gt;
  // Open pizza list&lt;br /&gt;
  await page.goto(`${page.url().split(&#039;/&#039;).slice(0, 3).join(&#039;/&#039;)}/et/tallinn/pitsa/`);&lt;br /&gt;
  // Accept cookies if banner exists&lt;br /&gt;
  const cookieBtn = await page.$(&#039;button:has-text(&amp;quot;Nõustu&amp;quot;)&#039;);&lt;br /&gt;
  if (cookieBtn) await cookieBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Try built-in search&lt;br /&gt;
  const searchBox = await page.$(&#039;input[placeholder*=&amp;quot;Otsi&amp;quot;], input[placeholder*=&amp;quot;Search&amp;quot;]&#039;);&lt;br /&gt;
  if (searchBox) {&lt;br /&gt;
    await searchBox.fill(name);&lt;br /&gt;
    await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
    await page.waitForLoadState(&#039;networkidle&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Click pizza card containing the name&lt;br /&gt;
  const card = await page.waitForSelector(`a:has-text(&amp;quot;${name}&amp;quot;)`, { timeout: 20000 });&lt;br /&gt;
  await card.click();&lt;br /&gt;
&lt;br /&gt;
  // Choose size&lt;br /&gt;
  const sizeMap = { &#039;S&#039;:&#039;S&#039;, &#039;M&#039;:&#039;M&#039;, &#039;L&#039;:&#039;L&#039;, &#039;XL&#039;:&#039;XL&#039; };&lt;br /&gt;
  const size = sizeMap[sizeCode?.toUpperCase?.()] || &#039;L&#039;;&lt;br /&gt;
  const sizeBtn = await page.$(`button:has-text(&amp;quot;${size}&amp;quot;)`);&lt;br /&gt;
  if (sizeBtn) await sizeBtn.click();&lt;br /&gt;
&lt;br /&gt;
  // Add to cart (button text varies by language)&lt;br /&gt;
  const addSelectors = [&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Lisa korvi&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add to cart&amp;quot;)&#039;,&lt;br /&gt;
    &#039;button:has-text(&amp;quot;Add&amp;quot;)&#039;&lt;br /&gt;
  ];&lt;br /&gt;
  for (const sel of addSelectors) {&lt;br /&gt;
    const btn = await page.$(sel);&lt;br /&gt;
    if (btn) { await btn.click(); break; }&lt;br /&gt;
  }&lt;br /&gt;
  await page.waitForTimeout(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function proceedToCheckout(page, address, note) {&lt;br /&gt;
  // Open cart&lt;br /&gt;
  const cartSelectors = [&#039;a:has-text(&amp;quot;Ostukorv&amp;quot;)&#039;, &#039;a[aria-label=&amp;quot;Cart&amp;quot;]&#039;, &#039;a[href*=&amp;quot;cart&amp;quot;]&#039;];&lt;br /&gt;
  for (const sel of cartSelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  // Delivery mode and address may require interaction; attempt simple flow then pause for manual edits&lt;br /&gt;
  const deliverySelectors = [&#039;button:has-text(&amp;quot;Kojutoomine&amp;quot;)&#039;, &#039;button:has-text(&amp;quot;Delivery&amp;quot;)&#039;];&lt;br /&gt;
  for (const sel of deliverySelectors) { const el = await page.$(sel); if (el) { await el.click(); break; } }&lt;br /&gt;
&lt;br /&gt;
  if (address) {&lt;br /&gt;
    const addrInput = await page.$(&#039;input[name*=&amp;quot;address&amp;quot;], input[placeholder*=&amp;quot;Aadress&amp;quot;], input[placeholder*=&amp;quot;Address&amp;quot;]&#039;);&lt;br /&gt;
    if (addrInput) {&lt;br /&gt;
      await addrInput.fill(address);&lt;br /&gt;
      await page.keyboard.press(&#039;Enter&#039;);&lt;br /&gt;
      await page.waitForTimeout(1500);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (note) {&lt;br /&gt;
    const noteBox = await page.$(&#039;textarea[placeholder*=&amp;quot;märkused&amp;quot; i], textarea[placeholder*=&amp;quot;notes&amp;quot; i]&#039;);&lt;br /&gt;
    if (noteBox) await noteBox.fill(note);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.log(&#039;At checkout. Please review payment and place the order manually.&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
async function main() {&lt;br /&gt;
  const { cmd, opts } = parseArgs();&lt;br /&gt;
  const baseUrl = `https://dominospizza.ee/${opts.lang}/${opts.city}/`;&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;help&#039; || cmd === &#039;--help&#039; || cmd === &#039;-h&#039;) {&lt;br /&gt;
    console.log(`\nDomino&#039;s Estonia CLI (Playwright)\n\nCommands:\n  init\n      Open site and let you log in; saves cookies to ${AUTH_FILE}.\n\n  order --city tallinn --lang et \\\n        --items &amp;quot;Pepperoni:L&amp;quot; &amp;quot;Hawaii:M&amp;quot; \\\n        --address &amp;quot;Sinu aadress 1&amp;quot; --note &amp;quot;Uksekell 12&amp;quot;\n      Adds items to cart and navigates to checkout.\n\nNotes:\n  • Selectors are best-effort and may need tweaks if the site changes.\n  • Payment is never submitted automatically.\n`);&lt;br /&gt;
    process.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const browser = await chromium.launch({ headless: false });&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;init&#039;) {&lt;br /&gt;
    await ensureAuth(browser, baseUrl);&lt;br /&gt;
    await browser.close();&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (cmd === &#039;order&#039;) {&lt;br /&gt;
    const storageState = fs.existsSync(AUTH_FILE) ? AUTH_FILE : null;&lt;br /&gt;
    const context = await browser.newContext(storageState ? { storageState } : {});&lt;br /&gt;
    const page = await context.newPage();&lt;br /&gt;
    await page.goto(baseUrl);&lt;br /&gt;
&lt;br /&gt;
    // Try to add each requested item&lt;br /&gt;
    for (const spec of opts.items) {&lt;br /&gt;
      const [name, size = &#039;L&#039;] = spec.split(&#039;:&#039;);&lt;br /&gt;
      console.log(`Adding ${name} (${size})...`);&lt;br /&gt;
      await addItemByName(page, name, size);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    await proceedToCheckout(page, opts.address, opts.note);&lt;br /&gt;
&lt;br /&gt;
    // keep the browser open so user can finish payment&lt;br /&gt;
    console.log(&#039;Done. Leaving browser open.&#039;);&lt;br /&gt;
    return; // do not close browser&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  console.error(&#039;Unknown command. Use --help for usage.&#039;);&lt;br /&gt;
  await browser.close();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
main().catch(err =&amp;gt; { console.error(err); process.exit(1); });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145793</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145793"/>
		<updated>2025-11-11T04:18:50Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Pitsa käsureal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
* https://github.com/harrybrwn/apizza - Domino pitsa&lt;br /&gt;
&lt;br /&gt;
xxczaki/pizza-cli on valmis käsurea-tööriist, millega Eestist (Wolt/Bolt Food, Domino’s Tallinn) päriselt pitsat tellida ei saa.&lt;br /&gt;
&lt;br /&gt;
Miks?&lt;br /&gt;
* xxczaki/pizza-cli on demo „just for fun!“ — see loob vaid JSON-faili, ei tee päris tellimust.&lt;br /&gt;
* On olemas CLI-d, mis kasutavad Domino’s API-t, kuid need sihivad USA/teisi turge (nt harrybrwn/apizza) ja ei tööta Eesti domeenidega. &lt;br /&gt;
* Woltil on API-d ainult partneritele, kaupmeestele (tellimused, menüü, asukoht), mitte tavakasutajale tellimiseks. &lt;br /&gt;
* Bolt Foodil on samuti integratsiooni-API restoranidele/POS-idele, mitte avalik „customer ordering“ API. Bolt ütleb ka avalikult, et neil ei ole avalikke API-sid lõppkasutajale. &lt;br /&gt;
* Domino’s Tallinn toimib ametliku veebiga (ja rakendustega), mitte CLI kaudu.&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145792</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145792"/>
		<updated>2025-11-11T04:12:00Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Pitsa käsureal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/xxczaki/pizza-cli&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145791</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145791"/>
		<updated>2025-11-11T04:11:48Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* apt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===Pitsa käsureal===&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145790</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145790"/>
		<updated>2025-11-11T04:11:19Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* apt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145789</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145789"/>
		<updated>2025-11-11T04:11:05Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* apt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====apt-get====&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
====apt====&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145788</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145788"/>
		<updated>2025-11-11T04:10:31Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* eSpeak-NG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145787</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145787"/>
		<updated>2025-11-11T04:08:43Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Star Wars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võimalus veebis vaadata, uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145786</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145786"/>
		<updated>2025-11-11T04:02:43Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Star Wars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Uued episoodid ja ka teised projektid - https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145785</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145785"/>
		<updated>2025-11-11T04:01:44Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* Star Wars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
Uued episoodid https://www.asciimation.co.nz/&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145768</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145768"/>
		<updated>2025-11-06T00:09:15Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* eSpeak-NG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebipõhine ja naturaalse eesti keele kõlaga: [https://neurokone.ee/ Neurokõne], saab ka *.wav failina alla laadida.&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145767</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145767"/>
		<updated>2025-11-06T00:06:50Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* graafiline: sajab lund */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://trendoceans.com/snowfall-on-your-linux-desktop-this-christmas/&lt;br /&gt;
* https://fostips.com/xsnow-animated-snow-falling-desktop-linux/&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145766</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145766"/>
		<updated>2025-11-06T00:04:34Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* sajab lund */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
====graafiline: sajab lund====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xsnow&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xsnow&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Xsnow-2.png]]&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Xsnow-2.png&amp;diff=145765</id>
		<title>File:Xsnow-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Xsnow-2.png&amp;diff=145765"/>
		<updated>2025-11-06T00:04:24Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Xsnow-1.png&amp;diff=145764</id>
		<title>File:Xsnow-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Xsnow-1.png&amp;diff=145764"/>
		<updated>2025-11-06T00:03:58Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145763</id>
		<title>Lõbusad käsud Linuxis</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=L%C3%B5busad_k%C3%A4sud_Linuxis&amp;diff=145763"/>
		<updated>2025-11-05T23:56:09Z</updated>

		<summary type="html">&lt;p&gt;Edlaug: /* eSpeak-NG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Autor==&lt;br /&gt;
Aleksandra Sepp, AK21 &amp;lt;br&amp;gt;&lt;br /&gt;
10.november 2017 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendanud: Edmund Laugasson, 05.11.2025&lt;br /&gt;
&lt;br /&gt;
== Sissejuhatus ==&lt;br /&gt;
&lt;br /&gt;
Kas teadsite, et Linux ei olegi ainult administraatorite ja professionaalide jaoks mõeldud? Te võite mängida sõnamänge, rääkida oma Linuxi terminaliga või hoopis luua ilusaid ASCII pilte ja palju muud. Seda kõike saab ise katsetada, teades õigeid käske. Antud artiklis tutvume mõnede käskudega, mis teevad tuju heaks ning aitavad saada positiivsele lainele peale pingelist tööpäeva. &lt;br /&gt;
&lt;br /&gt;
Kui teil ei ole tarkvara paigaldamiseks vajalikku superkasutaja õigustes Linuxiga arvutit käepärast, siis on [https://www.virtualbox.org/ VirtualBoxi] virtuaalmasin võimalik [http://upload.itcollege.ee/edmund/ova/ubuntu/ alla laadida ja importida siit aadressilt].&lt;br /&gt;
&lt;br /&gt;
Ennem uue tarkvara paigaldamist tuleb uuendada varamu pakettide nimekirja käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nüüd võime alustada!&lt;br /&gt;
&lt;br /&gt;
== Lõbusate käskude tuntuimad näited ==&lt;br /&gt;
===Cowsay===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Cowsay&amp;quot; on ilmselt kõige tuntuim lõbus käsk Linux&#039;is. Ta tagastab kasutaja tekstisisendit lehma või mõnel muul kasutaja poolt valitud looma kujul.&lt;br /&gt;
Paigaldame cowsay järgmise käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install cowsay&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cow.png]]&lt;br /&gt;
&lt;br /&gt;
Selleks, et näha kogu loomade nimekirja, kasutame käsu:&lt;br /&gt;
&lt;br /&gt;
 cowsay -l&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Animals.PNG]]&lt;br /&gt;
&lt;br /&gt;
Valime meelepärast looma - näiteks koalat, ja soovime, et ta ütleks, et eukalüptid on toredad. Kasutame selleks järgmist lauset:&lt;br /&gt;
 cowsay -f koala Eucalypts are cool!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Coala.png]]&lt;br /&gt;
&lt;br /&gt;
Laiendamisvõimalus:&lt;br /&gt;
&lt;br /&gt;
kausta &#039;&#039;/usr/share/cowsay/cows/&#039;&#039; saab salvestada faile lisaks, näiteks aadressilt https://github.com/paulkaefer/cowsay-files&lt;br /&gt;
&lt;br /&gt;
====Graafiline versioon xcowsay====&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install xcowsay&lt;br /&gt;
&lt;br /&gt;
Käivitamine käsureal:&lt;br /&gt;
 xcowsay Linux on vahva!&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xcowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===CMatrix===&lt;br /&gt;
CMatrix võimaldab teil oma terminalis näha maatriksfilmi sarnaselt ekraanisäästjatele. Paigaldamine teostatakse käsuga:&lt;br /&gt;
 sudo apt-get install cmatrix&lt;br /&gt;
Paneme käima käsuga:&lt;br /&gt;
 cmatrix&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Cmatrix.png]]&lt;br /&gt;
&lt;br /&gt;
===hollywood===&lt;br /&gt;
&lt;br /&gt;
Hollywoodi filmide stiilis häkkerikonsool. Tasub ennem käivitamist terminaliaken suuremaks teha, siis mahub rohkem asju kaadrisse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install hollywood&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 hollywood&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C, vajadusel vajutada korduvalt.&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Hollywood.png]]&lt;br /&gt;
&lt;br /&gt;
===bb===&lt;br /&gt;
&lt;br /&gt;
Rikkaliku väljundiga ASCII demo. Võimalus ka heli taustaks lubada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install bb&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bb&lt;br /&gt;
&lt;br /&gt;
Erinevad tulemused:&lt;br /&gt;
&lt;br /&gt;
[[File:Bb1.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Bb2.png]]&lt;br /&gt;
&lt;br /&gt;
===oneko===&lt;br /&gt;
Väike kass, mis käsurealt käivitamisel järgneb hiirekursorile. Liigutada hiirekursorit. Kui paigale jätta, siis kass liigub kursorini ja jääb siis ka istuma ning ootele, millal taas hiirekursorit liigutatakse.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install oneko&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 oneko&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Oneko.png]]&lt;br /&gt;
&lt;br /&gt;
===x11-apps===&lt;br /&gt;
&lt;br /&gt;
[https://et.wikipedia.org/wiki/X_Window_System Graafikaserveriga X.org] kaasatulevad rakendused.&lt;br /&gt;
&lt;br /&gt;
Lisateave &#039;&#039;x11-apps&#039;&#039; kohta&lt;br /&gt;
 apt show x11-apps&lt;br /&gt;
&lt;br /&gt;
 Description: X applications&lt;br /&gt;
 This package provides a miscellaneous assortment of X applications&lt;br /&gt;
 that ship with the X Window System, including:&lt;br /&gt;
  - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;&lt;br /&gt;
  - ico, a demo program animating polyhedrons;&lt;br /&gt;
  - oclock and xclock, graphical clocks;&lt;br /&gt;
  - rendercheck, a program to test render extension implementations;&lt;br /&gt;
  - transset, a tool to set opacity property on a window;&lt;br /&gt;
  - xbiff, a tool which tells you when you have new email;&lt;br /&gt;
  - xcalc, a scientific calculator desktop accessory;&lt;br /&gt;
  - xclipboard, a tool to manage cut-and-pasted text selections;&lt;br /&gt;
  - xconsole, which monitors system console messages;&lt;br /&gt;
  - xcursorgen, a tool for creating X cursor files from PNGs;&lt;br /&gt;
  - xditview, a viewer for ditroff output;&lt;br /&gt;
  - xedit, a simple text editor for X;&lt;br /&gt;
  - xeyes, a demo program in which a pair of eyes track the pointer;&lt;br /&gt;
  - xgc, a graphics demo;&lt;br /&gt;
  - xload, a monitor for the system load average;&lt;br /&gt;
  - xlogo, a demo program that displays the X logo;&lt;br /&gt;
  - xmag, which magnifies parts of the X screen;&lt;br /&gt;
  - xman, a manual page browser;&lt;br /&gt;
  - xmore, a text pager;&lt;br /&gt;
  - xwd, a utility for taking window dumps (&amp;quot;screenshots&amp;quot;) of the X session;&lt;br /&gt;
  - xwud, a viewer for window dumps created by xwd;&lt;br /&gt;
  - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical&lt;br /&gt;
    operations under the X Window System;&lt;br /&gt;
 .&lt;br /&gt;
 The xbiff, xcalc, xconsole, xedit and xman programs use bitmap images&lt;br /&gt;
 provided by the xbitmaps package.&lt;br /&gt;
&lt;br /&gt;
Siit nimekirjast võib testida erinevaid rakendusi. Allpool on paar näidet.&lt;br /&gt;
&lt;br /&gt;
====xeyes====&lt;br /&gt;
Graafilised silmad, mis jälgivad hiirekursorit, kui seda liigutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine vajadusel, tihti on juba paigaldatud kuna graafikaserver X.org on paigaldatud.&lt;br /&gt;
 sudo apt install x11-apps&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 xeyes&lt;br /&gt;
&lt;br /&gt;
Väljumiseks: CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xeyes.png]]&lt;br /&gt;
&lt;br /&gt;
====xgc====&lt;br /&gt;
Graafika demo.&lt;br /&gt;
&lt;br /&gt;
Käivitamine terminalis&lt;br /&gt;
 xgc&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Xgc.png]]&lt;br /&gt;
&lt;br /&gt;
===Fortune===&lt;br /&gt;
Fortune käsu abil saate lugeda oma terminalis juhuslikke tsitaate ja naljakaid ennustusi. Paigaldame enda süsteemi fortune paketi:&lt;br /&gt;
 sudo apt-get install fortune &lt;br /&gt;
Käivitame käsuga:&lt;br /&gt;
 fortune -s&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Fortune.png]]&lt;br /&gt;
&lt;br /&gt;
===Figlet===&lt;br /&gt;
&lt;br /&gt;
Figlet&#039;it kasutatakse suurte bännerite tegemiseks. Kõigepealt paigaldame Figlet&#039;it käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install figlet&lt;br /&gt;
&lt;br /&gt;
Käivitame käsu abil:&lt;br /&gt;
&lt;br /&gt;
 figlet Ta-daa!&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Figlet.png]]&lt;br /&gt;
&lt;br /&gt;
===TOIlet===&lt;br /&gt;
&lt;br /&gt;
Sarnane käsk figlet käsule on TOIlet&lt;br /&gt;
 sudo apt install toilet&lt;br /&gt;
Käivitamine:&lt;br /&gt;
 toilet ta-daa&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Toilet.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat===&lt;br /&gt;
Lolcati kasutatakse Linuxi terminalis peamiselt teksti vikerkaare värvidega värvimiseks.&lt;br /&gt;
Paigaldame käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install lolcat&lt;br /&gt;
Kõigepealt vaatame olemasolevaid valikuid kasutamiseks, abi info kuvamiseks kasutame järgmist käsku:&lt;br /&gt;
 lolcat -h&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===ls===&lt;br /&gt;
&lt;br /&gt;
ls on klassikaline UNIX&#039;i naljamäng. Iga kord, kui kasutaja kogemata sisestab &amp;quot;ls&amp;quot; asemel &amp;quot;sl&amp;quot; (Steam Locomotive), ilmub ekraanile vedur. Seda muidugi, kui sl on enne seda paigaldatud:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install sl&lt;br /&gt;
&lt;br /&gt;
 sl&lt;br /&gt;
&lt;br /&gt;
Tulemus:&lt;br /&gt;
&lt;br /&gt;
[[File:sl.png]]&lt;br /&gt;
&lt;br /&gt;
Lendamine&lt;br /&gt;
&lt;br /&gt;
 sl -F&lt;br /&gt;
===parrot.live===&lt;br /&gt;
&lt;br /&gt;
https://github.com/hugomd/parrot.live&lt;br /&gt;
https://github.com/hugomd/ascii-live&lt;br /&gt;
&lt;br /&gt;
 curl parrot.live&lt;br /&gt;
&lt;br /&gt;
 curl -v parrot.live&lt;br /&gt;
&lt;br /&gt;
Veel võimalusi&lt;br /&gt;
 curl ascii.live/list&lt;br /&gt;
 {&amp;quot;frames&amp;quot;:[&amp;quot;forrest&amp;quot;,&amp;quot;parrot&amp;quot;,&amp;quot;clock&amp;quot;,&amp;quot;nyan&amp;quot;,&amp;quot;rick&amp;quot;]} #saadaolevad käsud&lt;br /&gt;
&lt;br /&gt;
Saadaolevate käskude sisestamine&lt;br /&gt;
 curl ascii.live/forrest&lt;br /&gt;
 curl ascii.live/parrot&lt;br /&gt;
 curl ascii.live/clock&lt;br /&gt;
 curl ascii.live/nyan&lt;br /&gt;
 curl ascii.live/rick&lt;br /&gt;
===Lõke käsureal===&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install libaa-bin&lt;br /&gt;
&lt;br /&gt;
Erinevad rakendused:&lt;br /&gt;
 dpkg -L libaa-bin | grep /usr/bin/&lt;br /&gt;
* aafire – ASCII „kamin“.&lt;br /&gt;
* aainfo – näitab, milliseid juhtprogramme (&#039;&#039;driver&#039;&#039;) ja parameetreid aalib kasutab.&lt;br /&gt;
* aasavefont – salvestab fondi faili.&lt;br /&gt;
* aatest – testib aalib’i võimekust&lt;br /&gt;
&lt;br /&gt;
Kasutamine&lt;br /&gt;
 aafire&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Aafire.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Värviline&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install caca-utils&lt;br /&gt;
Paigaldatud rakendused:&lt;br /&gt;
 dpkg -L caca-utils | grep /usr/bin/&lt;br /&gt;
* cacademo - matrix-stiilis ekraanisäästja&lt;br /&gt;
* cacafire - värviline lõke&lt;br /&gt;
* cacaplay - esitab libcaca faile, vt &#039;&#039;man cacaplay&#039;&#039;&lt;br /&gt;
* cacaserver - telnet server libcaca jaoks, vt &#039;&#039;man cacaserver&#039;&#039;&lt;br /&gt;
* cacaview - ASCII piltide lehitseja, vt &#039;&#039;man cacaview&#039;&#039;&lt;br /&gt;
* img2txt - pildi teisendamine erinevateks tekstipõhisteks failideks, vt &#039;&#039;man img2txt&#039;&#039;&lt;br /&gt;
* cacaclock (leidub uutes Debian harudes), näitab ASCII-kella, väljumiseks q, vormingut saab määrata ([https://strftime.org/ strftime]):&lt;br /&gt;
 cacaclock -d &#039;%H.%M.%S&#039;&lt;br /&gt;
&lt;br /&gt;
käivitamine:&lt;br /&gt;
 cacafire&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
[[File:Cacafire-2025.png]]&lt;br /&gt;
&lt;br /&gt;
===RIG===&lt;br /&gt;
&lt;br /&gt;
RIG - Random Identity Generator&lt;br /&gt;
&lt;br /&gt;
Juhusliku väljamõeldud identiteedi loomine, vajadusel ka mitu korraga jt võimalused.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install rig&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 rig&lt;br /&gt;
&lt;br /&gt;
Abiteave, väljumine: q&lt;br /&gt;
 man rig&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
 Doug Peterson&lt;br /&gt;
 161 Main St&lt;br /&gt;
 Ames, IA  50010&lt;br /&gt;
 (515) xxx-xxxx&lt;br /&gt;
&lt;br /&gt;
===nyancat===&lt;br /&gt;
Paigaldamiseks&lt;br /&gt;
 sudo apt install nyancat&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 nyancat&lt;br /&gt;
&lt;br /&gt;
Väljumiseks CTRL+C&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Nyancat.png]]&lt;br /&gt;
&lt;br /&gt;
===matemaatika===&lt;br /&gt;
====pii arvutamine====&lt;br /&gt;
&lt;br /&gt;
Matemaatikas kasutatakse konstanti [https://et.wikipedia.org/wiki/Pii pii], mille komakohtade arv on tavaliselt kasutusel kaks kohta 3,14; kuid võimalik ka rohkem arvutada.&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 sudo apt install pi&lt;br /&gt;
&lt;br /&gt;
Käivitamine (50 kohta peale koma) ja tulemus:&lt;br /&gt;
 pi 50&lt;br /&gt;
 3.1415926535897932384626433832795028841971693993751&lt;br /&gt;
&lt;br /&gt;
====algarvud====&lt;br /&gt;
&lt;br /&gt;
Terminalis&lt;br /&gt;
 factor 100&lt;br /&gt;
vastus:&lt;br /&gt;
 100: 2 2 5 5&lt;br /&gt;
tähendabki, et 100 = 2×2×5×5 (kõik on algarvud).&lt;br /&gt;
&lt;br /&gt;
Kui sisestad algarvu, prindib &#039;&#039;factor&#039;&#039; lihtsalt arvu iseenda tegurina, nt:&lt;br /&gt;
 factor 97&lt;br /&gt;
 97: 97&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mugav nipp: eksponentidena kuvamiseks kasuta &#039;&#039;-h&#039;&#039; (&#039;&#039;--exponents&#039;&#039;):&lt;br /&gt;
 factor -h 3000&lt;br /&gt;
 3000: 2^3 3 5^3&lt;br /&gt;
&lt;br /&gt;
Taustaks: GNU factor testib algarvulisust Baillie–PSW heuristikaga ja faktoreerib seejärel; väljundis on alati algarvud kasvavas järjekorras.&lt;br /&gt;
&lt;br /&gt;
Kui tahad ainult “on algarv?” kontrolli, siis lihtne kontroll on: kas väljundis on pärast koolonit ainult sama arv? Näiteks bash’is:&lt;br /&gt;
 n=97; out=$(factor &amp;quot;$n&amp;quot;); [ &amp;quot;${out#*: }&amp;quot; = &amp;quot;$n&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;algarv&amp;quot; || echo &amp;quot;pole algarv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisalugemist&lt;br /&gt;
* https://en.wikipedia.org/wiki/Factor_(Unix)&lt;br /&gt;
* https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html#factor-invocation&lt;br /&gt;
&lt;br /&gt;
===eSpeak-NG===&lt;br /&gt;
Tekst-&amp;gt;kõne süntees (TTS - &#039;&#039;Text-to-Speech&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (ng - &#039;&#039;new generation&#039;&#039;)&lt;br /&gt;
 sudo apt install espeak-ng&lt;br /&gt;
&lt;br /&gt;
Kasutamise abiteave&lt;br /&gt;
 man espeak-ng&lt;br /&gt;
&lt;br /&gt;
Käivitamine (helivaljust tasub tõsta, et oleks kuulda):&lt;br /&gt;
 espeak-ng -v et &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | aplay&lt;br /&gt;
&lt;br /&gt;
et on eesti keele hääldus. Tulemuseks on kuulda nimetatud lause.&lt;br /&gt;
&lt;br /&gt;
Failist teksti etteandmine:&lt;br /&gt;
 espeak-ng -v et -f tekst.txt&lt;br /&gt;
 # või, kui failis on SSML:&lt;br /&gt;
 espeak-ng -v et -m -f tekst.ssml&lt;br /&gt;
„-f“ loeb failist; „-m“ lubab SSML/XML parsimise ([https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language SSML] - &#039;&#039;Speech Synthesis Markup Language&#039;&#039;, [https://en.wikipedia.org/wiki/XML XML] - &#039;&#039;Extensible Markup Language&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variant on ka kasutada &#039;&#039;mbrola&#039;&#039; teeki, mis pisut pehmem, eesti meeshääl on &#039;&#039;mbrola-ee1&#039;&#039;&lt;br /&gt;
 sudo apt install mbrola mbrola-ee1&lt;br /&gt;
&lt;br /&gt;
Kasutamine:&lt;br /&gt;
 espeak-ng -v mb-ee1 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kiiruse muutmine (-s, words-per-minute):&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -s 140 aeglasem&lt;br /&gt;
* -s 220 kiirem&lt;br /&gt;
&lt;br /&gt;
Sõnadevaheline paus (-g, word gap)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
* -g 5  &amp;quot;Paus 50 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
* -g 12 &amp;quot;Paus ~120 ms iga sõna vahel.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hääletooni muutmine (-p pitch, 0..99, vaikimisi 50)&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 5 -p 77 &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v mb-ee1 -s 140 -g 1 -p 77 -f tekst.txt&lt;br /&gt;
&lt;br /&gt;
Kui vaja tooni muuta lõikude kaupa, kasuta SSML&#039;i &amp;lt;prosody pitch=&amp;quot;…&amp;quot;&amp;gt; ja lippu -m:&lt;br /&gt;
 espeak-ng -v mb-ee1 -m -f tekst.ssml&lt;br /&gt;
[https://espeak.sourceforge.net/ssml.html SSML&#039;is (Speech Synthesis Markup Language) toetatakse pitch väärtust (nt high, +20%, -10%)].&lt;br /&gt;
&lt;br /&gt;
Soovi korral saab ka salvestada helifaili:&lt;br /&gt;
 espeak-ng -v et -w out.wav &amp;quot;Tere! Kuidas läheb?&amp;quot;&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; &amp;gt; out.wav&lt;br /&gt;
--stdout annab WAV-päisega voo&lt;br /&gt;
&lt;br /&gt;
-w tekitab WAV‑faili (16-bit, 22050 Hz). Kui vajad MP3, konverteeri näiteks [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;iga:&lt;br /&gt;
 ffmpeg -i out.wav out.mp3&lt;br /&gt;
&lt;br /&gt;
Kuulamiseks:&lt;br /&gt;
 aplay out.wav &lt;br /&gt;
 Playing WAVE &#039;väljund.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Mono&lt;br /&gt;
&lt;br /&gt;
Stereo versioon [https://en.wikipedia.org/wiki/FFmpeg FFmpeg]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 out_stereo.wav&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libmp3lame out.mp3&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libvorbis -qscale:a 5 out.ogg&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a flac -compression_level 5 out.flac&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | ffmpeg -f wav -i - -ac 2 -c:a libopus -b:a 96k -vbr on -application audio out.opus&lt;br /&gt;
* -ac 2 dubleerib kanali (et oleks stereo); saad kohe [https://en.wikipedia.org/wiki/MP3 MP3]/[https://en.wikipedia.org/wiki/Ogg OGG]/[https://en.wikipedia.org/wiki/FLAC FLAC]/[https://en.wikipedia.org/wiki/Opus_(audio_format) Opus], vms.&lt;br /&gt;
* -qscale:a 5 ~160 kb/s kvaliteedipõhine režiim ([https://en.wikipedia.org/wiki/Vorbis Vorbis]’e tavaline praktika)&lt;br /&gt;
* [https://en.wikipedia.org/wiki/FLAC FLAC] on kadudeta; tihendusaste mõjutab vaid faili suurust/kiirust, mitte kvaliteeti&lt;br /&gt;
* libopus on eelistatud; 64–128 kb/s on tüüpiline vahemik, 96 kb/s on hea vaikimisi üldheli jaoks&lt;br /&gt;
&lt;br /&gt;
või ka [https://en.wikipedia.org/wiki/SoX SoX]&#039;i abil:&lt;br /&gt;
 espeak-ng -v et --stdout &amp;quot;Tere! Kuidas läheb?&amp;quot; | sox -t wav - -c 2 out_stereo.wav&lt;br /&gt;
&lt;br /&gt;
Millal kumb?&lt;br /&gt;
* FFmpeg – kui tahad ühest torust teha kõik (kanalite arv, kodeerimine MP3/OGG/FLAC, normaliseerimine, pan/route, jpm). Aktiivselt arendatud ja tohutu filterpank. Sobib hästi eSpeak-NG → MP3/OGG. &lt;br /&gt;
* SoX – väga lihtne lausekuju (&#039;&#039;syntax&#039;&#039;) kiireteks, väikesteks töötlusteks (kanalite dubleerimine, “remix”, miksimine). Hea käsurea “šveitsi nuga”, kuid projekt ise on praktiliselt soiku jäänud. NB! Mitmed projektid on SoX&#039;ist loobunud just hoolduse, platvormitõrgete tõttu.&lt;br /&gt;
&lt;br /&gt;
Kuulamine&lt;br /&gt;
 aplay out_stereo.wav &lt;br /&gt;
 Playing WAVE &#039;out_stereo.wav&#039; : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo&lt;br /&gt;
&lt;br /&gt;
Paremat tulemust annab väga võimekas käsurea meediamängija [https://mpv.io/ mpv] (olemas ka Androidile):&lt;br /&gt;
 mpv out_stereo.mp3 &lt;br /&gt;
 (+) Audio --aid=1 (mp3 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
[[File:Out stereo.mp3]]&lt;br /&gt;
&lt;br /&gt;
 mpv out_stereo.wav &lt;br /&gt;
 (+) Audio --aid=1 (pcm_s16le 2ch 22050Hz)&lt;br /&gt;
 AO: [pipewire] 22050Hz stereo 2ch s16&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
[[File:Out stereo.wav]]&lt;br /&gt;
&lt;br /&gt;
 mpv out.opus &lt;br /&gt;
 (+) Audio --aid=1 (opus 2ch 48000Hz)&lt;br /&gt;
 AO: [pipewire] 48000Hz stereo 2ch floatp&lt;br /&gt;
 Exiting... (End of file)&lt;br /&gt;
&lt;br /&gt;
Graafilisi kasutajaliideseid espeak&#039;ile&lt;br /&gt;
* [https://www.muflone.com/gespeaker/english/ Gespeaker], [https://www.muflone.com/gespeaker/english/download.html allalaadimine]&lt;br /&gt;
* [https://www.appimagehub.com/p/1354602 Espeak-QtGui]&lt;br /&gt;
* [https://flathub.org/en/apps/net.mkiol.SpeechNote Speech Note] (kaasaegsem)&lt;br /&gt;
&lt;br /&gt;
Paigaldamine (üksjagu mahukad failid):&lt;br /&gt;
 flatpak install flathub net.mkiol.SpeechNote&lt;br /&gt;
        ID                                          Branch            Op       Remote        Download&lt;br /&gt;
 1. [✓] org.freedesktop.Platform.GL.default         24.08             u        flathub        49,7 MB / 145,4 MB&lt;br /&gt;
 2. [✓] org.freedesktop.Platform.GL.default         24.08extra        u        flathub        23,3 MB / 145,4 MB&lt;br /&gt;
 3. [✓] org.freedesktop.Platform.VAAPI.Intel        24.08             u        flathub        13,1 MB / 15,0 MB&lt;br /&gt;
 4. [✓] org.kde.Platform.Locale                     5.15-24.08        u        flathub        18,6 kB / 409,6 MB&lt;br /&gt;
 5. [✓] org.kde.Platform                            5.15-24.08        u        flathub         5,7 MB / 379,4 MB&lt;br /&gt;
 6. [—] net.mkiol.SpeechNote                        stable            i        flathub       489,2 MB / 1,2 GB&lt;br /&gt;
Käivitamine&lt;br /&gt;
 flatpak run net.mkiol.SpeechNote&lt;br /&gt;
&lt;br /&gt;
Siin vajalik keelte tugi paigaldada, näiteks:&lt;br /&gt;
* Speech to Text: Eesti (WhisperCpp/et)&lt;br /&gt;
* Text to Speech: Eesti (Coqui CV VITS Female/et)&lt;br /&gt;
&lt;br /&gt;
[[File:Speech-note.png]]&lt;br /&gt;
&lt;br /&gt;
==Käskude kombineerimine==&lt;br /&gt;
Veelgi põnevam on see, et kui kõik varem vaadatud programmid on paigaldatud, saab nad omavahel kombineerida! Vaatame mõned näited:&lt;br /&gt;
&lt;br /&gt;
===Figlet ja lolcat===&lt;br /&gt;
&lt;br /&gt;
[[File:Figletandlolcat.png]]&lt;br /&gt;
&lt;br /&gt;
===Lolcat ja cowsay===&lt;br /&gt;
&lt;br /&gt;
[[File:Lolcat_cowsay.png]]&lt;br /&gt;
&lt;br /&gt;
===Cowsay, fortune ja lolcat===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;fortune | cowsay | lolcat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cow_fortune_lolcat.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Star Wars ==&lt;br /&gt;
Käsureal (terminalis, avaneb Linuxis enamasti ka CTRL+ALT+T abil) sisestada:&lt;br /&gt;
&lt;br /&gt;
 telnet starwarstel.net&lt;br /&gt;
&lt;br /&gt;
 telnet telehack.com&lt;br /&gt;
Viimases (telehack.com) tuleb eraldi käivitada käsk &#039;&#039;starwars&#039;&#039; ja valikus on ka palju teisi käske. Välja saab logida CTRL+D, exit+Enter abil. Mistahes käsu katkestamiseks CTRL+C.&lt;br /&gt;
&lt;br /&gt;
== Operatsioonisüsteemi logo ja teave terminalis ==&lt;br /&gt;
===neofetch===&lt;br /&gt;
Võimalusterohke [https://github.com/dylanaraps/neofetch Neofetch] suudab näidata operatsioonisüsteemi teavet ja logo ning ASCII faili käsureal:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dylanaraps/neofetch/wiki/Installation paigaldamine]&lt;br /&gt;
 sudo apt install neofetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 neofetch&lt;br /&gt;
&lt;br /&gt;
===screenfetch===&lt;br /&gt;
[https://github.com/KittyKatt/screenFetch Screenfetch] on teine sarnane rakendus&lt;br /&gt;
 sudo apt install screenfetch&lt;br /&gt;
&lt;br /&gt;
käivitamine terminalis:&lt;br /&gt;
 screenfetch&lt;br /&gt;
&lt;br /&gt;
[https://itsfoss.com/display-linux-logo-in-ascii/ lisateave]&lt;br /&gt;
&lt;br /&gt;
===linuxlogo===&lt;br /&gt;
Veel on linuxlogo&lt;br /&gt;
 sudo apt install linuxlogo&lt;br /&gt;
Käivitamine&lt;br /&gt;
 linuxlogo&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Linuxlogo.png]]&lt;br /&gt;
&lt;br /&gt;
===Veel sarnaseid rakendusi===&lt;br /&gt;
* [https://packages.ubuntu.com/search?keywords=hyfetch&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all hyfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=neowofetch&amp;amp;searchon=names neowofetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=fastfetch&amp;amp;searchon=names fastfetch], [https://packages.ubuntu.com/search?suite=all&amp;amp;section=all&amp;amp;arch=any&amp;amp;keywords=cpufetch&amp;amp;searchon=names cpufetch]&lt;br /&gt;
* [https://beucismis.github.io/awesome-fetch/ loetelu erinevatest sarnastest fetch-programmidest] &lt;br /&gt;
* veebilehitseja teabe vaatamiseks [https://webfetch.js.org/ webfetch]&lt;br /&gt;
* [https://github.com/HorlogeSkynet/archey4 Archey 4]&lt;br /&gt;
&lt;br /&gt;
==apt==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pühademuna&amp;quot; [https://en.wikipedia.org/wiki/APT_(software) apt] käsus, mis muidu tarkvarahalduseks mõeldud (tarkvarapakettide paigaldamine, eemaldamine, jne). Vanemates Ubuntu, Debian versioonides on &#039;&#039;apt-get&#039;&#039;, uuemates &#039;&#039;apt&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===apt-get===&lt;br /&gt;
 apt-get moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-get-moo.png]]&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
 apt moo&lt;br /&gt;
&lt;br /&gt;
[[File:Apt-moo.png]]&lt;br /&gt;
&lt;br /&gt;
== Pühad ==&lt;br /&gt;
=== Jõulud ===&lt;br /&gt;
====kuusk käsureal====&lt;br /&gt;
 curl https://raw.githubusercontent.com/sergiolepore/ChristBASHTree/master/tree-EN.sh | bash&lt;br /&gt;
[https://giphy.com/gifs/christmas-linux-xUNda6KphvbpYxL3tm tulemus], [https://itsfoss.com/christmas-linux-wallpaper/ lisateave]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teine võimalus&#039;&#039;&#039; - [https://www.linuxlinks.com/linux-candy-ctree-christmas-tree-terminal/ ctree]. Selle artikli lõpus veel palju viiteid erinevatele lõbusatele käskudele Linuxis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kolmas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -d -c -O &amp;quot;christmas.sh&amp;quot; https://gist.githubusercontent.com/ostechnix/66cecb6bbb9e35a492bccb9c6ecc5d9d/raw/1c281f20f9594297fd2a59197a3aff92db66f856/bashmastree.sh&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 bash christmas.sh&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neljas võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/chicolucio/terminal-christmas-tree Python&#039;is kirjutatud kuusepuu].&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 wget -q https://github.com/chicolucio/terminal-christmas-tree/raw/refs/heads/master/terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 python terminal_tree.py&lt;br /&gt;
või ka&lt;br /&gt;
 python3 terminal_tree.py&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Christmas-tree.gif]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Järgmine, keerulisem variant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paigaldamine&lt;br /&gt;
 perl -MCPAN -e &#039;install Acme::POE::Tree&#039;&lt;br /&gt;
&lt;br /&gt;
Käivitamine&lt;br /&gt;
 perl -MAcme::POE::Tree -e &#039;Acme::POE::Tree-&amp;gt;new()-&amp;gt;run()&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/ täpsemalt ja tulemus]&lt;br /&gt;
&lt;br /&gt;
====sajab lund====&lt;br /&gt;
Terminalis [https://climagic.org/coolstuff/let-it-snow.html sajab lund].&lt;br /&gt;
&lt;br /&gt;
Vajadusel paigaldada rakendused gawk, pv (&#039;&#039;sudo apt install gawk pv&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH*\033[0;0H&amp;quot;,a[x],x;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf &amp;quot;\u2744\n&amp;quot;);sleep 0.1;done|gawk &#039;{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf &amp;quot;\033[%s;%sH &amp;quot;,o,x;printf &amp;quot;\033[%s;%sH%s \033[0;0H&amp;quot;,a[x],x,$4;}}&#039;&lt;br /&gt;
&lt;br /&gt;
 yes $COLUMNS $LINES|pv -qL50|perl -ne&#039;$|=1;($c,$r)=split;$s||=$&amp;quot;x($c*$r);print$s;$s=$&amp;quot;x$c.$s;substr$s,rand$c,1,&amp;quot;*&amp;quot;;$s=substr$s,0,$c*$r+$c;&#039;&lt;br /&gt;
&lt;br /&gt;
 for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 1;done&lt;br /&gt;
&lt;br /&gt;
Tulemus&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal-snow1.gif]]&lt;br /&gt;
&lt;br /&gt;
== Kokkuvõte ==&lt;br /&gt;
&lt;br /&gt;
Antud artiklis uurisime käske, mida on põnev ise läbi proovida. Kuid on olemas veel selliseid, mille abil saab teiste kasutajate üle nalja teha. &lt;br /&gt;
Näiteks [https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/ bash-insulter&#039;i]  abil, mis peale paigaldamist ehmatab kasutajat juhul, kui sisestatud parool või käsk polnud õige.&lt;br /&gt;
&lt;br /&gt;
Artikli autor usub, et elus kõik peab olema tasakaalus. Põhiliste käskude teadmine Linux terminali jaoks on väga vajalik, kuid vahest peab ennast ümberlülitama ja lahutama meelt. Vahendid jäävad küll samaks, aga tulemus on palju lõbusam.&lt;br /&gt;
&lt;br /&gt;
Peale töö lõpetamist on alati soovituslik tühjendada APT&#039;i puhvri käsuga:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get clean&lt;br /&gt;
&lt;br /&gt;
== Kasutatud kirjandus ==&lt;br /&gt;
#http://smashingtips.com/linux/cool-terminal-commands-for-linux &lt;br /&gt;
#http://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
#https://www.tecmint.com/lolcat-command-to-output-rainbow-of-colors-in-linux-terminal/&lt;br /&gt;
#https://www.tecmint.com/linux-funny-commands/&lt;br /&gt;
#https://www.linuxtechi.com/12-interesting-linux-commands-make-you-laugh/&lt;br /&gt;
#https://www.cyberciti.biz/howto/insult-linux-unix-bash-user-when-typing-wrong-command/&lt;br /&gt;
#https://itsfoss.com/christmas-linux-wallpaper/&lt;br /&gt;
#https://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/&lt;br /&gt;
#https://www.wikihow.com/Watch-Star-Wars-on-Command-Prompt&lt;br /&gt;
#https://itsfoss.com/display-linux-logo-in-ascii/&lt;br /&gt;
#https://itsfoss.com/funny-linux-commands/&lt;br /&gt;
#https://itsfoss.com/ascii-art-linux-terminal/&lt;br /&gt;
#https://www.binarytides.com/linux-fun-commands/&lt;br /&gt;
&lt;br /&gt;
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]&lt;/div&gt;</summary>
		<author><name>Edlaug</name></author>
	</entry>
</feed>