Leihoen kudeaketa alternatiboa Linux-en

Maiuskulen blokeoa diseinuak aldatzeko ezarri duten horietakoa naiz, bat sakatu dudanean 2 tekla sakatzea alferra naizelako. Nahiz eta alferrikako 2 tekla nahiko nituzke: bat ingelesezko diseinua aktibatzeko erabiliko nuke, eta bigarrena errusierarako. Baina alferrikako bigarren gakoa laster-menua deitzea da, hain beharrezkoa ez dena, ordenagailu eramangarrien fabrikatzaile askok mozten baitute. Beraz, daukazunarekin konformatu behar duzu.

Eta, gainera, ez ditut haien ikonoak bilatu nahi ataza-barran leihoak aldatzean, ezta izenak atzeman nahi barrena mugitzean. Alt + Tab, mahaigainetan korritu, etab. Tekla-konbinazio bat sakatu nahi dut (egokiena bakarra, baina jada ez dago doako alferrikako teklarik) eta berehala iritsi behar dudan leihora. Adibidez, honela:

  • Alt+F: Firefox
  • Alt+D: Firefox (arakatze pribatua)
  • Alt+T: Terminala
  • Alt+M: Kalkulagailua
  • Alt+E: IntelliJ Idea
  • etab.

Gainera, sakatuz, adibidez, on Alt+M Kalkulagailua ikusi nahi dut programa hau martxan dagoen ala ez kontuan hartu gabe. Exekutatzen ari bada, bere leihoari fokua eman behar zaio, eta ez bada, exekutatu nahi duzun programa eta transferitu fokua kargatzen denean.

Aurreko gidoiak jasotzen ez dituen kasuetarako, irekitako edozein leihori erraz esleitzeko tekla-konbinazio unibertsalak izan nahi ditut. Adibidez, 10 konbinazio ditut esleituta Alt + 1 to Alt + 0, inongo programari lotuta ez daudenak. Klik egin dezaket Alt + 1 eta fokuan dagoen leihoak fokua lortuko du klikatzean Alt + 1.

Ebakiaren azpian beste ezaugarri batzuen deskribapena eta hau nola egin daitekeen erantzuna dago. Baina berehala ohartaraziko dizut pertsonalizazio horrek "zuretzat" mendekotasun larria sor dezakeela eta baita erretiratzea ere Windows, Mac OS edo Linux-ekin beste norbaiten ordenagailua erabili behar baduzu.

Izan ere, ondo pentsatuz gero, ez dugu hainbeste programa erabiltzen egunero. Arakatzaile bat, terminal bat, IDE bat, mezulari moduko bat, fitxategi kudeatzaile bat, kalkulagailu bat eta, agian, hori da ia dena. Ez dira gako-konbinazio asko behar eguneroko zereginen %95 estaltzeko.

Hainbat leiho irekita dituzten programetarako, horietako bat nagusi gisa izendatu daiteke. Adibidez, hainbat IntelliJ Idea leiho irekita eta esleituta dituzu Alt + E. Baldintza normaletan, sakatzen duzunean Alt + E Programa honen leihoren bat irekiko da, ziurrenik lehen ireki zena. Hala ere, klik egiten baduzu Alt + E programa honen leihoetako bat dagoeneko fokatuta dagoenean, leiho jakin hau nagusi gisa esleituko da eta hurrengo konbinazioak sakatzen direnean fokua emango zaiona izango da.

Leiho nagusia berriro esleitu daiteke. Horretarako, lehenik konbinazioa berrezarri behar duzu, eta gero beste leiho bat esleitu leiho nagusi gisa. Konbinazio bat berrezartzeko, konbinazioa bera sakatu behar duzu, eta gero berrezarri konbinazio berezi bat, esleitua daukat. Alt + Atzera tekla. Honek aurreko konbinaziorako leiho nagusia esleituko duen script bat deituko du. Eta gero leiho nagusi berri bat esleitu dezakezu aurreko paragrafoan azaldu bezala. Lotutako leiho bat konbinazio unibertsaletara berrezartzea modu berean gertatzen da.

Sarrera luzea egin zitzaidan, baina lehenik zer egingo dugun kontatu nahi nuen, eta gero nola egin azaldu.

Irakurtzeaz nekatuta daudenentzat

Laburbilduz, gidoietarako esteka artikuluaren amaieran dago.

Baina oraindik ezin izango duzu instalatu eta erabili berehala. Lehenik eta behin, scriptak nahi duzun leihoa nola aurkitzen duen irudikatu beharko duzu. Hori gabe, ezin izango zaio gidoiari fokua zehazki non transferitu behar den esan. Eta bat-batean leiho egokirik aurkitzen ez bada zer egin ulertu behar duzu.

Eta ez naiz zentratuko tekla konbinazioak sakatuz scripten exekuzioa nola konfiguratu. Adibidez, KDEn Sistema Ezarpenak β†’ Lasterbideak β†’ Lasterbide pertsonalizatuak atalean dago. Beste leiho-kudeatzaile batzuetan ere hala izan beharko litzateke.

wmctrl aurkezten

Wmctrl β€” X Window Manager-ekin elkarreragiteko kontsola-erabilgarritasuna. Hau da gidoiaren funtsezko programa. Ikus dezagun nola erabil dezakezun.

Lehenik eta behin, bistaratu dezagun irekitako leihoen zerrenda:

$ wmctrl -lx
0x01e0000e -1 plasmashell.plasmashell             N/A Desktop β€” Plasma
0x01e0001e -1 plasmashell.plasmashell             N/A Plasma
0x03a00001  0 skype.Skype                         N/A Skype
0x04400003  0 Navigator.Firefox                   N/A Google ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ - Mozilla Firefox
0x04400218  0 Navigator.Firefox                   N/A Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° сутки / Π₯Π°Π±Ρ€ - Mozilla Firefox (Private Browsing)
...

Aukera -l irekita dauden leiho guztien zerrenda bistaratzen du, eta -NS klasearen izena eransten dio irteerari (skype.Skype, Nabigatzailea.Firefox etab). Hemen leihoaren IDa (1. zutabea), klasearen izena (3. zutabea) eta leihoaren izena (azken zutabea) behar ditugu.

Aukera erabiliz leihoren bat aktibatzen saia zaitezke -a:

$ wmctrl -a skype.Skype -x

Dena aurreikusitakoaren arabera joan bada, Skype leihoa agertu beharko litzateke pantailan. Aukeraren ordez -x erabili aukera -i, orduan klasearen izenaren ordez leihoaren IDa zehaztu dezakezu. Id-aren arazoa da leiho-id-a aldatzen dela aplikazioa abiarazten den bakoitzean eta ezin dugula aldez aurretik jakin. Bestalde, atributu honek leiho bat modu berezian identifikatzen du, eta hori garrantzitsua izan daiteke aplikazio batek leiho bat baino gehiago irekitzen duenean. Honi buruz gehiago pixka bat aurrerago.

Etapa honetan gogoratu behar dugu nahi duzun leihoa bilatuko dugula irteeraren arabera erreexek erabiliz wmctrl -lx. Baina horrek ez du esan nahi zerbait konplikatua erabili behar dugunik. Normalean klase-izena edo leiho-izena nahikoa da.

Funtsean, ideia nagusiak argi izan behar du jada. Zure leiho-kudeatzailearen laster-tekla/lasterbideen ezarpen globaletan, konfiguratu behar den konbinazioa scripta exekutatzeko.

Scriptak nola erabili

Lehenik eta behin kontsolaren utilitateak instalatu behar dituzu wmctrl ΠΈ xdotool:

$ sudo apt-get install wmctrl xdotool

Ondoren, gidoiak deskargatu eta gehitu behar dituzu $ PATH. Normalean sartzen ditut ~/bin:

$ cd ~/bin
$ git clone https://github.com/masyamandev/Showwin-script.git
$ ln -s ./Showwin-script/showwin showwin
$ ln -s ./Showwin-script/showwinDetach showwinDetach

Direktorioa bada ~/bin ez zegoen, orduan sortu eta berrabiarazi (edo berriro saioa hasi behar duzu), bestela ~/bin ez du joko $ PATH. Dena behar bezala egiten bada, orduan script-ak kontsolatik eskuragarri egon beharko lukete eta Tab osatzea funtzionatu beharko luke.

Gidoi nagusia showwin 2 parametro hartzen ditu: lehenengoa regex bat da, zeinaren bidez behar den leihoa bilatuko dugu, eta bigarren parametroa eskatutako leihoa aurkitzen ez bada exekutatu beharreko komando bat da.

Saia zaitezke script bat exekutatzen, adibidez:

$ showwin "Mozilla Firefox$" firefox

Firefox instalatuta badago, bere leihoari fokua eman beharko zaio. Firefox exekutatzen ez bazen ere, hasi behar zuen.

Funtzionatzen badu, konbinazioetan komandoen exekuzioa konfiguratzen saia zaitezke. Laster-tekla/lasterbideen ezarpen globaletan, gehitu:

  • Alt+F: erakutsi β€œMozilla Firefox$” firefox
  • Alt+D: erakutsi "Mozilla Firefox (arakatze pribatua)$" "firefox -pribatua-leihoa"
  • Alt+C: erakutsi "chromium-browser.Chromium-browser N*" kromo-arakatzailea
  • Alt+X: erakutsi "chromium-browser.Chromium-browser I*" "chromium-browser -incognito"
  • Alt+S: erakutsi "skype.Skype" skypeforlinux
  • Alt+E: erakutsi β€œjetbrains-idea” ideia.sh

Eta abar. Bakoitzak konfiguratu ditzake tekla-konbinazioak eta softwarea egoki ikusten duen moduan.
Dena ondo funtzionatu bada, goiko konbinazioak erabiliz leiho batetik bestera aldatzeko gai izango gara teklak sakatuta.

Chrome-zaleak etsiko ditut: incognito leiho arrunt bat bereiz dezake bere irteeraren arabera wmctrl Ezin duzu, klase-izen eta leiho-izenburu berdinak dituzte. Proposatutako adierazpen erregularrean, N* eta I* karaktereak soilik behar dira, adierazpen erregular hauek elkarren artean desberdinak izan daitezen eta leiho nagusi gisa esleitu ahal izateko.

Aurreko konbinazioaren leiho nagusia berrezartzeko (hain zuzen ere, regex-erako, hau da showwin azken aldian deitua) gidoiari deitu behar diozu showwinDetach. Tekla-konbinazio bati esleituta daukat script hau Alt + Atzera tekla.

Gidoian showwin funtzio bat gehiago dago. Parametro batekin deitzen zaionean (kasu honetan parametroa identifikatzaile bat besterik ez da), ez du inola ere egiaztatzen regex, baina leiho guztiak egokitzat jotzen ditu. Berez, horrek alferrikakoa dirudi, baina modu honetan edozein leiho nagusi gisa izendatu eta leiho zehatz horretara azkar alda dezakegu.

Konbinazio hauek konfiguratuta dauzkat:

  • Alt+1: erakutsi "CustomKey1"
  • Alt+2: erakutsi "CustomKey2"
  • ...
  • Alt+0: erakutsi "CustomKey0"
  • Alt+Atzera atzera: showwinDetach

Horrela edozein leiho konbinazioetara lotu ditzaket Alt + 1...Alt + 0. Klik eginez besterik ez Alt + 1 Uneko leihoa konbinazio honi lotzen diot. Lotura bertan behera utzi dezaket klik eginez Alt + 1eta gero Alt + Atzera tekla. Edo leihoa itxi, horrek ere funtzionatzen du.

Jarraian xehetasun tekniko batzuk kontatuko dizkizut. Ez dituzu irakurri behar, baizik eta saiatu konfiguratzen eta ikusten. Baina hala ere gomendatuko nuke besteen scriptak ulertzea zure ordenagailuan exekutatu aurretik :).

Nola bereizi aplikazio bereko leiho desberdinak

Printzipioz, lehen adibidea "wmctrl -a skype.Skype -x" funtzionatzen ari zen eta erabil daiteke. Baina ikus dezagun berriro Firefox-en adibidea, zeinetan 2 leiho irekita dauden:

0x04400003  0 Navigator.Firefox                   N/A Google ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ - Mozilla Firefox
0x04400218  0 Navigator.Firefox                   N/A Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° сутки / Π₯Π°Π±Ρ€ - Mozilla Firefox (Private Browsing)

Lehenengo leihoa modu normala da, eta bigarrena arakatze pribatua. Leiho hauek aplikazio ezberdintzat hartu eta haietara aldatu tekla-konbinazio desberdinak erabiliz.

Beharrezkoa da leihoak aldatzen dituen scripta zaildu. Irtenbide hau erabili dut: bistaratu leiho guztien zerrenda, egin grep regex bidez, hartu lehen lerroa honekin burua, lortu lehen zutabea (hau leihoaren IDa izango da) erabiliz moztu, aldatu leihora idaren arabera.

Adierazpen erregularrei buruz txantxa bat egon beharko litzateke eta bi arazo, baina egia esan ez dut ezer konplikaturik erabiltzen. Adierazpen erregularrak behar ditut, lerroaren amaiera adierazi ahal izateko (β€œ$” ikurra) eta β€œMozilla Firefox$” eta β€œMozilla Firefox (Nabigazio Pribatua)$” bereizteko.

Komandoak honelako itxura du:

$ wmctrl -i -a `wmctrl -lx | grep -i "Mozilla Firefox$" | head -1 | cut -d" " -f1`

Hemen dagoeneko asma dezakezu script-aren bigarren ezaugarriari buruz: grep-ek ezer itzultzen ez badu, nahi duzun aplikazioa ez dago irekita eta bigarren parametroko komandoa exekutatuz hasi behar duzu. Eta gero egiaztatu aldian-aldian behar den leihoa ireki den ala ez, fokua transferitzeko. Ez naiz horretan zentratuko; behar duenak iturriak begiratuko ditu.

Aplikazio-leihoak bereizten ez direnean

Beraz, fokua nahi duzun aplikazioaren leihora nola transferitzen ikasi dugu. Baina zer gertatzen da aplikazio batek leiho bat baino gehiago irekita baditu? Zeini eman behar nioke arreta? Goiko script-a ziurrenik irekitako lehen leihora transferituko da. Hala ere, malgutasun handiagoa nahiko genuke. Nahi nuke gogoratu zein leiho behar dugun eta leiho zehatz horretara aldatu.

Ideia hau zen: tekla-konbinazio baterako leiho zehatz bat gogoratu nahi badugu, konbinazio hau sakatu behar dugu nahi den leihoa fokuan dagoenean. Etorkizunean, konbinazio hau sakatzen duzunean, fokua leiho honi emango zaio. Leihoa itxi arte edo script-konbinazio honen berrezarri bat egiten dugun arte showwinDetach.

Script algoritmoa showwin honelako zerbait:

  • Egiaztatu aldez aurretik fokua transferitu behar den leihoaren id-a gogoratu dugun.
    Gogoratzen baduzu eta halako leiho bat badago oraindik, orduan fokua transferituko dugu eta irtengo gara.
  • Momentu honetan fokua zein leiho dagoen aztertzen dugu, eta gure eskaerarekin bat badator, gogoratu bere id-a etorkizunean bertara joateko eta irteteko.
  • Hala badagokio, gutxienez leiho egoki batera joaten gara edo nahi duzun aplikazioa irekitzen dugu.

Une honetan fokuan dagoen leihoa aurki dezakezu xdotool kontsolaren erabilgarritasuna erabiliz bere irteera hamaseitar formatuan bihurtuz:

$ printf "0x%08x" `xdotool getwindowfocus`

Bash-en zerbait gogoratzeko modurik errazena memorian kokatutako fitxategi sistema birtualean fitxategiak sortzea da. Ubuntun hau lehenespenez gaituta dago /dev/shm/. Beste banaketari buruz ezin dut ezer esan, espero dut antzeko zerbait egotea ere. Komandoarekin begiratu dezakezu:

$ mount -l | grep tmpfs

Script-ak direktorio hutsak sortuko ditu karpeta honetan, honela: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. Gainera, deitzen zaion bakoitzean esteka sinbolikoa sortuko du /dev/shm/$USER/showwin/showwin_last on /dev/shm/$USER/showwin/$SEARCH_REGEX. Hau beharrezkoa izango da, behar izanez gero, konbinazio jakin baterako leiho-id-a kentzeko script bat erabiliz showwinDetach.

Zer hobetu daiteke

Lehenik eta behin, scriptak eskuz konfiguratu behar dira. Segur aski, eskuekin asko sakondu eta egin beharra dela eta, zuetako asko ez zarete sistema konfiguratzen saiatuko ere. Paketea instalatu eta dena errazago konfiguratzea posible balitz, agian ospea lortuko luke. Eta gero begiratu, aplikazioa banaketa estandarretan kaleratuko litzateke.

Eta agian errazago egin daiteke. Leiho baten id-aren bidez hura sortu duen prozesuaren id-a aurki dezakezu, eta prozesuaren id-aren arabera, zein komando sortu duen jakin dezakezu, orduan posible izango litzateke konfigurazioa automatizatzea. Izan ere, ez nuen ulertzen paragrafo honetan idatzi nuena posible zen ala ez. Kontua da pertsonalki pozik nagoela orain funtzionatzeko moduarekin. Baina ni ez den beste norbaitek planteamendu osoa komenigarria iruditzen bazaio eta norbaitek hobetzen badu, orduan pozik egongo naiz irtenbide hobeago bat erabiltzea.

Beste arazo bat, jada idatzi dudan bezala, kasu batzuetan leihoak ezin direla elkarrengandik bereizten da. Orain arte inkognitoarekin soilik ikusi dut kromo/kromoan, baina agian antzeko zerbait dago beste nonbait. Azken aukera gisa, beti dago konbinazio unibertsalen aukera Alt + 1...Alt + 0. Berriz ere, Firefox erabiltzen dut eta niretzat pertsonalki arazo hau ez da esanguratsua.

Baina niretzat arazo esanguratsua da Mac OS erabiltzen dudala lanerako eta ezin nuela horrelakorik konfiguratu bertan. erabilgarritasuna wmctrl Instalatu ahal izan dudala uste dut, baina Mac OS-en ez du funtzionatzen. Aplikazioarekin zerbait egin daiteke Automator, baina hain motela da, funtzionatzen ari denean ere erabiltzeko ez baita komenigarria. Ezin izan nituen tekla-konbinazioak konfiguratu programa guztietan funtzionatzeko. Bat-batean norbaitek irtenbideren bat ateratzen badu, pozik erabiliko dut.

Horren ordez Ondorio baten

Itxuraz sinplea den funtzionaltasun hori ustekabeko hitz kopuru handia izan zen. Ideia helarazi nahi nuen eta testua gainkargatu gabe, baina oraindik ez dut asmatu modu sinpleagoan kontatu. Agian hobe litzateke bideo formatuan, baina jendeari ez zaio horrela gustatzen hemen.

Pixka bat hitz egin nuen gidoiaren azpian dagoenari eta nola konfiguratu. Ez naiz gidoiaren beraren xehetasunetan sartu, baina 50 lerro baino ez ditu, beraz, ez da zaila ulertzea.

Espero dut beste norbaitek ideia hau probatuko duela eta agian eskertuko duela. Niri buruz esan dezaket gidoia duela 3 bat urte idatzi zela eta OSO erosoa dela niretzat. Hain erosoa ezen ondoeza larria eragiten du besteen ordenagailuekin lan egitean. Eta funtzionatzen duen MacBook batekin.

Gidoietarako esteka

Iturria: www.habr.com

Gehitu iruzkin berria