Рейтинг:0

Установите Alt + Left/Right для скриптов для переключения вкладок

флаг br

Мне нравится Alt + Left/Right, чтобы переключать вкладки в браузере, но делать то, что они обычно делают в других программах.Большинство браузеров не позволяют вам иметь собственные сочетания клавиш (они почти всегда используют Ctrl + PgUp/PgDn, что на моей клавиатуре — Ctrl + Fn + Up/Down), поэтому я застрял с решением на уровне ОС: связать Alt + Left/ Правильно делать Ctrl+PgUp/PgDn, если текущим окном является браузер, и быть самим собой в противном случае. В X11 я добился этого с помощью AutoKey, но мне нужно решение, которое работает в Wayland. Вот где я нахожусь, сопоставитель ключей не разрешает команды bash, Хоук может сработает (не пробовал) КМонад недостаточно гибок со сценариями Bash, wtype и йдотул у меня не сработало, но сработало evemu-event (я нашел здесь), я могу получить текущее имя окна, используя

вызов gdbus \
  --сессия \
  --dest org.gnome.Shell \
  --object-path /org/gnome/Shell \
  --метод org.gnome.Shell.Eval "
    Глобальный
      .get_window_actors()
      .map(a=>a.meta_window)
      .find(w=>w.has_focus())
      .get_wm_class()" \
  | вырезать -d'"' -f 2

который я нашел из здесь. Это означает, что я могу сделать этот скрипт

#!/бин/баш
#setsid --fork gnome-терминал
# Проверяет, является ли текущее окно Google Chrome (может быть адаптировано для Firefox)
# и если это так, то отправляет клавишу Ctrl + PgUp (перемещает фокус вкладки на одну вкладку влево)
# Предполагается, что он будет вызываться системой управления ключами (например, KMonad) при нажатии Alt + Left

# Вот как я имитирую нажатия клавиш
# Взято отсюда: https://unix.stackexchange.com/questions/381831/keyboard-emulation-in-wayland
# Требуется sudo apt для установки evemu-tools
функция type_key() {
    EVDEVICE=/dev/input/event4
    # нажимайте клавиши вниз в последовательном порядке
    для ключа в $@; делать
        evemu-event $EVDEVICE --type EV_KEY --code KEY_$key --value 1 --sync
    сделано


    # поднимаем клавиши вверх по порядку
    for (( idx=${#@}; idx>0; idx-- )); делать
        evemu-event $EVDEVICE --type EV_KEY --code KEY_${!idx} --value 0 --sync
    сделано
}
# Также загляните на https://github.com/sezanzeb/key-mapper, он не может выполнять команды bash, но в остальном
# выглядит довольно хорошо для этого материала


# Я не знаю способа получить имя окна в Wayland, я могу сделать это, если мы в Gnome
# Взято отсюда: https://unix.stackexchange.com/questions/399753/how-to-get-a-list-of-active-windows-when-using-wayland
WINDOW_CLASS=$(вызов gdbus \
  --сессия \
  --dest org.gnome.Shell \
  --object-path /org/gnome/Shell \
  --метод org.gnome.Shell.Eval "
    Глобальный
      .get_window_actors()
      .map(a=>a.meta_window)
      .find(w=>w.has_focus())
      .get_wm_class()" \
  | вырезать -д'"' -ф 2)

# Используйте «Google-chrome» для Chrome и «firefox» для Firefox
if [[ "$WINDOW_CLASS" = "терминальный-сервер gnome" ]] || [[ "$WINDOW_CLASS" = "Google-chrome" ]] || [[ "$WINDOW_CLASS" = "фаерфокс" ]]
тогда
  type_key RIGHTCTRL PAGEUP
еще
  type_key ВПРАВО ВЛЕВО
фи

# Проверьте менеджер веб-приложений
# https://ubuntuhandbook.org/index.php/2021/01/install-linux-mints-web-app-manager-ubuntu-20-04/

и используйте «Настройки Gnome» -> «Сочетания клавиш» -> «Пользовательские сочетания клавиш» -> +, чтобы привязать Alt + Left к приведенному выше скрипту (для этого требуется дать скрипту «sudo pass», как это сделано здесь). Однако, хотя скрипт переключает вкладки при выполнении из терминала Gnome, он не переключает вкладки в Google Chrome (возможно, это проблема evmu-event, возможно, эта альтернатива сработает). эвскрипт?) и не переключает вкладки при вызове с помощью глобальной комбинации клавиш Gnome set Alt + Left.

Любые идеи о том, как я могу заставить это работать? Я хотел бы не устанавливать еще одну программу, такую ​​как KMonad, чтобы заставить работать глобальную привязку, но нищие не могут выбирать. Самым идеальным был бы способ отправки нажатий клавиш из GJS, чтобы все это можно было сделать из одного чистого скрипта GJS.

Версия гнома: GNOME Shell 3.38.4 Я использую Material Shell, если это уместно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.