{"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\/sk\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","title":{"rendered":"Alternat\u00edvne spravovanie okien v Linuxe","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Som ten typ, ktor\u00fd si na Caps Lock nastavuje prep\u00ednanie kl\u00e1vesnice, preto\u017ee sa mi nechce stl\u00e1\u010da\u0165 2 kl\u00e1vesy, ke\u010f m\u00f4\u017eem stla\u010di\u0165 jeden. Chcel by som dokonca 2 zbyto\u010dn\u00e9 kl\u00e1vesy: jednu by som pou\u017eil na zap\u00ednanie anglickej kl\u00e1vesnice a druh\u00fa na rusk\u00fa. Ale druh\u00e1 zbyto\u010dn\u00e1 kl\u00e1vesa je vyvolanie kontextov\u00e9ho menu, ktor\u00e9 je tak zbyto\u010dn\u00e9, \u017ee ho mnoh\u00ed v\u00fdrobcovia notebookov odstr\u00e1nili. Tak\u017ee mi nezost\u00e1va ni\u010d in\u00e9, len sa uspokoji\u0165 s t\u00fdm, \u010do m\u00e1m. <\/p>\n<p><\/p>\n<p>A navy\u0161e nechcem pri prep\u00ednan\u00ed okien h\u013eada\u0165 ich ikony na paneli \u00faloh, prichyti\u0165 poh\u013ead na n\u00e1zvy pri prech\u00e1dzan\u00ed cez <em>Alt+Tab<\/em>, listova\u0165 pracovn\u00e9 plochy a pod. Chcem stla\u010di\u0165 kombin\u00e1ciu kl\u00e1vesov (ide\u00e1lne \u00faplne jednu, ale u\u017e niet vo\u013en\u00fdch zbyto\u010dn\u00fdch kl\u00e1ves) a hne\u010f sa dosta\u0165 do potrebn\u00e9ho okna. Napr\u00edklad takto:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: Firefox<\/li>\n<li>Alt+D: Firefox (S\u00fakromn\u00e9 prehliadanie)<\/li>\n<li>Alt+T: Termin\u00e1l<\/li>\n<li>Alt+M: Kalkula\u010dka<\/li>\n<li>Alt+E: IntelliJ Idea<\/li>\n<li>a pod.<\/li>\n<\/ul>\n<p><\/p>\n<p>Mimochodom, po stla\u010den\u00ed napr\u00edklad na <em>Alt+M<\/em> chcem vidie\u0165 kalkula\u010dku nez\u00e1visle od toho, \u010di je t\u00e1to aplik\u00e1cia v aktu\u00e1lnom momente spusten\u00e1. Ak je spusten\u00e1, oknu treba prenies\u0165 foco, a ak nie \u2014 spusti\u0165 po\u017eadovan\u00fd program a prenies\u0165 foco, ke\u010f sa na\u010d\u00edta.<\/p>\n<p><\/p>\n<p>Na pr\u00edpady, ktor\u00e9 nie s\u00fa pokryt\u00e9 predch\u00e1dzaj\u00facim scen\u00e1rom, chcem ma\u0165 univerz\u00e1lne kombin\u00e1cie kl\u00e1ves, na ktor\u00e9 m\u00f4\u017eem \u013eahko priradi\u0165 ak\u00e9ko\u013evek otvoren\u00e9 okn\u00e1. Napr\u00edklad m\u00e1m priraden\u00fdch 10 kombin\u00e1ci\u00ed od <em>Alt+1<\/em> do <em>Alt+0<\/em>, ktor\u00e9 nie s\u00fa viazan\u00e9 na \u017eiadne programy. M\u00f4\u017eem jednoducho stla\u010di\u0165 <em>Alt+1<\/em> a okno, ktor\u00e9 je teraz vo f\u00f3kus, z\u00edska foco pri stla\u010den\u00ed. <em>Alt+1<\/em>.<\/p>\n<p><\/p>\n<p>Pod \u010dl\u00e1nkom s\u00fa pop\u00edsan\u00e9 \u010fal\u0161ie dve funkcie a odpove\u010f na to, ako to mo\u017eno uskuto\u010dni\u0165. Ale hne\u010f varujem, \u017ee tak\u00e1to prisp\u00f4sobenie \"pre seba\" m\u00f4\u017ee vyvola\u0165 siln\u00fa z\u00e1vislos\u0165 a dokonca abstinen\u010dn\u00e9 pr\u00edznaky pri potrebe pou\u017e\u00edva\u0165 Windows, Mac OS alebo dokonca cudzie po\u010d\u00edta\u010de s Linuxom.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>V skuto\u010dnosti, ak o tom prem\u00fd\u0161\u013eame, to\u013eko programov denne nepou\u017e\u00edvame. Prehliada\u010d, termin\u00e1l, IDE, nejak\u00fd messenger, spr\u00e1vcovsk\u00fd program, kalkula\u010dka a asi to je prakticky v\u0161etko. Potrebujeme nie tak ve\u013ea kombin\u00e1ci\u00ed kl\u00e1vesov na pokrytie 95% ka\u017edodenn\u00fdch \u00faloh.<\/p>\n<p><\/p>\n<p>Pre programy, ktor\u00e9 maj\u00fa otvoren\u00fdch viacero okien, jedno z nich je mo\u017en\u00e9 ur\u010di\u0165 ako hlavn\u00e9. Napr\u00edklad, ak je otvoren\u00fdch viac okien IntelliJ Idea, ktor\u00e9 s\u00fa ur\u010den\u00e9 na <em>Alt+E<\/em>. V be\u017en\u00fdch podmienkach pri stla\u010den\u00ed na <em>Alt+E<\/em> otvor\u00ed sa nejak\u00e9 okno tejto aplik\u00e1cie, pravdepodobne to, ktor\u00e9 bolo otvoren\u00e9 ako prv\u00e9. Av\u0161ak, ak stla\u010d\u00edte <em>Alt+E<\/em> ke\u010f je jedno z okien tejto aplik\u00e1cie u\u017e vo f\u00f3kus, toto okno sa stane hlavn\u00fdm a to bude prij\u00edma\u0165 fokus pri nasleduj\u00facich stla\u010deniach kombin\u00e1cie. <\/p>\n<p><\/p>\n<p>Hlavn\u00e9 okno je mo\u017en\u00e9 premenova\u0165. Na to je potrebn\u00e9 najprv resetova\u0165 kombin\u00e1ciu a potom zadefinova\u0165 in\u00e9 okno ako hlavn\u00e9. Na resetovanie kombin\u00e1cie je potrebn\u00e9 stla\u010di\u0165 samotn\u00fa kombin\u00e1ciu a potom \u0161peci\u00e1lnu resetovaciu kombin\u00e1ciu, ktor\u00fa m\u00e1m nastaven\u00fa na <em>Alt+Backspace<\/em>. To vyvol\u00e1 skript, ktor\u00fd zru\u0161\u00ed predch\u00e1dzaj\u00face nastavenie hlavn\u00e9ho okna pre predch\u00e1dzaj\u00facu kombin\u00e1ciu. Potom m\u00f4\u017eete definova\u0165 nov\u00e9 hlavn\u00e9 okno, ako bolo op\u00edsan\u00e9 v predch\u00e1dzaj\u00facom odseku. Resetovanie priraden\u00e9ho okna k univerz\u00e1lnym kombin\u00e1ci\u00e1m prebieha analogicky.<\/p>\n<p><\/p>\n<p>\u00davod vyznel dlh\u0161ie, ale chcel som najprv poveda\u0165, \u010do budeme robi\u0165, a potom vysvetli\u0165, ako to robi\u0165.<\/p>\n<p><\/p>\n<h2 id=\"dlya-teh-komu-nadoelo-chitat\">Pre t\u00fdch, ktor\u00ed u\u017e maj\u00fa dos\u0165 \u010d\u00edtania<\/h2>\n<p><\/p>\n<p>Ak to povieme stru\u010dne, odkaz na skripty je na konci \u010dl\u00e1nku.<\/p>\n<p><\/p>\n<p>Ale aj tak to nebude mo\u017en\u00e9 ihne\u010f nain\u0161talova\u0165 a pou\u017e\u00edva\u0165. Najprv sa budete musie\u0165 dozvedie\u0165, ako skript n\u00e1jde potrebn\u00e9 okno. Bez toho nebude mo\u017en\u00e9 poveda\u0165 skriptu, kam presne m\u00e1 predmet zamera\u0165. A mus\u00edte pochopi\u0165, \u010do robi\u0165, ak sa n\u00e1hodou nena\u0161lo vhodn\u00e9 okno.<\/p>\n<p><\/p>\n<p>A taktie\u017e sa nebudem podrobne zaobera\u0165 t\u00fdm, ako nastavi\u0165 vykon\u00e1vanie skriptov na stla\u010denie kombin\u00e1ci\u00ed kl\u00e1ves. Napr\u00edklad v KDE je to v System Settings \u2192 Shortcuts \u2192 Custom Shortcuts. V in\u00fdch spr\u00e1vcoch okien by to malo by\u0165 podobn\u00e9.<\/p>\n<p><\/p>\n<h2 id=\"znakomstvo-s-wmctrl\">Zozn\u00e1menie sa s wmctrl<\/h2>\n<p><\/p>\n<p><em>Wmctrl<\/em> \u2014 konzolov\u00e1 utilita na interakciu s X Window Managerom. Je to k\u013e\u00fa\u010dov\u00fd program pre skript. Pozrime sa spolo\u010dne, ako ju mo\u017eno pou\u017e\u00edva\u0165.<\/p>\n<p><\/p>\n<p>Na za\u010diatok vyhotov\u00edme zoznam otvoren\u00fdch okien:<\/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 Prevodn\u00edk - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Najlep\u0161ie pr\u00edspevky za de\u0148 \/ Habr - Mozilla Firefox (S\u00fakromn\u00e9 prehliadanie)\n...<\/code><\/pre>\n<p><\/p>\n<p>Mo\u017enos\u0165 <em>-l<\/em> vyd\u00e1va zoznam v\u0161etk\u00fdch otvoren\u00fdch okien a <em>-x<\/em> prid\u00e1va k v\u00fdstupu n\u00e1zov triedy (<em>skype.Skype<\/em>, <em>Navigator.Firefox<\/em> at\u010f.). Potrebujeme tu id okna (st\u013apec 1), n\u00e1zov triedy (st\u013apec 3) a n\u00e1zov okna (posledn\u00fd st\u013apec).<\/p>\n<p><\/p>\n<p>M\u00f4\u017eete sa pok\u00fasi\u0165 aktivova\u0165 nejak\u00e9 okno pomocou 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>Ak v\u0161etko prebehlo pod\u013ea pl\u00e1nu, malo by sa na obrazovke objavi\u0165 okno Skype. Ak namiesto mo\u017enosti <em>-x<\/em> pou\u017ei\u0165 mo\u017enos\u0165 <em>-i<\/em>, tak namiesto n\u00e1zvu triedy m\u00f4\u017eeme uvies\u0165 id okna. Probl\u00e9m s id spo\u010d\u00edva v tom, \u017ee id okna sa men\u00ed pri ka\u017edom spusten\u00ed aplik\u00e1cie a vopred ho nem\u00f4\u017eeme pozna\u0165. Na druhej strane tento atrib\u00fat jednozna\u010dne ozna\u010duje okno, \u010do m\u00f4\u017ee by\u0165 d\u00f4le\u017eit\u00e9, ke\u010f aplik\u00e1cia otvor\u00ed viac ako jedno okno. O tom nesk\u00f4r.<\/p>\n<p><\/p>\n<p>V tomto kroku si mus\u00edme zapam\u00e4ta\u0165, \u017ee budeme h\u013eada\u0165 po\u017eadovan\u00e9 okno pomocou regex z v\u00fdstupu <em>wmctrl -lx<\/em>. Ale to neznamen\u00e1, \u017ee mus\u00edme pou\u017e\u00edva\u0165 nie\u010do zlo\u017eit\u00e9. Zvy\u010dajne sta\u010d\u00ed n\u00e1zov triedy alebo n\u00e1zov okna. <\/p>\n<p><\/p>\n<p>V podstate by u\u017e mala by\u0165 z\u00e1kladn\u00e1 my\u0161lienka jasn\u00e1. V nastaveniach glob\u00e1lnych kl\u00e1vesov\u00fdch skratiek pre v\u00e1\u0161 spr\u00e1vca okien nastavujeme potrebn\u00fa kombin\u00e1ciu na vykonanie skriptu.<\/p>\n<p><\/p>\n<h2 id=\"kak-polzovatsya-skriptami\">Ako pou\u017e\u00edva\u0165 skripty<\/h2>\n<p><\/p>\n<p>Najprv je potrebn\u00e9 nain\u0161talova\u0165 pr\u00edkazov\u00e9 n\u00e1stroje <em>wmctrl<\/em> a <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>Potom je potrebn\u00e9 stiahnu\u0165 skripty a prida\u0165 ich do <em>$PATH<\/em>. Zvy\u010dajne ich umiest\u0148ujem do <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>Ak adres\u00e1r <em>~\\\/bin<\/em> neexistoval, je potrebn\u00e9 ho vytvori\u0165 a re\u0161tartova\u0165 (alebo sa prihl\u00e1si\u0165 znova), inak <em>~\\\/bin<\/em> neprejde do <em>$PATH<\/em>. Ak je v\u0161etko uroben\u00e9 spr\u00e1vne, skripty by mali by\u0165 dostupn\u00e9 z konzoly a mal by fungova\u0165 automatick\u00fd doplnok cez Tab.<\/p>\n<p><\/p>\n<p>Hlavn\u00fd skript <strong>showwin<\/strong> prij\u00edma 2 parametre: prv\u00fd je regex, pod\u013ea ktor\u00e9ho budeme h\u013eada\u0165 po\u017eadovan\u00e9 okno, a druh\u00fd parameter je pr\u00edkaz, ktor\u00fd sa m\u00e1 vykona\u0165, ak po\u017eadovan\u00e9 okno nebolo n\u00e1jden\u00e9. <\/p>\n<p><\/p>\n<p>M\u00f4\u017eete sa pok\u00fasi\u0165 vykona\u0165 skript, napr\u00edklad:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ showwin \"Mozilla Firefox$\" firefox<\/code><\/pre>\n<p><\/p>\n<p>Ak je Firefox nain\u0161talovan\u00fd, oknu by mal by\u0165 pridelen\u00fd fokus. Aj ke\u010f bol Firefox nespusten\u00fd, mal by sa spusti\u0165.<\/p>\n<p><\/p>\n<p>Ak to fungovalo, m\u00f4\u017eete sa pok\u00fasi\u0165 nastavi\u0165 vykon\u00e1vanie pr\u00edkazov na kombin\u00e1ci\u00e1ch. V nastaveniach glob\u00e1lnych kl\u00e1vesov\u00fdch skratiek prid\u00e1me:<\/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 (Private Browsing)$&#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>A tak \u010falej. Kombin\u00e1cie kl\u00e1vesov a softv\u00e9ru si m\u00f4\u017ee ka\u017ed\u00fd nastavi\u0165 pod\u013ea svojich predst\u00e1v.<br \/>\nAk sa v\u0161etko urobilo spr\u00e1vne, pod\u013ea vy\u0161\u0161ie uveden\u00fdch kombin\u00e1ci\u00ed sa m\u00f4\u017eeme medzi oknami prep\u00edna\u0165 jednoduch\u00fdm stla\u010den\u00edm kl\u00e1vesov.<\/p>\n<p><\/p>\n<p>Skler\u00ed priaznivci chr\u00f3mu: be\u017en\u00e9 okno nemo\u017eno rozl\u00ed\u0161i\u0165 od inkognito okna pod\u013ea v\u00fdstupu. <em>wmctrl<\/em> Nie, maj\u00fa rovnak\u00e9 n\u00e1zvy tried a hlavi\u010dky okna. V navrhovan\u00fdch regexoch s\u00fa znaky N* a I* potrebn\u00e9 len na to, aby sa tieto regul\u00e1rne v\u00fdrazy navz\u00e1jom odli\u0161ovali a mohli sme ur\u010di\u0165 r\u00f4zne okn\u00e1 ako hlavn\u00e9.<\/p>\n<p><\/p>\n<p>Na resetovanie hlavn\u00e9ho okna predch\u00e1dzaj\u00facej kombin\u00e1cie (v skuto\u010dnosti pre regex, ktor\u00fd <strong>showwin<\/strong> bol spusten\u00fd naposledy) je potrebn\u00e9 zavola\u0165 skript <strong>showwinDetach<\/strong>. M\u00e1m tento skript priraden\u00fd k kombin\u00e1cii kl\u00e1vesov. <em>Alt+Backspace<\/em>. <\/p>\n<p><\/p>\n<p>Skript <strong>showwin<\/strong> m\u00e1 e\u0161te jednu funkciu. Ke\u010f je vyvolan\u00fd s jedn\u00fdm parametrom (v tomto pr\u00edpade je parametre jednoducho identifik\u00e1tor), tak v\u00f4bec nekontroluje regex, a v\u0161etky okn\u00e1 pova\u017euje za vhodn\u00e9. To sa samo o sebe zd\u00e1 by\u0165 zbyto\u010dn\u00e9, av\u0161ak takto m\u00f4\u017eeme priradi\u0165 ak\u00e9ko\u013evek okno ako hlavn\u00e9 a r\u00fdchlo prech\u00e1dza\u0165 pr\u00e1ve k tomuto oknu.<\/p>\n<p><\/p>\n<p>M\u00e1m nastaven\u00e9 tak\u00e9to kombin\u00e1cie:<\/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>Takto m\u00f4\u017eem priradi\u0165 ak\u00e9ko\u013evek okn\u00e1 k kombin\u00e1ci\u00e1m. <em>Alt+1<\/em>\u2026<em>Alt+0<\/em>Jednoducho stla\u010den\u00edm <em>Alt+1<\/em> prira\u010fujem aktu\u00e1lne okno k tejto kombin\u00e1cii. Zru\u0161i\u0165 priradenie m\u00f4\u017eem stla\u010den\u00edm <em>Alt+1<\/em>, a potom <em>Alt+Backspace<\/em>. Alebo zavrie\u0165 okno, aj to funguje.<\/p>\n<p><\/p>\n<p>Teraz poviem nie\u010do technick\u00fdch detailoch. Tieto \u00fadaje m\u00f4\u017eete prehliada\u0165, alebo si to m\u00f4\u017eete len vysk\u00fa\u0161a\u0165 nastavi\u0165 a pozrie\u0165 sa. Ale aj tak by som odpor\u00fa\u010dal najprv sa obozn\u00e1mi\u0165 s cudz\u00edmi skriptmi sk\u00f4r, ne\u017e ich spust\u00edte na svojom po\u010d\u00edta\u010di :).<\/p>\n<p><\/p>\n<h2 id=\"kak-razlichat-raznye-okna-odnogo-prilozheniya\">Ako rozli\u0161ova\u0165 r\u00f4zne okn\u00e1 jednej aplik\u00e1cie.<\/h2>\n<p><\/p>\n<p>V podstate, najprv pr\u00edklad \"wmctrl -a skype.Skype -x\" bol funk\u010dn\u00fd a mo\u017eno ho vyu\u017ei\u0165. Ale pozrime sa znova na pr\u00edklad s Firefoxom, v ktorom s\u00fa otvoren\u00e9 2 okn\u00e1:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">0x04400003  0 Navigator.Firefox                   N\/A Google Preklada\u010d - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Najlep\u0161ie publik\u00e1cie za de\u0148 \/ Habr - Mozilla Firefox (S\u00fakromn\u00e9 prehliadanie)<\/code><\/pre>\n<p><\/p>\n<p>Prv\u00e9 okno je v be\u017enom re\u017eime a druh\u00e9 je v re\u017eime s\u00fakromn\u00e9ho prehliadania. Tieto okn\u00e1 by sme chceli pova\u017eova\u0165 za r\u00f4zne aplik\u00e1cie a prep\u00edna\u0165 medzi nimi pomocou r\u00f4znych kl\u00e1vesov\u00fdch kombin\u00e1ci\u00ed. <\/p>\n<p><\/p>\n<p>Mus\u00edme skomplikova\u0165 skript, ktor\u00fd prep\u00edna okn\u00e1. Pou\u017eil som tak\u00e9to rie\u0161enie: vyp\u00edsa\u0165 zoznam v\u0161etk\u00fdch okien, spravi\u0165 <em>grep<\/em> pod\u013ea regexu, vzia\u0165 prv\u00fd riadok pomocou <em>head<\/em>, z\u00edska\u0165 prv\u00fd st\u013apec (to bude id okna) pomocou <em>cut<\/em>, prepn\u00fa\u0165 na okno pod\u013ea id.<\/p>\n<p><\/p>\n<p>Tu by mal by\u0165 vtip o regul\u00e1rnych v\u00fdrazoch a dvoch probl\u00e9moch, ale v skuto\u010dnosti ni\u010d zlo\u017eit\u00e9 nepou\u017e\u00edvam. Regul\u00e1rky potrebujem na to, aby som mohol ur\u010di\u0165 koniec riadku (symbol \u201e$\u201c) a rozl\u00ed\u0161i\u0165 \u201eMozilla Firefox$\u201c od \u201eMozilla Firefox (s\u00fakromn\u00e9 prehliadanie)$\u201c.<\/p>\n<p><\/p>\n<p>Pr\u00edkaz vyzer\u00e1 asi takto:<\/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>Tu sa u\u017e d\u00e1 domyslie\u0165 druh\u00e1 \u0161peci\u00e1lnos\u0165 skriptu: ak grep ni\u010d nevydal, znamen\u00e1 to, \u017ee potrebn\u00e1 aplik\u00e1cia nie je otvoren\u00e1 a je potrebn\u00e9 ju spusti\u0165 vykonan\u00edm pr\u00edkazu z druh\u00e9ho parametra. A potom ob\u010das skontrolova\u0165, \u010di sa potrebn\u00e9 okno neotvorilo, aby sa mu mohol prenies\u0165 fokus. Nechcem sa na tom zastavova\u0165, kto chce, ten si pozrie zdrojov\u00e9 k\u00f3dy.<\/p>\n<p><\/p>\n<h2 id=\"kogda-okna-prilozheniya-ne-razlichimy\">Ke\u010f s\u00fa okn\u00e1 aplik\u00e1cie nerozl\u00ed\u0161ite\u013en\u00e9<\/h2>\n<p><\/p>\n<p>Tak\u017ee sme sa nau\u010dili pren\u00e1\u0161a\u0165 fokus na okno po\u017eadovanej aplik\u00e1cie. Ale \u010do ak je otvoren\u00fdch viac okien aplik\u00e1cie? Ktor\u00e9mu z nich prenies\u0165 fokus? Skript vy\u0161\u0161ie pravdepodobne prenesie fokus na prv\u00e9 otvoren\u00e9 okno. Av\u0161ak, chceli by sme v\u00e4\u010d\u0161iu flexibilitu. R\u00e1di by sme mali mo\u017enos\u0165 zapam\u00e4ta\u0165 si, ktor\u00e9 konkr\u00e9tne okno potrebujeme a pres\u00fava\u0165 sa presne k tomuto oknu.<\/p>\n<p><\/p>\n<p>My\u0161lienka bola tak\u00e1: Ak chceme zapam\u00e4ta\u0165 pre kombin\u00e1ciu kl\u00e1vesov nejak\u00e9 konkr\u00e9tne okno, mus\u00edme stla\u010di\u0165 t\u00fato kombin\u00e1ciu vtedy, ke\u010f je potrebn\u00e9 okno v focuse. N\u00e1sledne pri stla\u010den\u00ed tejto kombin\u00e1cie sa fokus presunie pr\u00e1ve na toto okno. Pokia\u013e okno nezavrieme alebo neurob\u00edme reset pre t\u00fato kombin\u00e1ciu skriptu. <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<p>Algoritmus skriptu <strong>showwin<\/strong> je zhruba tak\u00fdto:<\/p>\n<p><\/p>\n<ul>\n<li>Skontrolova\u0165, \u010di sme si predt\u00fdm nezapam\u00e4tali ID okna, ktor\u00e9mu treba prenies\u0165 fokus.<br \/>\nAk sme si ho zapam\u00e4tali a tak\u00e9 okno st\u00e1le existuje, tak mu prenesieme fokus a od\u00eddeme. <\/li>\n<li>Pozrieme sa, ktor\u00e9 okno je teraz v focuse, a ak vyhovuje na\u0161ej po\u017eiadavke, zapam\u00e4t\u00e1me si ID na neskor\u0161ie prechody a od\u00eddeme.<\/li>\n<li>Prejdeme k ak\u00e9muko\u013evek vhodn\u00e9mu oknu, ak existuje, alebo otvor\u00edme potrebn\u00fa aplik\u00e1ciu.<\/li>\n<\/ul>\n<p><\/p>\n<p>Zisti\u0165, ktor\u00e9 okno je teraz v focuse, m\u00f4\u017eeme pomocou konzolovej utilitky xdotool, pri\u010dom jej v\u00fdstup premen\u00edme na hexadecim\u00e1lny form\u00e1t:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ printf \"0xx\" `xdotool getwindowfocus`<\/code><\/pre>\n<p><\/p>\n<p>Nie\u010do pam\u00e4ta\u0165 v bash je najjednoduch\u0161ie vytv\u00e1ran\u00edm s\u00faborov vo virtu\u00e1lnom s\u00faborovom syst\u00e9me, ktor\u00fd je umiestnen\u00fd v pam\u00e4ti. V Ubuntu je tak\u00fd pripojen\u00fd predvolene na <em>\/dev\/shm\/<\/em>. O in\u00fdch distrib\u00faci\u00e1ch neviem poveda\u0165, d\u00fafam, \u017ee nie\u010do podobn\u00e9 existuje aj tam. M\u00f4\u017eeme to skontrolova\u0165 pr\u00edkazom:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ mount -l | grep tmpfs<\/code><\/pre>\n<p><\/p>\n<p>Skript bude vytv\u00e1ra\u0165 pr\u00e1zdne adres\u00e1re v tejto zlo\u017eke, tak\u00e9to: <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX\/$WINDOW_ID<\/em>. Okrem toho pri ka\u017edom volan\u00ed vytvor\u00ed symlink <em>\/dev\/shm\/$USER\/showwin\/showwin_last<\/em> na <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX<\/em>. To bude potrebn\u00e9 na to, aby bolo mo\u017en\u00e9 v pr\u00edpade potreby odstr\u00e1ni\u0165 id okna pre ur\u010dit\u00fa kombin\u00e1ciu pomocou skriptu <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<h2 id=\"chto-mozhno-uluchshit\">\u010co je mo\u017en\u00e9 zlep\u0161i\u0165<\/h2>\n<p><\/p>\n<p>Po prv\u00e9, skripty je potrebn\u00e9 nastavova\u0165 ru\u010dne. Ur\u010dite, kv\u00f4li potrebe porozumie\u0165 a robi\u0165 ve\u013ea ru\u010dne, mnoh\u00ed z v\u00e1s ani nesk\u00fasia nastavi\u0165 syst\u00e9m. Keby bola mo\u017enos\u0165 jednoducho nain\u0161talova\u0165 bal\u00edk a nastavi\u0165 v\u0161etko jednoduch\u0161ie, mo\u017eno by z\u00edskal ur\u010dit\u00fa popularitu. A tam by sa mohlo sta\u0165, \u017ee by do \u0161tandardn\u00fdch distrib\u00faci\u00ed pridali aplik\u00e1ciu.<\/p>\n<p><\/p>\n<p>A, mo\u017eno, sa to d\u00e1 urobi\u0165 jednoduch\u0161ie. Ak pod\u013ea id okna vieme zisti\u0165 id procesu, ktor\u00fd ho vytvoril, a pod\u013ea id procesu zisti\u0165, ak\u00fd pr\u00edkaz ho vytvoril, mohli by sme automatizova\u0165 nastavenie. V skuto\u010dnosti som sa nezap\u00e1jal, \u010di je mo\u017en\u00e9 to, \u010do som nap\u00edsal v tomto odseku. Ide o to, \u017ee osobne mi vyhovuje sp\u00f4sob, ak\u00fdm to moment\u00e1lne funguje. Ale ak to niekomu okrem m\u0148a pripad\u00e1 pohodln\u00e9 a niekto to vylep\u0161\u00ed, r\u00e1d budem pou\u017e\u00edva\u0165 lep\u0161ie rie\u0161enie.<\/p>\n<p><\/p>\n<p>\u010eal\u0161\u00ed probl\u00e9m, ako som u\u017e p\u00edsal, spo\u010d\u00edva v tom, \u017ee v niektor\u00fdch pr\u00edpadoch sa okn\u00e1 nedaj\u00fa rozl\u00ed\u0161i\u0165 jedno od druh\u00e9ho. Zatia\u013e som to pozoroval iba s incognito v chrome\/chromium, ale mo\u017eno existuje nie\u010do podobn\u00e9 aj inde. V krajnom pr\u00edpade je v\u017edy mo\u017enos\u0165 univerz\u00e1lnych kombin\u00e1ci\u00ed <em>Alt+1<\/em>\u2026<em>Alt+0<\/em>. Op\u00e4\u0165, pou\u017e\u00edvam Firefox a pre m\u0148a osobne tento probl\u00e9m nie je z\u00e1sadn\u00fd.<\/p>\n<p><\/p>\n<p>Ale z\u00e1sadn\u00fd probl\u00e9m pre m\u0148a je, \u017ee v pr\u00e1ci pou\u017e\u00edvam Mac OS a tam som ni\u010d podobn\u00e9 nenastavil. N\u00e1stroj <em>wmctrl<\/em> nain\u0161talova\u0165 sa zdalo by\u0165 mo\u017en\u00e9, ale na Mac OS poriadne nefunguje. Nie\u010do sa d\u00e1 urobi\u0165 s aplik\u00e1ciou <em>Automator<\/em>, ale tak spoma\u013euje, \u017ee sa s n\u00edm ned\u00e1 pohodlne pracova\u0165, aj ke\u010f funguje. Nastavi\u0165 kl\u00e1vesov\u00e9 skratky tak, aby fungovali vo v\u0161etk\u00fdch programoch, sa mi tie\u017e nepodarilo. Ak n\u00e1hodou niekto vymysl\u00ed rie\u0161enie - budem r\u00e1d, ak ho budem m\u00f4c\u0165 pou\u017ei\u0165.<\/p>\n<p><\/p>\n<h2 id=\"vmesto-zaklyucheniya\">Na z\u00e1ver<\/h2>\n<p><\/p>\n<p>Nevyhnutne sa mi podarilo nap\u00edsa\u0165 ve\u013ea slov pre tak\u00fa, zdalo sa, jednoduch\u00fa funkcionalitu. Chcel som vyjadri\u0165 my\u0161lienku a nezaplni\u0165 text, ale zatia\u013e som nevymyslel, ako to poveda\u0165 jednoduch\u0161ie. Mo\u017eno by bolo lep\u0161ie to formou videa, ale tu to tak nemaj\u00fa radi.<\/p>\n<p><\/p>\n<p>Trochu som prerozpr\u00e1val, \u010do sa skr\u00fdva pod kapotou skriptu a ako ho nastavi\u0165. Do podrobnost\u00ed samotn\u00e9ho skriptu som sa nep\u00fa\u0161\u0165al, ale m\u00e1 len 50 riadkov, tak\u017ee sa v \u0148om d\u00e1 \u013eahko zorientova\u0165. <\/p>\n<p><\/p>\n<p>D\u00fafam, \u017ee niekto e\u0161te vysk\u00fa\u0161a tento n\u00e1pad a mo\u017eno to aj ocen\u00ed. M\u00f4\u017eem poveda\u0165 o sebe, \u017ee skript bol nap\u00edsan\u00fd pred pribli\u017ene 3 rokmi a pre m\u0148a je to VE\u013dMI pohodln\u00e9. Tak pohodln\u00e9, \u017ee sp\u00f4sobuje v\u00e1\u017ene nepohodlie pri pr\u00e1ci s cudz\u00edmi po\u010d\u00edta\u010dmi. A s pracovn\u00fdm MacBookom. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/masyamandev\/Showwin-script\">Odkaz na skripty<\/a><\/noindex><\/p>\n<p>Zdroj: <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\/sk\/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=\"sk_SK\" \/>\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\/sk\/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\udd47Alternat\u00edvne ovl\u00e1danie okien v Linuxe | ProHoster","description":"Som z t\u00fdch, ktor\u00ed si na Caps Lock nastavuj\u00fa prep\u00ednanie rozlo\u017eenia, preto\u017ee sa mi nechce stl\u00e1\u010da\u0165 2 kl\u00e1vesy, ke\u010f m\u00f4\u017eem stla\u010di\u0165 len jednu.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/55206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=55206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/55206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=55206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=55206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=55206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}