Usimamizi mbadala wa dirisha katika Linux

Mimi ni mmoja wa wale wanaoweka Caps Lock ili kubadili mpangilio kwa sababu mimi ni mvivu sana kubonyeza vitufe 2 ninapoweza kubonyeza moja. Ningependa hata funguo 2 zisizohitajika: Ningetumia moja kuwasha mpangilio wa Kiingereza, na ya pili kwa Kirusi. Lakini ufunguo wa pili usiohitajika ni kupiga menyu ya muktadha, ambayo sio lazima sana kwamba inakatwa na watengenezaji wengi wa kompyuta ndogo. Kwa hiyo inabidi uridhike na ulichonacho.

Na pia sitaki kutafuta icons zao kwenye upau wa kazi wakati wa kubadilisha madirisha, au kupata majina wakati wa kuvinjari. Tabia ya Alt +, tembeza kwenye kompyuta za mezani, nk. Nataka kubonyeza mchanganyiko muhimu (bora moja tu, lakini hakuna funguo za bure zisizo za lazima tena) na ufikie mara moja kwenye dirisha ninalohitaji. Kwa mfano kama hii:

  • Alt+F: Firefox
  • Alt+D: Firefox (Kuvinjari kwa Kibinafsi)
  • Alt+T: Kituo
  • Alt+M: Kikokotoo
  • Alt+E: Wazo la IntelliJ
  • na kadhalika.

Aidha, kwa kushinikiza, kwa mfano, juu Alt+M Ninataka kuona kikokotoo bila kujali kama programu hii inaendeshwa kwa sasa. Ikiwa inaendesha, basi dirisha lake linahitaji kupewa kuzingatia, na ikiwa sio, endesha programu inayotakiwa na uhamishe uzingatiaji wakati unapakia.

Kwa kesi ambazo hazijafunikwa na hati iliyotangulia, ninataka kuwa na michanganyiko ya vitufe vya ulimwengu wote ambayo inaweza kupewa kwa urahisi kwa madirisha yoyote wazi. Kwa mfano, nina michanganyiko 10 iliyotolewa kutoka Alt + 1 kwa Alt + 0, ambazo hazijaunganishwa na programu yoyote. Naweza kubofya tu Alt + 1 na dirisha ambalo linaangaziwa kwa sasa litapata umakini wakati wa kubofya Alt + 1.

Chini ya kukata kuna maelezo ya vipengele kadhaa zaidi na jibu la jinsi hii inaweza kufanywa. Lakini nitakuonya mara moja kwamba ubinafsishaji kama huo "kwa ajili yako" unaweza kusababisha kulevya kali na hata kujiondoa ikiwa unahitaji kutumia Windows, Mac OS au hata kompyuta ya mtu mwingine na Linux.

Kwa kweli, ikiwa unafikiria juu yake, hatutumii programu nyingi kila siku. Kivinjari, terminal, IDE, aina fulani ya mjumbe, meneja wa faili, calculator na, labda, hiyo ni karibu yote. Hakuna michanganyiko mingi muhimu inayohitajika kushughulikia 95% ya kazi za kila siku.

Kwa programu ambazo zina madirisha kadhaa wazi, moja yao inaweza kuteuliwa kama kuu. Kwa mfano, una madirisha mengi ya IntelliJ Idea yaliyofunguliwa na kupewa Alt + E. Katika hali ya kawaida, wakati bonyeza Alt + E dirisha fulani la programu hii litafungua, uwezekano mkubwa ndilo lililofunguliwa kwanza. Walakini, ukibofya Alt + E wakati moja ya madirisha ya programu hii tayari inalenga, basi dirisha hili litapewa kama kuu na ndilo litakalopewa kuzingatia wakati mchanganyiko unaofuata unasisitizwa.

Dirisha kuu linaweza kukabidhiwa tena. Ili kufanya hivyo, lazima kwanza uweke upya mchanganyiko, na kisha uwape dirisha lingine kama dirisha kuu. Ili kuweka upya mchanganyiko, unahitaji kushinikiza mchanganyiko yenyewe, na kisha mchanganyiko maalum wa kuweka upya, nimepewa Nafasi ya nyuma ya Alt. Hii itaita hati ambayo itaondoa dirisha kuu la mchanganyiko uliopita. Na kisha unaweza kugawa dirisha kuu mpya kama ilivyoelezewa katika aya iliyotangulia. Kuweka upya dirisha lililounganishwa kwa mchanganyiko wa ulimwengu wote hutokea kwa njia sawa.

Utangulizi uligeuka kuwa mrefu, lakini nilitaka kwanza kusema tutafanya nini, na kisha kuelezea jinsi ya kuifanya.

Kwa wale ambao wamechoka kusoma

Kwa kifupi, kiunga cha maandishi iko mwisho wa kifungu.

Lakini bado hutaweza kusakinisha na kuitumia mara moja. Utalazimika kwanza kujua jinsi hati inavyopata dirisha linalohitajika. Bila hii, haitawezekana kuwaambia hati ambapo umakini unahitaji kuhamishwa. Na unahitaji kuelewa nini cha kufanya ikiwa ghafla dirisha linalofaa halipatikani.

Na sitazingatia jinsi ya kusanidi utekelezaji wa maandishi kwa kushinikiza mchanganyiko muhimu. Kwa mfano, katika KDE iko katika Mipangilio ya Mfumo β†’ Njia za mkato β†’ Njia za mkato maalum. Hii inapaswa pia kuwa katika wasimamizi wengine wa dirisha.

Tunakuletea wmctrl

Wmctrl - Huduma ya koni ya kuingiliana na Kidhibiti cha Dirisha la X. Huu ndio mpango muhimu wa hati. Hebu tuangalie kwa haraka jinsi unavyoweza kuitumia.

Kwanza, hebu tuonyeshe orodha ya madirisha wazi:

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

Chaguo -l inaonyesha orodha ya madirisha yote wazi, na -Ρ… inaongeza jina la darasa kwa matokeo (skype.Skype, Navigator.Firefox na kadhalika). Hapa tunahitaji kitambulisho cha dirisha (safu 1), jina la darasa (safu 3) na jina la dirisha (safu wima ya mwisho).

Unaweza kujaribu kuamsha dirisha fulani kwa kutumia chaguo -a:

$ wmctrl -a skype.Skype -x

Ikiwa kila kitu kilikwenda kulingana na mpango, dirisha la Skype linapaswa kuonekana kwenye skrini. Ikiwa badala ya chaguo -x kutumia chaguo -i, basi badala ya jina la darasa unaweza kutaja kitambulisho cha dirisha. Shida ya kitambulisho ni kwamba kitambulisho cha dirisha hubadilika kila wakati programu inapozinduliwa na hatuwezi kujua mapema. Kwa upande mwingine, sifa hii inabainisha kwa pekee dirisha, ambayo inaweza kuwa muhimu wakati programu inafungua zaidi ya dirisha moja. Zaidi juu ya hili mbele kidogo.

Katika hatua hii tunahitaji kukumbuka kuwa tutatafuta dirisha tunalotaka kwa kutumia regex kwa pato wmctrl -lx. Lakini hiyo haimaanishi kwamba tunapaswa kutumia kitu ngumu. Kawaida jina la darasa au jina la dirisha linatosha.

Kimsingi, wazo kuu linapaswa kuwa wazi. Katika mipangilio ya hotkeys/njia za mkato za kimataifa kwa kidhibiti chako cha dirisha, sanidi mchanganyiko unaohitajika ili kutekeleza hati.

Jinsi ya kutumia maandishi

Kwanza unahitaji kufunga huduma za console wmctrl ΠΈ xdotool:

$ sudo apt-get install wmctrl xdotool

Ifuatayo, unahitaji kupakua hati na kuziongeza $ PATH. Kawaida mimi huwaweka ndani ~/bin:

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

Ikiwa saraka ~/bin haikuwepo, basi unahitaji kuiunda na kuwasha tena (au ingia tena), vinginevyo ~/bin haitapiga $ PATH. Ikiwa kila kitu kimefanywa kwa usahihi, basi maandiko yanapaswa kupatikana kutoka kwa console na kukamilika kwa Tab inapaswa kufanya kazi.

Hati kuu showwin inachukua vigezo 2: ya kwanza ni regex, ambayo tutafuta dirisha linalohitajika, na parameter ya pili ni amri ambayo inahitaji kutekelezwa ikiwa dirisha linalohitajika haipatikani.

Unaweza kujaribu kuendesha hati, kwa mfano:

$ showwin "Mozilla Firefox$" firefox

Ikiwa Firefox imewekwa, dirisha lake linapaswa kupewa kuzingatia. Hata kama Firefox haifanyi kazi, inapaswa kuanza.

Ikiwa inafanya kazi, basi unaweza kujaribu kusanidi utekelezaji wa amri kwenye mchanganyiko. Katika mipangilio ya hotkeys/njia za mkato za kimataifa ongeza:

  • Alt+F: showwin "Mozilla Firefox$" firefox
  • Alt+D: showwin "Mozilla Firefox (Kuvinjari kwa Kibinafsi) $" "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

N.k. Kila mtu anaweza kusanidi michanganyiko muhimu na programu anavyoona inafaa.
Ikiwa kila kitu kilifanyika kwa usahihi, basi kwa kutumia mchanganyiko hapo juu tutaweza kubadili kati ya madirisha kwa kubonyeza funguo tu.

Nitawakatisha tamaa wapenzi wa chrome: inaweza kutofautisha dirisha la kawaida kwa matokeo yake kwa hali fiche wmctrl Hauwezi, wana majina ya darasa sawa na majina ya dirisha. Katika regex iliyopendekezwa, herufi N* na mimi* zinahitajika tu ili misemo hii ya kawaida itofautiane kutoka kwa kila mmoja na inaweza kupewa kama windows kuu.

Ili kuweka upya dirisha kuu la mchanganyiko uliopita (kwa kweli kwa regex, ambayo showwin iliyoitwa mara ya mwisho) unahitaji kupiga hati showwinDetach. Nina hati hii iliyopewa mchanganyiko muhimu Nafasi ya nyuma ya Alt.

Kwenye hati showwin kuna kazi moja zaidi. Inapoitwa na parameter moja (katika kesi hii parameter ni kitambulisho tu), haina kuangalia regex kabisa, lakini inazingatia madirisha yote kuwa yanafaa. Kwa yenyewe, hii inaonekana haina maana, lakini kwa njia hii tunaweza kuteua dirisha lolote kama kuu na kubadili haraka kwenye dirisha hilo.

Nina michanganyiko ifuatayo iliyosanidiwa:

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

Kwa njia hii naweza kufunga madirisha yoyote kwa mchanganyiko Alt + 1...Alt + 0. Kwa kubofya tu Alt + 1 Ninafunga dirisha la sasa kwa mchanganyiko huu. Ninaweza kughairi kufunga kwa kubofya Alt + 1na kisha Nafasi ya nyuma ya Alt. Au funga dirisha, ambayo pia inafanya kazi.

Ifuatayo nitakuambia maelezo kadhaa ya kiufundi. Sio lazima uzisome, lakini jaribu tu kuziweka na uone. Lakini bado ningependekeza kuelewa maandishi ya watu wengine kabla ya kuyaendesha kwenye kompyuta yako :).

Jinsi ya kutofautisha kati ya madirisha tofauti ya programu moja

Kimsingi, mfano wa kwanza kabisa "wmctrl -a skype.Skype -x" ulikuwa ukifanya kazi na unaweza kutumika. Lakini wacha tuangalie tena mfano na Firefox, ambayo madirisha 2 yamefunguliwa:

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

Dirisha la kwanza ni hali ya kawaida, na ya pili ni Kuvinjari kwa Kibinafsi. Ningependa kuzingatia madirisha haya kama programu tofauti na ubadilishe kwao kwa kutumia mchanganyiko tofauti wa funguo.

Ni muhimu kufanya ugumu wa hati inayobadilisha windows. Nilitumia suluhisho hili: onyesha orodha ya windows zote, fanya grep kwa regex, chukua mstari wa kwanza na kichwa, pata safu wima ya kwanza (hii itakuwa kitambulisho cha dirisha) kwa kutumia kukata, badilisha hadi dirisha kwa kitambulisho.

Kunapaswa kuwa na utani juu ya misemo ya kawaida na shida mbili, lakini kwa kweli situmii chochote ngumu. Ninahitaji maneno ya kawaida ili niweze kuonyesha mwisho wa mstari (ishara ya β€œ$”) na kutofautisha β€œMozilla Firefox$” na β€œMozilla Firefox (Kuvinjari kwa Faragha)$”.

Amri inaonekana kitu kama hiki:

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

Hapa unaweza tayari nadhani juu ya kipengele cha pili cha hati: ikiwa grep hairudishi chochote, basi programu inayotaka haijafunguliwa na unahitaji kuianzisha kwa kutekeleza amri kutoka kwa paramu ya pili. Na kisha angalia mara kwa mara ikiwa dirisha linalohitajika limefunguliwa ili kuhamisha umakini kwake. Sitazingatia hili; yeyote anayehitaji ataangalia vyanzo.

Wakati madirisha ya programu hayawezi kutofautishwa

Kwa hiyo, tumejifunza jinsi ya kuhamisha kuzingatia kwenye dirisha la programu inayotakiwa. Lakini vipi ikiwa programu ina zaidi ya dirisha moja iliyofunguliwa? Je, ninapaswa kulipa kipaumbele kwa lipi? Hati iliyo hapo juu itahamishiwa kwa dirisha la kwanza lililofunguliwa. Hata hivyo, tungependa kubadilika zaidi. Ningependa kuweza kukumbuka ni dirisha gani tunalohitaji na kubadili kwenye dirisha hilo.

Wazo lilikuwa hili: Ikiwa tunataka kukumbuka dirisha maalum kwa mchanganyiko muhimu, basi tunahitaji kushinikiza mchanganyiko huu wakati dirisha linalohitajika linazingatia. Katika siku zijazo, unaposisitiza mchanganyiko huu, mtazamo utapewa dirisha hili. Hadi dirisha limefungwa au tufanye upya kwa mchanganyiko huu wa hati showwinDetach.

Algorithm ya hati showwin kitu kama hiki:

  • Angalia ikiwa hapo awali tumekumbuka kitambulisho cha dirisha ambalo lengo linapaswa kuhamishiwa.
    Ikiwa unakumbuka na dirisha kama hilo bado lipo, basi tunahamisha umakini kwake na kutoka.
  • Tunaangalia ni dirisha gani linaloangaziwa kwa sasa, na ikiwa linalingana na ombi letu, basi kumbuka kitambulisho chake cha kwenda kwake katika siku zijazo na kutoka.
  • Tunaenda kwa angalau dirisha linalofaa ikiwa lipo au kufungua programu unayotaka.

Unaweza kujua ni dirisha gani ambalo kwa sasa linaangaziwa kwa kutumia matumizi ya kiweko cha xdotool kwa kubadilisha pato lake kuwa umbizo la hexadecimal:

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

Njia rahisi ya kukumbuka kitu katika bash ni kuunda faili katika mfumo wa faili ulio kwenye kumbukumbu. Katika Ubuntu hii inawezeshwa na chaguo-msingi in /dev/shm/. Siwezi kusema chochote kuhusu usambazaji mwingine, natumai kuwa kuna kitu kama hicho pia. Unaweza kuangalia na amri:

$ mount -l | grep tmpfs

Hati itaunda saraka tupu kwenye folda hii, kama hii: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. Zaidi ya hayo, kila wakati inapoitwa itaunda ulinganifu /dev/shm/$USER/showwin/showwin_last juu ya /dev/shm/$USER/showwin/$SEARCH_REGEX. Hii itahitajika ili, ikiwa ni lazima, kuondoa kitambulisho cha dirisha kwa mchanganyiko fulani kwa kutumia hati showwinDetach.

Nini kinaweza kuboreshwa

Kwanza, hati lazima zisanidiwe kwa mikono. Hakika, kwa sababu ya hitaji la kujipenyeza na kufanya mengi kwa mikono yako, wengi wenu hawatajaribu hata kusanidi mfumo. Ikiwa ingewezekana kusanikisha kifurushi na kusanidi kila kitu kwa urahisi zaidi, basi labda ingepata umaarufu fulani. Na kisha angalia, programu itatolewa kwa usambazaji wa kawaida.

Na labda inaweza kufanywa kwa urahisi. Ikiwa kwa kitambulisho cha dirisha unaweza kujua kitambulisho cha mchakato ulioiunda, na kwa kitambulisho cha mchakato unaweza kujua ni amri gani iliyoiunda, basi itawezekana kusanidi kiotomatiki. Kwa kweli, sikuelewa ikiwa nilichoandika katika aya hii kiliwezekana. Ukweli ni kwamba mimi binafsi nimeridhika na jinsi inavyofanya kazi sasa. Lakini ikiwa mtu mwingine zaidi yangu anaona njia nzima kuwa rahisi na mtu akaiboresha, basi nitafurahi kutumia suluhisho bora zaidi.

Shida nyingine, kama nilivyoandika tayari, ni kwamba katika hali zingine windows haziwezi kutofautishwa kutoka kwa kila mmoja. Kufikia sasa nimeona hii tu na hali fiche kwenye chrome/chromium, lakini labda kuna kitu kama hicho mahali pengine. Kama mapumziko ya mwisho, daima kuna chaguo la mchanganyiko wa ulimwengu wote Alt + 1...Alt + 0. Tena, ninatumia Firefox na kwangu kibinafsi shida hii sio muhimu.

Lakini shida kubwa kwangu ni kwamba mimi hutumia Mac OS kwa kazi na sikuweza kusanidi kitu kama hicho hapo. matumizi wmctrl Nadhani niliweza kuisanikisha, lakini haifanyi kazi kwenye Mac OS. Kitu kinaweza kufanywa na programu Kitendawili, lakini ni polepole sana kwamba haifai kutumia hata wakati inafanya kazi. Pia sikuweza kusanidi michanganyiko muhimu ili ifanye kazi katika programu zote. Ikiwa mtu ghafla atakuja na suluhisho, nitafurahi kuitumia.

Badala ya hitimisho

Ilibadilika kuwa idadi kubwa ya maneno bila kutarajia kwa utendaji unaoonekana kuwa rahisi. Nilitaka kuwasilisha wazo hilo na sio kupakia maandishi kupita kiasi, lakini bado sijafikiria jinsi ya kusema kwa urahisi zaidi. Labda itakuwa bora katika umbizo la video, lakini watu hawapendi kwa njia hiyo hapa.

Nilizungumza kidogo juu ya kile kilicho chini ya kofia ya hati na jinsi ya kuisanidi. Sikuingia katika maelezo ya script yenyewe, lakini ni mistari 50 tu, hivyo si vigumu kuelewa.

Natumaini kwamba mtu mwingine atajaribu wazo hili na labda hata kufahamu. Ninaweza kusema juu yangu mwenyewe kuwa maandishi yaliandikwa kama miaka 3 iliyopita na ni rahisi sana kwangu. Ni rahisi sana kwamba husababisha usumbufu mkubwa wakati wa kufanya kazi na kompyuta za watu wengine. Na MacBook inayofanya kazi.

Unganisha kwa hati

Chanzo: mapenzi.com

Kuongeza maoni