LINUX.ORG.RU

Убрать выскакивающие меню в Electron приложениях для Gnome 3

 , ,


0

1

Например в Ubuntu, если использовать приложения на Electron, такие как Skype, VSCode, Atom, OnlyOffice, то можно столкнутся с неприятным багом, когда нажатие Alt+Shift открывает меню.

Как я это исправил:

  • Отключить в настройках все бинды на Alt+Shift, в том числе и переключение раскладки в Gnome Tweaks
  • Создать файл /usr/bin/switch-keyboard-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
    
    if [ "$LAYOUT" == "ru" ]; then
      gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval  "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
    else
      gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval  "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"
    fi
    
  • Сделать
    chmod +x /usr/bin/switch-keyboard-layout.sh
  • В домашнюю папку вписать файл keybinder.py
    #!/usr/bin/env python3
    import subprocess
    import sys
    
    # defining keys & strings to be used
    key = "org.gnome.settings-daemon.plugins.media-keys custom-keybindings"
    subkey1 = key.replace(" ", ".")[:-1]+":"
    item_s = "/"+key.replace(" ", "/").replace(".", "/")+"/"
    firstname = "custom"
    # get the current list of custom shortcuts
    get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
    array_str = get("gsettings get "+key)
    # in case the array was empty, remove the annotation hints
    command_result = array_str.lstrip("@as")
    current = eval(command_result)
    # make sure the additional keybinding mention is no duplicate
    n = 1
    while True:
        new = item_s+firstname+str(n)+"/"
        if new in current:
            n = n+1
        else:
            break
    # add the new keybinding to the list
    current.append(new)
    # create the shortcut, set the name, command and shortcut key
    cmd0 = 'gsettings set '+key+' "'+str(current)+'"'
    cmd1 = 'gsettings set '+subkey1+new+" name '"+sys.argv[1]+"'"
    cmd2 = 'gsettings set '+subkey1+new+" command '"+sys.argv[2]+"'"
    cmd3 = 'gsettings set '+subkey1+new+" binding '"+sys.argv[3]+"'"
    
    for cmd in [cmd0, cmd1, cmd2, cmd3]:
        subprocess.call(["/bin/bash", "-c", cmd])
    
  • Запустить из домашней папки
    python3 keybinder.py 'keyboard layout switch' '/usr/bin/switch-keyboard-layout.sh' '<Alt>Shift_L'
    после чего keybinder.py удалить, или дальше использовать

Можете предлагать свои варианты!

Ответ на: комментарий от mydibyje

Да, включает бинд Alt+Shift, но уже с кастомной переключалкой /usr/bin/switch-keyboard-layout.sh, разница в том что эти бинды уже не открывают меню.

MOPKOBKA ★★ ()
Последнее исправление: MOPKOBKA (всего исправлений: 1)

Выглядит как решение только для GNOME 3 под иксами. В режиме Wayland-композитора он вообще выпячивает какие-либо API для управления XKB? Sway вот выпячивает IPC, собираюсь в табличку добавить, но это жжж надо сначала разобраться, как оно под иксами-то работает.

(и вообще, почему никто не контрибьютит в мою табличку, сцучечки? :P)

bodqhrohro_is_back ()
Ответ на: комментарий от bodqhrohro_is_back

Выглядит как решение только для GNOME 3 под иксами.

Да, к гному жестко привязано, для Wayland можно найти замену setxkbmap, если там такая проблема вообще есть.

MOPKOBKA ★★ ()

Это не Alt-Shift меню открывает а Alt. И это везде так. В нормальных системах переключалку языка ставят на Ctrl-Shift или ещё на что-то другое (без Alt). Alt-Shift - виндузятская привычка (в винде оно дефолтное но даже там я менял на нормальное всегда).

Виндузятники должны страдать.

gnome 3

Например в Ubuntu

Эти все туда же.

/usr/bin/switch-keyboard-layout.sh

keybinder.py

Вся суть гномоубунт - какие-то мутные костыли на несколько страниц с питонами вместо одной строчки иксового штатного конфига.

firkax ★★★ ()
Ответ на: комментарий от MOPKOBKA

к гному жестко привязано

Ключевое слово — под иксами. Гномоспецифичность и так очевидна из заголовка.

для Wayland можно найти замену setxkbmap

Похоже, ты плохо осознаёшь, что такое Wayland. Он специально спроектирован так, что универсальных инструментов для задач, которые не касаются напрямую управления окошками — нет. Но для конкретного композитора решить можно, в крайнем случае патчем.

bodqhrohro_is_back ()
Ответ на: комментарий от firkax

иксового штатного конфига

См. выше.

Если заявлено решение для GNOME, то оно должно работать и с иксами, и с автономной гномощелью без иксов.

А иначе надо явно уточнять, что для GNOME под иксами. Ну или просто под иксами, что ещё лучше. Но гомощель такая вредная, что на «штатный иксовый конфиг» кладёт болт и всё переопределяет. Равно как и кеды. Оттого идеологи этих ваших гномокед и считают иксы пятой ногой и стремятся от них избавиться.

bodqhrohro_is_back ()
Ответ на: комментарий от bodqhrohro_is_back

Но гомощель такая вредная, что на «штатный иксовый конфиг» кладёт болт и всё переопределяет.

Так а я о чём. У нормальных людей - одна строчка setxkbmap. У гномомазохостов - простыни из костылей.

и с автономной гномощелью без иксов.

Вайланд отправляется туда же куда и гном с убунтами. Просто поскольку автор про него ничего изначально не писал, я и не упомянул его в ответе.

firkax ★★★ ()
Ответ на: комментарий от bodqhrohro_is_back

Зачем универсальное, я конкретно под Gnome 3 решение предложил, остальные DE не используют Wayland, и там xbindkeys + setxkbmap работают нормально.

MOPKOBKA ★★ ()
Ответ на: комментарий от firkax

У нормальных людей

… вообще винда или ведройд. Какие иксы? :P

У гномомазохостов - простыни из костылей.

Мир Wayland-композиторов не ограничивается гомощелью.

Вайланд отправляется туда же куда и гном с убунтами

Вслед за русским кораблём? (Хороший эвфемизм, если что — пользуйтесь ;))

bodqhrohro_is_back ()
Ответ на: комментарий от MOPKOBKA

остальные DE не используют Wayland

Enlightenment давно умеет. В кедах поддержка уже почти готова. LWQt, MATE — тоже успешно портируются.

Да и помимо DE полно достойных композиторов, которые кто-то юзают.

bodqhrohro_is_back ()
Ответ на: комментарий от bodqhrohro_is_back

Enlightenment кто то использует? Вейланд в остальных DE глючит еще сильнее чем в Gnome, как доделают, можно будет думать.

MOPKOBKA ★★ ()
Ответ на: комментарий от MOPKOBKA

Enlightenment кто то использует?

Всё, что существует и развивается — определённо кем-то используется.

Вейланд в остальных DE глючит еще сильнее

Он не может глючить, это не софт. Я ж говорю — ты не понимаешь, что такое Wayland ;)

bodqhrohro_is_back ()
Ответ на: комментарий от bodqhrohro_is_back

Он не может глючить, это не софт. Я ж говорю — ты не понимаешь, что такое Wayland ;)

Я знаю что это, а ты понял что я имел виду.

MOPKOBKA ★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.