LINUX.ORG.RU

[xfce][xxkb]переключить раскладку из скрипта

 ,


0

1

Я всё ещё переезжаю из kde в xfce и всё ещё открываю для себя новые границы ограниченности функционала. Задача: при блокировке экрана выключить музыку, сменить статус в psi и переключить раскладку на латиницу (чтобы при разблокировке вводить пароль в правильной раскладке).

В KDE это решалось штатными методами: там была в настройках возможность задать действия, которые происходит при определённых сообщениях от dbus. Блокируешь экран — оно получает сообщения и вызывает скрипты.

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

qdbus org.kde.kxkb /kxkb org.kde.KXKB.setLayout us
Видимо, этот скрипт я буду использовать в xfce, но есть нюансы.

Теперь у меня xfce, переключением раскладки заведует xxkb. Что мне написать в скрипт, чтобы он менял раскладку в активном окне на us?

★★

Можно kbdd использовать, возможностей меньше (в т.ч. нет индикатора), но смена раскладки через dbus есть (на правах саморекламы).

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

sbxkb это принципиально другая программа ;). Это индикатор, но не переключатель, в то время как kbdd это переключатель, но не индикатор.

Это значит, что их как раз надо поставить вместе, чтобы одна переключала, а вторая висела в трее?

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

коротко: да.

не коротко: ну если есть какой-нить плагин от WM/DE то можно использовать его, + не у всех есть трей, + некоторым и индикатора на клавиатуре хватает. Т.е. прога не завязана на лишние вещи, которых может и не быть. Кстати не факт, что связка из 2ух программ будет работать менее эффективно, чем одна где есть и то и другое.

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

> Кстати не факт, что связка из 2ух программ будет работать менее эффективно, чем одна где есть и то и другое.

Я на это не намекал, я просто уточнил, будет ли работать sbxkb в паре с kbdd — а то мало ли, как оно бывает :-)

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

> А что там за функция get_layout, как и для чего её использовать?

забей на неё. тебе нужен только код из http://www.linux.org.ru/jump-message.jsp?msgid=4758852&cid=4759295. только добавь инклуды X11/Xlib.h и X11/XKBlib.h:

#include <X11/Xlib.h>
#include <X11/XKBlib.h>

int main(int argc, char **argv) {
    Display *dpy;
    if (argc != 2 || (dpy = XOpenDisplay(NULL)) == NULL)
        return 1;
    XkbLockGroup(dpy, XkbUseCoreKbd, atoi(argv[1]));
    XCloseDisplay(dpy);
    return 0;
}

компилишь примерно так:

gcc -lX11 xkbswitch.c -o xkbswitch

юзаешь так:

./xkbswitch 0
./xkbswitch 1
...

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

> тебе нужен только код из

ну, ну это я уже сделал (кстати, спасибо), мне просто интересно стало

name_no ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.