Unë jam ai që aktivizon kalimin e gjuhëve me Caps Lock sepse më lenë të shtyp dy butona, kur mund të përdor një. Do të doja madje dy butona të panevojshëm: një për anglishten dhe tjetrin për rusishten. Por butoni i dytë i panevojshëm është për hapjen e menusë kontekstuale, e cila është aq e panevojshme sa shumë prodhues laptopësh e kanë hequr. Prandaj duhet të kënaqem me atë që kam.
Dhe nuk dua të kërkoj ikonat e dritareve në panele për t'i kthyer, as t'i kap emrat e tyre gjatë kalimit përmes Alt+Tab, kalimi ndërmjet punës dhe kështu me radhë. Dua të shtyp një kombinim butonash (idealisht vetëm një, por nuk ka më butona të panevojshëm të lirë) dhe menjëherë të shkoj në dritaren që më nevojitet. Një shembull i tillë:
- Alt+F: Firefox
- Alt+D: Firefox (Shfletim Privat)
- Alt+T: Terminal
- Alt+M: Kalkulator
- Alt+E: IntelliJ Idea
- dhe kështu me radhë.
Pra, kur shtyp, pĂ«r shembull, Alt+M , dua tĂ« shoh kalkulatorin pavarĂ«sisht nĂ«se ky program Ă«shtĂ« aktiv apo jo. NĂ«se Ă«shtĂ« aktiv, atĂ«herĂ« fokusin duhet t'i kaloj dritares sĂ« tij, dhe nĂ«se jo â duhet ta nis programin pĂ«rkatĂ«s dhe t'i kaloj fokusin kur tĂ« ngarkohet.
Për raste që nuk mbulohen nga skenari paraprak, dëshiroj të kem kombinime të përgjithshme të çelësave, të cilat mund të caktoj lehtësisht për ndonjë nga dritaret e hapura. Për shembull, kam caktuar 10 kombinime nga Alt+1 deri te Alt+0, të cilat nuk janë të lidhura me ndonjë program. Mund të thjesht shtyp Alt+1 dhe dritarja që është aktualisht në fokus do të marrë fokusin pasi të shtypet Alt+1.
Poshtë është përshkrimi i disa karakteristikave të tjera dhe përgjigjja për mënyrën se si mund ta bëni këtë. Por menjëherë paralajmëroj se një personalizim i tillë "nën vete" mund të krijojë varësi të madhe dhe madje të shkaktojë sindrom të hiqjes në rast se duhet të përdorni Windows, Mac OS, ose madje një kompjuter të huaj me Linux.
Në të vërtetë, nëse mendojmë, nuk përdorim kaq shumë programe çdo ditë. Shfletuesi, terminali, IDE, ndonjë mesazher, menaxheri i skedarëve, kalkulatori dhe, ndoshta, kjo është pothuajse gjithçka. Nuk nevojiten kaq shumë kombinime çelësash për të mbuluar 95% të detyrave të përditshme.
Për programet, ku janë hapur disa dritare, njëra nga to mund të caktohet si kryesore. Për shembull, janë hapur disa dritare IntelliJ Idea, të caktuara në Alt+E. Në kushte normale, kur të shtypet në Alt+E do t'u hapë një dritare e këtij programi, ndoshta ajo që u hap për herë të parë. Megjithatë, nëse klikoni mbi Alt+E kur një nga dritaret e këtij programi është tashmë në fokus, kjo dritare do të caktohet si kryesorja dhe pikërisht asaj do t'i kalojë fokusi gjatë klikimeve të mëtejshme të kombinimeve.
Dritarja kryesore mund të ri-emërohet. Për këtë, kombinimi duhet së pari të resetojë, dhe pastaj të caktohet një dritare tjetër si kryesore. Për ta resetuar kombinimin, duhet të klikoni mbi vetë kombinimin dhe pastaj mbi një kombinim të veçantë për resetim, i cili për mua është caktuar në Alt+Backspace. Kjo do të thërrasë një skript që do të anulojë caktimin e dritares kryesore për kombinimin e mëparshëm. Pastaj mund të caktoni një dritare të re kryesore siç është përshkruar në paragrafin e mëparshëm. Risetimi i dritares së lidhur me kombinimet universale ndodh në mënyrë të ngjashme.
Hyjja doli e gjatë, por dëshiroja fillimisht të tregoj se çfarë do të bëjmë, dhe pastaj të shpjegoj si ta bëjmë këtë.
Për ata që janë lodhur duke lexuar
Nëse e përmbledhim, lidhja për skriptet është në fund të artikullit.
Por megjithatë, nuk do të jetë e mundur ta vendosësh dhe ta përdorësh menjëherë. Fillimisht duhen kuptuar se si skenari gjen dritaren e duhur. Pa këtë nuk do të jetë e mundur të tregosh skenarit se ku duhet të fokusohet. Gjithashtu, duhet të kuptohet se çfarë duhet bërë nëse për ndonjë arsye nuk gjendet një dritare e përshtatshme.
Po ashtu, nuk do tĂ« pĂ«rqendrohem nĂ« mĂ«nyrĂ«n e konfigurimit tĂ« ekzekutimit tĂ« skriptave me kombinime çelĂ«sish. PĂ«r shembull, nĂ« KDE kjo Ă«shtĂ« nĂ« System Settings â Shortcuts â Custom Shortcuts. Kjo duhet tĂ« ekzistojĂ« edhe nĂ« menaxherĂ«t e tjerĂ« tĂ« dritareve.
Njoftimi me wmctrl
Wmctrl â Ă«shtĂ« njĂ« mjet konsolĂ« pĂ«r komunikimin me X Window Manager. Kjo Ă«shtĂ« njĂ« program thelbĂ«sor pĂ«r skriptin. Le tĂ« shohim shkurtimisht se si mund ta pĂ«rdorim atĂ«.
Së pari, le të dalim me një listë të dritareve të hapura:
$ 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 Translate - Mozilla Firefox
0x04400218 0 Navigator.Firefox N\/A Më të mirat e publikuara për 24 orë / Habr - Mozilla Firefox (Private Browsing)
...Opcioni -l tregon një listë të të gjitha dritareve të hapura, dhe -h shton në daljen emrin e klasës (skype.Skype, Navigator.Firefox dhe të tjera). Këtu do të na nevojitet id e dritares (kolona 1), emri i klasës (kolona 3) dhe emri i dritares (kolona e fundit).
Mund të provosh të aktivizosh ndonjë dritare përmes opsionit -a:
$ wmctrl -a skype.Skype -xNëse gjithçka shkoi sipas planit, duhet të shfaqet dritarja Skype në ekran. Nëse në vend të opsionit -x përdor opsionin -i, atëherë në vend të emrit të klasës, mund të japësh id e dritares. Problemi me id është se id e dritares ndryshon me çdo herë që nis aplikacionin dhe nuk mund ta dimë paraprakisht. Nga ana tjetër, ky atribut qartë tregon për dritaren, që mund të jetë e rëndësishme kur aplikacioni hap më shumë se një dritare. Për këtë, pak më vonë.
Në këtë fazë, na nevojitet të mbajmë mend se do të kërkojmë dritaren e duhur përmes regex në daljen wmctrl -lx. Por kjo nuk do të thotë se duhet të përdorim diçka të komplikuar. Zakonisht, emri i klasës ose emri i dritares mjafton.
Në parim, ideja kryesore duhet të jetë e qartë. Në cilësimet e shkurtesave të globalizuara për menaxherin e dritareve tuaj, vendosni kombinimin e duhur për të ekzekutuar skriptin.
Si të përdorni skriptet
Së pari, duhet të instaloni utilitarët e konsolës wmctrl dhe xdotool:
$ sudo apt-get install wmctrl xdotoolMë pas duhet të shkarkoni skriptet dhe t'i shtoni ato në $PATH. Unë zakonisht i vendos ata në ~/bin:
$ cd ~/bin
$ git clone https://github.com/masyamandev/Showwin-script.git
$ ln -s ./Showwin-script/showwin showwin
$ ln -s ./Showwin-script/showwinDetach showwinDetachNëse direktoriumi ~/bin nuk kishte, atëherë duhet ta krijoni dhe të rindizni (ose të rinovoni sesionin), përndryshe ~/bin nuk do të shfaqet në $PATH. Nëse gjithçka është bërë siç duhet, skriptet duhet të jenë të aksesueshme nga consola dhe autocompletion duhet të funksionojë me Tab.
Skripti kryesor showwin pranon 2 parametra: i pari është regex-i, sipas të cilit do të kërkojmë dritaren e nevojshme, dhe parametri i dytë është komandën që duhet të ekzekutohet, nëse dritarja e nevojshme nuk u gjet.
Mund të provoni të ekzekutoni skriptin, për shembull:
$ showwin "Mozilla Firefox$" firefoxNëse Firefox është instaluar, atij dritarës duhet t'i jepet fokusi. Edhe nëse Firefox nuk ka qenë i hapur, ai duhet të hapet.
Nëse arritët, mund të provoni të konfiguroni ekzekutimin e komandave me kombinime. Në cilësimet e hotkeys/'shortcuts' globale shtoni:
- Alt+F: showwin «Mozilla Firefox$» firefox
- Alt+D: showwin «Mozilla Firefox (Private Browsing)$» «firefox -private-window»
- Alt+C: showwin «chromium-browser.Chromium-browser N*» chromium-browser
- Alt+X: showwin «chromium-browser.Chromium-browser I*» «chromium-browser -incognito»
- Alt+S: showwin «skype.Skype» skypeforlinux
- Alt+E: showwin «jetbrains-idea» idea.sh
Dhe tjerĂ«. ĂelĂ«sat e shkurtra dhe programet mund tĂ« konfigurohen nga secili sipas dĂ«shirĂ«s sĂ« tij.
Nëse gjithçka është bërë siç duhet, me kombinimet e lartpërmendura do të mund të kalojmë midis dritareve me një shtypje të thjeshtë të çelësave.
Do t'i zhgënjej adhuruesit e Chrome-it: një dritare e zakonshme nuk mund të dallojë incognito nga rezultati. wmctrl nuk është e mundur, pasi kanë të njëjtat emra klasash dhe tituj dritare. Simbolet N* dhe I* në regex të propozuar janë të nevojshme vetëm që këto regjex të dallohet nga njëri-tjetri dhe të mund t'u caktohen dritare të ndryshme si kryesore.
Për të rikthyer dritaren kryesore të kombinimit të mëparshëm (faktikisht për regex-in që u thirr për herë të fundit), është e nevojshme të thërritet skripti showwin showwinDetach . Unë këtë skript e kam caktuar në kombinimin e çelësaveKy skript Alt+Backspace.
ka një funksion tjetër. Kur thirret me një parametër (në këtë rast parametri është thjesht identifikuesi), atëherë ai nuk kontrollon fare regex-in, por i konsideron të gjitha dritaret si të përshtatshme. Vetëm kjo duket e padobishme, megjithatë në këtë mënyrë ne mund të caktojmë çdo dritare si kryesore dhe të kalojmë shpejt në këtë dritare. showwin ka një tjetër funksion. Kur thirret me një parametër (në këtë rast parametri është thjesht një identifikues), ai nuk kontrollon fare regex-in dhe e konsideron të gjitha dritaret si të përshtatshme. Kjo duket e panevojshme, megjithatë në këtë mënyrë ne mund të caktojmë çdo dritare si kryesore dhe të kalojmë shpejt pikërisht në këtë dritare.
Unë kam caktuar këto kombinime:
- Alt+1: showwin «CustomKey1»
- Alt+2: showwin «CustomKey2»
- âŠ
- Alt+0: showwin «CustomKey0»
- Alt+Backspace: shfaqwinDetach
KĂ«shtu mund tĂ« lidh çdo dritare me kombinime Alt+1âŠAlt+0. Thjesht duke shtypur Alt+1 e lidh dritaren aktuale me kĂ«tĂ« kombinim. Mund ta anuloj lidhjen duke shtypur Alt+1, dhe pastaj Alt+Backspace. Ose mund ta mbyll dritaren, ashtu edhe funksionon.
Më tutje, do të flas pak për detajet teknike. Mund t'i injorosh ato dhe thjesht të provosh të konfigurash dhe të shohësh. Por unë ende do të rekomandoja të kuptosh skenarë të tjerë para se t'i ekzekutosh në kompjuterin tënd :).
Si të dallosh dritaret e ndryshme të një aplikacioni
Në thelb, shembulli më i parë "wmctrl -a skype.Skype -x" funksiononte dhe mund të përdoret. Por le të hedhim një shikim në shembullin me Firefox, ku janë hapur 2 dritare:
0x04400003 0 Navigator.Firefox N/A Google Translate - Mozilla Firefox
0x04400218 0 Navigator.Firefox N/A Postimet mĂ« tĂ« mira tĂ« ditĂ«s / Habr - Mozilla Firefox (Private Browsing)Dritarja e parĂ« â modaliteti i zakonshĂ«m, ndĂ«rsa e dyta â Shikim Privat. KĂ«to dritare do tĂ« dĂ«shironim t'i konsideronim si aplikacione tĂ« ndryshme dhe tĂ« kalonim nĂ« to me kombinime tĂ« ndryshme çelĂ«sish.
Duhet ta komplikohet skripti, që kalon dritaret. Kam përdorur një zgjidhje të tillë: të outputoj listën e të gjitha dritareve, të bëj grep me regex, të marr rreshtin e parë me ndihmën e head, nxjerrni kolonën e parë (kjo do të jetë id e dritares) me ndihmën e prerë, kaloni në dritaren me id.
Këtu duhet të ketë një shaka mbi shprehjet e rregullta dhe dy probleme, por në të vërtetë nuk po përdor asgjë të komplikuar. Shprehjet e rregullta janë të nevojshme për të treguar fundin e vargut (simbolin «$») dhe për të dalluar «Mozilla Firefox$» nga «Mozilla Firefox (Private Browsing)$».
Komanda duket përafërsisht kështu:
$ wmctrl -i -a `wmctrl -lx | grep -i "Mozilla Firefox$" | head -1 | cut -d" " -f1`Këtu mund të dyshohet tashmë mbi veçorinë e dytë të skriptit: nëse grep nuk ka dhënë asgjë, atëherë aplikacioni i nevojshëm nuk është hapur dhe duhet ta nisni duke ekzekutuar komandën nga parametri i dytë. Pastaj, kontrolloni periodikisht nëse dritarja e nevojshme është hapur, për t'i dhënë asaj fokusin. Nuk po e theksoj këtë, kush e ka nevojën, mund të shikojë burimet.
Kur dritaret e aplikacionit nuk janë të dallueshme
Pra ndaj, ne kemi mësuar të transferojmë fokusin në dritaren e aplikacionit të duhur. Por çfarë nëse janë hapur më shumë se një dritare nga aplikacioni? Cila dritare duhet të merr fokusin? Skripti i mësipërm do ta kalojë, megjithatë, ndoshta, në dritaren e parë të hapur. Sidoqoftë, do të dëshironim më shumë fleksibilitet. Do të ishte mirë të kishim mundësinë të mbajmë mend se cila dritare na nevojitet dhe të kalojmë pikërisht në atë dritare.
Ideja ishte si kjo: Nëse duam të mbajmë mend për kombinimin e çelësave një dritare të caktuar, atëherë duhet të shtypim këtë kombinim kur dritarja e nevojshme është duke u fokusuar. Në të ardhmen, kur të shtypim këtë kombinim, fokusi do të kalojë pikërisht në këtë dritare. Deri sa dritarja të mbyllet ose të bëjmë një rivendosje për këtë kombinim skripti. . Unë këtë skript e kam caktuar në kombinimin e çelësave.
Algoritmi i skriptit showwin është përafërsisht si ky:
- Kontrollo nëse ne kemi mbajtur mend më parë id-në e dritares, së cilës i duhen kaluar fokusin.
Nëse kemi mbajtur mend dhe një dritare e tillë akoma ekziston, atëherë i kalojmë fokusin dhe dalim. - Shikojmë cila dritare është aktualisht në fokus, dhe nëse ajo i përputhet kërkesës sonë, atëherë do ta mbajmë mend id-në e saj për t'u kaluar në të në të ardhmen dhe dalim.
- Kalojmë në ndonjë dritare të përshtatshme nëse ekziston, ose hapim aplikacionin e nevojshëm.
Mund të kuptoni se cili dritare është aktualisht në fokus duke përdorur utilitarin e konsolës xdotool, duke e shndërruar të dhënat e tij në formatin hexadecimal:
$ printf "0x%08x" `xdotool getwindowfocus`Një mënyrë e lehtë për të mbajtur mend diçka në bash është të krijoni skedarë në një sistem të skedarëve virtual, i cili është në kujtesë. Në Ubuntu, një i tillë aktivizohet automatikisht në /dev/shm/. Për shpërndarje të tjera nuk mund të them asgjë, shpresoj që diçka e tillë të ekzistojë gjithashtu. Mund ta kontrolloni me komandën:
$ mount -l | grep tmpfsSkripti do të krijojë drejtoritë e zbrazëta në këtë dosje, të tilla si: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. Shtesë, në çdo thirrje ai do të krijojë një symlink /dev/shm/$USER/showwin/showwin_last në /dev/shm/$USER/showwin/$SEARCH_REGEX. Kjo do të nevojitet për të pasur mundësinë të hiqni id e dritares për një kombinim të caktuar me anë të skriptit . Unë këtë skript e kam caktuar në kombinimin e çelësave.
ĂfarĂ« mund tĂ« pĂ«rmirĂ«sohet
Së pari, skriptet duhet të konfigurohen manualisht. Me siguri, për shkak të nevojës për të kuptuar dhe bërë shumë gjëra manualisht, shumë prej jush ndoshta nuk do të përpiqen ta konfiguroni sistemin. Nëse do të kishte mundësi të thjeshtë për të instaluar një paketë dhe për të konfiguruar gjithçka më lehtë, ndoshta kjo do të fitonte disa popullaritet. Pastaj, ndoshta do të përfshihej edhe në shpërndarjet standarde.
Dhe mund tĂ« jetĂ« mĂ« e thjeshtĂ«. NĂ«se me id-nĂ« e dritares mund tĂ« dihet id e procesit qĂ« e krijoi atĂ«, dhe me id-nĂ« e procesit tĂ« dihet se cila komandĂ« e krijoi, atĂ«herĂ« do tĂ« ishte e mundur tĂ« automatizohej konfigurimi. NĂ« tĂ« vĂ«rtetĂ«, nuk kam ndjekur nĂ«se Ă«shtĂ« e mundur ajo qĂ« kam shkruar nĂ« kĂ«tĂ« paragraf. ĂĂ«shtja Ă«shtĂ« se personalisht pĂ«r mua, mĂ«nyra se si funksionon tani Ă«shtĂ« e pranueshme. Por, nĂ«se dikujt tjetĂ«r do t'i dukej e pĂ«rshtatshme dhe dikush do ta pĂ«rmirĂ«sonte, do tĂ« isha me kĂ«naqĂ«si pĂ«r ta pĂ«rdorur zgjidhjen mĂ« tĂ« mirĂ«.
NjĂ« problem tjetĂ«r, siç kam shkruar mĂ« parĂ«, Ă«shtĂ« se nĂ« disa raste dritaret nuk mund tĂ« dallohen nga njĂ«ra-tjetra. Deri mĂ« tani kam vĂ«zhguar diçka tĂ« tillĂ« vetĂ«m me incognito nĂ« chrome/chromium, por ndoshta ka ndodhur diku tjetĂ«r. NĂ« rastin mĂ« tĂ« keq, gjithmonĂ« ka mundĂ«sinĂ« e kombinimeve universale. Alt+1âŠAlt+0PĂ«rsĂ«ri, unĂ« pĂ«rdor Firefox dhe pĂ«r mua kĂ«tĂ« problem nuk Ă«shtĂ« i rĂ«ndĂ«sishĂ«m.
Por njĂ« problem qĂ« Ă«shtĂ« i rĂ«ndĂ«sishĂ«m pĂ«r mua Ă«shtĂ« se nĂ« punĂ« pĂ«rdor Mac OS dhe atje nuk kam mundur tĂ« bĂ«j asgjĂ« tĂ« tillĂ«. Duke instaluar wmctrl duke duket se kam mundur, por ajo nuk funksionon mirĂ« nĂ« Mac OS. Mund tĂ« bĂ«het diçka me aplikacionin. Automator, por Ă«shtĂ« aq ngadalĂ«, sa qĂ« nuk Ă«shtĂ« e pĂ«rshtatshme tĂ« pĂ«rdoret edhe kur funksionon. Nuk pata mundĂ«si tĂ« konfiguroj kombinimet e çelĂ«save qĂ« tĂ« funksiononin nĂ« tĂ« gjitha programet. NĂ«se ndokush gjen njĂ« zgjidhje â do tĂ« mĂ« pĂ«lqente ta pĂ«rdorja.
Në vend të përfundimit
Doli papritur shumë fjalë për një funksionalitet aq të thjeshtë. Deshta të përcjell idenë dhe të mos e mbingarkoj tekstin, por ende nuk kam gjetur një mënyrë më të thjeshtë për ta shprehur. Ndoshta në format video do ishte më mirë, por këtu nuk e duan shumë.
Kam folur pak për atë që ndodhi nën kapak të skriptit dhe si ta konfiguroj atë. Nuk u thella në detajet e vetë skriptit, por kanë vetëm 50 rreshta, nuk është e vështirë të kuptohet.
Shpresoj që dikush tjetër të provojë këtë ide dhe, ndoshta, madje ta vlerësojë. Për veten time mund të them se skripti është shkruar rreth 3 vjet më parë dhe është shumë i përshtatshëm për mua. Aq i përshtatshëm, sa që shkakton një shqetësim të madh kur punoj me kompjuterë të tjerë. Dhe me MacBook-un tim të punës.
Burimi: habr.com
