{"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\/cs\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","title":{"rendered":"Alternativn\u00ed spr\u00e1va oken v Linuxu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Jsem jedn\u00edm z t\u011bch, kte\u0159\u00ed maj\u00ed na Caps Lock nastaven\u00fd p\u0159ep\u00edna\u010d rozlo\u017een\u00ed, proto\u017ee se mi nechce ma\u010dkat dv\u011b kl\u00e1vesy, kdy\u017e mohu ma\u010dkat jednu. Dokonce bych cht\u011bl m\u00edt dv\u011b zbyte\u010dn\u00e9 kl\u00e1vesy: jednu bych pou\u017e\u00edval pro p\u0159ep\u00edn\u00e1n\u00ed na anglick\u00e9 rozlo\u017een\u00ed a druhou pro rusk\u00e9. Ale ta druh\u00e1 zbyte\u010dn\u00e1 kl\u00e1vesa \u2014 to je vyvol\u00e1n\u00ed kontextov\u00e9ho menu, co\u017e je tak zbyte\u010dn\u00e9, \u017ee mnoz\u00ed v\u00fdrobci notebook\u016f ji odstra\u0148uj\u00ed. Tak\u017ee mus\u00edm b\u00fdt spokojen\u00fd s t\u00edm, co m\u00e1m. <\/p>\n<p><\/p>\n<p>A je\u0161t\u011b nechci p\u0159i p\u0159ep\u00edn\u00e1n\u00ed oken hledat jejich ikony na panelu \u00faloh, sledovat n\u00e1zvy p\u0159i proch\u00e1zen\u00ed p\u0159es <em>Alt+Tab<\/em>, proch\u00e1zet pracovn\u00edmi plochami a tak d\u00e1le. Chci stisknout kl\u00e1vesovou zkratku (ide\u00e1ln\u011b v\u016fbec jednu, ale u\u017e nen\u00ed \u017e\u00e1dn\u00e1 voln\u00e1 zbyte\u010dn\u00e1 kl\u00e1vesa) a okam\u017eit\u011b se dostat do okna, kter\u00e9 pot\u0159ebuji. Nap\u0159\u00edklad takto:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: Firefox<\/li>\n<li>Alt+D: Firefox (Soukrom\u00e9 proch\u00e1zen\u00ed)<\/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 tak d\u00e1le.<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u0159itom, kdy\u017e stisknu nap\u0159\u00edklad <em>Alt+M<\/em> , chci vid\u011bt kalkula\u010dku bez ohledu na to, zda je tato aplikace pr\u00e1v\u011b spu\u0161t\u011bna. Pokud je spu\u0161t\u011bna, oknu se mus\u00ed p\u0159edat fokus, a pokud ne \u2014 spustit pot\u0159ebn\u00fd program a p\u0159edat mu fokus, kdy\u017e se na\u010dte.<\/p>\n<p><\/p>\n<p>Na p\u0159\u00edpady, kter\u00e9 nejsou pokryty p\u0159edchoz\u00edm sc\u00e9n\u00e1\u0159em, chci m\u00edt univerz\u00e1ln\u00ed kl\u00e1vesov\u00e9 zkratky, na kter\u00e9 lze snadno p\u0159i\u0159adit jak\u00e1koli otev\u0159en\u00e1 okna. Nap\u0159\u00edklad m\u00e1m p\u0159i\u0159azeno 10 zkratek od <em>Alt+1<\/em> do <em>Alt+0<\/em>, kter\u00e9 nejsou v\u00e1z\u00e1ny na \u017e\u00e1dn\u00e9 programy. Mohu jednodu\u0161e stisknout <em>Alt+1<\/em> a okno, kter\u00e9 je te\u010f v focusu, dostane fokus p\u0159i stisknut\u00ed <em>Alt+1<\/em>.<\/p>\n<p><\/p>\n<p>Pod nadpisem je popis je\u0161t\u011b p\u00e1r funkc\u00ed a odpov\u011b\u010f na to, jak to lze ud\u011blat. Ale ihned varuji, \u017ee takov\u00e1to personalizace \u201epro sebe\u201c m\u016f\u017ee vyvolat silnou z\u00e1vislost a dokonce abstinen\u010dn\u00ed p\u0159\u00edznaky p\u0159i nutnosti pou\u017e\u00edvat Windows, Mac OS nebo dokonce ciz\u00ed po\u010d\u00edta\u010d s Linuxem.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ve skute\u010dnosti, pokud nad t\u00edm pop\u0159em\u00fd\u0161l\u00edme, nevyu\u017e\u00edv\u00e1me v ka\u017edodenn\u00edm \u017eivot\u011b tolik program\u016f. Prohl\u00ed\u017ee\u010d, termin\u00e1l, IDE, n\u011bjak\u00fd messenger, spr\u00e1vce soubor\u016f, kalkula\u010dka a to je asi v\u0161e. Nen\u00ed pot\u0159eba tolik kl\u00e1vesov\u00fdch zkratek, aby pokryly 95 % ka\u017edodenn\u00edch \u00fakol\u016f.<\/p>\n<p><\/p>\n<p>Pro programy, kter\u00e9 maj\u00ed otev\u0159eno n\u011bkolik oken, lze jedno z nich nastavit jako hlavn\u00ed. Nap\u0159\u00edklad m\u00e1m otev\u0159eno n\u011bkolik oken IntelliJ Idea, kter\u00e9 jsou p\u0159i\u0159azeny k <em>Alt+E<\/em>. Za norm\u00e1ln\u00edch okolnost\u00ed se p\u0159i stisknut\u00ed <em>Alt+E<\/em> otev\u0159e n\u011bjak\u00e9 okno t\u00e9to aplikace, pravd\u011bpodobn\u011b to, kter\u00e9 bylo otev\u0159eno jako prvn\u00ed. Pokud v\u0161ak stisknete <em>Alt+E<\/em> kdy\u017e je jedno z oken t\u00e9to aplikace ji\u017e v fokus, toto okno bude nastaveno jako hlavn\u00ed a pr\u00e1v\u011b jemu bude p\u0159en\u00e1\u0161en fokus p\u0159i n\u00e1sledn\u00fdch stisknut\u00edch kombinace. <\/p>\n<p><\/p>\n<p>Hlavn\u00ed okno lze p\u0159enastavit. K tomu je pot\u0159eba nejprve kombinaci resetovat a pot\u00e9 p\u0159i\u0159adit jin\u00e9mu oknu jako hlavn\u00ed. K resetov\u00e1n\u00ed kombinace je t\u0159eba stisknout samotnou kombinaci a pot\u00e9 speci\u00e1ln\u00ed resetovac\u00ed kombinaci, u m\u011b je p\u0159id\u011blen\u00e1 na <em>Alt+Backspace<\/em>. T\u00edm se spust\u00ed skript, kter\u00fd zru\u0161\u00ed p\u0159i\u0159azen\u00ed hlavn\u00edho okna pro p\u0159edchoz\u00ed kombinaci. A pot\u00e9 lze p\u0159i\u0159adit nov\u00e9 hlavn\u00ed okno, jak bylo pops\u00e1no v p\u0159edchoz\u00edm odstavci. Reset p\u0159i\u0159azen\u00e9ho okna k univerz\u00e1ln\u00edm kombinac\u00edm prob\u00edh\u00e1 analogicky.<\/p>\n<p><\/p>\n<p>\u00davod se mi zd\u00e1 dlouh\u00fd, ale cht\u011bl jsem nejprve \u0159\u00edct, co budeme d\u011blat, a pak vysv\u011btlit, jak to ud\u011blat.<\/p>\n<p><\/p>\n<h2 id=\"dlya-teh-komu-nadoelo-chitat\">Pro ty, kte\u0159\u00ed maj\u00ed dost \u010dten\u00ed<\/h2>\n<p><\/p>\n<p>Jestli to shrnout, odkaz na skripty je na konci \u010dl\u00e1nku.<\/p>\n<p><\/p>\n<p>Ale stejn\u011b nebude mo\u017en\u00e9 hned nainstalovat a pou\u017e\u00edvat. Nejprve se mus\u00ed\u0161 vyznat v tom, jak skript najde po\u017eadovan\u00e9 okno. Bez toho nebude mo\u017en\u00e9 skriptu uk\u00e1zat, kam p\u0159esn\u011b je pot\u0159eba p\u0159en\u00e9st fokus. A je t\u0159eba pochopit, co d\u011blat, pokud se n\u00e1hle nenalezne vhodn\u00e9 okno.<\/p>\n<p><\/p>\n<p>A tak\u00e9 se nebudu soust\u0159edit na to, jak nastavit spou\u0161t\u011bn\u00ed skript\u016f pomoc\u00ed kl\u00e1vesov\u00fdch kombinac\u00ed. Nap\u0159\u00edklad v KDE to je v Syst\u00e9mov\u00fdch nastaven\u00edch \u2192 Kl\u00e1vesov\u00e9 zkratky \u2192 Vlastn\u00ed kl\u00e1vesov\u00e9 zkratky. V jin\u00fdch spr\u00e1vci oken by to m\u011blo b\u00fdt tak\u00e9 podobn\u00e9.<\/p>\n<p><\/p>\n<h2 id=\"znakomstvo-s-wmctrl\">Sezn\u00e1men\u00ed s wmctrl<\/h2>\n<p><\/p>\n<p><em>Wmctrl<\/em> \u2014 konzolov\u00e1 utilita pro interakci s X Window Managerem. Je to kl\u00ed\u010dov\u00fd program pro skript. Poj\u010fme se rychle pod\u00edvat, jak ho lze pou\u017e\u00edvat.<\/p>\n<p><\/p>\n<p>Nejprve si vylistujeme seznam otev\u0159en\u00fdch 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 P\u0159eklada\u010d - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Nejlep\u0161\u00ed p\u0159\u00edsp\u011bvky za den \/ Habr - Mozilla Firefox (Soukrom\u00e9 prohl\u00ed\u017een\u00ed)\n...<\/code><\/pre>\n<p><\/p>\n<p>Volba <em>-l<\/em> vypisuje seznam v\u0161ech otev\u0159en\u00fdch oken, a <em>-x<\/em> p\u0159id\u00e1v\u00e1 k v\u00fdstupu n\u00e1zev t\u0159\u00eddy (<em>skype.Skype<\/em>, <em>Navigator.Firefox<\/em> atd.). Pot\u0159ebujeme zde id okna (sloupec 1), n\u00e1zev t\u0159\u00eddy (sloupec 3) a n\u00e1zev okna (posledn\u00ed sloupec).<\/p>\n<p><\/p>\n<p>M\u016f\u017eeme se pokusit aktivovat n\u011bjak\u00e9 okno pomoc\u00ed volby <em>-a<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -a skype.Skype -x<\/code><\/pre>\n<p><\/p>\n<p>Pokud v\u0161echno \u0161lo podle pl\u00e1nu, m\u011blo by se na obrazovce objevit okno Skype. Pokud m\u00edsto volby <em>-x<\/em> pou\u017e\u00edt volbu <em>-i<\/em>, tak\u017ee m\u00edsto jm\u00e9na t\u0159\u00eddy m\u016f\u017eeme uv\u00e9st id okna. Probl\u00e9m s id je, \u017ee se m\u011bn\u00ed p\u0159i ka\u017ed\u00e9m spu\u0161t\u011bn\u00ed aplikace a my ho nem\u016f\u017eeme zn\u00e1t p\u0159edem. Na druhou stranu tento atribut jednozna\u010dn\u011b identifikuje okno, co\u017e m\u016f\u017ee b\u00fdt d\u016fle\u017eit\u00e9, kdy\u017e aplikace otev\u0159e v\u00edce ne\u017e jedno okno. O tom si pov\u00edme pozd\u011bji.<\/p>\n<p><\/p>\n<p>V tomto kroku si mus\u00edme zapamatovat, \u017ee budeme hledat pot\u0159ebn\u00e9 okno pomoc\u00ed regex na v\u00fdstupu <em>wmctrl -lx<\/em>. Ale to neznamen\u00e1, \u017ee mus\u00edme nutn\u011b pou\u017e\u00edvat n\u011bco slo\u017eit\u00e9ho. Obvykle sta\u010d\u00ed jm\u00e9no t\u0159\u00eddy nebo n\u00e1zev okna. <\/p>\n<p><\/p>\n<p>V z\u00e1sad\u011b by u\u017e m\u011bla b\u00fdt hlavn\u00ed my\u0161lenka jasn\u00e1. V nastaven\u00ed glob\u00e1ln\u00edch kl\u00e1vesov\u00fdch zkratek\/kl\u00e1vesov\u00fdch kombinac\u00ed pro v\u00e1\u0161 spr\u00e1vce oken nastavujeme pot\u0159ebnou kombinaci pro spu\u0161t\u011bn\u00ed skriptu.<\/p>\n<p><\/p>\n<h2 id=\"kak-polzovatsya-skriptami\">Jak pou\u017e\u00edvat skripty<\/h2>\n<p><\/p>\n<p>Nejprve je t\u0159eba nainstalovat konzolov\u00e9 utilitky <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>D\u00e1le je t\u0159eba st\u00e1hnout skripty a p\u0159idat je do <em>$PATH<\/em>. Obvykle je ukl\u00e1d\u00e1m 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>Pokud adres\u00e1\u0159 <em>~\/bin<\/em> neexistoval, je t\u0159eba ho vytvo\u0159it a restartovat (nebo se znovu p\u0159ihl\u00e1sit), jinak <em>~\/bin<\/em> nebude dostupn\u00fd v <em>$PATH<\/em>. Pokud bylo v\u0161e ud\u011bl\u00e1no spr\u00e1vn\u011b, skripty by m\u011bly b\u00fdt dostupn\u00e9 z konzole a m\u011blo by fungovat automatick\u00e9 dopl\u0148ov\u00e1n\u00ed pomoc\u00ed Tab.<\/p>\n<p><\/p>\n<p>Hlavn\u00ed skript <strong>showwin<\/strong> p\u0159eb\u00edr\u00e1 2 parametry: prvn\u00ed je regex, podle kter\u00e9ho budeme hledat pot\u0159ebn\u00e9 okno, a druh\u00fd parametr je p\u0159\u00edkaz, kter\u00fd se m\u00e1 vykonat, pokud bylo po\u017eadovan\u00e9 okno nenalezeno. <\/p>\n<p><\/p>\n<p>M\u016f\u017eete zkusit vykonat skript, nap\u0159\u00edklad:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ showwin \"Mozilla Firefox$\" firefox<\/code><\/pre>\n<p><\/p>\n<p>Pokud je Firefox nainstalov\u00e1n, m\u011bl by b\u00fdt oknu p\u0159ed\u00e1n fokus. I kdy\u017e Firefox nebyl spu\u0161t\u011bn, m\u011bl by se spustit.<\/p>\n<p><\/p>\n<p>Pokud to vy\u0161lo, m\u016f\u017eete zkusit nastavit proveden\u00ed p\u0159\u00edkaz\u016f na kombinace. V nastaven\u00ed glob\u00e1ln\u00edch kl\u00e1vesov\u00fdch zkratek\/kl\u00e1vesov\u00fdch kombinac\u00ed p\u0159id\u00e1v\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 d\u00e1le. Kl\u00e1vesov\u00e9 kombinace a software si ka\u017ed\u00fd m\u016f\u017ee nastavit podle vlastn\u00edch preferenc\u00ed.<br \/>\nPokud se v\u0161e poda\u0159\u00ed spr\u00e1vn\u011b, pak podle v\u00fd\u0161e uveden\u00fdch kombinac\u00ed budeme moci p\u0159ep\u00ednat mezi okny jednoduch\u00fdm stisknut\u00edm kl\u00e1ves.<\/p>\n<p><\/p>\n<p>Zklamu milovn\u00edky Chromu: b\u011b\u017en\u00e9 okno nelze od inkognito odli\u0161it podle v\u00fdstupu. <em>wmctrl<\/em> Nen\u00ed to mo\u017en\u00e9, maj\u00ed stejn\u00e9 n\u00e1zvy t\u0159\u00edd a titulky oken. V navr\u017een\u00fdch regex jsou znaky N* a I* pot\u0159ebn\u00e9 pouze k tomu, aby se tyto regul\u00e1rn\u00ed v\u00fdrazy od sebe li\u0161ily a aby bylo mo\u017en\u00e9 p\u0159i\u0159adit r\u016fzn\u00fdm okn\u016fm hlavn\u00ed role.<\/p>\n<p><\/p>\n<p>Pro resetov\u00e1n\u00ed hlavn\u00edho okna p\u0159edchoz\u00ed kombinace (ve skute\u010dnosti pro regex, kter\u00fd <strong>showwin<\/strong> byl vyvol\u00e1n naposledy) je t\u0159eba zavolat skript <strong>showwinDetach<\/strong>. Tento skript je u m\u011b p\u0159i\u0159azen ke kombinaci kl\u00e1ves. <em>Alt+Backspace<\/em>. <\/p>\n<p><\/p>\n<p>Skript <strong>showwin<\/strong> m\u00e1 je\u0161t\u011b jednu funkci. Kdy\u017e je vyvol\u00e1n s jedn\u00edm parametrem (v tomto p\u0159\u00edpad\u011b je parametr prost\u011b identifik\u00e1tor), v\u016fbec neskenuje regex a v\u0161echna okna pova\u017euje za vhodn\u00e1. To samo o sob\u011b se zd\u00e1 b\u00fdt zbyte\u010dn\u00e9, ale t\u00edmto zp\u016fsobem m\u016f\u017eeme p\u0159i\u0159adit jak\u00e9koli okno jako hlavn\u00ed a rychle p\u0159ep\u00ednat p\u0159\u00edmo na toto okno.<\/p>\n<p><\/p>\n<p>M\u00e1m nastaven\u00e9 n\u00e1sleduj\u00edc\u00ed kombinace:<\/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>Tak mohu p\u0159i\u0159adit jak\u00e1koli okna k t\u011bmto kombinac\u00edm. <em>Alt+1<\/em>&#8230;<em>Alt+0<\/em>Sta\u010d\u00ed stisknout <em>Alt+1<\/em> a p\u0159i\u0159azuji aktu\u00e1ln\u00ed okno k t\u00e9to kombinaci. Odradit p\u0159i\u0159azen\u00ed mohu stisknut\u00edm <em>Alt+1<\/em>, a pot\u00e9 <em>Alt+Backspace<\/em>. Nebo zav\u0159\u00edt okno, to tak\u00e9 funguje.<\/p>\n<p><\/p>\n<p>D\u00e1le se pod\u011bl\u00edm o trochu technick\u00fdch detail\u016f. M\u016f\u017eete je ne\u010d\u00edst a jednodu\u0161e zkusit nastavit a pod\u00edvat se. Ale p\u0159esto bych doporu\u010dil pochopit ciz\u00ed skripty, ne\u017e je spust\u00edte na sv\u00e9m po\u010d\u00edta\u010di :) .<\/p>\n<p><\/p>\n<h2 id=\"kak-razlichat-raznye-okna-odnogo-prilozheniya\">Jak rozli\u0161ovat r\u016fzn\u00e1 okna jedn\u00e9 aplikace<\/h2>\n<p><\/p>\n<p>V podstat\u011b, prvn\u00ed p\u0159\u00edklad \u201ewmctrl -a skype.Skype -x\u201c byl funk\u010dn\u00ed a lze ho pou\u017e\u00edt. Ale pod\u00edvejme se znovu na p\u0159\u00edklad s Firefoxem, ve kter\u00e9m jsou otev\u0159en\u00e1 2 okna:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">0x04400003  0 Navigator.Firefox                   N\/A Google P\u0159eklada\u010d - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Nejlep\u0161\u00ed publikace za den \/ Habr - Mozilla Firefox (Soukrom\u00e9 prohl\u00ed\u017een\u00ed)<\/code><\/pre>\n<p><\/p>\n<p>Prvn\u00ed okno je v b\u011b\u017en\u00e9m re\u017eimu, zat\u00edmco druh\u00e9 je v re\u017eimu soukrom\u00e9ho prohl\u00ed\u017een\u00ed. Tato okna bych cht\u011bl pova\u017eovat za r\u016fzn\u00e9 aplikace a p\u0159ep\u00ednat mezi nimi r\u016fzn\u00fdmi kl\u00e1vesov\u00fdmi zkratkami. <\/p>\n<p><\/p>\n<p>Je t\u0159eba zkomplikovat skript, kter\u00fd p\u0159ep\u00edn\u00e1 okna. Pou\u017eil jsem takov\u00e9 \u0159e\u0161en\u00ed: vytvo\u0159it seznam v\u0161ech oken, ud\u011blat <em>grep<\/em> podle regex, vz\u00edt prvn\u00ed \u0159\u00e1dek pomoc\u00ed <em>head<\/em>, z\u00edskat prvn\u00ed sloupec (to bude id okna) pomoc\u00ed <em>cut<\/em>, p\u0159epnout na okno podle id.<\/p>\n<p><\/p>\n<p>Tady by m\u011bla b\u00fdt vtip o regul\u00e1rn\u00edch v\u00fdrazech a dvou probl\u00e9mech, ale ve skute\u010dnosti nic slo\u017eit\u00e9ho nepou\u017e\u00edv\u00e1m. Regul\u00e1rky pot\u0159ebuji k tomu, abych mohl ur\u010dit konec \u0159\u00e1dku (znak \u201e$\u201c) a rozli\u0161ovat \u201eMozilla Firefox$\u201c od \u201eMozilla Firefox (soukrom\u00e9 prohl\u00ed\u017een\u00ed)$\u201c.<\/p>\n<p><\/p>\n<p>T\u00fdm vypad\u00e1 p\u0159ibli\u017en\u011b 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>Zde u\u017e si lze domyslet druhou zvl\u00e1\u0161tnost skriptu: pokud grep nic nevr\u00e1t\u00ed, znamen\u00e1 to, \u017ee po\u017eadovan\u00e1 aplikace nen\u00ed otev\u0159en\u00e1, a je t\u0159eba ji spustit vykon\u00e1n\u00edm p\u0159\u00edkazu z druh\u00e9ho parametru. A pot\u00e9 pravideln\u011b kontrolovat, zda se neotev\u0159elo po\u017eadovan\u00e9 okno, abychom mu mohli p\u0159edat fokus. Nebudu se na to zam\u011b\u0159ovat, kdo chce, ten se pod\u00edv\u00e1 na zdrojov\u00e9 k\u00f3dy.<\/p>\n<p><\/p>\n<h2 id=\"kogda-okna-prilozheniya-ne-razlichimy\">Kdy\u017e jsou okna aplikac\u00ed nerozli\u0161iteln\u00e1<\/h2>\n<p><\/p>\n<p>Tak\u017ee jsme se nau\u010dili p\u0159ed\u00e1vat fokus oknu pot\u0159ebn\u00e9 aplikace. Ale co kdy\u017e je otev\u0159eno v\u00edce ne\u017e jedno okno dan\u00e9 aplikace? Na kter\u00e9 z nich p\u0159edat fokus? Skript v\u00fd\u0161e pravd\u011bpodobn\u011b p\u0159ed\u00e1 fokus prvn\u00edmu otev\u0159en\u00e9mu oknu. Cht\u011bli bychom v\u0161ak v\u011bt\u0161\u00ed flexibilitu. R\u00e1di bychom si pamatovali, kter\u00e9 konkr\u00e9tn\u00ed okno pot\u0159ebujeme, a p\u0159ep\u00ednali se pr\u00e1v\u011b k tomu oknu.<\/p>\n<p><\/p>\n<p>My\u0161lenka byla takov\u00e1: Pokud chceme pro kombinaci kl\u00e1ves zapamatovat ur\u010dit\u00e9 okno, mus\u00edme stisknout tuto kombinaci ve chv\u00edli, kdy je po\u017eadovan\u00e9 okno v ohnisku. P\u0159i p\u0159\u00ed\u0161t\u00edm stisknut\u00ed t\u00e9to kombinace bude fokus p\u0159ed\u00e1n pr\u00e1v\u011b tomuto oknu. Dokud okno nezav\u0159eme nebo neud\u011bl\u00e1me reset pro tuto kombinaci skriptu. <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<p>Algoritmus skriptu <strong>showwin<\/strong> vypad\u00e1 zhruba takto:<\/p>\n<p><\/p>\n<ul>\n<li>Zkontrolujeme, jestli jsme d\u0159\u00edve nezapamatovali ID okna, kter\u00e9mu je t\u0159eba p\u0159edat fokus.<br \/>\nPokud jsme zapamatovali a takov\u00e9 okno st\u00e1le existuje, p\u0159ed\u00e1me mu fokus a skon\u010d\u00edme. <\/li>\n<li>Pod\u00edv\u00e1me se, kter\u00e9 okno je nyn\u00ed zam\u011b\u0159eno, a pokud vyhovuje na\u0161emu po\u017eadavku, zapamatujeme si jeho ID pro pozd\u011bj\u0161\u00ed p\u0159ep\u00edn\u00e1n\u00ed a skon\u010d\u00edme.<\/li>\n<li>P\u0159ejdeme k jak\u00e9mukoli vhodn\u00e9mu oknu, pokud existuje, nebo otev\u0159eme pot\u0159ebnou aplikaci.<\/li>\n<\/ul>\n<p><\/p>\n<p>Zjistit, kter\u00e9 okno je nyn\u00ed zam\u011b\u0159eno, m\u016f\u017eeme pomoc\u00ed konzolov\u00e9 utility xdotool, p\u0159evodem jej\u00edho v\u00fdstupu do \u0161estn\u00e1ctkov\u00e9ho form\u00e1tu:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ printf \"0xx\" `xdotool getwindowfocus`<\/code><\/pre>\n<p><\/p>\n<p>N\u011bco si zapamatovat v bash je nejsnaz\u0161\u00ed vytv\u00e1\u0159en\u00edm soubor\u016f ve virtu\u00e1ln\u00edm souborov\u00e9m syst\u00e9mu, kter\u00fd se nach\u00e1z\u00ed v pam\u011bti. V Ubuntu je takov\u00fd p\u0159ipojen ve v\u00fdchoz\u00edm nastaven\u00ed <em>\/dev\/shm\/<\/em>. O jin\u00fdch distribuc\u00edch nic \u0159\u00edct nemohu, douf\u00e1m, \u017ee n\u011bco podobn\u00e9ho existuje tak\u00e9. M\u016f\u017eete to zkontrolovat pomoc\u00ed p\u0159\u00edkazu:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ mount -l | grep tmpfs<\/code><\/pre>\n<p><\/p>\n<p>Skript bude vytv\u00e1\u0159et pr\u00e1zdn\u00e9 adres\u00e1\u0159e v t\u00e9to slo\u017ece, takto: <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX\/$WINDOW_ID<\/em>. D\u00e1le p\u0159i ka\u017ed\u00e9m vyvol\u00e1n\u00ed vytvo\u0159\u00ed symlink <em>\/dev\/shm\/$USER\/showwin\/showwin_last<\/em> na <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX<\/em>. To bude pot\u0159ebn\u00e9 k tomu, abyste mohli v p\u0159\u00edpad\u011b pot\u0159eby smazat ID okna pro ur\u010ditou kombinaci pomoc\u00ed skriptu <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<h2 id=\"chto-mozhno-uluchshit\">Co lze zlep\u0161it<\/h2>\n<p><\/p>\n<p>Za prv\u00e9, skripty je t\u0159eba nastavovat ru\u010dn\u011b. Ur\u010dit\u011b, kv\u016fli nutnosti se do toho pono\u0159it a d\u011blat mnoho v\u011bc\u00ed ru\u010dn\u011b, to mnoh\u00e9 z v\u00e1s ani nenapadne pokusit se syst\u00e9m nastavit. Kdyby byla mo\u017enost jednodu\u0161e nainstalovat bal\u00ed\u010dek a nastavit v\u0161e jednodu\u0161eji, mo\u017en\u00e1 by to z\u00edskalo n\u011bjakou popularitu. A kdo v\u00ed, mo\u017en\u00e1 by pak do standardn\u00edch distribuc\u00ed p\u0159idali aplikaci.<\/p>\n<p><\/p>\n<p>A mo\u017en\u00e1 by to \u0161lo ud\u011blat jednodu\u0161eji. Pokud podle ID okna m\u016f\u017eete zjistit ID procesu, kter\u00fd ho vytvo\u0159il, a podle ID procesu zjistit, jak\u00fd p\u0159\u00edkaz ho vytvo\u0159il, bylo by mo\u017en\u00e9 automatizovat nastaven\u00ed. Opravdu jsem se t\u00edmto odstavcem bl\u00ed\u017ee nezab\u00fdval. Osobn\u011b mi vyhovuje to, jak to funguje te\u010f. Ale pokud by se to n\u011bkomu jin\u00e9mu krom\u011b m\u011b zd\u00e1lo praktick\u00e9 a n\u011bkdo by to vylep\u0161il, r\u00e1d bych vyu\u017eil lep\u0161\u00ed \u0159e\u0161en\u00ed.<\/p>\n<p><\/p>\n<p>Jin\u00fd probl\u00e9m, jak u\u017e jsem psal, spo\u010d\u00edv\u00e1 v tom, \u017ee v n\u011bkter\u00fdch p\u0159\u00edpadech nelze okna od sebe odli\u0161it. Zat\u00edm jsem toto pozoroval pouze s re\u017eimem incognito v chrome\/chromium, ale mo\u017en\u00e1, \u017ee n\u011bkde jinde je to podobn\u00e9. V krajn\u00edm p\u0159\u00edpad\u011b v\u017edy existuje mo\u017enost univerz\u00e1ln\u00edch kombinac\u00ed <em>Alt+1<\/em>&#8230;<em>Alt+0<\/em>. Znovu, pou\u017e\u00edv\u00e1m Firefox a pro m\u011b osobn\u011b tento probl\u00e9m nen\u00ed z\u00e1sadn\u00ed.<\/p>\n<p><\/p>\n<p>Z\u00e1sadn\u00edm probl\u00e9mem pro m\u011b je, \u017ee v pr\u00e1ci pou\u017e\u00edv\u00e1m Mac OS a tam jsem nic podobn\u00e9ho nastavit nedok\u00e1zal. N\u00e1stroj <em>wmctrl<\/em> se zd\u00e1, \u017ee jsem nainstaloval, ale na Mac OS spr\u00e1vn\u011b nefunguje. N\u011bco lze ud\u011blat s aplikac\u00ed <em>Automator<\/em>, ale je tak pomal\u00e1, \u017ee se s n\u00ed ned\u00e1 pohodln\u011b pracovat ani kdy\u017e funguje. Tak\u00e9 jsem nedok\u00e1zal nastavit kl\u00e1vesov\u00e9 zkratky tak, aby pracovaly ve v\u0161ech programech. Pokud n\u011bkdo vymysl\u00ed \u0159e\u0161en\u00ed \u2013 budu r\u00e1d, \u017ee ho budu moci pou\u017e\u00edvat.<\/p>\n<p><\/p>\n<h2 id=\"vmesto-zaklyucheniya\">Na z\u00e1v\u011br<\/h2>\n<p><\/p>\n<p>Vy\u0161lo to p\u0159ekvapiv\u011b hodn\u011b slov pro tak, na prvn\u00ed pohled, jednoduchou funk\u010dnost. Cht\u011bl jsem vyj\u00e1d\u0159it my\u0161lenku a nep\u0159et\u011b\u017eovat text, ale zat\u00edm jsem nep\u0159i\u0161el na to, jak to \u0159\u00edct jednodu\u0161eji. Mo\u017en\u00e1 by to ve form\u00e1tu videa bylo lep\u0161\u00ed, ale tady to tak p\u0159\u00edli\u0161 nemaj\u00ed r\u00e1di.<\/p>\n<p><\/p>\n<p>Trochu jsem se zm\u00ednil o tom, co se skr\u00fdv\u00e1 pod kapotou skriptu a jak jej nastavit. Do podrobnost\u00ed samotn\u00e9ho skriptu jsem se nepou\u0161t\u011bl, ale m\u00e1 jen 50 \u0159\u00e1dk\u016f, rychle se to d\u00e1 pochopit. <\/p>\n<p><\/p>\n<p>Douf\u00e1m, \u017ee n\u011bkdo dal\u0161\u00ed tuto my\u0161lenku vyzkou\u0161\u00ed a mo\u017en\u00e1 ji i ocen\u00ed. Mohu \u0159\u00edct, \u017ee skript byl naps\u00e1n p\u0159ed t\u0159emi lety a mn\u011b to velmi usnad\u0148uje pr\u00e1ci. Natolik, \u017ee to zp\u016fsobuje zna\u010dn\u00e9 nepohodl\u00ed p\u0159i pr\u00e1ci na ciz\u00edch po\u010d\u00edta\u010d\u00edch. A na pracovn\u00edm MacBooku. <\/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.3 - 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\/cs\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Alternativn\u00ed spr\u00e1va oken v Linuxu | ProHoster","description":"Jsem ten typ, kter\u00fd na Caps Lock nastavuje p\u0159ep\u00edn\u00e1n\u00ed rozlo\u017een\u00ed, proto\u017ee se mi nechce ma\u010dkat dv\u011b kl\u00e1vesy, kdy\u017e mohu ma\u010dkat jen jednu.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/55206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=55206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/55206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=55206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=55206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=55206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}