Ġestjoni alternattiva tat-twieqi fil-Linux

Jien wieħed minn dawk li stabbilixxew Caps Lock biex jaqilbu t-tqassim għax jien għażżien wisq biex nagħfas 2 tasti meta nista' nagħfas waħda. Nixtieq saħansitra 2 ċwievet bla bżonn: nuża waħda biex nixgħel it-tqassim bl-Ingliż, u t-tieni għar-Russu. Iżda t-tieni ċavetta mhux meħtieġa hija li ssejjaħ il-menu tal-kuntest, li tant huwa bla bżonn li huwa maqtugħ minn ħafna manifatturi tal-laptop. Għalhekk trid tkun kuntent b’dak li għandek.

U ma rridx ukoll infittex l-ikoni tagħhom fuq it-taskbar meta taqleb it-twieqi, jew naqbad l-ismijiet meta tiskrollja Alt + tab, iscroll permezz tad-desktops, eċċ Irrid nagħfas kombinazzjoni ta 'ċwievet (idealment waħda biss, iżda m'hemmx aktar ċwievet bla bżonn) u immedjatament nasal għat-tieqa li għandi bżonn. Per eżempju bħal dan:

  • Alt+F: Firefox
  • Alt+D: Firefox (Ibbrawżjar Privat)
  • Alt+T: Terminal
  • Alt+M: Kalkulatur
  • Alt+E: Idea IntelliJ
  • eċċ.

Barra minn hekk, billi tagħfas, pereżempju, fuq Alt+M Irrid nara l-kalkulatur irrispettivament minn jekk dan il-programm hux qed jaħdem bħalissa. Jekk tkun qed taħdem, allura t-tieqa tagħha trid tingħata fokus, u jekk le, mexxi l-programm mixtieq u ttrasferixxi l-fokus meta tagħbha.

Għal każijiet li mhumiex koperti mill-iskrittura preċedenti, nixtieq li jkolli kombinazzjonijiet ta 'ċwievet universali li jistgħu jiġu assenjati faċilment għal kwalunkwe mit-twieqi miftuħa. Per eżempju, għandi 10 kombinazzjonijiet assenjati minn Alt + 1 li Alt + 0, li mhumiex marbuta ma' xi programmi. Nista 'biss nikklikkja Alt + 1 u t-tieqa li bħalissa hija fil-fokus se tikseb fokus meta għafast Alt + 1.

Taħt il-qatgħa hemm deskrizzjoni ta 'koppja aktar karatteristiċi u tweġiba għal kif dan jista' jsir. Imma se nwissik immedjatament li tali customization "għalik innifsek" jista 'jikkawża vizzju sever u anke irtirar jekk għandek bżonn tuża Windows, Mac OS jew saħansitra kompjuter ta' xi ħadd ieħor bil-Linux.

Fil-fatt, jekk taħseb dwarha, aħna ma nużawx daqshekk programmi kuljum. Brawżer, terminal, IDE, xi tip ta 'messaġġier, maniġer tal-fajls, kalkulatur u, forsi, dak huwa kważi kollox. M'hemmx ħafna kombinazzjonijiet ewlenin meħtieġa biex ikopru 95% tal-kompiti ta 'kuljum.

Għal programmi li għandhom diversi twieqi miftuħa, wieħed minnhom jista' jiġi indikat bħala l-wieħed prinċipali. Pereżempju, għandek multipli twieqi IntelliJ Idea miftuħa u assenjati għalihom Alt + E. Taħt kundizzjonijiet normali, meta tagħfas Alt + E se tiftaħ xi tieqa ta 'dan il-programm, x'aktarx dik li nfetħet l-ewwel. Madankollu, jekk tikklikkja fuq Alt + E meta waħda mit-twieqi ta 'dan il-programm tkun diġà fil-fokus, allura din it-tieqa partikolari tiġi assenjata bħala l-waħda prinċipali u se tkun dik li se tingħata fokus meta kombinazzjonijiet sussegwenti huma ppressati.

It-tieqa prinċipali tista 'tiġi assenjata mill-ġdid. Biex tagħmel dan, l-ewwel trid tirrisettja l-kombinazzjoni, u mbagħad tassenja tieqa oħra għaliha bħala t-tieqa ewlenija. Biex tirrisettja kombinazzjoni, trid tagħfas il-kombinazzjoni nnifisha, u mbagħad kombinazzjoni speċjali ta 'reset, għandiha assenjata lil Alt + Backspace. Dan se jsejjaħ b'kitba li se tneħħi t-tieqa prinċipali għall-kombinazzjoni preċedenti. U mbagħad tista 'tassenja tieqa ewlenija ġdida kif deskritt fil-paragrafu preċedenti. Ir-reset ta 'tieqa konnessa għal kombinazzjonijiet universali jseħħ bl-istess mod.

L-introduzzjoni rriżulta li kienet twila, imma ridt l-ewwel ngħid x'se nagħmlu, u mbagħad nispjega kif nagħmluh.

Għal dawk li huma għajjien jaqra

Fil-qosor, il-link għall-iskripts tinsab fl-aħħar tal-artiklu.

Imma xorta mhux se tkun tista 'tinstalla u tużaha minnufih. L-ewwel ikollok biex insemmu kif l-iskrittura ssib it-tieqa mixtieqa. Mingħajr dan, ma jkunx possibbli li tgħid l-iskrittura fejn eżattament il-fokus jeħtieġ li jiġi trasferit. U trid tifhem x'għandek tagħmel jekk f'daqqa waħda ma tinstabx tieqa xierqa.

U mhux se niffoka fuq kif tikkonfigura l-eżekuzzjoni tal-iskripts billi tagħfas kombinazzjonijiet ta 'ċwievet. Pereżempju, f'KDE huwa f'Settings tas-Sistema → Shortcuts → Shortcuts personalizzati. Dan għandu jkun il-każ ukoll f'maniġers tat-twieqi oħra.

L-introduzzjoni ta' wmctrl

Wmctrl — utilità tal-console għall-interazzjoni ma' X Window Manager. Dan huwa l-programm ewlieni għall-iskrittura. Ejja nagħtu ħarsa malajr lejn kif tista 'tużah.

L-ewwel, ejja nuru lista ta 'twieqi miftuħa:

$ 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)
...

Għażla -l juri lista tat-twieqi miftuħa kollha, u -NS iwaħħal l-isem tal-klassi mal-output (skype.Skype, Navigator.Firefox eċċ). Hawnhekk għandna bżonn l-id tat-tieqa (kolonna 1), l-isem tal-klassi (kolonna 3) u l-isem tat-tieqa (l-aħħar kolonna).

Tista 'tipprova tattiva xi tieqa billi tuża l-għażla -a:

$ wmctrl -a skype.Skype -x

Jekk kollox mar skond il-pjan, it-tieqa Skype għandha tidher fuq l-iskrin. Jekk minflok l-għażla -x uża l-għażla -i, imbagħad minflok l-isem tal-klassi tista 'tispeċifika l-id tieqa. Il-problema bl-id hija li l-id tieqa tinbidel kull darba li titnieda l-applikazzjoni u ma nistgħux inkunu nafuha minn qabel. Min-naħa l-oħra, dan l-attribut jidentifika b'mod uniku tieqa, li tista' tkun importanti meta applikazzjoni tiftaħ aktar minn tieqa waħda. Aktar dwar dan ftit aktar.

F'dan l-istadju għandna niftakru li se nfittxu t-tieqa mixtieqa billi tuża regex mill-output wmctrl -lx. Imma dan ma jfissirx li rridu nużaw xi ħaġa kkumplikata. Normalment l-isem tal-klassi jew l-isem tat-tieqa huwa biżżejjed.

Bażikament, l-idea prinċipali għandha tkun diġà ċara. Fis-settings globali tal-hotkeys/shortcuts għall-maniġer tat-tieqa tiegħek, ikkonfigura l-kombinazzjoni meħtieġa biex tesegwixxi l-iskrittura.

Kif tuża skripts

L-ewwel trid tinstalla l-utilitajiet tal-console wmctrl и xdotool:

$ sudo apt-get install wmctrl xdotool

Sussegwentement trid tniżżel l-iskripts u żżidhom magħhom $ PATH. Ġeneralment inpoġġihom ~/bin:

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

Jekk id-direttorju ~/bin ma kienx hemm, allura għandek bżonn toħloqha u terġa 'tibda (jew terġa' tidħol), inkella ~/bin mhux se jolqot $ PATH. Jekk kollox isir b'mod korrett, allura l-iskripts għandhom ikunu aċċessibbli mill-console u t-tlestija tat-Tab għandha taħdem.

Iskrittura ewlenija showwin jieħu 2 parametri: l-ewwel huwa regex, li permezz tiegħu se nfittxu t-tieqa meħtieġa, u t-tieni parametru huwa kmand li jeħtieġ li jiġi esegwit jekk it-tieqa meħtieġa ma tinstabx.

Tista' tipprova tħaddem skript, pereżempju:

$ showwin "Mozilla Firefox$" firefox

Jekk Firefox huwa installat, it-tieqa tagħha għandha tingħata attenzjoni. Anki jekk Firefox ma kienx qed jaħdem, kellu jibda.

Jekk taħdem, allura tista 'tipprova tikkonfigura l-eżekuzzjoni ta' kmandi fuq kombinazzjonijiet. Fis-settings globali tal-hotkeys/shortcuts żid:

  • Alt+F: turi “Mozilla Firefox$” firefox
  • Alt+D: turi "Mozilla Firefox (Browsing Privat)$" "firefox -private-window"
  • Alt+C: showwin "chromium-browser.Chromium-browser N*" kromju-browser
  • Alt+X: turi "chromium-browser.Chromium-browser I*" "chromium-browser -incognito"
  • Alt+S: turi “skype.Skype” skypeforlinux
  • Alt+E: showwin “jetbrains-idea” idea.sh

Eċċ Kulħadd jista 'jikkonfigura kombinazzjonijiet ewlenin u softwer kif jidhirlu xieraq.
Jekk kollox ħadem b'mod korrett, allura bl-użu tal-kombinazzjonijiet ta 'hawn fuq inkunu nistgħu naqilbu bejn it-twieqi billi sempliċement tagħfas it-tasti.

Se niddiżappunta lil min iħobb il-kromju: jista 'incognito jiddistingwi tieqa regolari mill-output tiegħu wmctrl Ma tistax, għandhom l-istess ismijiet tal-klassi u titoli tat-twieqi. Fir-reġex propost, il-karattri N* u I* huma meħtieġa biss sabiex dawn l-espressjonijiet regolari jkunu differenti minn xulxin u jkunu jistgħu jiġu assenjati bħala t-twieqi prinċipali.

Biex tirrisettja t-tieqa ewlenija tal-kombinazzjoni preċedenti (fil-fatt għal regex, li showwin imsejħa l-aħħar darba) trid issejjaħ l-iskript showwinDetach. Għandi din l-iskrittura assenjata għal kombinazzjoni ta 'ċwievet Alt + Backspace.

Fl-iskript showwin hemm funzjoni waħda aktar. Meta tissejjaħ b'parametru wieħed (f'dan il-każ il-parametru huwa biss identifikatur), ma jiċċekkjax ir-reġex għal kollox, iżda jqis it-twieqi kollha bħala adattati. Fih innifsu, dan jidher inutli, iżda b'dan il-mod nistgħu nnominaw kwalunkwe tieqa bħala dik prinċipali u malajr naqilbu għal dik it-tieqa partikolari.

Għandi l-kombinazzjonijiet li ġejjin konfigurati:

  • Alt+1: uri "CustomKey1"
  • Alt+2: uri "CustomKey2"
  • ...
  • Alt+0: uri "CustomKey0"
  • Alt+Backspace: showwinDetach

B'dan il-mod nista' jorbot kwalunkwe twieqi ma' kombinazzjonijiet Alt + 1...Alt + 0. Biss billi tikklikkja Alt + 1 Jien jorbot it-tieqa kurrenti ma' din il-kombinazzjoni. Nista' nikkanċella l-irbit billi nikklikkja Alt + 1, imbagħad Alt + Backspace. Jew agħlaq it-tieqa, li taħdem ukoll.

Sussegwentement ngħidlek xi dettalji tekniċi. M'għandekx għalfejn taqrahom, imma sempliċement tipprova twaqqafhom u ara. Imma xorta nirrakkomanda li tifhem l-iskripts ta' nies oħra qabel ma tħaddem fuq il-kompjuter tiegħek :).

Kif tiddistingwi bejn twieqi differenti tal-istess applikazzjoni

Fil-prinċipju, l-ewwel eżempju "wmctrl -a skype.Skype -x" kien qed jaħdem u jista 'jintuża. Imma ejja nerġgħu nħarsu lejn l-eżempju ma' Firefox, li fih 2 twieqi huma miftuħa:

0x04400003  0 Navigator.Firefox                   N/A Google Переводчик - Mozilla Firefox
0x04400218  0 Navigator.Firefox                   N/A Лучшие публикации за сутки / Хабр - Mozilla Firefox (Private Browsing)

L-ewwel tieqa hija modalità normali, u t-tieni hija Privat Browsing. Nixtieq inqis dawn it-twieqi bħala applikazzjonijiet differenti u naqleb għalihom billi tuża kombinazzjonijiet ta 'ċwievet differenti.

Huwa meħtieġ li tikkomplika l-iskrittura li taqleb it-twieqi. Jien użajt din is-soluzzjoni: uri lista tat-twieqi kollha, do grep minn regex, ħu l-ewwel linja ma ras, Ikseb l-ewwel kolonna (din se tkun l-id tieqa) bl-użu maqtugħa, aqleb għal tieqa b'id.

Għandu jkun hemm ċajta dwar l-espressjonijiet regolari u żewġ problemi, imma fil-fatt ma qed nuża xejn ikkumplikat. Għandi bżonn espressjonijiet regolari sabiex inkun nista’ nindika t-tmiem tal-linja (is-simbolu “$”) u niddistingwi “Mozilla Firefox$” minn “Mozilla Firefox (Private Browsing)$”.

Il-kmand jidher xi ħaġa bħal din:

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

Hawnhekk diġà tista 'raden dwar it-tieni karatteristika tal-iskrittura: jekk grep ma jirritorna xejn, allura l-applikazzjoni mixtieqa mhix miftuħa u għandek bżonn tibda billi tesegwixxi l-kmand mit-tieni parametru. U mbagħad iċċekkja perjodikament jekk it-tieqa meħtieġa nfetħitx sabiex tittrasferixxi l-attenzjoni għaliha. Mhux se niffoka fuq dan; kull min għandu bżonn se jħares lejn is-sorsi.

Meta twieqi tal-applikazzjoni ma jintgħarfux

Allura, tgħallimna kif tittrasferixxi l-fokus għat-tieqa tal-applikazzjoni mixtieqa. Imma x'jiġri jekk applikazzjoni jkollha aktar minn tieqa waħda miftuħa? Liema waħda għandi nagħti attenzjoni? L-iskript ta 'hawn fuq x'aktarx se jittrasferixxi għall-ewwel tieqa miftuħa. Madankollu, nixtiequ aktar flessibilità. Nixtieq inkun nista' niftakar liema tieqa għandna bżonn u naqleb għal dik it-tieqa partikolari.

L-idea kienet din: Jekk irridu niftakru tieqa speċifika għal kombinazzjoni ta 'ċavetta, allura għandna bżonn nagħfas din il-kombinazzjoni meta t-tieqa mixtieqa tkun fil-fokus. Fil-futur, meta tagħfas din il-kombinazzjoni, l-attenzjoni tingħata lil din it-tieqa. Sakemm tagħlaq it-tieqa jew nagħmlu reset għal din il-kombinazzjoni ta 'skript showwinDetach.

Algoritmu tal-iskript showwin xi ħaġa bħal din:

  • Iċċekkja jekk qabel ftakartniex l-id tat-tieqa li għaliha għandha tiġi trasferita l-attenzjoni.
    Jekk tiftakar u tali tieqa għadha teżisti, allura nittrasferixxu l-attenzjoni għaliha u noħorġu.
  • Aħna nħarsu lejn liema tieqa bħalissa qed tiffoka, u jekk taqbel mat-talba tagħna, imbagħad ftakar l-id tagħha biex tmur lejha fil-futur u toħroġ.
  • Immorru f'mill-inqas xi tieqa xierqa jekk teżisti jew niftħu l-applikazzjoni mixtieqa.

Tista 'ssir taf liema tieqa bħalissa qed tiffoka billi tuża l-utilità tal-console xdotool billi tikkonverti l-output tagħha f'format eżadeċimali:

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

L-eħfef mod biex tiftakar xi ħaġa f'bash huwa li toħloq fajls f'sistema ta 'fajls virtwali li tinsab fil-memorja. F'Ubuntu dan huwa attivat awtomatikament f' /dev/shm/. Ma nista 'ngħid xejn dwar distribuzzjonijiet oħra, nittama li hemm xi ħaġa simili wkoll. Tista 'tfittex bil-kmand:

$ mount -l | grep tmpfs

L-iskrittura se toħloq direttorji vojta f'dan il-folder, bħal dan: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. Barra minn hekk, kull darba li tissejjaħ se toħloq symlink /dev/shm/$USER/showwin/showwin_last fuq /dev/shm/$USER/showwin/$SEARCH_REGEX. Dan ikun meħtieġ sabiex, jekk meħtieġ, titneħħa l-id tat-tieqa għal ċerta kombinazzjoni bl-użu ta 'skript showwinDetach.

X'jista' jittejjeb

L-ewwelnett, l-iskripts għandhom jiġu kkonfigurati manwalment. Żgur, minħabba l-ħtieġa li wieħed jidħol u jagħmel ħafna b'idejk, ħafna minnkom lanqas biss se tipprova tikkonfigura s-sistema. Kieku kien possibbli li sempliċement tinstalla l-pakkett u tikkonfigura kollox aktar faċilment, allura forsi jikseb xi popolarità. U mbagħad ara, l-applikazzjoni tkun rilaxxata f'distribuzzjonijiet standard.

U forsi jista 'jsir aktar faċli. Jekk bl-id ta 'tieqa tista' ssib l-id tal-proċess li ħoloqha, u bl-id tal-proċess tista 'ssir taf liema kmand ħoloqha, allura jkun possibbli li tiġi awtomatizzata s-setup. Fil-fatt, ma fhimtx jekk dak li ktibt f’dan il-paragrafu kienx possibbli. Il-fatt hu li jien personalment sodisfatt bil-mod kif taħdem issa. Imma jekk xi ħadd ieħor għajri jsib l-approċċ kollu konvenjenti u xi ħadd itejjeb, allura nkun kuntent li nuża soluzzjoni aħjar.

Problema oħra, kif diġà ktibt, hija li f'xi każijiet it-twieqi ma jistgħux jiġu distinti minn xulxin. S'issa osservajt dan biss bl-incognito fil-kromju/kromju, imma forsi hemm xi ħaġa simili x'imkien ieħor. Bħala l-aħħar għażla, dejjem hemm l-għażla ta 'kombinazzjonijiet universali Alt + 1...Alt + 0. Għal darb'oħra, nuża Firefox u għalija personalment din il-problema mhix sinifikanti.

Imma l-problema sinifikanti għalija hija li nuża Mac OS għax-xogħol u ma stajt nikkonfigura xi ħaġa bħal dik hemmhekk. utilità wmctrl Naħseb li stajt ninstallah, iżda ma tantx jaħdem fuq Mac OS. Xi ħaġa tista 'ssir bl-applikazzjoni Awtomatur, iżda huwa tant bil-mod li mhuwiex konvenjenti li tuża anki meta tkun qed taħdem. Ma stajtx ukoll inwaqqaf kombinazzjonijiet ewlenin sabiex ħadmu fil-programmi kollha. Jekk f'daqqa waħda xi ħadd joħroġ b'soluzzjoni, inkun kuntent li nużaha.

Minflok ma tikkonkludi

Irriżulta li kien numru kbir mhux mistenni ta 'kliem għal tali funzjonalità apparentement sempliċi. Xtaqt inwassal l-idea u ma ngħabx it-test żżejjed, imma għadni ma sibtx kif ngħidha b'mod aktar sempliċi. Forsi jkun aħjar fil-format tal-vidjo, iżda n-nies ma jogħġobhomx hekk hawn.

Tkellimt ftit dwar x'hemm taħt il-barnuża tal-iskript u kif tikkonfiguraha. Ma dħaltx fid-dettalji tal-iskript innifsu, iżda huwa biss 50 linja, għalhekk mhux diffiċli biex tifhem.

Nittama li xi ħadd ieħor jipprova din l-idea u forsi anke japprezzaha. Nista’ ngħid dwari nnifsi li l-iskript inkiteb madwar 3 snin ilu u huwa konvenjenti ĦAFNA għalija. Tant konvenjenti li tikkawża skumdità serja meta taħdem ma 'kompjuters ta' nies oħra. U b'MacBook li jaħdem.

Link għal skripts

Sors: www.habr.com

Żid kumment