Es esmu no tiem, kas uz Caps Lock iestata valodas maiÅu, jo man slinkums nospiest divas taustiÅus, kad varu nospiest vienu. Es pat gribÄtu divus nevajadzÄ«gus taustiÅus: vienu es izmantotu, lai ieslÄgtu angļu valodas izkÄrtojumu, un otro krievu. Bet otrais nevajadzÄ«gais taustiÅÅ” ir konteksta izvÄlnes izsaukÅ”ana, kas ir tik nevajadzÄ«ga, ka daudzi klÄpjdatoru ražotÄji to izslÄdz. TÄdÄļ jÄapmierinÄs ar to, kas ir.
Un vÄl es nevÄlos, lai, pÄrslÄdzoties starp logiem, bÅ«tu jÄmeklÄ to ikonas uz uzdevumu joslas, jÄnoÄ·er to nosaukumi, slÄ«dot cauri Alt+Tab, jÄpÄrvieto darba virsmas utt. Es vÄlos nospiest taustiÅu kombinÄciju (ideÄli vispÄr vienu, bet nevajadzÄ«go taustiÅu vairs nav) un uzreiz nokļūt vajadzÄ«gajÄ logÄ. PiemÄram, tÄ:
- Alt+F: Firefox
- Alt+D: Firefox (PrivÄtÄ pÄrlÅ«koÅ”ana)
- Alt+T: TerminÄls
- Alt+M: Kalkulators
- Alt+E: IntelliJ Idea
- utt.
TurklÄt, nospiežot, piemÄram, uz Alt+M , es vÄlos redzÄt kalkulatoru neatkarÄ«gi no tÄ, vai Ŕī programma Å”obrÄ«d ir palaista. Ja tÄ ir palaista, tad tÄs logs jÄnodod fokusÄ, bet, ja nav ā jÄpalaiž vajadzÄ«gÄ programma un jÄnodod fokus, kad tÄ ielÄdÄjas.
GadÄ«jumiem, kuri netiek segti ar iepriekÅ”Äjo scenÄriju, es vÄlos, lai bÅ«tu universÄlas taustiÅu kombinÄcijas, kuras var viegli pieŔķirt jebkuram no atvÄrtiem logiem. PiemÄram, man ir pieŔķirtas 10 kombinÄcijas no Alt+1 lÄ«dz Alt+0, kuras nav saistÄ«tas ar nevienu programmu. Es varu vienkÄrÅ”i nospiest Alt+1 un logs, kurÅ” Å”obrÄ«d ir fokusÄ, saÅems fokusu, nospiežot Alt+1.
ZemÄk ir apraksts vÄl dažÄm funkcijÄm un atbilde uz to, kÄ to var izdarÄ«t. Bet tÅ«lÄ«t brÄ«dinÄÅ”u, ka Å”Äda personalizÄcija var radÄ«t spÄcÄ«gu atkarÄ«bu un pat abstinences simptomus, ja jÄizmanto Windows, Mac OS vai pat sveÅ”s dators ar Linux.
PatiesÄ«bÄ, ja padomÄ, tad mÄs ikdienÄ izmantojam ne tik daudz programmu. PÄrlÅ«ks, terminÄls, IDE, kÄds ziÅojumapmaiÅas rÄ«ks, failu menedžeris, kalkulators un, iespÄjams, tas ir gandrÄ«z viss. NepiecieÅ”amas nav tik daudz taustiÅu kombinÄciju, lai segtu 95% ikdienas uzdevumu.
Programmu gadÄ«jumÄ, kurÄm ir atvÄrti vairÄki logi, vienu var noteikt par galveno. PiemÄram, atvÄrtas daudzas IntelliJ Idea logus, kuri pieŔķirti uz Alt+E. Parastajos apstÄkļos, nospiežot uz Alt+E , tiks atvÄrts kÄds no Ŕīs programmas logiem, visticamÄk tas, kurÅ” tika atvÄrts pirmais. TomÄr, ja nospiež uz Alt+E Kad viena no Ŕīs programmas logiem jau ir fokusÄ, Å”im logam tiks pieŔķirts galvenais status un tieÅ”i tam tiks nodots fokuss nÄkamajos kombinÄciju nospieÅ”anus.
Galveno logu var pÄrdefinÄt. Lai to izdarÄ«tu, vispirms jÄnokÄrto kombinÄcija un pÄc tam jÄpiedÄvÄ galvenais cits logs. Lai atjaunotu kombinÄciju, jÄnosaka pati kombinÄcija un pÄc tam speciÄlÄ atjaunoÅ”anas kombinÄcija, ko man iestatÄ«jusi uz Alt+Backspace. Tas izsauks skriptu, kas atcels galvenÄ loga pieŔķirÅ”anu iepriekÅ”Äjai kombinÄcijai. PÄc tam var pieŔķirt jaunu galveno logu, kÄ tas tika aprakstÄ«ts iepriekÅ”ÄjÄ odstÄvÄ. Piesaistes atjaunoÅ”ana universÄlajÄm kombinÄcijÄm notiek lÄ«dzÄ«gi.
Ievads sanÄca garÅ”, bet vispirms vÄlÄjos pastÄstÄ«t, ko darÄ«sim, un pÄc tam izskaidrot, kÄ to darÄ«t.
Tiem, kam apnicis lasīt
ÄŖsumÄ, saite uz skriptiem raksta beigÄs.
Bet tomÄr uzreiz uzstÄdÄ«t un lietot neizdosies. Vispirms bÅ«s jÄsaprot, kÄ skripts atrod nepiecieÅ”amo logu. Bez tÄ nevarÄs parÄdÄ«t skriptam, kur tieÅ”i jÄnodod fokuss. Un ir jÄsaprot, ko darÄ«t, ja pÄkÅ”Åi nav piemÄrota loga.
Un vÄl es negribu detalizÄt, kÄ konfigurÄt skriptu izpildi, nospiežot taustiÅu kombinÄcijas. PiemÄram, KDE tas ir SistemÄ iestatÄ«jumi ā ÄŖsinÄjumtaustiÅi ā PielÄgotie Ä«sinÄjumtaustiÅi. CitÄs logu pÄrvaldÄ«tÄja versijÄs tam arÄ« jÄbÅ«t.
IepazīŔanÄs ar wmctrl
Wmctrl ā konsoles rÄ«ks interakcijai ar X Window Manager. Tas ir izŔķiroÅ”s programmai skriptÄ. ApskatÄ«sim, kÄ to var lietot.
Vispirms izvadÄ«sim atvÄrto logu sarakstu:
$ 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 TulkotÄjs - Mozilla Firefox
0x04400218 0 Navigator.Firefox N/A LabÄkie publikÄcijas par dienu / Habr - Mozilla Firefox (PrivÄta pÄrlÅ«koÅ”ana)
...Opcija -l izvada visu atvÄrtu logu sarakstu, un -h pievieno iznÄkumam klases nosaukumu (skype.Skype, Navigator.Firefox u.tml). Mums te noderÄs loga ID (1. kolonna), klases nosaukums (3. kolonna) un loga nosaukums (pÄdÄjÄ kolonna).
Var mÄÄ£inÄt aktivizÄt kÄdu logu, izmantojot opciju -a:
$ wmctrl -a skype.Skype -xJa viss notiek kÄ plÄnots, tad ekrÄnÄ vajadzÄtu parÄdÄ«ties Skype logs. Ja vietÄ dot opciju -x izmantojiet opciju -i, tÄ vietÄ, lai norÄdÄ«tu klases nosaukumu, varÄs norÄdÄ«t loga id. ProblÄma ar id ir tÄda, ka loga id mainÄs katru reizi, kad tiek palaista lietotne, un mÄs to nevaram paredzÄt. No otras puses, Å”is atribÅ«ts nepÄrprotami identificÄ logu, kas var bÅ«t svarÄ«gi, ja lietotne atver vairÄkus logus. Par to nedaudz vÄlÄk.
Å ajÄ posmÄ mums jÄatceras, ka meklÄsim vajadzÄ«go logu ar regex, izmantojot izvadi wmctrl -lx. TaÄu tas nenozÄ«mÄ, ka mums obligÄti jÄizmanto kaut kas sarežģīts. Parasti pietiek ar klases nosaukumu vai loga nosaukumu.
PrincipÄ, pamatidejai jau vajadzÄtu bÅ«t skaidrai. GlobÄlo karsto taustiÅu / Ä«sinÄjumtaustiÅu iestatÄ«jumos jÅ«su logu pÄrvaldniekÄ iestata vajadzÄ«go kombinÄciju, lai izpildÄ«tu skriptu.
KÄ lietot skriptus
Vispirms jÄsagatavo konsoļu utilÄ«tas wmctrl un xdotool:
$ sudo apt-get install wmctrl xdotoolTÄlÄk jÄpiesaka skripti un jÄpievieno tie $PATH. Es parasti ievietoju tos ~/bin:
$ cd ~/bin
$ git clone https://github.com/masyamandev/Showwin-script.git
$ ln -s ./Showwin-script/showwin showwin
$ ln -s ./Showwin-script/showwinDetach showwinDetachJa katalogs ~/bin nebija, tad tas jÄizveido un jÄrestartÄ (vai jÄiziet no sistÄmas), citÄdi ~/bin neiekļausies $PATH. Ja viss pareizi izdarÄ«ts, tad skriptiem vajadzÄtu bÅ«t pieejamiem no konsoles, un jÄdarbina automÄtiskÄ pabeigÅ”ana ar Tab.
Pamatskripts showwin pieÅem 2 parametrus: pirmais ir regex, ar kuru mÄs meklÄsim vajadzÄ«go logu, bet otrs parametrs ir komanda, kuru jÄizpilda, ja vajadzÄ«gais logs netiek atrasts.
Varat izmÄÄ£inÄt izpildÄ«t skriptu, piemÄram:
$ showwin "Mozilla Firefox$" firefoxJa Firefox ir uzstÄdÄ«ts, tad tam logam vajadzÄtu tikt pievÄrstam fokusam. Pat ja Firefox nebija palaižams, tam vajadzÄtu bÅ«t palaistam.
Ja viss izdevÄs, varat izmÄÄ£inÄt iestatÄ«t komandu izpildi uz kombinÄcijÄm. GlobÄlo karsto taustiÅu / Ä«sinÄjumtaustiÅu iestatÄ«jumos pievienojam:
- Alt+F: showwin «Mozilla Firefox$» firefox
- Alt+D: showwin Ā«Mozilla Firefox (PrivÄta pÄrlÅ«koÅ”ana)$Ā» Ā«firefox -privÄta-logsĀ»
- 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
Un tÄ tÄlÄk. TaustiÅu kombinÄcijas un programmas katrs varÄs pielÄgot sev ÄrtÄk.
Ja viss tika izdarÄ«ts pareizi, tad ar iepriekÅ” minÄtajÄm kombinÄcijÄm mÄs varÄsim pÄrslÄgties starp logiem ar vienkÄrÅ”u taustiÅu nospieÅ”anu.
Satraukumu mīļotÄjiem, parastais logs incognito netiek atŔķirts pÄc izvades wmctrl Tas nav iespÄjams, jo tÄm ir vienÄdi klaÅ”u nosaukumi un logu virsraksti. Ieteiktajos regex simbolos N* un I* ir nepiecieÅ”ami tikai tam, lai Å”ie regulÄrie izteikumi atŔķirtos savÄ starpÄ, un tos varÄtu pieŔķirt par galvenajiem dažÄdajiem logiem.
Lai atiestatÄ«tu galveno logu iepriekÅ”Äjai kombinÄcijai (faktiski regex, ar kuru showwin tas tika izsaukts pÄdÄjoreiz), ir jÄizsauc skripts showwinDetach. Manam skriptam Ŕī kombinÄcija ir pieŔķirta taustiÅu komanda Alt+Backspace.
Å im skriptam showwin ir vÄl viena funkcija. Kad tas tiek izsaukts ar vienu parametru (Å”ajÄ gadÄ«jumÄ parametrs ir vienkÄrÅ”i identifikators), tas vispÄr nepÄrbauda regex, bet visus logus uzskata par piemÄrotiem. Tas Ŕķiet nevajadzÄ«gs, tomÄr tÄdÄ veidÄ mÄs varam pieŔķirt jebkuru logu par galveno un Ätri pÄriet tieÅ”i uz Å”o logu.
Man ir iestatÄ«tas Å”Ädas kombinÄcijas:
- Alt+1: showwin "CustomKey1"
- Alt+2: showwin "CustomKey2"
- ā¦
- Alt+0: showwin "CustomKey0"
- Alt+Backspace: showwinDetach
TÄdÄjÄdi es varu piesaistÄ«t jebkurus logus kombinÄcijÄm Alt+1ā¦Alt+0. VienkÄrÅ”i nospiežot Alt+1 es piesaistu paÅ”reizÄjo logu Å”ai kombinÄcijai. Atcelt piesaisti var, nospiežot Alt+1, un pÄc tam Alt+Backspace. Vai arÄ« slÄgt logu, tas arÄ« darbojas.
TÄlÄk es pastÄstīŔu nedaudz tehnisko sÄ«kumu. Tos var neizlasÄ«t, bet vienkÄrÅ”i pamÄÄ£inÄt uzstÄdÄ«t un paskatÄ«ties. Bet es tomÄr ieteiktu iepazÄ«ties ar citu skriptiem pirms to palaiÅ”anas savÄ datorÄ.
KÄ atŔķirt dažÄdus logus vienai programmai
PrincipÄ, pirmais piemÄrs "wmctrl -a skype.Skype -x" bija darbÄ«gs un to var izmantot. Bet aplÅ«kosim vÄlreiz piemÄru ar Firefox, kurÄ ir atvÄrti 2 logi:
0x04400003 0 Navigator.Firefox N/A Google TulkotÄjs - Mozilla Firefox
0x04400218 0 Navigator.Firefox N/A LabÄkie raksti dienÄ / Habr - Mozilla Firefox (PrivÄtÄ pÄrlÅ«koÅ”ana)Pirmais logs ir parastajÄ režīmÄ, bet otrais - PrivÄtÄ pÄrlÅ«koÅ”anÄ. Å os logus bÅ«tu vÄlams uzskatÄ«t par dažÄdÄm programmÄm un pÄrslÄgties uz tiem ar dažÄdÄm taustiÅu kombinÄcijÄm.
Ir jÄiegÅ«st sarežģītÄks skripts, kas pÄrslÄdz logus. Es izmantoju tÄdu risinÄjumu: izvadÄ«t visu logu sarakstu, izveidot grep pÄc regex, paÅemt pirmo rindu, izmantojot head, izvilkt pirmo kolonnu (tÄ bÅ«s loga id) ar cut, pÄrslÄgties uz logu pÄc id.
Å eit bÅ«tu joks par regulÄrajiem izteiksmÄm un divÄm problÄmÄm, bet patiesÄ«bÄ es neizmantoju neko sarežģītu. RegulÄrÄs izteiksmes man nepiecieÅ”amas, lai varÄtu norÄdÄ«t rindiÅas beigas (simbols ā$ā) un atŔķirt āMozilla Firefox$ā no āMozilla Firefox (Private Browsing)$ā.
Komanda izskatÄs apmÄram tÄ:
$ wmctrl -i -a `wmctrl -lx | grep -i "Mozilla Firefox$" | head -1 | cut -d" " -f1`Te var jau nojaust par otro skripta Ä«patnÄ«bu: ja grep neko nav izvadÄ«jis, tad vajadzÄ«gÄ lietotne nav atvÄrta, un to ir nepiecieÅ”ams palaist, izpildot komandu no otrÄ parametra. Un pÄc tam periodiski pÄrbaudÄ«t, vai atvÄrts nav vajadzÄ«gais logs, lai tam nodotu fokusu. Neesmu iecerÄjis par to sÄ«kÄk runÄt, kam vajag, tas var apskatÄ«t avota kodu.
Kad lietotÅu logi nav atŔķirami
Un tÄ, mÄs esam iemÄcÄ«juÅ”ies nodot fokusu vajadzÄ«gÄs lietotnes logam. Bet ko darÄ«t, ja atvÄrtÄ ir vairÄk nekÄ viena loga? KÄdÄm no tÄm nodot fokusu? IepriekÅ”Äjais skripts, visticamÄk, nodos fokusu pirmajam atvÄrtajam logam. TomÄr mÄs vÄlamies vairÄk elastÄ«bas. VÄlÄtos atcerÄties, kurÅ” tieÅ”i logs mums ir nepiecieÅ”ams, un pÄrslÄgties tieÅ”i uz Å”o logu.
Ideja bija Å”Äda: Ja mÄs vÄlamies atcerÄties kÄdu konkrÄtu logu taustiÅu kombinÄcijai, tad, kad vajadzÄ«gais logs ir fokusÄ, ir jÄnospiež Ŕī kombinÄcija. NÄkotnÄ, nospiežot Å”o kombinÄciju, fokuss tiks nodots tieÅ”i Å”im logam. KamÄr logs netiks aizvÄrts vai mÄs nesam veikuÅ”i atsÄknÄÅ”anu Å”ai skripta kombinÄcijai. showwinDetach.
Skripta algoritms showwin izskatÄs aptuveni tÄds:
- PÄrbaudÄ«t, vai iepriekÅ” neesam atcerÄjuÅ”ies loga id, kuram jÄnodod fokuss.
Ja esam atcerÄjuÅ”ies un Å”Äds logs joprojÄm pastÄv, tad nododam tam fokusu un iznÄkam. - PÄrbaudÄm, kurÅ” logs paÅ”laik ir fokusÄ, un, ja tas atbilst mÅ«su pieprasÄ«jumam, atceramies tÄ id, lai nÄkotnÄ varÄtu piezvanÄ«t tam un iznÄkam.
- PÄrslÄdzamies uz jebkuru piemÄrotu logu, ja tas pastÄv, vai atveram vajadzÄ«go lietotni.
UzzinÄt, kurÅ” logs paÅ”laik ir fokusÄ, var ar konsoles utilÄ«tu xdotool, pÄrvÄrÅ”ot tÄs izvadi heksadecimÄlajÄ formÄtÄ:
$ printf "0xx" `xdotool getwindowfocus`Kas attiecas uz kaut ko atcerÄÅ”anos bash, tas visvieglÄk izdarÄms, radot failus virtuÄlajÄ failu sistÄmÄ, kas atrodas atmiÅÄ. Ubuntu tÄ ir pievienota pÄc noklusÄjuma /dev/shm/. Par citiem izplatÄ«jumiem neko neteikÅ”u, ceru, ka lÄ«dzÄ«gs arÄ« tur ir. Var paskatÄ«ties ar komandu:
$ mount -l | grep tmpfsKods izveidos tukÅ”us direktorijus Å”ajÄ mapÄ, piemÄram: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. TurklÄt katra izsaukuma laikÄ tiks izveidots symlink /dev/shm/$USER/showwin/showwin_last uz /dev/shm/$USER/showwin/$SEARCH_REGEX. Tas bÅ«s nepiecieÅ”ams, lai nepiecieÅ”amÄ«bas gadÄ«jumÄ ar skriptu dzÄstu loga ID konkrÄtai kombinÄcijai showwinDetach.
Ko var uzlabot
PirmkÄrt, skriptus jÄiestata manuÄli. Noteikti, Åemot vÄrÄ nepiecieÅ”amÄ«bu iedziļinÄties un darÄ«t daudz ar rokÄm, daudzi no jums pat neizmantos sistÄmas iestatīŔanu. Ja bÅ«tu iespÄja vienkÄrÅ”i uzstÄdÄ«t pakotni un visu vienkÄrÅ”Äk iestatÄ«t, iespÄjams, tas iegÅ«tu noteiktu popularitÄti. VarbÅ«t tad arÄ« standarta distributÄ«vos varÄtu iekļaut Å”o lietotni.
Un, iespÄjams, to varÄtu izdarÄ«t vienkÄrÅ”Äk. Ja pÄc loga ID iespÄjams noskaidrot, kurÅ” ID izveidojis procesu, un pÄc procesa ID iespÄjams uzzinÄt, kura komanda to izveidojusi, varÄtu automatizÄt iestatīŔanu. PatiesÄ«bÄ es neesmu pÄtÄ«jis, vai tas, ko esmu rakstÄ«jis Å”ajÄ rindkopÄ, ir iespÄjams. Man personÄ«gi apmierina tas, kÄ tas darbojas Å”obrÄ«d. Bet, ja kÄdam citam, izÅemot mani, Ŕī pieeja ŔķitÄ«s Ärta un kÄds to uzlabos, es labprÄt izmantotu labÄko risinÄjumu.
VÄl viena problÄma, kÄ jau iepriekÅ” minÄju, ir tÄ, ka dažos gadÄ«jumos logus nav iespÄjams atŔķirt vienu no otra. Es to esmu novÄrojis tikai ar incognito režīmu Chrome/Chromium, bet iespÄjams, ka tÄdas situÄcijas ir arÄ« citur. Visos gadÄ«jumos vienmÄr ir varians ar universÄlÄm kombinÄcijÄm Alt+1ā¦Alt+0. Atkal, es izmantoju Firefox, un personÄ«gi man Ŕī problÄma nav bÅ«tiska.
TaÄu bÅ«tiska problÄma man ir tÄ, ka darbÄ es izmantoju Mac OS, un tur neko lÄ«dzÄ«gu es nevarÄju iestatÄ«t. RÄ«ku wmctrl uzstÄdÄ«t Ŕķiet bija iespÄjams, bet tas Mac OS normÄli nedarbojas. Dažas lietas var darÄ«t ar lietotni Automator, bet tÄ tik ļoti aizkavÄjas, ka to nav Ärti izmantot pat tad, kad tÄ darbojas. Es arÄ« neesmu spÄjis iestatÄ«t taustiÅu kombinÄcijas tÄ, lai tÄs darbotos visÄs programmÄs. Ja kÄds izdomÄs risinÄjumu ā būŔu priecÄ«gs to izmantot.
NoslÄgumÄ
SanÄcis negaidÄ«ti daudz vÄrdu, Åemot vÄrÄ tÄdu, Ŕķietami, vienkÄrÅ”u funkcionalitÄti. VÄlÄjos nodot ideju un nepÄrslogot tekstu, bet pagaidÄm neesmu izdomÄjis, kÄ to izteikt vienkÄrÅ”Äk. IespÄjams, video formÄtÄ bÅ«tu labÄk, bet Å”eit tÄ to ne pÄrÄk mÄ«l.
Es mazliet pastÄstÄ«ju par to, kas ir skripta iekÅ”pusÄ un kÄ to konfigurÄt. Skriptu pats par sevi detalizÄti neapskatÄ«ju, bet tas ir tikai 50 rindiÅas garÅ”, tÄpÄc saprast nav grÅ«ti.
Ceru, ka kÄds vÄl Å”o ideju izmÄÄ£inÄs un, iespÄjams, pat novÄrtÄs. Par sevi varu teikt, ka skripts tika uzrakstÄ«ts pirms apmÄram 3 gadiem un man tas ir Ä»OTI Ärti. Tik Ärti, ka tas rada nopietnu diskomfortu, strÄdÄjot ar citu cilvÄku datoriem. Un ar manu darba MacBook.
Avots: habr.com
