Îmi place Alt + Stânga/Dreapta să schimb fila în timp ce sunt într-un browser, dar să fac ceea ce fac în mod normal în alte programe.Majoritatea browserelor nu vă permit să aveți legături personalizate de tastatură (aproape întotdeauna folosesc Ctrl + PgUp/PgDn, care pe tastatura mea este Ctrl + Fn + Sus/Jos), așa că am rămas blocat cu o soluție la nivel de sistem de operare: bind Alt + Left/ Dreptul de a face Ctrl + PgUp/PgDn dacă fereastra curentă este un browser și să fie ei înșiși în caz contrar. În X11 am realizat acest lucru cu AutoKey, dar vreau o soluție care să funcționeze în Wayland. Iată unde sunt, cheie-mapper nu permite comenzi bash, Hawk ar putea funcționa (nu am încercat), KMonad nu este suficient de flexibil cu scripturile Bash, wtip și ydotool nu a funcționat pentru mine, dar evemu-event a funcționat (l-am găsit Aici), pot obține numele ferestrei curente folosind
apel gdbus \
--sesiune \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "
global
.get_window_actors()
.map(a=>a.meta_window)
.find(w=>w.has_focus())
.get_wm_class()" \
| tăiat -d'"' -f 2
din care am găsit Aici. Asta înseamnă că pot face acest scenariu
#!/bin/bash
# setsid --furk gnome-terminal
# Verifică dacă fereastra actuală este Google Chrome (ar putea fi adaptată pentru Firefox)
# și dacă este, trimite o tastă Ctrl + PgUp (mută focusul filei cu o filă la stânga)
# Este intenționat să fie apelat de un lucru de gestionare a cheilor (KMonad, de exemplu) când este apăsat Alt + Stânga
# Așa simul apasarea tastelor
# Preluat de aici: https://unix.stackexchange.com/questions/381831/keyboard-emulation-in-wayland
# Necesita sudo apt install evemu-tools
function type_key() {
EVDEVICE=/dev/input/event4
# apăsați tastele în jos în ordine succesială
pentru cheie în $@; do
evemu-event $EVDEVICE --type EV_KEY --code KEY_$key --valoarea 1 --sync
Terminat
# ridicați tastele în ordine secvențială
pentru (( idx=${#@}; idx>0; idx-- )); do
evemu-event $EVDEVICE --type EV_KEY --code KEY_${!idx} --value 0 --sync
Terminat
}
# Uită-te și la https://github.com/sezanzeb/key-mapper, nu poate face comenzi bash, dar altfel
# arată destul de bine pentru aceste lucruri
# Nu știu nicio modalitate de a obține numele ferestrei în Wayland în general, o pot face dacă suntem în Gnome
# Preluat de aici: https://unix.stackexchange.com/questions/399753/how-to-get-a-list-of-active-windows-when-using-wayland
WINDOW_CLASS=$(apel gdbus \
--sesiune \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "
global
.get_window_actors()
.map(a=>a.meta_window)
.find(w=>w.has_focus())
.get_wm_class()" \
| tăiat -d'"' -f 2)
# Utilizați „Google-chrome” pentru Chrome și „firefox” pentru Firefox
dacă [[ "$WINDOW_CLASS" = "gnome-terminal-server" ]] || [[ "$WINDOW_CLASS" = "Google-chrome" ]] || [[ "$WINDOW_CLASS" = "firefox" ]]
atunci
type_key RIGHTCTRL PAGEUP
altfel
type_key DREAPTALT STÂNGA
fi
# Verificați managerul de aplicații web
# https://ubuntuhandbook.org/index.php/2021/01/install-linux-mints-web-app-manager-ubuntu-20-04/
și utilizați Setări Gnome -> Comenzi rapide de la tastatură -> Comenzi rapide personalizate -> + pentru a lega Alt + Stânga la scriptul de mai sus (necesită să dați scriptului un „sudo pass”, așa cum ați făcut Aici). Cu toate acestea, deși scriptul schimbă filele atunci când este executat din terminalul Gnome, nu schimbă filele în Google Chrome (poate că aceasta este o problemă de eveniment evemu, poate că această alternativă ar funcționa evescript?) și nici nu schimbă filele atunci când este apelat folosind combinarea globală de taste Alt + Stânga setată de Gnome.
Aveți vreo idee despre cum aș putea face asta să funcționeze? Mi-ar plăcea să nu fiu nevoit să instalez încă un program precum KMonad pentru ca legarea globală să funcționeze, dar cerșetorii nu pot alege. Cel mai ideal ar fi o modalitate de a trimite apăsări de taste din GJS, astfel încât totul să poată fi făcut dintr-un singur script GJS curat.
Versiunea Gnome: GNOME Shell 3.38.4
Folosesc Material Shell, în cazul în care este relevant