{"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\/sl\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","title":{"rendered":"Alternativno upravljanje oken v Linuxu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Sem jaz tisti, ki na Caps Lock nastavi preklapljanje postavitve, saj mi je leno pritisniti 2 tipki, ko lahko pritisnem le eno. Rad bi imel celo 2 nepotrebni tipki: eno bi uporabljal za vklop angle\u0161ke postavitve, drugo pa za rusko. Toda druga nepotrebna tipka - to je klic kontekstnega menija, ki je tako nepotrebna, da jo mnogi proizvajalci prenosnikov odstranijo. Tako da me zanima, kaj imam na voljo. <\/p>\n<p><\/p>\n<p>Poleg tega no\u010dem ob preklapljanju med okni iskati njihovih ikon na opravilni vrstici, loviti pogledom imen pri pomikanju skozi <em>Alt+Tab<\/em>, pomikanju med delovnimi namizji itd. Rad bi pritisnil kombinacijo tipk (v idealnem primeru le eno, a prostih nepotrebnih tipk ni ve\u010d) in takoj pri\u0161el do okna, ki ga potrebujem. Na primer tako:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: Firefox<\/li>\n<li>Alt+D: Firefox (Bralnik v zasebnem na\u010dinu)<\/li>\n<li>Alt+T: Terminal<\/li>\n<li>Alt+M: Kalkulator<\/li>\n<li>Alt+E: IntelliJ Idea<\/li>\n<li>itd.<\/li>\n<\/ul>\n<p><\/p>\n<p>Pri \u010demer, ob pritisku na <em>Alt+M<\/em> \u017eelim videti kalkulator neodvisno od tega, ali je ta program trenutno zagnan. \u010ce je zagnan, potem je treba prenesti fokus na njegovo okno, \u010de pa ne - zagnati ustrezen program in prenesti fokus, ko se nalo\u017ei.<\/p>\n<p><\/p>\n<p>Za primere, ki niso pokriti s prej\u0161njim scenarijem, \u017eelim imeti univerzalne kombinacije tipk, na katere lahko enostavno dodelim katerokoli odprto okno. Na primer, imam dodeljenih 10 kombinacij od <em>Alt+1<\/em> do <em>Alt+0<\/em>, ki niso vezane na noben program. Preprosto lahko pritisnem <em>Alt+1<\/em> in okno, ki je trenutno v fokusu, bo ponovno dobilo fokus ob pritisku na <em>Alt+1<\/em>.<\/p>\n<p><\/p>\n<p>Nadaljevanje vsebuje opis \u0161e dveh funkcij in odgovor na to, kako to storiti. A takoj bom opozoril, da lahko tak\u0161na prilagoditev 'po sebi' povzro\u010di mo\u010dno odvisnost in celo abstinen\u010dne simptome, ko je treba uporabljati Windows, Mac OS ali celo tuji ra\u010dunalnik z Linuxom.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u010ce pomislimo, pa v bistvu ne uporabljamo veliko programov v vsakdanjem \u017eivljenju. Brskalnik, terminal, IDE, nek messanger, upravljalnik datotek, kalkulator in morda \u0161e to. Potrebujemo le malo kombinacij tipk za pokritje 95 % vsakodnevnih nalog.<\/p>\n<p><\/p>\n<p>Za programe, ki imajo odprtih ve\u010d oken, lahko eno od teh nastavimo za glavno. Na primer, ve\u010d oken IntelliJ Idea, dodeljenih na <em>Alt+E.<\/em>V obi\u010dajnih razmerah bo ob pritisku na <em>Alt+E.<\/em> odprto okno tega programa, verjetno tisto, ki je bilo odprto prvo. Vendar, \u010de pritisnete na <em>Alt+E.<\/em> Ko je eno izmed oken te programske opreme v fokusu, bo to okno postavljeno kot glavno in prav temu bo prenesen fokus pri naslednjih pritiskih kombinacije. <\/p>\n<p><\/p>\n<p>Glavno okno je mo\u017eno ponovno dodeliti. Za to je treba najprej ponastaviti kombinacijo, nato pa dodeliti drugo okno kot glavno. Za ponastavitev kombinacije je treba pritisniti samo kombinacijo, nato pa posebno ponastavitveno kombinacijo, ki jo imam dodeljeno na <em>Alt+Backspace<\/em>. To bo aktiviralo skript, ki bo preklical nastavitev glavnega okna za prej\u0161njo kombinacijo. Nato lahko dodelite novo glavno okno, kot je bilo opisano v prej\u0161njem odstavku. Ponastavitev povezanega okna na univerzalne kombinacije poteka na podoben na\u010din.<\/p>\n<p><\/p>\n<p>Uvod je bil dolg, a hotel sem najprej opisati, kaj bomo naredili, nato pa razlo\u017eiti, kako to storiti.<\/p>\n<p><\/p>\n<h2 id=\"dlya-teh-komu-nadoelo-chitat\">Za tiste, ki so se naveli\u010dali branja<\/h2>\n<p><\/p>\n<p>Na kratko, povezava do skriptov je na koncu \u010dlanka.<\/p>\n<p><\/p>\n<p>A vseeno takoj namestiti in uporabljati ne bo mogo\u010de. Najprej se bo treba poglobiti, kako skript najde pravo okno. Brez tega ne bo mogo\u010de skriptu dolo\u010diti, kam natan\u010dno naj prenese fokus. In treba bo razumeti, kaj storiti, \u010de pravo okno ne bo na\u0161lo.<\/p>\n<p><\/p>\n<p>Prav tako ne bom pozornost usmerjal na to, kako nastaviti izvajanje skriptov ob pritisku na kombinacije tipk. Na primer, v KDE je to v Nastavitvah sistema \u2192 Bli\u017enjice \u2192 Lastne bli\u017enjice. V drugih upravljalnikih oken bi moralo biti podobno.<\/p>\n<p><\/p>\n<h2 id=\"znakomstvo-s-wmctrl\">Seznam wmctrl<\/h2>\n<p><\/p>\n<p><em>Wmctrl<\/em> je konzolno orodje za interakcijo z X Window Managerjem. To je klju\u010dni program za skript. Oglejmo si na hitro, kako ga lahko uporabljamo.<\/p>\n<p><\/p>\n<p>Najprej prika\u017eimo seznam odprtih oken:<\/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 Prevajalnik - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Najbolj\u0161i objavi v 24 urah \/ Habr - Mozilla Firefox (Zasebno brskanje)\n...<\/code><\/pre>\n<p><\/p>\n<p>Mo\u017enost <em>-l<\/em> izpi\u0161e seznam vseh odprtih oken, medtem ko <em>-h<\/em> doda izhodu ime razreda (<em>skype.Skype<\/em>, <em>Navigator.Firefox<\/em> itd.). Tu bomo potrebovali id oken (1. stolpec), ime razreda (3. stolpec) in ime okna (zadnji stolpec).<\/p>\n<p><\/p>\n<p>Lahko poskusite aktivirati neko okno z uporabo mo\u017enosti <em>-a<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -a skype.Skype -x<\/code><\/pre>\n<p><\/p>\n<p>\u010ce vse te\u010de po na\u010drtu, bi se moralo na zaslonu prikazati okno Skype. \u010ce namesto mo\u017enosti <em>-x<\/em> uporabite mo\u017enost <em>-i<\/em>, namesto imena razreda pa lahko navedemo id okna. Problem z id je, da se id okna spremeni ob vsakem zagonu aplikacije in ga ne moremo poznati vnaprej. Po drugi strani pa ta atribut nedvoumno ka\u017ee na okno, kar je lahko pomembno, ko aplikacija odpre ve\u010d kot eno okno. O tem ve\u010d kasneje.<\/p>\n<p><\/p>\n<p>Na tej to\u010dki se moramo spomniti, da bomo iskali pravo okno s pomo\u010djo regexa po izhodu <em>wmctrl -lx<\/em>. Toda to ne pomeni, da moramo nujno uporabljati kaj zapletenega. Obi\u010dajno je dovolj ime razreda ali naziv okna. <\/p>\n<p><\/p>\n<p>Na\u010deloma bi morala biti osnovna ideja \u017ee jasna. V nastavitvah globalnih bli\u017enjic za va\u0161 upravljalnik oken nastavimo potrebno kombinacijo za izvajanje skripte.<\/p>\n<p><\/p>\n<h2 id=\"kak-polzovatsya-skriptami\">Kako uporabljati skripte<\/h2>\n<p><\/p>\n<p>Na za\u010detku je treba namestiti konzolne ukaze <em>wmctrl<\/em> in <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>Nato moramo prenesti skripte in jih dodati v <em>$PATH<\/em>. Obi\u010dajno jih dam v <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>\u010ce imenika <em>~\/bin<\/em> ni bilo, ga je treba ustvariti in se ponovno prijaviti (ali se znova prijaviti), sicer <em>~\/bin<\/em> ne bo dostopno v <em>$PATH<\/em>. \u010ce je vse narejeno pravilno, bi morali biti skripti dostopni iz konzole in samodejno dopolnjevanje bi moralo delovati s tipko Tab.<\/p>\n<p><\/p>\n<p>Glavna skripta <strong>showwin<\/strong> sprejema 2 parametra: prvi je regex, po katerem bomo iskali pravo okno, drugi parameter pa je ukaz, ki ga je treba izvesti, \u010de pravo okno ni najdeno. <\/p>\n<p><\/p>\n<p>Lahko poskusite izvesti skripto, na primer:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ showwin \"Mozilla Firefox$\" firefox<\/code><\/pre>\n<p><\/p>\n<p>\u010ce je Firefox name\u0161\u010den, bi mu morala biti dodeljena pozornost. Tudi \u010de Firefox ni bil zagnan, bi se moral zagnati.<\/p>\n<p><\/p>\n<p>\u010ce je vse uspelo, lahko poskusimo nastaviti izvajanje ukazov na kombinacije. V nastavitvah globalnih bli\u017enjic dodamo:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: prika\u017ei okno &#171;Mozilla Firefox$&#187; firefox<\/li>\n<li>Alt+D: prika\u017ei okno &#171;Mozilla Firefox (Zasebno brskanje)$&#187; &#171;firefox -private-window&#187;<\/li>\n<li>Alt+C: prika\u017ei okno &#171;chromium-browser.Chromium-browser N*&#187; chromium-browser<\/li>\n<li>Alt+X: prika\u017ei okno &#171;chromium-browser.Chromium-browser I*&#187; &#171;chromium-browser -incognito&#187;<\/li>\n<li>Alt+S: prika\u017ei okno &#171;skype.Skype&#187; skypeforlinux<\/li>\n<li>Alt+E: prika\u017ei okno &#171;jetbrains-idea&#187; idea.sh<\/li>\n<\/ul>\n<p><\/p>\n<p>itd. Kombinacije tipk in programske opreme lahko vsak nastavi po svoje.<br \/>\n\u010ce je vse pravilno, lahko s prej omenjenimi kombinacijami preklapljamo med okni z enostavnim pritiskom na tipke.<\/p>\n<p><\/p>\n<p>Razo\u010daral bom ljubitelje Chromea: navadno okno incognito ga ne more razlikovati po izhodu <em>wmctrl<\/em> Nekatere je treba razlikovati, ker imajo enake imenske razrede in naslove oken. V predlaganih regex znakih N* in I* so potrebni samo zato, da se te regularke razlikujejo med seboj, kar omogo\u010da dodelitev razli\u010dnih glavnih oken.<\/p>\n<p><\/p>\n<p>Za ponastavitev glavnega okna prej\u0161nje kombinacije (dejansko za regex, ki <strong>showwin<\/strong> je bil zadnji\u010d poklican) je treba poklicati skript <strong>showwinDetach<\/strong>. Ta skript imam dodeljen na kombinacijo tipk <em>Alt+Backspace<\/em>. <\/p>\n<p><\/p>\n<p>Skript <strong>showwin<\/strong> ima \u0161e eno funkcijo. Ko se pokli\u010de z enim parametrom (v tem primeru je parameter preprosto identifikator), ne preverja regexa, ampak vse okna smatra za ustrezna. To se zdi samo po sebi brezsmiselno, vendar lahko na ta na\u010din dodelimo katero koli okno kot glavno in hitro preklapljamo prav na to okno.<\/p>\n<p><\/p>\n<p>Imam nastavljene naslednje kombinacije:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+1: prika\u017ei okno &#171;CustomKey1&#187;<\/li>\n<li>Alt+2: prika\u017ei okno &#171;CustomKey2&#187;<\/li>\n<li>\u2026<\/li>\n<li>Alt+0: prika\u017ei okno &#171;CustomKey0&#187;<\/li>\n<li>Alt+Backspace: showwinDetach<\/li>\n<\/ul>\n<p><\/p>\n<p>Tako lahko pove\u017eem katera koli okna s kombinacijami <em>Alt+1<\/em>\u2026<em>Alt+0<\/em>. Preprosto z <em>Alt+1<\/em> pove\u017eem trenutno okno s to kombinacijo. Odvezati povezavo lahko s pritiskom na <em>Alt+1<\/em>, nato pa <em>Alt+Backspace<\/em>. Ali pa zaprem okno, kar prav tako deluje.<\/p>\n<p><\/p>\n<p>Nato bom povedal malo tehni\u010dnih podrobnosti. Te lahko ignorirate in preprosto poskusite nastaviti in pogledati. Ampak vseeno bi priporo\u010dal, da se pred izvajanjem tujih skriptov malo spoznate z njimi :).<\/p>\n<p><\/p>\n<h2 id=\"kak-razlichat-raznye-okna-odnogo-prilozheniya\">Kako razlikovati razli\u010dna okna ene aplikacije<\/h2>\n<p><\/p>\n<p>Na\u010deloma je bil prvi primer \u00abwmctrl -a skype.Skype -x\u00bb delujo\u010d in ga lahko uporabimo. A poglejmo \u0161e enkrat primer z Firefoxom, v katerem je odprtih 2 oken:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">0x04400003  0 Navigator.Firefox                   N\/A Google Prevodnik - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Najbolj\u0161i prispevki za dan \/ Habr - Mozilla Firefox (Zasebno brskanje)<\/code><\/pre>\n<p><\/p>\n<p>Prvo okno je v obi\u010dajnem na\u010dinu, drugo pa v Zasebnem brskanju. Ta okna bi \u017eeleli obravnavati kot razli\u010dne aplikacije in preklapljati med njimi s pomo\u010djo razli\u010dnih kombinacij tipk. <\/p>\n<p><\/p>\n<p>Treba je zakomplicirati skript, ki preklaplja okna. Uporabil sem tak\u0161no re\u0161itev: prikazati seznam vseh oken, narediti <em>grep<\/em> po regex, vzeti prvo vrstico s pomo\u010djo <em>head<\/em>, pridobiti prvo kolono (to bo id okna) s pomo\u010djo <em>cut<\/em>, preklopiti na okno po id.<\/p>\n<p><\/p>\n<p>Tuk mora biti \u0161ala o regularnih izrazih in dveh te\u017eavah, vendar v resnici ne uporabljam ni\u010d zapletenega. Regularni izrazi so mi potrebni, da lahko ozna\u010dim konec vrstice (znak \"$\") in razlikujem \"Mozilla Firefox$\" od \"Mozilla Firefox (Private Browsing)$\".<\/p>\n<p><\/p>\n<p>Ekipa izgleda pribli\u017eno tako:<\/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>Tukaj si \u017ee lahko domislite drugo zna\u010dilnost skripta: \u010de grep ne vrne ni\u010desar, potem \u017eelena aplikacija ni odprta in jo je treba zagnati z ukazom iz drugega parametra. Potem pa ob\u010dasno preverjati, ali se je odprlo to\u010dno to okno, da mu prenesemo fokus. Ne bom se osredoto\u010dil na to, kdo \u017eeli, naj si ogleda izvorno kodo.<\/p>\n<p><\/p>\n<h2 id=\"kogda-okna-prilozheniya-ne-razlichimy\">Ko okna aplikacij niso razlikovalna<\/h2>\n<p><\/p>\n<p>Torej, nau\u010dili smo se prena\u0161ati fokus na okno \u017eelene aplikacije. Ampak, kaj pa, \u010de je odprtih ve\u010d kot eno okno aplikacije? Na katero od njih prenesti fokus? Skript zgoraj bo najverjetneje prenesel fokus na prvo odprto okno. Vendar bi \u017eeleli ve\u010djo fleksibilnost. Radi bi lahko zapomnili, katero okno potrebujemo in preklapljali to\u010dno na to okno.<\/p>\n<p><\/p>\n<p>Ideja je bila taka: \u010ce \u017eelimo zapomniti dolo\u010deno okno za kombinacijo tipk, potem moramo pritisniti to kombinacijo, ko je \u017eeljeno okno v fokusu. Nato bo ob pritisku te kombinacije fokus podeljen to\u010dno temu oknu. Dokler okno ne zapremo ali ne resetiramo te kombinacije skripta. <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<p>Algoritm skripta <strong>showwin<\/strong> je pribli\u017eno tak\u0161en:<\/p>\n<p><\/p>\n<ul>\n<li>Preveri, ali smo prej zapomnili id okna, ki mu moramo prenesti fokus.<br \/>\n\u010ce smo zapomnili in to okno \u0161e vedno obstaja, potem mu prenesemo fokus in kon\u010damo. <\/li>\n<li>Poglejmo, katero okno je trenutno v fokusu, in \u010de ustreza na\u0161emu iskanju, bomo zapomnili njegov id za nadaljnje preklapljanje na to in kon\u010dali.<\/li>\n<li>Preidemo na katero koli ustrezno okno, \u010de to obstaja, ali odpremo potrebno aplikacijo.<\/li>\n<\/ul>\n<p><\/p>\n<p>Kako ugotoviti, katero okno je trenutno v fokusu, lahko izvedemo s konzolno utiliteto xdotool, tako da njen izhod pretvorimo v \u0161estnajsti\u0161ki format:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ printf \"0xx\" `xdotool getwindowfocus`<\/code><\/pre>\n<p><\/p>\n<p>Nekaj zapomniti v bashu je najla\u017eje z ustvarjanjem datotek v virtualnem datote\u010dnem sistemu, ki se nahaja v pomnilniku. V Ubuntu je to privzeto povezano v <em>\/dev\/shm\/<\/em>. O drugih distribucijah ne morem re\u010di ni\u010d, upam, da je to tudi tam. Lahko preverite z ukazom:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ mount -l | grep tmpfs<\/code><\/pre>\n<p><\/p>\n<p>Skripta bo ustvarila prazne mape v tej mapi, tak\u0161ne kot so te: <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX\/$WINDOW_ID<\/em>. Dodatno bo pri vsakem klicu ustvaril symlink <em>\/dev\/shm\/$USER\/showwin\/showwin_last<\/em> na <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX<\/em>. To bo potrebno, da bo mogo\u010de po potrebi odstraniti ID okna za dolo\u010deno kombinacijo s pomo\u010djo skripte <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<h2 id=\"chto-mozhno-uluchshit\">Kaj bi se dalo izbolj\u0161ati<\/h2>\n<p><\/p>\n<p>Prvi\u010d, skripte je treba nastaviti ro\u010dno. Verjetno se zaradi potrebe po razumevanju in \u0161tevilnih ro\u010dnih nastavitvah mnogi med vami sploh ne odlo\u010dijo za nastavitev sistema. \u010ce bi bila mo\u017enost preprosto namestiti paket in vse nastaviti enostavneje, bi to morda pridobilo nekaj priljubljenosti. Morda bi se celo zna\u0161lo v standardnih distribucijah.<\/p>\n<p><\/p>\n<p>In, morda, bi se lahko naredilo \u0161e enostavneje. \u010ce lahko po ID-ju okna ugotovimo ID procesa, ki ga je ustvaril, in po ID-ju procesa ugotovimo, katera ukaz ga je ustvarila, bi lahko avtomatizirali nastavitev. V resnici se nisem spu\u0161\u010dal v to, ali je to, kar sem napisal v tem odstavku, mogo\u010de. Zame osebno je trenutna metoda sprejemljiva. Toda \u010de se bo komu drugemu zdel pristop smiseln in ga bo kdo izbolj\u0161al, bom z veseljem koristil najbolj\u0161e re\u0161itev.<\/p>\n<p><\/p>\n<p>Druga te\u017eava, kot sem \u017ee omenil, je, da v nekaterih primerih okna ni mogo\u010de lo\u010diti po videzu. Zdaj sem to opazil le pri incognito na\u010dinu v chrome\/chromium, vendar je mogo\u010de, da je tak\u0161no stanje tudi drugje. V skrajni nuji je vedno na voljo mo\u017enost univerzalnih kombinacij <em>Alt+1<\/em>\u2026<em>Alt+0<\/em>. Spet, jaz uporabljam Firefox in ta te\u017eava zame ni velika.<\/p>\n<p><\/p>\n<p>Bolj pomembna te\u017eava zame pa je, da na delu uporabljam Mac OS in tam takega nisem mogel nastaviti. Orodje <em>wmctrl<\/em> sem ga o\u010ditno lahko namestil, a na Mac OS res ne deluje prav. Nekaj se lahko stori z aplikacijo <em>Automator<\/em>, vendar tako zastaja, da je njena uporaba neprijetna, tudi ko deluje. Nastaviti kombinacije tipk, da delujejo v vseh programih, tudi nisem mogel. \u010ce kdo pride do re\u0161itve \u2014 zelo bom vesel, da jo uporabim.<\/p>\n<p><\/p>\n<h2 id=\"vmesto-zaklyucheniya\">Namesto zaklju\u010dka<\/h2>\n<p><\/p>\n<p>Izkazalo se je, da je veliko besed za tako, na prvi pogled, preprosto funkcionalnost. Rad bi predstavil idejo brez preobremenitve besedila, vendar trenutno ne vem, kako to povedati preprosteje. Morda bi bilo bolje v video formatu, a tukaj to ni ravno priljubljeno.<\/p>\n<p><\/p>\n<p>Malce sem govoril o tem, kar se skriva za skriptom in kako ga nastaviti. V podrobnosti samega skripta se nisem spu\u0161\u010dal, vendar je dolg le 50 vrstic, zato ni te\u017eko razumeti. <\/p>\n<p><\/p>\n<p>Upam, da bo kdo \u0161e preizkusil to idejo in morda celo ocenil. O sebi lahko povem, da je skript napisan pred pribli\u017eno 3 leti in je zame ZAKON. Tako priro\u010den je, da povzro\u010da resno nelagodje pri delu z drugimi ra\u010dunalniki. In z delovnim MacBookom. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/masyamandev\/Showwin-script\">Povezava do skriptov<\/a><\/noindex><\/p>\n<p>Izvor: <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 5.0.4 - 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.\" \/>\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\/sl\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/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\udd47Alternativno upravljanje oken v Linuxu | ProHoster","description":"Sem eden izmed tistih, ki na Caps Lock nastavi preklop jezika, ker mi je leno pritisniti 2 tipki, ko lahko pritisnem eno.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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.","og:url":"https:\/\/prohoster.info\/sl\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/55206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=55206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/55206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=55206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=55206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=55206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}