{"id":55206,"date":"2020-01-15T00:00:00","date_gmt":"2020-01-14T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/alternativnoe-upravlenie-oknami-v-linux"},"modified":"2020-02-18T14:03:18","modified_gmt":"2020-02-18T11:03:18","slug":"alternativnoe-upravlenie-oknami-v-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","title":{"rendered":"Alternatiivne aknahaldus Linuxis","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ma olen neist, kes seadistavad Caps Lock'i keelevahetuseks, sest ei viitsi vajutada kahte klahvi, kui saab vajutada \u00fcht. Tahaksin isegi kahte tarbetut klahvi: \u00fchte ingliskeelse keelevahetuseks ja teist venekeelse jaoks. Kuid see teine tarbetu klahv, mis avab kontekstimen\u00fc\u00fc, on nii tarbetu, et selle on paljud s\u00fclearvutite tootjad v\u00e4lja l\u00f5iganud. Nii et tuleb leppida sellega, mis on. <\/p>\n<p><\/p>\n<p>Ja ma ei soovi, et aknaid vahetades peaksin otsima nende ikoone \u00fcles \u00fclesannepaneelilt, lugema pealkirju, kui lehitseme l\u00e4bi <em>Alt+Tab<\/em>, vahetama t\u00f6\u00f6lauad jne. Ma tahan vajutada klahvikombinatsiooni (ideaalis isegi \u00fchte, aga vabade tarbetute klahvidega ei ole enam) ja kohe sattuda vajalikku aknasse. N\u00e4iteks nii:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: Firefox<\/li>\n<li>Alt+D: Firefox (privaatne sirvimine)<\/li>\n<li>Alt+T: Terminal<\/li>\n<li>Alt+M: Kalkulaator<\/li>\n<li>Alt+E: IntelliJ Idea<\/li>\n<li>jne.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ja kui ma vajutan n\u00e4iteks <em>Alt+M<\/em> , tahan n\u00e4ha kalkulaatorit s\u00f5ltumata sellest, kas see programm on hetkel avatud. Kui see on avatud, siis peab fookus liikuma sellele aknale, ja kui ei ole \u2014 k\u00e4ivitama vajaliku programmi ja edastama fookuse, kui see on laaditud.<\/p>\n<p><\/p>\n<p>Juhtudel, mida eelmine stsenaarium ei kata, soovin, et mul oleks universaalsed klahvikombinatsioonid, millele saab h\u00f5lpsasti m\u00e4\u00e4rata k\u00f5ik avatud aknad. N\u00e4iteks on mul m\u00e4\u00e4ratud 10 kombinatsiooni alates <em>Alt+1<\/em> kuni <em>Alt+0<\/em>, mis ei ole seotud \u00fckski programmiga. Ma v\u00f5in lihtsalt vajutada <em>Alt+1<\/em> ja aken, mis on praegu fookuses, saab fookuse, kui vajutada <em>Alt+1<\/em>.<\/p>\n<p><\/p>\n<p>Allpool on kirjeldus veel m\u00f5nest funktsioonist ja vastus sellele, kuidas seda teha. Kuid hoiatuseks \u00fctlen, et selline isikup\u00e4rastamine v\u00f5ib tekitada tugevat s\u00f5ltuvust ja isegi v\u00f5\u00f5rutusn\u00e4hte, kui peate kasutama Windowsi, Mac OS-i v\u00f5i isegi kellegi teise arvutit Linuxiga.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Tegelikult, kui m\u00f5elda, ei kasuta me igap\u00e4evaselt nii palju programme. Brauser, terminal, IDE, m\u00f5ni s\u00f5numside rakendus, failihaldur, kalkulaator ja t\u00f5en\u00e4oliselt see on peaaegu k\u00f5ik. Pole nii palju klahvikombinatsioone, et katta 95% igap\u00e4evastest \u00fclesannetest.<\/p>\n<p><\/p>\n<p>Programmide puhul, millel on avatud mitu akent, saab \u00fche neist m\u00e4\u00e4rata peamiseks. N\u00e4iteks on avatud mitu IntelliJ Idea akent, mis on m\u00e4\u00e4ratud <em>Alt+E<\/em>. Tavalistes oludes, kui vajutada <em>Alt+E<\/em> avatakse m\u00f5ni selle programmi aken, t\u00f5en\u00e4oliselt see, mis avati esimesena. Kuid, kui kl\u00f5psata <em>Alt+E<\/em> kui \u00fcks selle programmi akendest on juba fookuses, siis saab sellest aknast peamine ja just sellele aknale antakse fookus j\u00e4rgnevate klahvikombinatsioonide korral. <\/p>\n<p><\/p>\n<p>Peamist akent saab \u00fcmber m\u00e4\u00e4rata. Selleks tuleb kombinatsioon esmalt nullida ja seej\u00e4rel m\u00e4\u00e4rata see peamiseks m\u00f5nele muule aknale. Kombinatsiooni nullimiseks tuleb vajutada ise kombinatsiooni ja seej\u00e4rel spetsiaalset nullimiskombinatsiooni, mis on mul m\u00e4\u00e4ratud <em>Alt+Backspace<\/em>. See kutsub esile skripti, mis t\u00fchistab eelneva kombinatsiooni peamise akna m\u00e4\u00e4ramise. Seej\u00e4rel saab m\u00e4\u00e4rata uue p\u00f5hjakna nagu eelnevas l\u00f5igus kirjeldatud. Seonduva akna nullimine universaalsete kombinatsioonide jaoks toimub sarnaselt.<\/p>\n<p><\/p>\n<p>Sissejuhatus sai pikk, kuid tahtsin alguses r\u00e4\u00e4kida, mida me teeme, ja seej\u00e4rel selgitada, kuidas seda teha.<\/p>\n<p><\/p>\n<h2 id=\"dlya-teh-komu-nadoelo-chitat\">Neile, kellele lugemine on juba t\u00fc\u00fctuks l\u00e4inud<\/h2>\n<p><\/p>\n<p>L\u00fchidalt, skriptide link on artikli l\u00f5pus.<\/p>\n<p><\/p>\n<p>Kuid siiski ei \u00f5nnestu seda kohe paigaldada ja kasutada. Enne tuleb aru saada, kuidas skript leiab vajalikud aknad. Ilma selleta ei saa skripti suunata, kuhu t\u00e4pselt keskendumine toimetada. Samuti tuleb m\u00f5ista, mida teha, kui sobivat akent ei leitakse.<\/p>\n<p><\/p>\n<p>Ja ma ei kavatseda r\u00f5hutada, kuidas seadistada skriptide k\u00e4ivitamist klahvikombinatsioonide abil. N\u00e4iteks KDE-s on see System Settings \u2192 Shortcuts \u2192 Custom Shortcuts. Teistes aknahaldurites peaks samuti olema midagi sarnast.<\/p>\n<p><\/p>\n<h2 id=\"znakomstvo-s-wmctrl\">Tutvumine wmctrl-iga<\/h2>\n<p><\/p>\n<p><em>Wmctrl<\/em> on k\u00e4surea utiliit, mis v\u00f5imaldab suhelda X Window Manageriga. See on skripti jaoks peamine programm. Vaatame kiiresti, kuidas seda kasutada.<\/p>\n<p><\/p>\n<p>Alustuseks toome v\u00e4lja avatud akende nimekirja:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -lx\n0x01e0000e -1 plasmashell.plasmashell             N\/A Desktop \u2014 Plasma\n0x01e0001e -1 plasmashell.plasmashell             N\/A Plasma\n0x03a00001  0 skype.Skype                         N\/A Skype\n0x04400003  0 Navigator.Firefox                   N\/A Google Translate - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Parimad postitused viimase 24 tunni jooksul \/ Habr - Mozilla Firefox (Privaatses Sirvimises)\n...<\/code><\/pre>\n<p><\/p>\n<p>Valik <em>-l<\/em> v\u00e4ljastab nimekirja k\u00f5ikidest avatud akendest, ja <em>-x<\/em> lisab v\u00e4ljundile klassi nime (<em>skype.Skype<\/em>, <em>Navigator.Firefox<\/em> ja ja. Siin on vajalik akna ID (1. veerg), klassinimi (3. veerg) ja akna nimi (viimane veerg).<\/p>\n<p><\/p>\n<p>V\u00f5ite proovida aktiveerida mingit akent valikuga <em>-a<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -a skype.Skype -x<\/code><\/pre>\n<p><\/p>\n<p>Kui k\u00f5ik l\u00e4heb plaanip\u00e4raselt, peaks ekraanile ilmuma Skype'i aken. Kui valiku asemel <em>-x<\/em> kasutada valikut <em>-i<\/em>, siis klassinime asemel saab kasutada akna ID-d. ID probleem on see, et akna ID muutub iga kord, kui rakendus k\u00e4ivitatakse, ja me ei saa seda ette teada. Teisalt n\u00e4itab see atribuut akent \u00fchem\u00f5tteliselt, mis v\u00f5ib olla oluline, kui rakendus avab rohkem kui \u00fche akna. R\u00e4\u00e4gime sellest natuke hiljem.<\/p>\n<p><\/p>\n<p>Selles etapis peame meelde j\u00e4tma, et otsime vajalikku akent regex'i abil v\u00e4ljundi p\u00f5hjal <em>wmctrl -lx<\/em>. Kuid see ei t\u00e4henda, et me peame midagi keerulist kasutama. Tavaliselt piisab akna klassinimest v\u00f5i nimest. <\/p>\n<p><\/p>\n<p>P\u00f5him\u00f5tteliselt peaks peamine idee olema juba selge. Teie aknahalduri globaalsete kiirklahvide\/otseteede seadetes seadke vajalik kombinatsioon skripti t\u00e4itmiseks.<\/p>\n<p><\/p>\n<h2 id=\"kak-polzovatsya-skriptami\">Kuidas skripte kasutada<\/h2>\n<p><\/p>\n<p>Esmalt peate installima konsooli utiliidid <em>wmctrl<\/em> ja <em>xdotool<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ sudo apt-get install wmctrl xdotool<\/code><\/pre>\n<p><\/p>\n<p>J\u00e4rgmine samm on skriptide allalaadimine ja nende lisamine <em>$PATH<\/em>. Mina paigaldan need tavaliselt <em>~\/bin<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ cd ~\/bin\n$ git clone https:\/\/github.com\/masyamandev\/Showwin-script.git\n$ ln -s .\/Showwin-script\/showwin showwin\n$ ln -s .\/Showwin-script\/showwinDetach showwinDetach<\/code><\/pre>\n<p><\/p>\n<p>Kui katalooge <em>~\/bin<\/em> ei olnud, tuleb see luua ja s\u00fcsteem uuesti k\u00e4ivitada (v\u00f5i uuesti sisse logida), vastasel juhul <em>~\/bin<\/em> ei p\u00e4\u00e4se <em>$PATH<\/em>kontrollide juurde. Kui k\u00f5ik on \u00f5igesti tehtud, siis peaks skriptide kasutamine olema v\u00f5imalik terminalis ning Tab'iga automaatne t\u00e4iendamine peaks t\u00f6\u00f6tama.<\/p>\n<p><\/p>\n<p>Peamine skript <strong>showwin<\/strong> v\u00f5tab 2 parameetrit: esimene on regex, mille alusel me vajaliku akna otsime, ja teine parameeter on k\u00e4sk, mida tuleb t\u00e4ita, kui vajalikku akent ei leita. <\/p>\n<p><\/p>\n<p>Skripti t\u00e4itmist v\u00f5ib proovida n\u00e4iteks j\u00e4rgmisega:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ showwin \"Mozilla Firefox$\" firefox<\/code><\/pre>\n<p><\/p>\n<p>Kui Firefox on paigaldatud, siis peaks selle aknale fookus olema antud. Isegi kui Firefox ei olnud avatud, peaks see k\u00e4ivituma.<\/p>\n<p><\/p>\n<p>Kui k\u00f5ik \u00f5nnestus, siis v\u00f5ib proovida k\u00e4skude seadistamiseks kombinatsioone. Globaalsete hotkey'de\/otsete seadetes lisame:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: showwin &#171;Mozilla Firefox$&#187; firefox<\/li>\n<li>Alt+D: showwin &#171;Mozilla Firefox (Privaatne sirvimine)$&#187; &#171;firefox -private-window&#187;<\/li>\n<li>Alt+C: showwin &#171;chromium-browser.Chromium-browser N*&#187; chromium-browser<\/li>\n<li>Alt+X: showwin &#171;chromium-browser.Chromium-browser I*&#187; &#171;chromium-browser -incognito&#187;<\/li>\n<li>Alt+S: showwin &#171;skype.Skype&#187; skypeforlinux<\/li>\n<li>Alt+E: showwin &#171;jetbrains-idea&#187; idea.sh<\/li>\n<\/ul>\n<p><\/p>\n<p>Ja klaviatuuri ja tarkvara kombinatsioone saab iga\u00fcks seada endale sobivaks.<br \/>\nKui k\u00f5ik on \u00f5igesti tehtud, siis nende \u00fclaltoodud kombinatsioonide abil saame akende vahel vahetada lihtsalt klahvikombinatsiooniga.<\/p>\n<p><\/p>\n<p>Pettun Chrome'i armastajaid: tavalist akent inkognito re\u017eiimist ei saa eristada v\u00e4ljundi p\u00f5hjal. <em>wmctrl<\/em> neid ei saa eristada, kuna neil on samad klasside nimed ja akna pealkirjad. Pakutud regex-s\u00fcmbolid N* ja I* on vajalikud vaid selleks, et need regulaaravaldised eristuksid ja neile saaks m\u00e4\u00e4rata erinevad peamised aknad.<\/p>\n<p><\/p>\n<p>Eelmise kombinatsiooni (praktikas regex, millega viimane kord kutsuti v\u00e4lja) p\u00f5hja akna l\u00e4htestamiseks tuleb k\u00e4ivitada skript <strong>showwin<\/strong> showwinDetach. <strong>Minu jaoks on see skript m\u00e4\u00e4ratud klahvikombinatsioonile.<\/strong>Skriptil <em>Alt+Backspace<\/em>. <\/p>\n<p><\/p>\n<p>on veel \u00fcks funktsioon. Kui see kutsutakse v\u00e4lja \u00fche parameetriga (antud juhul on parameeter lihtsalt identifikaator), ei kontrollita regex'i \u00fcldse ja k\u00f5ik aknad loetakse sobivateks. See n\u00e4ib iseenesest olevat m\u00f5ttetu, kuid sel viisil saame m\u00e4\u00e4rata mistahes akna peamiseks ja kiiresti sellele aknale vahetada. <strong>showwin<\/strong> Minu jaoks on seadistatud sellised kombinatsioonid:<\/p>\n<p><\/p>\n<p>Alt+1: showwin \u00abCustomKey1\u00bb<\/p>\n<p><\/p>\n<ul>\n<li>Alt+1: showwin &#171;CustomKey1&#187;<\/li>\n<li>Alt+2: showwin &#171;CustomKey2&#187;<\/li>\n<li>\u2026<\/li>\n<li>Alt+0: showwin &#171;CustomKey0&#187;<\/li>\n<li>Alt+Backspace: showwinDetach<\/li>\n<\/ul>\n<p><\/p>\n<p>Nii voin kinnitada k\u00f5iki aknaid kombinatsioonide k\u00fclge. <em>Alt+1<\/em>&#8230;<em>Alt+0<\/em>. Lihtsalt vajutades <em>Alt+1<\/em> kinnitan praeguse akna sellele kombinatsioonile. T\u00fchistada kinnitamine on v\u00f5imalik vajutades <em>Alt+1<\/em>, ja siis <em>Alt+Backspace<\/em>. V\u00f5i sulgeda aken, see t\u00f6\u00f6tab ka.<\/p>\n<p><\/p>\n<p>Edasi r\u00e4\u00e4gin natuke tehnilisi detaile. Neid ei pruugi lugeda, piisab lihtsalt proovimisest ja vaatamisest. Kuid soovitaksin ikkagi ennem otsida \u00fcles teiste skriptid, enne kui neid enda arvutis k\u00e4ivitada :)<\/p>\n<p><\/p>\n<h2 id=\"kak-razlichat-raznye-okna-odnogo-prilozheniya\">Kuidas eristada erinevaid aknaid \u00fche rakenduse sees<\/h2>\n<p><\/p>\n<p>P\u00f5him\u00f5tteliselt oli k\u00f5ige esimene n\u00e4ide 'wmctrl -a skype.Skype -x' t\u00f6\u00f6kindel ja seda on v\u00f5imalik kasutada. Aga vaatame veel kord Firefoxi n\u00e4idet, kus on avatud 2 akent:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">0x04400003  0 Navigator.Firefox                   N\/A Google Translate - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Parimad avaldused 24 tunni jooksul \/ Habr - Mozilla Firefox (Privaatne Sirvimine)<\/code><\/pre>\n<p><\/p>\n<p>Esimene aken on tavare\u017eiimis, teine on Privaatne Sirvimine. Need aknad tahaksime k\u00e4sitleda erinevate rakendustena ja neile vahetada erinevate klahvikombinatsioonide kaudu. <\/p>\n<p><\/p>\n<p>Peame keerukama skripti, mis vahetab aknaid. Kasutasin sellist lahendust: kuvada k\u00f5ik aknad, teha <em>grep<\/em> regex abil, v\u00f5tta esimene rida kasutades <em>head<\/em>, v\u00f5tma esimest veergu (see on akna id) abil <em>l\u00f5ika<\/em>, vaheta aknaks id j\u00e4rgi.<\/p>\n<p><\/p>\n<p>Siin peaks olema nali regulaaravaldiste ja kahe probleemi kohta, kuid tegelikult ei kasuta ma midagi keerulist. Regulaaravaldisi mul on vaja, et saaksin n\u00e4idata rea l\u00f5ppu (s\u00fcmbol \u00ab$\u00bb) ja eristada \u00abMozilla Firefox$\u00bb \u00abMozilla Firefox (Privaatne sirvimine)$\u00bb-st.<\/p>\n<p><\/p>\n<p>K\u00e4sk n\u00e4eb v\u00e4lja umbes nii:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -i -a `wmctrl -lx | grep -i \"Mozilla Firefox$\" | head -1 | cut -d\" \" -f1`<\/code><\/pre>\n<p><\/p>\n<p>Siit v\u00f5ib juba aimata teist skripti erip\u00e4ra: kui grep ei andnud midagi, siis vajalik rakendus ei ole avatud ja see tuleb k\u00e4ivitada, t\u00e4ites teise parameetri k\u00e4su. Ja siis tuleb perioodiliselt kontrollida, kas vajalik aken on avanud, et sellele fookus anda. Ei hakka sellele t\u00e4helepanu juhtima, kellele huvi pakub, see vaatab l\u00e4htekoodi.<\/p>\n<p><\/p>\n<h2 id=\"kogda-okna-prilozheniya-ne-razlichimy\">Kui rakenduse aknad ei ole eristatavad<\/h2>\n<p><\/p>\n<p>Nii, me oleme \u00f5ppinud edastama fookust vajaliku rakenduse aknale. Kuid mis juhtub, kui rakendusel on avatud rohkem kui \u00fcks aken? Kuidas fookust edastada? \u00dcks \u00fclaltoodud skript t\u00f5en\u00e4oliselt edastab fookuse esimesele avatud aknale. Siiski sooviksime suuremat paindlikkust. Tahaksime, et saaksime meelde j\u00e4tta, milline aken on vajalik ja vahetada just selle akna vahel.<\/p>\n<p><\/p>\n<p>Idee on j\u00e4rgmine: kui soovime meelde j\u00e4tta teatud akna jaoks klahvikombinatsiooni, tuleks seda kombinatsiooni vajutada siis, kui vajalik aken on fookuses. J\u00e4tkuvalt, kui vajutame seda kombinatsiooni, antakse fookus just sellele aknale. Kuni aken ei suletakse v\u00f5i me ei tee selle klahvikombinatsiooni jaoks reseti. <strong>Minu jaoks on see skript m\u00e4\u00e4ratud klahvikombinatsioonile.<\/strong>.<\/p>\n<p><\/p>\n<p>Skripti algoritm <strong>showwin<\/strong> on umbkaudu selline:<\/p>\n<p><\/p>\n<ul>\n<li>Kontrollime, kas oleme varem m\u00e4letanud akna ID-d, millele fookust edastada.<br \/>\nKui oleme m\u00e4letanud ja selline aken eksisteerib endiselt, edastame fookuse sellele ja lahkume. <\/li>\n<li>Vaata, milline aken on praegu fookuses, ja kui see sobib meie sooviga, siis m\u00e4letame selle ID-d, et edaspidi sellele minna, ja lahkume.<\/li>\n<li>Liigume sobiva akna juurde, kui see eksisteerib, v\u00f5i avame vajaliku rakenduse.<\/li>\n<\/ul>\n<p><\/p>\n<p>Praegu aktiivse akna m\u00e4\u00e4ramiseks v\u00f5ite kasutada konsooli utiliiti xdotool, muutes selle v\u00e4ljundi kuuek\u00fcmnends\u00fcsteemi formaati:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ printf \"0x%08x\" `xdotool getwindowfocus`<\/code><\/pre>\n<p><\/p>\n<p>Bashis on k\u00f5ige lihtsam midagi salvestada, luues faile virtuaalses failis\u00fcsteemis, mis asub m\u00e4lu sees. Ubuntu puhul on see vaikimisi \u00fchendatud <em>\/dev\/shm\/<\/em>. Teiste distributsioonide kohta ei oska ma \u00f6elda, aga loodan, et midagi sarnast on ka seal. Seda saab kontrollida k\u00e4suga:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ mount -l | grep tmpfs<\/code><\/pre>\n<p><\/p>\n<p>Skript loob selles kaustas t\u00fchjad kaustad, nagu need: <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX\/$WINDOW_ID<\/em>. Samuti loob ta iga kutsumise korral s\u00fcmlink <em>\/dev\/shm\/$USER\/showwin\/showwin_last<\/em> j\u00e4rgnevaga <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX<\/em>. See on vajalik, et vajadusel kustutada akna ID kindla kombinatsiooni jaoks skripti abil <strong>Minu jaoks on see skript m\u00e4\u00e4ratud klahvikombinatsioonile.<\/strong>.<\/p>\n<p><\/p>\n<h2 id=\"chto-mozhno-uluchshit\">Mida saaks parandada<\/h2>\n<p><\/p>\n<p>Esiteks tuleb skripte k\u00e4sitsi seadistada. Kindlasti takistab vajadus s\u00fc\u00fcvida ja palju k\u00e4sitsi teha paljusid teid s\u00fcsteemi seadistamast. Kui oleks v\u00f5imalus lihtsalt installida pakett ja k\u00f5ik mugavamalt seadistada, siis v\u00f5ib-olla oleks see m\u00f5ningast populaarsust kogunud. Ja siis v\u00f5ib-olla oleks rakendust lisatud ka standardsetesse distributsioonidesse.<\/p>\n<p><\/p>\n<p>Ja, see on t\u00f5en\u00e4oliselt lihtsam teha. Kui akna ID abil saab teada, milline protsess selle l\u00f5i, ja seej\u00e4rel protsessi ID abil saab teada, milline k\u00e4sk selle l\u00f5i, siis oleks seadistamine automatiseeritav. Tegelikult ma ei ole uurinud, kas see, mida ma selles l\u00f5igus kirjutasin, on v\u00f5imalik. Asi on selles, et mulle endale meeldib, kuidas see praegu t\u00f6\u00f6tab. Aga kui kellelegi peale minu tundub, et kogu l\u00e4henemine on mugav ja keegi suudab seda t\u00e4iustada, siis ma r\u00f5\u00f5muga kasutan paremat lahendust.<\/p>\n<p><\/p>\n<p>Teine probleem, nagu olen juba kirjutanud, on see, et m\u00f5nel juhul ei saa aknaid \u00fcksteisest eristada. Olen seda seni t\u00e4heldanud ainult Chrome'i\/Chromiumi inkognito re\u017eiimis, kuid v\u00f5ib-olla on see ka mujal. Viimase v\u00f5imalusena on alati universaalsed kombinatsioonid. <em>Alt+1<\/em>&#8230;<em>Alt+0<\/em>. Taaskord, ma kasutan Firefoxi ja isiklikult ei ole see probleem minu jaoks oluline.<\/p>\n<p><\/p>\n<p>Oluline probleem minu jaoks on aga see, et oma t\u00f6\u00f6s kasutan Mac OS-i ning seal ei suutnud ma midagi sellist seadistada. T\u00f6\u00f6riista <em>wmctrl<\/em> nagu tundub, suutsin installida, kuid see ei t\u00f6\u00f6ta Mac OS-is korralikult. Midagi saab rakendusega teha. <em>Automator<\/em>, kuid see aeglustab nii palju, et selle kasutamine pole mugav isegi siis, kui see t\u00f6\u00f6tab. Kahe n\u00e4ppimise seadistamine nii, et need t\u00f6\u00f6taksid k\u00f5igis programmides, ei \u00f5nnestunud mul samuti. Kui keegi juhuslikult leidis lahenduse \u2014 oleksin r\u00f5\u00f5mus selle \u00fcle.<\/p>\n<p><\/p>\n<h2 id=\"vmesto-zaklyucheniya\">Kokkuv\u00f5tte asemel<\/h2>\n<p><\/p>\n<p>Tekkis \u00fcllatavalt palju s\u00f5nu sellise, n\u00e4iliselt, lihtsa funktsionaalsuse kohta. Soovisin edasi anda m\u00f5tet ja mitte teksti \u00fcle koormata, kuid hetkel ei ole ma veel leidnud lihtsamat viisi r\u00e4\u00e4kimiseks. V\u00f5ib-olla oleks videos vormingus parem, kuid siin ei meeldi seda nii palju.<\/p>\n<p><\/p>\n<p>R\u00e4\u00e4kisin veidi sellest, mis skripti all toimub ja kuidas seda seadistada. Skripti \u00fcksikasjadesse ei laskunud, kuid see on vaid 50 rida, selgeks saada pole keeruline. <\/p>\n<p><\/p>\n<p>Loodan, et keegi veel seda ideed proovib ja v\u00f5ib-olla isegi hindab. Enda kohta v\u00f5in \u00f6elda, et skript kirjutati umbes 3 aastat tagasi ja see on mulle \u00c4\u00c4RETULT mugav. Nii mugav, et see tekitab t\u00f5sist ebamugavust, kui t\u00f6\u00f6tan teiste arvutitega. Ja t\u00f6\u00f6aluse MacBookiga. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/masyamandev\/Showwin-script\">Link skriptidele<\/a><\/noindex><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483846\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443. \u042f \u0431\u044b \u0434\u0430\u0436\u0435 \u0445\u043e\u0442\u0435\u043b 2 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: \u043e\u0434\u043d\u0443 \u0431\u044b \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0439. \u041d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55206","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443. \u042f \u0431\u044b \u0434\u0430\u0436\u0435 \u0445\u043e\u0442\u0435\u043b 2 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: \u043e\u0434\u043d\u0443 \u0431\u044b \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0439. \u041d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430\u043c\u0438 \u0432 Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443. \u042f \u0431\u044b \u0434\u0430\u0436\u0435 \u0445\u043e\u0442\u0435\u043b 2 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: \u043e\u0434\u043d\u0443 \u0431\u044b \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0439. \u041d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-14T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Alternatiivne aknahaldus Linuxis | ProHoster","description":"Ma kuulun nende hulka, kes panevad Caps Lock'i klaviatuuri keeltesse vahetamiseks, sest on liiga laisk, et vajutada kaht nuppu, kui saab vajutada \u00fchte. Tahaksin isegi kahte tarbetut nuppu: \u00fche ingliskeelse paigutuse aktiveerimiseks ja teise venekeelse jaoks. Kuid teine tarbetu nupp on kontekstimen\u00fc\u00fc avamiseks, mis on nii tarbetu, et seda eemaldavad paljud tootjad.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430\u043c\u0438 \u0432 Linux | ProHoster","og:description":"\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443. \u042f \u0431\u044b \u0434\u0430\u0436\u0435 \u0445\u043e\u0442\u0435\u043b 2 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: \u043e\u0434\u043d\u0443 \u0431\u044b \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0439. \u041d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-14T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55206","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:48:29","updated":"2022-09-30 14:18:59"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=55206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=55206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=55206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=55206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}