Rješavanje problema s prebacivanjem pomoću alt+shift u Linuxu, u Electron aplikacijama

Pozdrav kolege!

Želim podijeliti svoje rješenje problema navedenog u naslovu. Na pisanje ovog članka potaknuo me kolega brnovk, koji nije bio lijen i ponudio djelomično (za mene) rješenje problema. Napravio sam svoju “štaku” koja mi je pomogla. Dijelim s tobom.

Opis problema

Koristio sam Ubuntu 18.04 za posao i nedavno sam primijetio da se kod promjene izgleda pomoću alt+shift u aplikacijama kao što su Visual Studio Code, Skype, Slack i druge koje su stvorene pomoću Electrona pojavljuje sljedeći problem: fokus iz polja za unos ide na vrh ploča prozora (izbornik). Iz drugih razloga, prešao sam na Fedora + KDE i shvatio da problem nije nestao. Dok sam tražio rješenje, našao sam prekrasan članak Kako sami popraviti Skype. Veliko hvala druže brnovk, koji je detaljno govorio o problemu i podijelio svoj način rješavanja istog. Ali metoda navedena u članku riješila je problem sa samo jednom aplikacijom, naime Skypeom. Za mene je također bilo kritično razumjeti Visual Studio Code, jer pisanje poruka s skačućim izbornikom, iako neugodno, nije toliko ako ste uključeni u razvoj. Plus, kolega je predložio rješenje u kojem izbornik aplikacije potpuno nestaje, a ja baš ne bih želio izgubiti izbornik u VS Codeu.

Pokušao sam shvatiti što nije u redu

Pa sam odlučio odvojiti vrijeme da shvatim što se događa. Sada ću ukratko opisati put kojim sam krenuo, možda će mi netko upućeniji u ovu materiju pomoći objasniti na koje sam poteškoće naišao.

Otvorio sam Visual Studio Code i počeo pritiskati različite kombinacije Alt+<%something%> da vidim kako će aplikacija reagirati. U gotovo svim slučajevima, sve kombinacije osim Alt+Shift radile su bez gubitka fokusa. Činilo se kao da netko jede pritisnuti Shift, koji je uslijedio nakon držanja Alta, a aplikacija je mislila da sam pritisnuo Alt, pa nisam ništa pritisnuo, pustila je Alt i radosno bacila moj fokus na svoj izbornik, što se činilo sasvim logičnim to.

Otvorio sam postavke za promjenu rasporeda tipkovnice (znate, ovaj dugačak popis s potvrdnim okvirima i kojekakvim postavkama za tipke) i postavio da mijenja raspored tipkom Alt, bez dodatnih klikova.

Rješavanje problema s prebacivanjem pomoću alt+shift u Linuxu, u Electron aplikacijama

Nakon toga, Alt+Tab za promjenu prozora prestao je raditi. Radio je samo Tab, odnosno opet mi je netko “pojeo” Alt. Više nije bilo pitanja o tome tko je taj "netko", ali nisam imao pojma što se s njim može učiniti.

No kako je problem nekako trebalo riješiti, palo mi je na pamet rješenje:

  1. U postavkama onemogućite prečac za promjenu rasporeda tipkovnice (poništite sve potvrdne okvire u odjeljku Prijeđi na drugi raspored);
  2. Stvorite vlastitu tipku prečaca koja bi mijenjala izgled za mene

Opis rješenja

Prvo, instalirajmo program koji vam omogućuje dodjeljivanje naredbi tipkama Xbindkeys. Nažalost, standardni alati nisu mi dopustili da stvorim prečac za kombinaciju kao što je Alt+Shift kroz lijepo sučelje. Može se učiniti za Alt+S, Alt+1, Alt+shift+Y itd. itd., ali to nije prikladno za naš zadatak.

sudo dnf install xbindkeysrc

Više detalja o tome dostupno je na ArchWiki
Zatim ćemo stvoriti oglednu datoteku postavki za program. Uzorak je prilično kratak, s nekoliko naredbi, upravo ono što vam je potrebno da shvatite kako s njim raditi:

xbindkeys -d > ~/.xbindkeysrc

Kao što možete vidjeti iz primjera u datoteci, moramo naznačiti tipku prečaca koju želimo koristiti i naredbu koju treba izvršiti. Izgleda jednostavno.


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

Kao prečac možete koristiti čitljiv tekst ili koristiti šifre tipki. Meni je uspjelo samo sa kodovima, ali nitko vam ne brani da malo eksperimentirate.

Za dobivanje kodova morate koristiti naredbu:

xbindkeys -k

Otvorit će se mali "X" prozor. Samo trebate pritisnuti tipke kada je fokus na ovom prozoru! Samo u ovom slučaju vidjet ćete nešto poput ovoga na terminalu:


[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x4 + c:39
    Control + s

U mom slučaju kombinacija tipki Alt+Shift izgleda ovako:

m:0x8 + c:50

Sada moramo biti sigurni da se izgled mijenja kada kliknete na ovu kombinaciju. Našao sam samo jednu radnu naredbu za određivanje izgleda:


setxkbmap ru
setxkbmap us

Kao što možete vidjeti iz primjera, može omogućiti samo jedan ili drugi izgled, tako da mi ništa nije palo na pamet osim pisanja skripte.


vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
        then `/usr/bin/setxkbmap us`
        else `/usr/bin/setxkbmap ru`
fi

Sada, ako se datoteke .xbindkeysrc i layout.sh nalaze u istom direktoriju, konačni prikaz datoteke .xbindkeysrc izgleda ovako:


# Examples of commands:

"xbindkeys_show"
  control+shift + q

# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

# specify a mouse button
"xterm"
  control + b:2
#А вот то, что добавил я
"./layout.sh"
  m:0x8 + c:50

Nakon toga primjenjujemo promjene:


xbindkeys -p

I možete provjeriti. Ne zaboravite onemogućiti sve opcije za promjenu izgleda u standardnim postavkama.

Ukupan

Kolege, nadam se da će ovaj članak nekome pomoći da se brzo riješi dosadnog problema. Osobno sam cijeli slobodan dan proveo pokušavajući nekako shvatiti i riješiti problem, kako me više ne bi ometao tijekom radnog vremena. Napisao sam ovaj članak kako bih nekome uštedio vrijeme i živce. Mnogi od vas koriste alternativnu metodu mijenjanja izgleda i ne razumiju u čemu je problem. Ja osobno volim mijenjati s Alt+Shift. I tako želim da funkcionira. Ako dijelite moje mišljenje i suočeni ste s ovim problemom, ovaj bi vam članak trebao pomoći.

Izvor: www.habr.com

Dodajte komentar