qnikst / kbdd

keyboard library for per-window keyboard layout
GNU General Public License v2.0
146 stars 16 forks source link

Некорректное переключение раскладок #49

Open spijet opened 7 years ago

spijet commented 7 years ago

Прежде всего хочу сказать спасибо за эту утилиту, без неё уже давно как без рук. :)

Использую git-версию kbdd. Сразу после запуска всё работает как положено, раскладки запоминает верно. Через какое-то время (два-три часа, иногда больше) раскладка начинает сбрасываться на русскую при каждом (или почти каждом, но реже) переключении окон. Т.е. состояние такое:

Версия демона и пакета, собранного из git, конфиг клавиатуры в Xorg:

~ kbdd -v
kbdd 0.7.1, see -h/--help for brief info                                                                                                                                                                                                                                                                                                                            
~ yaourt -Q | grep kbdd              
local/kbdd-git 0.7.1.r8.g0e1056f-1
~ cat /etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" ","
        Option "XkbOptions" "grp:alt_shift_toggle,grp_led:caps,ctrl:nocaps"
EndSection

Дистрибутив Arch Linux x86_64, WM -- herbstluftwm 0.7.0-1 из реп дистрибутива. К сожалению, на данный момент я только что перезапустил демона, поэтому ошибка не проявляется. Как только повторится -- пришлю лог Dbus-monitor сюда.

spijet commented 7 years ago

Как обещал, лог dbus-monitor:

# Переключился на открытый терминал, в котором писал по-английски
signal time=1492081595.432501 sender=:1.4 -> destination=(null destination) serial=754 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 1
signal time=1492081595.432555 sender=:1.4 -> destination=(null destination) serial=755 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "Russian"

# Alt+Shift
signal time=1492081599.034721 sender=:1.4 -> destination=(null destination) serial=756 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 0
signal time=1492081599.034740 sender=:1.4 -> destination=(null destination) serial=757 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "English (US)"

# Переключаю фокус обратно (первый терминал с En-раскладкой)
signal time=1492081600.085153 sender=:1.4 -> destination=(null destination) serial=758 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 1
signal time=1492081600.085219 sender=:1.4 -> destination=(null destination) serial=759 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "Russian"

# Alt+Shift
signal time=1492081600.858977 sender=:1.4 -> destination=(null destination) serial=760 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 0
signal time=1492081600.858998 sender=:1.4 -> destination=(null destination) serial=761 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "English (US)"

# Опять переключаюсь на второй терминал
signal time=1492081601.715590 sender=:1.4 -> destination=(null destination) serial=762 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutChanged
   uint32 1
signal time=1492081601.715613 sender=:1.4 -> destination=(null destination) serial=763 path=/ru/gentoo/KbddService; interface=ru.gentoo.kbdd; member=layoutNameChanged
   string "Russian"
wiedzmin commented 7 years ago

Тоже столкнулся с подобной проблемой, и пытаюсь разобраться. Подскажите, каким именно образом у вас запускается kbdd?

spijet commented 7 years ago

@wiedzmin, запускаю его через autostart-скрипт своего WM (по сути -- обычный bash-скрипт). Когда начинается подобное поведение -- перезапускаю его с помощью pkill kbdd && kbdd в консоли.

Сейчас смигрировал на Gentoo, проблема повторяется на версии kbdd из дерева:

❯ kbdd -v
kbdd 0.7, see -h/--help for brief info

~
❯ eix kbdd   
[I] x11-misc/kbdd
     Доступные версии:      (~)0.7.1 {dbus}
     Установленные версии:  0.7.1(18:21:43 02.06.2017)(dbus)
     Домашняя страница:     https://github.com/qnikst/kbdd
     Описание:              Very simple layout switcher
sprnza commented 7 years ago

У меня тоже самое и уже достаточно давно

brestows commented 6 years ago

Проблема наблюдается и на 0.7.1

4ban commented 6 years ago

Аналогичная проблема.

sprnza commented 6 years ago

Вот эта штука работает на отлично. Забыл kbdd как страшный сон.

4ban commented 6 years ago

@sprnza Спасибо! Но можно ли с этой штукой сделать такой же виджет как для awesome wm?

sprnza commented 6 years ago

@4ban Такой же- это какой же? У меня awesomewm 4.2, он раскладку по Dbus получает, никакие костыли теперь не нужны. Для perwindowlayoud в AUR есть PKGBUILD, если что.

4ban commented 6 years ago

@sprnza да самый обычный, готовое, древнее решение индикатора раскладки. Вы виджет индикатора сами писали?

sprnza commented 6 years ago

@4ban Нет, в awesomewm 4.2 не нужен самописный виджет- родной получает раскладку по Dbus и работает "из коробки".

4ban commented 6 years ago

@sprnza Спасибо, попробую