qnikst/kbdd

Не запускается при загрузке системы

Opened this issue · 4 comments

Я использую Archlinux с Awesome WM, и по какой-то причине kbdd не запускается при загрузке системы, ни когда я пытаюсь запустить его через systemd, ни через конфигурацию awesome. В первом случае он вообще падает, а во втором он пишет что "EWMH is not supported" и вместо того чтобы сохранять раскладки, при смене окон всегда переключает на английский (потому что он первый в списке?)

Я нашел обход проблемы, который выглядит так:

until kbdd -n 2>&1 | while read line; do if [[ $line == 'EWMH is supported' ]]; then pkill kbdd; exit 0; elif [[ $line == 'EWMH is not supported: switching to generic' ]]; then pkill kbdd; exit 1; fi; done; do sleep 1; done; kbdd;

Вкратце, он просто запускает kbdd раз в секунду, пока тот не заработает нормально. Насколько я понял, это происходит примерно тогда когда какое-нибудь окно входит в фокус

В одной из последних версий я убрал работу если. EWMH не поддерживается, но мне казалось, что я уже вернул поддержку и Awesome поддерживает этот стандарт. Я перепроверить и попробую выпустить новую версию, но где-то в середине следующей недели.

Awesome поддерживает EWMH, и если запускать вручную из терминала, то все нормально. Проблема только при загрузке системы. Может быть так что _NET_ACTIVE_WINDOW выдает пустой prop_return если ни одного окна в фокус еще не входило?

Подниму старую тему, ибо столкнулся.

$ uname -a
Linux Terraniux 4.14.3-1-ARCH #1 SMP PREEMPT Thu Nov 30 18:33:13 UTC 2017 x86_64 GNU/Linux

$ awesome --version
awesome v4.2 (Human after all)
• Compiled against Lua 5.3.4 (running with Lua 5.3)
• D-Bus support: ✔
• execinfo support: ✔
• xcb-randr version: 1.5
• LGI version: 0.9.2

$ kbdd -v
kbdd 0.7.1, see -h/--help for brief info

Где то с год назад начались проблемы.

kbdd запускается при старте Awesome, но не работает. Запускаю два терминала, переключаю в одном из них раскладку на русский, тыкаю в другой - включается английский. Тыкаю обратно - все еще английский. Делаю killall kbdd && kbdd - все работает. До перезапуска awesome.

Добавил в конфиг запуск без демона (xterm -e kbdd -n), увидел при запуске вот это:
:main Connecting to the Session D-Bus.
:main Regiresting the well-known name (ru.gentoo.KbddService)
:main RequestName returned (null).
:main Creating one MKbddService Object
:main Registering project to D-Bus.
Ready to serve requests
EWMH is not supported: switching to generic
Initializing generic event listeners

Естественно, глючит как обычно. Затем перезапустил kbdd, не перезапуская окошки. Вывод поменялся в одной строке, касаемой EWMH:
:main Connecting to the Session D-Bus.
:main Regiresting the well-known name (ru.gentoo.KbddService)
:main RequestName returned (null).
:main Creating one MKbddService Object
:main Registering project to D-Bus.
Ready to serve requests
EWMH is supported
Initializing EWHM event listeners

И все заработало.

Что такого происходит при старте Awesome? И как определить момент времени, когда "уже можно" запускать kbdd? Потому что. если выкинуть его из автозапуска через конфиг и запускать руками, то все работает.

I have this same issue (based on google translate). Indeed, after logging in, kbdd can find EWMH support only after some window has been opened. I used a similar workaround as in the original post. Is there any better way to fix this instead of re-trying every second whether it'd work now?