Open Rom888 opened 5 years ago
Добрый день. Вам нужно посмотреть состав установленного пакета. Я, к сожалению, не знаю как это сделать, так как не пользуюсь Ubuntu. В списке файлов вы найдете эту библиотеку с полным путем. С малой долей вероятности вы ее можете не найти - это если пакет был собран без поддержки libxkbswitch.so, но это действительно маловероятно, поскольку библиотека должна собираться по умолчанию, но если ее в списке все-таки нет, вам нужно будет установить какую-либо другую сборку xkb-switch.
Я слышал, что с Ubuntu и последним Gnome 3 есть проблемы в самом xkb-switch, смотрите, например, здесь: https://www.linux.org.ru/forum/desktop/15229670. Я не пользуюсь ни Ubuntu ни Гномом (у меня установлена Fedora и Mate), поэтому мне затруднительно это исследовать и что-либо советовать. Но проверить вы сможете просто. Введите
xkb-switch -s ru
(если у вас была английская раскладка) и убедитесь что раскладка переключилась на русскую - если она не переключилась, то ваша система не может работать с xkb-switch и данный бэкенд, увы, не будет работать с vim-xkbswitch (а других бэкендов для vim-xkbswitch на Linux я не знаю).
Спасибо за советы, проверил, действительно xkb-switch той версии которая мне доступна (1.4) не работает в ubuntu 18.04 с gnome. Последнюю версию 1.6 собрать самому по инструкции с сайта не удалось, запросил помощи там, но легче не стало, сослались на dependency hell в убунту ... Попробовал с xubuntu на другом компьютере - все работает как надо. Буду переходить на нее.
Вот здесь кстати видел ссылки на 2 альтернативы xkb-switch github.com/ierton/xkb-switch/issues/34#issuecomment-511234580
Спасибо за ссылку. Но как я понял из обсуждений, проблема не в том, что xkb-switch плох, а в том, что плохи скорее Ubuntu и Gnome 3, в которых управление раскладкой через X интерфейс игнорируется. Соответственно, альтернативы, которые используют X, точно так же не будут работать. Возможный выход - увеличить популяцию зоопарка и написать кастомные переключатели раскладки для Ubuntu и Gnome 3, если это в принципе возможно. Ну или каким-то образом убедить разработчиков этих дистрибутивов исправить это досадное недоразумение. Это было бы здорово, если бы кто-то посмотрел в чем там все-таки проблема, а поскольку я ими (дистрибутивами) не пользуюсь, то я это сделать, к сожалению, не смогу.
Возможный выход - увеличить популяцию зоопарка и написать кастомные переключатели раскладки для Ubuntu и Gnome 3, если это в принципе возможно.
Мне кажется это наилучший вариант в данном случае, надежный в случае дальнейших изменений, а ваш плагин очень сильно облегчает жизнь.
Попробуйте плагин g3kb-switch вместо xkb-switch, он написан специально для Gnome 3. После установки просто добавьте строку
let g:XkbSwitchLib = '/usr/local/lib/libg3kbswitch.so'
в ваш .vimrc.
У меня похожая проблема. Ubuntu 19.10, использую Sway/Wayland. Скомпилировал g3kb-switch, при вызове из командной строки выдает Failed to build keyboard layouts map!
Эта штука работает с Gnome Shell, если у вас он не включен, то это ожидаемый результат.
@Rom888 У вас g3kb-switch работает? Или вы уже не на Gnome 3?
Эта штука работает с Gnome Shell, если у вас он не включен, то это ожидаемый результат.
Переключился в Gnome Shell - то же самое. Причем и в Gnome/X11, и в Gnome/Wayland.
xkb-switch тоже не помогает :( В Gnome/X11 xkb-switch -l
выдает два us
вместо us
и ru
, а в Gnome/Wayland и Sway/Wayland выдает только один us
. Буду рад наводкам в плане запуска вашего vim-плагина под Sway/Wayland.
Вижу новый issue в репозитории g3kb-switch, буду следить там.
@Galicarnax, в issue на который вы сослались в комментах есть две команды gdbus. Что они возвращают у вас? В случае Sway и Gnome Shell отдельно.
В случае Sway обе возвращают:
Error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service files
В случае гнома:
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.id" (true, '"us"')
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "ids = [];for (i in imports.ui.status.keyboard.getInputSourceManager().inputSources){ids.push({key:i, value:imports.ui.status.keyboard.getInputSourceManager().inputSources[i].id})};ids" (false, 'ReferenceError: assignment to undeclared variable ids')
Но меня интересует именно Sway. Похоже, там g3kb-switch
дейтсивтельно не поможет... Может, необязятально, чтобы был запущен весь гном-шел? Может, какой-нибудь environment-переменной будет достаточно? Существуют ли еще варианты, кроме xkb-switch и g3kb-switch?
Да, в Sway это в текущем виде работать не будет, это видно из вашего ответа. Однако, если для переключалки в Sway есть dbus интерфейс, то эту программу можно будет приспособить.
Кстати, спасибо за ответ в варианте для Gnome Shell: я закоммитил изменения в g3kb-switch благодаря вашей наводке, если хотите, можете проверить.
@Rom888 У вас g3kb-switch работает? Или вы уже не на Gnome 3?
У меня сейчас Ubuntu 19.10, базовый десктоп с gnome 3.34.1 Собрал и установил 15 минут назад. Все собралось и прекрасно работает, как так
g3kb-switch -s ru
g3kb-switch -s us
так и с плагином для gvim. Огромное спасибо за эту штуку!!!
Я бы еще в инструкцию по сборке предложил бы добавить это
sudo apt-get install libglib2.0-dev
иначе у меня была ошибка
None of the required 'gio-2.0' found
Однако, если для переключалки в Sway есть dbus интерфейс, то эту программу можно будет приспособить.
А как можно узнать, есть ли dbus-интерфейс? Всё, что я знаю о клавиатуре в Sway, это то, что в sway-конфиге я прописываю
input * {
xkb_layout us,ru
xkb_options grp:win_space_toggle
}
Это я не знаю. Я случайно узнал, что существует такой Sway на прошлой неделе, когда пытался реализовать этот свитчер через Xkbcommon и Wayland compositor (как вариант) ))
@Rom888, да, наверное добавлю в требования, программа требует devel пакет glib-2.0, gio-2.0 в него входит.
Добавил документацию о пререквизите пакета разработки glib-2.0
... пытался реализовать этот свитчер через Xkbcommon и Wayland compositor
Кстати это, как я понял, наиболее правильный путь реализовать такой свитчер для Sway.
Как успехи со Sway?
Увы, никак. Я уже полностью перешел на Sway, и отсутствие вот такой удобной автопереключалки в vim-е - самый огорчительный момент. Я сам пишу на С/С++, но никогда не работал на уровне DBus и вообще IPC. Поэтому без каких-то конкретных наводок мне самому это вряд ли залатать в разумные сроки.
у sway есть вот такие комманды для смены раскладки:
swaymsg input type:keyboard xkb_layout ru
Никак не поможет?
у sway есть вот такие комманды для смены раскладки:
swaymsg input type:keyboard xkb_layout ru
Никак не поможет?
должно помочь, я написал у себя в конфиге "однострочник", который при выходе из инсерт мода ставит англ раскладку, а при входе - восстанавливает предыдущую заюзанную в инсерт моде:
au InsertLeave * let lastLangIndex=system('swaymsg -t get_inputs | grep -m1 "xkb_active_layout_index" | grep -oP "\d+"') | call jobstart('swaymsg input "* xkb_switch_layout 0"')
au InsertEnter * :if exists("lastLangIndex") | call jobstart('swaymsg input "* xkb_switch_layout ' . lastLangIndex . '"') | endif
Добрый день! Успешно использую ваш замечательный плагин под виндами, сейчас перехожу на ubuntu, но пока не удалось заставить его работать.
Сначала попытался собрать xkb-switch отсюда https://github.com/ierton/xkb-switch/releases/tag/1.6.0 по инструкции https://github.com/ierton/xkb-switch#installing Но не удачно, на шаге
cmake ..
получаю ошибкуCMake Error at /usr/share/cmake-3.10/Modules/FindX11.cmake:429 (message): Could not find X11
Побороть эту ошибку не удалось.Нашел этот пакет в PPA и установил
правда версия 1.4.0
xkb-switch -l
выдаетПосле этого попробовал - плагин не работает. .vimrc:
Прочитал в документации про
let g:XkbSwitchLib = '/usr/local/lib/libxkbswitch.so'
но у меня по этому пути такого файла нет.