{"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\/no\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","title":{"rendered":"Alternativ vindusstyring i Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Eg er av dei som set Caps Lock for \u00e5 skifte mellom tastaturoppsett fordi eg er lat og ikkje orkar \u00e5 trykke to knappar n\u00e5r eg kan trykke ein. Eg ville til og med \u00f8nske at eg hadde to un\u00f8dvendige knappar: ein for \u00e5 aktivere det engelske oppsettet, og den andre for det russiske. Men den andre un\u00f8dvendige knappen \u2014 det er \u00e5 kalle opp kontekstmenyen, som er s\u00e5 un\u00f8dvendig at mange b\u00e6rbare datamaskinprodusenter tar bort den. S\u00e5 eg f\u00e5r n\u00f8ye meg med det eg har. <\/p>\n<p><\/p>\n<p>Og eg vil heller ikkje leita etter ikonene til vindauga p\u00e5 oppgavelinja n\u00e5r eg bytter vindaugsfokus, eg vil sj\u00e5 namna n\u00e5r eg bla gjennom <em>Alt+Tab<\/em>, bla gjennom skrivebord og s\u00e5 vidare. Eg vil trykke ein tastekombinasjon (ideelt sett berre ein, men det finst ikkje fleire un\u00f8dvendige knappar) og straks komma til det vindauget eg treng. For eksempel slik:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: Firefox<\/li>\n<li>Alt+D: Firefox (Privat nettlesing)<\/li>\n<li>Alt+T: Terminal<\/li>\n<li>Alt+M: Kalkulator<\/li>\n<li>Alt+E: IntelliJ Idea<\/li>\n<li>og s\u00e5 videre.<\/li>\n<\/ul>\n<p><\/p>\n<p>Dessutan, n\u00e5r eg trykker p\u00e5 <em>Alt+M<\/em> , vil eg sj\u00e5 kalkulatoren uavhengig av om dette programmet er open for \u00f8yeblikket. Om det er open, m\u00e5 fokuset sendast til det vindauget, og om det ikkje er open \u2014 starte det aktuelle programmet og sende fokuset n\u00e5r det er lasta inn.<\/p>\n<p><\/p>\n<p>For tilfelle som ikkje dekkast av det f\u00f8reg\u00e5ande scenariet, vil eg ha universelle tastekombinasjonar som lett kan tildelast til kva som helst av dei opne vindauga. For eksempel har eg tildelt 10 kombinasjonar fr\u00e5 <em>Alt+1<\/em> til <em>Alt+0<\/em>, som ikkje er knytt til nokre program. Eg kan berre trykke <em>Alt+1<\/em> og vindauget som er i fokus no, vil f\u00e5 fokus n\u00e5r eg trykker <em>Alt+1<\/em>.<\/p>\n<p><\/p>\n<p>Under er det ei beskrivelse av eit par andre funksjonar og svaret p\u00e5 korleis ein kan gjere dette. Men eg vil straks advare om at slik tilpassing kan skape sterk avhengighet og til og med abstinenser n\u00e5r ein m\u00e5 bruke Windows, Mac OS eller til og med ei framand datamaskin med Linux.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Faktisk, n\u00e5r ein tenkjer p\u00e5 det, bruker vi ikkje s\u00e5 mange program dagleg. Nettlesar, terminal, IDE, ein type meldingstenester, filbehandlar, kalkulator, og kanskje det er nesten alt. Ein treng ikkje s\u00e5 mange tastatursnarvegar for \u00e5 dekke 95% av daglege oppg\u00e5ver.<\/p>\n<p><\/p>\n<p>For program som har fleire vindauga opne, kan ein av dei bli sett som hovudvindu. For eksempel, har eg fleire vindauga opne i IntelliJ Idea, tildelt til <em>Alt+E<\/em>. Under vanlege tilh\u00f8ve vil trykking p\u00e5 <em>Alt+E<\/em> opne eit av vindauga til dette programmet, mest sannsynleg det vindauget som vart opna f\u00f8rst. Men om ein trykker p\u00e5 <em>Alt+E<\/em> N\u00e5r ett av vinduene i dette programmet allerede er i fokus, vil dette vinduet bli satt som hovedvinduet, og det vil motta fokus ved p\u00e5f\u00f8lgende tastetrykk av kombinasjonen. <\/p>\n<p><\/p>\n<p>Hovedvinduet kan omdefineres. For dette m\u00e5 kombinasjonen f\u00f8rst tilbakestilles, og deretter kan et annet vindu settes som hovedvindu. For \u00e5 tilbakestille kombinasjonen m\u00e5 du trykke p\u00e5 selve kombinasjonen, og deretter en spesialkombinasjon for tilbakestilling, som jeg har satt til <em>Alt+Backspace<\/em>. Dette vil kalle et skript som annullerer tildelingen av hovedvinduet for den forrige kombinasjonen. Deretter kan et nytt hovedvindu tildeles som beskrevet i forrige avsnitt. Tilbakestilling av det tilknyttede vinduet til universelle kombinasjoner skjer p\u00e5 lignende m\u00e5te.<\/p>\n<p><\/p>\n<p>Introduksjonen ble lang, men jeg ville f\u00f8rst fortelle hva vi skal gj\u00f8re, og deretter forklare hvordan vi skal gj\u00f8re det.<\/p>\n<p><\/p>\n<h2 id=\"dlya-teh-komu-nadoelo-chitat\">For de som er lei av \u00e5 lese<\/h2>\n<p><\/p>\n<p>Kort fortalt, linken til skriptene ligger p\u00e5 slutten av artikkelen.<\/p>\n<p><\/p>\n<p>Men det vil fortsatt ikke v\u00e6re mulig \u00e5 installere og bruke det med en gang. Du m\u00e5 f\u00f8rst forst\u00e5 hvordan skriptet finner det n\u00f8dvendige vinduet. Uten dette kan ikke skriptet vite hvor fokus skal overf\u00f8res. Og man m\u00e5 vite hva man skal gj\u00f8re hvis det ikke finnes et passende vindu.<\/p>\n<p><\/p>\n<p>Og jeg vil heller ikke fokusere p\u00e5 hvordan man setter opp kj\u00f8ringen av skriptene ved tastetrykk. For eksempel, i KDE er det i Systeminnstillinger \u2192 Snarveier \u2192 Egne snarveier. Dette b\u00f8r ogs\u00e5 v\u00e6re mulig i andre vindusbehandlere.<\/p>\n<p><\/p>\n<h2 id=\"znakomstvo-s-wmctrl\">Bli kjent med wmctrl<\/h2>\n<p><\/p>\n<p><em>Wmctrl<\/em> \u2014 et kommandolinjeverkt\u00f8y for \u00e5 samhandle med X Window Manager. Dette er et n\u00f8kkelprogram for skriptet. La oss raskt se p\u00e5 hvordan man kan bruke det.<\/p>\n<p><\/p>\n<p>For \u00e5 begynne, la oss liste opp \u00e5pne vinduer:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -lx\n0x01e0000e -1 plasmashell.plasmashell             N\/A Skrivebord \u2014 Plasma\n0x01e0001e -1 plasmashell.plasmashell             N\/A Plasma\n0x03a00001  0 skype.Skype                         N\/A Skype\n0x04400003  0 Navigator.Firefox                   N\/A Google Oversetter - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Beste publikasjoner den siste dagen \/ Habr - Mozilla Firefox (Privat nettlesing)\n...<\/code><\/pre>\n<p><\/p>\n<p>Alternativ <em>-l<\/em> viser en liste over alle \u00e5pne vinduer, mens <em>-x<\/em> legger til klassens navn i utdataene (<em>skype.Skype<\/em>, <em>Navigator.Firefox<\/em> osv.). Vi trenger vinduets id (kolonne 1), klasse navn (kolonne 3) og vinduets tittel (siste kolonne).<\/p>\n<p><\/p>\n<p>Du kan pr\u00f8ve \u00e5 aktivere et vindu med alternativet <em>-a<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -a skype.Skype -x<\/code><\/pre>\n<p><\/p>\n<p>Hvis alt g\u00e5r etter planen, skal Skype-vinduet vises p\u00e5 skjermen. Hvis du velger alternativet <em>-x<\/em> bruk alternativet <em>-i<\/em>, s\u00e5 i stedet for klassens navn kan vi angive id'et p\u00e5 vinduet. Problemet med id'et er, at vinduets id \u00e6ndrer sig ved hver opstart af applikationen, og vi kan ikke kende det p\u00e5 forh\u00e5nd. P\u00e5 den anden side angiver dette attribut klart vinduet, hvilket kan v\u00e6re vigtigt, n\u00e5r applikationen \u00e5bner mere end \u00e9t vindue. Mere om dette senere.<\/p>\n<p><\/p>\n<p>P\u00e5 dette trin skal vi huske, at vi vil s\u00f8ge efter det \u00f8nskede vindue ved hj\u00e6lp af regex fra outputtet <em>wmctrl -lx<\/em>. Men det betyder ikke, at vi n\u00f8dvendigvis skal bruge noget kompliceret. Normalt er klassens navn eller vinduets titel tilstr\u00e6kkeligt. <\/p>\n<p><\/p>\n<p>I princippet b\u00f8r hovedideen allerede v\u00e6re klar. I indstillingerne for globale genvejstaster indstiller vi den \u00f8nskede kombination til at udf\u00f8re scriptet.<\/p>\n<p><\/p>\n<h2 id=\"kak-polzovatsya-skriptami\">S\u00e5dan bruger du scripts<\/h2>\n<p><\/p>\n<p>F\u00f8rst skal du installere kommandolinjev\u00e6rkt\u00f8jer <em>wmctrl<\/em> og <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>Derudover skal du downloade scripts og tilf\u00f8je dem til <em>$PATH<\/em>. Jeg l\u00e6gger dem normalt i <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>Hvis kataloget <em>~\/bin<\/em> ikke eksisterede, skal det oprettes, og du skal genstarte (eller logge ind igen), ellers <em>~\/bin<\/em> vil ikke komme ind i <em>$PATH<\/em>. Hvis alt er gjort korrekt, skal scripts v\u00e6re tilg\u00e6ngelige fra konsollen, og autoudfyldning med Tab skal fungere.<\/p>\n<p><\/p>\n<p>Hovedscriptet <strong>showwin<\/strong> modtager 2 parametre: den f\u00f8rste er regex, hvormed vi vil s\u00f8ge efter det \u00f8nskede vindue, og den anden parameter er kommandoen, som skal udf\u00f8res, hvis det \u00f8nskede vindue ikke blev fundet. <\/p>\n<p><\/p>\n<p>Du kan pr\u00f8ve at udf\u00f8re scriptet, for eksempel:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ showwin \"Mozilla Firefox$\" firefox<\/code><\/pre>\n<p><\/p>\n<p>Hvis Firefox er installeret, skal fokus overf\u00f8res til dets vindue. Selv hvis Firefox ikke var startet, skal det starte.<\/p>\n<p><\/p>\n<p>Hvis det lykkedes, kan du pr\u00f8ve at indstille udf\u00f8relsen af kommandoer til kombinationer. I indstillingerne for globale genvejstaster tilf\u00f8jer vi:<\/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>Og s\u00e5 videre. Hver person kan tilpasse genvejstaster og software som det passer dem.<br \/>\nHvis alt er gjort korrekt, kan vi skifte mellem vinduer med de n\u00e6vnte kombinationer ved blot at trykke p\u00e5 tasterne.<\/p>\n<p><\/p>\n<p>Jeg vil skuffe elskere af Chrome: et almindeligt vindue kan ikke skelnes fra et inkognito-vindue ud fra output. <em>wmctrl<\/em> Det er ikke mulig, de har samme klassebetegnelser og vindustitler. I de foresl\u00e5tte regexene er symbolene N* og I* bare n\u00f8dvendige for at disse regul\u00e6re uttrykkene skal skille seg fra hverandre, slik at forskjellige vinduer kan tildeles som hovedvinduer.<\/p>\n<p><\/p>\n<p>For \u00e5 tilbakestille hovedvinduet for den forrige kombinasjonen (faktisk for regexen som <strong>showwin<\/strong> ble kalt sist) m\u00e5 du kj\u00f8re skriptet <strong>showwinDetach<\/strong>. Jeg har dette skriptet tildelt til en tastaturkombinasjon <em>Alt+Backspace<\/em>. <\/p>\n<p><\/p>\n<p>Skriptet <strong>showwin<\/strong> har en annen funksjon. N\u00e5r det kalles med ett parameter (i dette tilfellet er parameteren bare et identifikasjonsnummer), sjekker det ikke regexen i det hele tatt, men anser alle vinduene som passende. Dette kan virke unyttig, men p\u00e5 denne m\u00e5ten kan vi tildele ethvert vindu som hovedvindu og raskt bytte til nettopp det vinduet.<\/p>\n<p><\/p>\n<p>Jeg har satt opp f\u00f8lgende kombinasjoner:<\/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>Dermed kan jeg knytte vilk\u00e5rlige vinduer til kombinasjoner <em>Alt+1<\/em>&#8230;<em>Alt+0<\/em>. Bare ved \u00e5 trykke <em>Alt+1<\/em> binder jeg det n\u00e5v\u00e6rende vinduet til denne kombinasjonen. Jeg kan avbryte bindingen ved \u00e5 trykke <em>Alt+1<\/em>, og deretter <em>Alt+Backspace<\/em>. Eller jeg kan bare lukke vinduet, det fungerer ogs\u00e5.<\/p>\n<p><\/p>\n<p>Deretter vil jeg dele noen tekniske detaljer. Du trenger ikke \u00e5 lese dem, bare pr\u00f8v \u00e5 sette opp og se. Men jeg vil likevel anbefale \u00e5 bli kjent med andres skript f\u00f8r du kj\u00f8rer dem p\u00e5 datamaskinen din :o).<\/p>\n<p><\/p>\n<h2 id=\"kak-razlichat-raznye-okna-odnogo-prilozheniya\">Hvordan skille forskjellige vinduer av samme applikasjon<\/h2>\n<p><\/p>\n<p>I prinsippet var det f\u00f8rste eksempelet \u00abwmctrl -a skype.Skype -x\u00bb fungerende og kan brukes. Men la oss se p\u00e5 eksempelet med Firefox igjen, der det er \u00e5pnet to vinduer:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">0x04400003  0 Navigator.Firefox                   N\/A Google Translate - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Beste publikasjoner siste 24 timer \/ Habr - Mozilla Firefox (Private Browsing)<\/code><\/pre>\n<p><\/p>\n<p>Det f\u00f8rste vinduet er i vanlig modus, og det andre er i Privat nettlesing. Disse vinduene vil jeg gjerne anse som forskjellige applikasjoner og bytte mellom dem med ulike tastaturkombinasjoner. <\/p>\n<p><\/p>\n<p>Jeg m\u00e5 komplisere skriptet som bytter vinduer. Jeg brukte f\u00f8lgende l\u00f8sning: skriv ut en liste over alle vinduer, gj\u00f8r <em>grep<\/em> ved hjelp av regex, ta f\u00f8rste linje med <em>head<\/em>, hent f\u00f8rste kolonne (dette vil v\u00e6re vinduets id) med <em>cut<\/em>, bytt til vinduet via id.<\/p>\n<p><\/p>\n<p>Her skal det v\u00e6re en vits om regul\u00e6re uttrykk og to problemer, men i virkeligheten bruker jeg ikke noe komplisert. Jeg trenger regex for \u00e5 kunne indikere slutten av en linje (symbolet \u00ab$\u00bb) og skille mellom \u00abMozilla Firefox$\u00bb og \u00abMozilla Firefox (Private Browsing)$\u00bb.<\/p>\n<p><\/p>\n<p>Teamet ser omtrent slik ut:<\/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>Her kan man allerede gjette den andre s\u00e6regenheten ved skriptet: hvis grep ikke returnerte noe, betyr det at det n\u00f8dvendige programmet ikke er \u00e5pnet, og det m\u00e5 startes med kommandoen fra det andre parameteret. Deretter m\u00e5 man periodisk sjekke om det aktuelle vinduet har \u00e5pnet seg for \u00e5 kunne gi det fokus. Jeg vil ikke g\u00e5 inn p\u00e5 dette, de som trenger det kan se p\u00e5 kildekoden.<\/p>\n<p><\/p>\n<h2 id=\"kogda-okna-prilozheniya-ne-razlichimy\">N\u00e5r vinduer fra applikasjonen ikke er forskjellige<\/h2>\n<p><\/p>\n<p>S\u00e5, vi har l\u00e6rt \u00e5 gi fokus til vinduet til den n\u00f8dvendige applikasjonen. Men hva hvis det er \u00e5pnet mer enn ett vindu av applikasjonen? Hvilket av dem skal vi gi fokus? Skriptet ovenfor gir mest sannsynlig fokus til det f\u00f8rste \u00e5pne vinduet. Men vi vil gjerne ha mer fleksibilitet. Vi \u00f8nsker \u00e5 kunne huske hvilket spesifikt vindu vi trenger og bytte akkurat til det vinduet.<\/p>\n<p><\/p>\n<p>Ideen var som f\u00f8lger: Hvis vi vil huske et spesifikt vindu for tastekombinasjonen, m\u00e5 vi trykke denne kombinasjonen n\u00e5r det n\u00f8dvendige vinduet har fokus. Senere, n\u00e5r vi trykker p\u00e5 denne kombinasjonen, vil fokuset g\u00e5 til nettopp dette vinduet. Inntil vinduet lukkes eller vi nullstiller denne kombinasjonen i skriptet. <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<p>Skriptets algoritme <strong>showwin<\/strong> er omtrent som f\u00f8lger:<\/p>\n<p><\/p>\n<ul>\n<li>Sjekk om vi tidligere har husket id-en til vinduet som skal f\u00e5 fokus.<br \/>\nHvis vi har husket det, og vinduet fortsatt eksisterer, gir vi det fokus og g\u00e5r ut. <\/li>\n<li>Se hvilket vindu som n\u00e5 har fokus, og hvis det passer med foresp\u00f8rselen v\u00e5r, s\u00e5 vil vi huske id-en for \u00e5 g\u00e5 til det senere og g\u00e5 ut.<\/li>\n<li>G\u00e5 til et passende vindu dersom det eksisterer, eller \u00e5pne det n\u00f8dvendige programmet.<\/li>\n<\/ul>\n<p><\/p>\n<p>For \u00e5 finne ut hvilket vindu som n\u00e5 har fokus, kan vi bruke konsollverkt\u00f8yet xdotool, og konvertere dets utdata til heksadesimal format:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ printf \"0xx\" `xdotool getwindowfocus`<\/code><\/pre>\n<p><\/p>\n<p>Det er enklest \u00e5 huske noe i bash ved \u00e5 opprette filer i et virtuelt filsystem i minnet. I Ubuntu er dette som standard aktivert i <em>\/dev\/shm\/<\/em>. Jeg kan ikke si noe om andre distribusjoner, h\u00e5per det ogs\u00e5 finnes noe lignende. Du kan sjekke med kommandoen:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ mount -l | grep tmpfs<\/code><\/pre>\n<p><\/p>\n<p>Skriptet vil opprette tomme kataloger i denne mappen, slik som dette: <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX\/$WINDOW_ID<\/em>. I tillegg vil det ved hvert kall opprette en symlink <em>\/dev\/shm\/$USER\/showwin\/showwin_last<\/em> En funksjon har blitt <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX<\/em>. Dette vil v\u00e6re n\u00f8dvendig for \u00e5 kunne slette id for vinduet for en bestemt kombinasjon ved hjelp av skriptet <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<h2 id=\"chto-mozhno-uluchshit\">Hva kan forbedres<\/h2>\n<p><\/p>\n<p>For det f\u00f8rste m\u00e5 skriptene konfigureres manuelt. Sannsynligvis, p\u00e5 grunn av n\u00f8dvendigheten av \u00e5 sette seg inn i dette og gj\u00f8re mye for h\u00e5nd, vil mange av dere ikke en gang pr\u00f8ve \u00e5 konfigurere systemet. Hvis det fantes en mulighet til bare \u00e5 installere en pakke og gj\u00f8re alt enklere, ville det kanskje f\u00e5tt en viss popularitet. Og s\u00e5 ville kanskje applikasjonen blitt inkludert i standarddistribusjonene.<\/p>\n<p><\/p>\n<p>Og det kan hende at det kan gj\u00f8res enklere. Hvis man kan finne ut id for prosessen som opprettet et vindu basert p\u00e5 vindus-id, og deretter bruke prosess-id til \u00e5 finne ut hvilken kommando som opprettet den, kunne man automatisert konfigurasjonen. Egentlig har jeg ikke gransket dette, s\u00e5 jeg vet ikke om det jeg skrev i dette avsnittet er mulig. Men for meg personlig fungerer det slik det er n\u00e5. Men hvis noen annet enn meg synes tiln\u00e6rmingen er praktisk og forbedrer den, vil jeg med glede bruke den beste l\u00f8sningen.<\/p>\n<p><\/p>\n<p>Et annet problem, som jeg allerede har skrevet, er at i noen tilfeller kan vinduer ikke skilles fra hverandre. S\u00e5 langt har jeg bare sett dette med inkognito i chrome\/chromium, men det kan v\u00e6re liknende andre steder. I verste fall finnes alltid universelle kombinasjoner <em>Alt+1<\/em>&#8230;<em>Alt+0<\/em>. Igjen, jeg bruker Firefox, og for meg er ikke dette problemet betydelig.<\/p>\n<p><\/p>\n<p>Men et betydelig problem for meg er at i jobben bruker jeg Mac OS, og der har jeg ikke f\u00e5tt til noe lignende. Verkt\u00f8yet <em>wmctrl<\/em> virker jeg fikk installert, men det fungerer ikke skikkelig p\u00e5 Mac OS. Man kan gj\u00f8re noe med applikasjonen <em>Automator<\/em>, men det er s\u00e5 tregt at det ikke er praktisk \u00e5 bruke selv n\u00e5r det fungerer. Jeg har heller ikke f\u00e5tt til \u00e5 konfigurere hurtigtaster som fungerer i alle programmer. Hvis noen finner en l\u00f8sning \u2014 ville jeg gjerne brukt det.<\/p>\n<p><\/p>\n<h2 id=\"vmesto-zaklyucheniya\">In conclusion<\/h2>\n<p><\/p>\n<p>Det ble overraskende mange ord for en s\u00e5 tilsynelatende enkel funksjonalitet. Jeg \u00f8nsket \u00e5 formidle ideen uten \u00e5 overbelaste teksten, men jeg har enn\u00e5 ikke funnet ut hvordan jeg kan fortelle det enklere. Kanskje i videoformat ville v\u00e6rt bedre, men det er ikke s\u00e5 popul\u00e6rt her.<\/p>\n<p><\/p>\n<p>Eg har litt fortalt om kva som ligg under panseret p\u00e5 skriptet og korleis du kan setje det opp. Eg har ikkje g\u00e5tt inn i detaljane om skriptet, men det er berre 50 linjer langt, s\u00e5 det er ikkje vanskeleg \u00e5 forst\u00e5. <\/p>\n<p><\/p>\n<p>Eg h\u00e5par at nokon fleire pr\u00f8ver ut denne ideen og kanskje til og med set pris p\u00e5 den. Eg kan seie at skriptet blei skrive for 3 \u00e5r sidan, og det er SUUUPER praktisk for meg. S\u00e5 praktisk at det gir meg stor ubehag n\u00e5r eg jobbar p\u00e5 andre sine datamaskiner. Og med arbeids-MacBooken min. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/masyamandev\/Showwin-script\">Lenka til skriptene<\/a><\/noindex><\/p>\n<p>Kilde: <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.5 - 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\/no\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Alternativ vindushandtering i Linux | ProHoster","description":"Eg er ein av dei som set Caps Lock til \u00e5 bytte mellom tastaturoppstilling, fordi eg er lat og ikkje orkar \u00e5 trykke p\u00e5 to knappar n\u00e5r eg kan trykke p\u00e5 ein.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/55206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=55206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/55206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=55206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=55206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=55206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}