qnikst / kbdd

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

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

Open loredan opened 8 years ago

loredan commented 8 years ago

Я использую 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 раз в секунду, пока тот не заработает нормально. Насколько я понял, это происходит примерно тогда когда какое-нибудь окно входит в фокус

qnikst commented 8 years ago

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

loredan commented 8 years ago

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

umod47 commented 6 years ago

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

$ 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? Потому что. если выкинуть его из автозапуска через конфиг и запускать руками, то все работает.

jluttine commented 5 years ago

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?