LinuxForum.Fans
Тема

Индикатор языка клавиатуры для Xfce

Автор: yars 26 сообщений 11174 просмотров
#274321

Доброго времени!
Ищу программу для индикации языка клавиатуры. Без него в трее как-то скучно :)
Пробовал kkbswitch, в свое время был не такой уж плохой вариант, пока не обновил иксы и Qt. Сейчас эта программка собираться не желает - Qt3 почил в бозе, а в иксах некоторые фунции для работы с клавиатурой объявлены устаревшими. Пробовал (g)xneur - та же петрушка с функциями в иксах. Пробовал плагин для Xfce - тот не обновлялся давно, да и мои настройки клавиатуры в иксах перебивает, плюс для него значки покрасивше надо бы... В общем, накидайте ссылок, пожалуйста. Мои поиски результатов не принесли. Заранее спасибо!

#274328

Так есть же свой Хfce'ешный, чем не нравиться?
Можно из conky сделать рецепт

#274347

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

#274348
"yars" написал:
Да я ж говорю - он перебивает настройки клавиатуры

Так поставьте такие же настройки ;)
У меня он просто показал настройки, установленные в /etc/X11/xorg.conf, я их и не трогал.

#274349

Глянул
«Настройки» → «Клавиатура» → «Раскладка» → ☑ Использовать стандартные системные параметры

#274409

Пробовал (g)xneur - та же петрушка с функциями в иксах.

А какие проблемы с gxneur ? Единственно в нем нужно выключить автодополнение и самообучение и обнулить соответствующие файлы в хомяке. Ну и при запуске gxneur приходится перезапускать сам демон xneur из контекстного меню gxneur. Не совсем удобно, но автоматом прибивать и перезапускать через скрипт работает непонятно почему через пень колоду.

#274413
"SergMarkov" написал:
А какие проблемы с gxneur ?

Да не собирается он. Вышли новые иксы, в них есть одна функция, для работы с клавой, ее переделали. А та, что была в старых иксах, объявлена устаревшей. Можно, конечно, Makefile'ы поправить, чтобы функции "deprecated" не мешали сборке, но я так не умею пока что.

#274416
yars написал:

Да не собирается он.

Даже из гит, или в какой он там ?

#274421

Да. И сайте как была год назад врсия 0.15.0, так и висит. Похоже, проект ушел в спячку.

#274431
yars написал:
Да. И сайте как была год назад врсия 0.15.0, так и висит. Похоже, проект ушел в спячку.

Ну я допустим только что собрал в rc3 из меркуриал, собираться то собирается, но при запуске выдает донельзя интересное
(gxneur:10824): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Наверное это надо сделать
--without-appindicator Compile without AppIndicator library support
но уже лень заново перезагружаться в rc3 ☺ Впрочем при переходе с 12.2 на 13.1 просто тупо залепил старый пакет и все работало, может так прокатит и сейчас.
Но больше волнует сам по себе xneur, а он и собирается и работает.

#274438
"SergMarkov" написал:
Но больше волнует сам по себе xneur, а он и собирается и работает.

Ну, в ближайшее время попробую. Сейчас я не дома, тут у меня 13.37 на виртуалке, а в 13.37 все как раз нормально. Это под RC4 у меня что-то не собирается xneur.

#276412

Ну, как и обещал:

Показать
text

#!/bin/sh

PRGNAM=xneur VERSION=${VERSION:-0.15.0} ARCH=${ARCH:-i486} BUILD=${BUILD:-1} TAG=${TAG:-_yars} CWD=$(pwd) PKG=$CWD/package-$PRGNAM-$VERSION OUTPUT=${OUTPUT:-$PRGNAM-$VERSION-$ARCH-$BUILD$TAG} NUMJOBS=" -j3 "

if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O3 -march=i486 -mtune=i686" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O3 -march=i686 -mtune=i686" fi

set -e

rm -rfv $PKG mkdir -pv $PKG

rm -Rf $PRGNAM-$VERSION tar -xvf $PRGNAM-$VERSION.tar.bz2

cd $PRGNAM-$VERSION chown -Rv root:root . chmod -Rv u+w,go+r-w .

CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --with-spell=no \ --without-xosd \ --mandir=/usr/man \ --with-x \ --with-gtk \ --build=$ARCH-slackware-linux

make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG

mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION cp -av AUTHORS ABOUT-NLS ChangeLog COPYING INSTALL NEWS README TODO \ $PKG/usr/doc/$PRGNAM-$VERSION 2>/dev/null || true

cat $CWD/$PRGNAM-$VERSION.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM-$VERSION.SlackBuild

mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc

( cd $PKG/usr/man; find . -type f -exec gzip -9 {} \; )

cd $PKG makepkg -l y -c n $CWD/$OUTPUT.txz

Собираю:

Показать
text

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../lib/config -I../../lib/misc -I../../lib/notify -I../../lib/ai -I../../lib/lib -I../../lib/rec -Wall -Wextra -Werror -g0 -std=gnu99 -fPIC -DXNEUR_PLUGIN_DIR=\"/usr/lib/xneur\" -O3 -march=i486 -mtune=i686 -MT libxnmain_la-event.lo -MD -MP -MF .deps/libxnmain_la-event.Tpo -c event.c  -fPIC -DPIC -o .libs/libxnmain_la-event.o
event.c: In function 'event_get_cur_keysym':
event.c:144:2: error: 'XKeycodeToKeysym' is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Werror=deprecated-declarations]
cc1: all warnings being treated as errors
make[3]: *** [libxnmain_la-event.lo] Ошибка 1
make[3]: *** Ожидание завершения заданий...
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../lib/config -I../../lib/misc -I../../lib/notify -I../../lib/ai -I../../lib/lib -I../../lib/rec -Wall -Wextra -Werror -g0 -std=gnu99 -fPIC -DXNEUR_PLUGIN_DIR=\"/usr/lib/xneur\" -O3 -march=i486 -mtune=i686 -MT libxnmain_la-bind_table.lo -MD -MP -MF .deps/libxnmain_la-bind_table.Tpo -c bind_table.c -o libxnmain_la-bind_table.o >/dev/null 2>&1
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../lib/config -I../../lib/misc -I../../lib/notify -I../../lib/ai -I../../lib/lib -I../../lib/rec -Wall -Wextra -Werror -g0 -std=gnu99 -fPIC -DXNEUR_PLUGIN_DIR=\"/usr/lib/xneur\" -O3 -march=i486 -mtune=i686 -MT libxnmain_la-buffer.lo -MD -MP -MF .deps/libxnmain_la-buffer.Tpo -c buffer.c -o libxnmain_la-buffer.o >/dev/null 2>&1
mv -f .deps/libxnmain_la-bind_table.Tpo .deps/libxnmain_la-bind_table.Plo
mv -f .deps/libxnmain_la-buffer.Tpo .deps/libxnmain_la-buffer.Plo
make[3]: Выход из каталога `/tmp/xneur/xneur-0.15.0/lib/main'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Выход из каталога `/tmp/xneur/xneur-0.15.0/lib'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/tmp/xneur/xneur-0.15.0'
make: *** [all] Ошибка 2
make  all-recursive
make[1]: Вход в каталог `/tmp/xneur/xneur-0.15.0'
Making all in lib
make[2]: Вход в каталог `/tmp/xneur/xneur-0.15.0/lib'
Making all in notify
make[3]: Вход в каталог `/tmp/xneur/xneur-0.15.0/lib/notify'
make[3]: Цель `all' не требует выполнения команд.
make[3]: Выход из каталога `/tmp/xneur/xneur-0.15.0/lib/notify'
Making all in misc
make[3]: Вход в каталог `/tmp/xneur/xneur-0.15.0/lib/misc'
make[3]: Цель `all' не требует выполнения команд.
make[3]: Выход из каталога `/tmp/xneur/xneur-0.15.0/lib/misc'
Making all in main
make[3]: Вход в каталог `/tmp/xneur/xneur-0.15.0/lib/main'
/bin/sh ../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../..    -I../../lib/config -I../../lib/misc  -I../../lib/notify -I../../lib/ai -I../../lib/lib -I../../lib/rec   -Wall -Wextra -Werror -g0 -std=gnu99 -fPIC -DXNEUR_PLUGIN_DIR=\""/usr/lib/xneur"\" -O3 -march=i486 -mtune=i686 -MT libxnmain_la-event.lo -MD -MP -MF .deps/libxnmain_la-event.Tpo -c -o libxnmain_la-event.lo `test -f 'event.c' || echo './'`event.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../lib/config -I../../lib/misc -I../../lib/notify -I../../lib/ai -I../../lib/lib -I../../lib/rec -Wall -Wextra -Werror -g0 -std=gnu99 -fPIC -DXNEUR_PLUGIN_DIR=\"/usr/lib/xneur\" -O3 -march=i486 -mtune=i686 -MT libxnmain_la-event.lo -MD -MP -MF .deps/libxnmain_la-event.Tpo -c event.c  -fPIC -DPIC -o .libs/libxnmain_la-event.o
event.c: In function 'event_get_cur_keysym':
event.c:144:2: error: 'XKeycodeToKeysym' is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Werror=deprecated-declarations]
cc1: all warnings being treated as errors
make[3]: *** [libxnmain_la-event.lo] Ошибка 1
make[3]: Выход из каталога `/tmp/xneur/xneur-0.15.0/lib/main'
make[2]: *** [all-recursive] Ошибка 1
make[2]: Выход из каталога `/tmp/xneur/xneur-0.15.0/lib'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/tmp/xneur/xneur-0.15.0'
make: *** [all] Ошибка 2

Вот кусок Xlib.h:

text
_X_DEPRECATED
extern KeySym XKeycodeToKeysym(
    Display*        /* display */,
#if NeedWidePrototypes
    unsigned int    /* keycode */,
#else
    KeyCode        /* keycode */,
#endif
    int            /* index */
#276421

Вариантов немного:
1) собирать без -Werror=deprecated-declarations;
2) менять вызовы XKeycodeToKeysym() на XkbKeycodeToKeysym(), списки параметров не полностью идентичны, за последний параметр сгодится 0.

#276422

Попробуйте из меркуриал, у меня собирается на куррент

#276450

Спасибо вам обоим :)
Разработчики таки исправились, будем ждать новые версии. Все прекрасно собирается теперь.

#276454

О, кстати. наткнулся еще на такой велосипед :) Ну, блин, ваще! (с)

#277079
"Lupo Alberto" написал:
«Настройки» → «Клавиатура» → «Раскладка» → ☑ Использовать стандартные системные параметры

Там не хватает галочек "Показывать индикатор > Показывать в виде флагов стран" и "Показывать индикатор > в виде текста".
А xfce4-xkb-plugin страдает тем. что все опции, кроме первой "grp:" в конфиге иксов игнорируются. В текущей версии пока что это не исправили. Интерфейс... да черт с ним, хоть и не очень, мягко говоря, но жить можно, если б не беда с конфигом. Сделал на основе другого плагина, писал про него уже где-то. Сейчас найду, продублирую и здесь.

#280989
"zenon" написал:
Можно из conky сделать

Да, я уже довольно давно это сделал, но только сейчас дошли руки до написания этого поста здесь. Наконец-то :)
Несложно:
1. Нам потребуется xfce4-genmon-plugin
Тут можно выбирать на свой вкус и цвет, я выбрал этот плагин. Кроме него, нам потребуется, согласно рецепту, исходник skb и значки, а еще - вспомогательный скриптик:

text
#!/bin/bash

# xfce4-genmon-plugin-3.4. # This script is a keyboard layout helper, depends on skb. # You should download, build and install skb from http://plhk.ru # before running this script. # Written by yars <yars068@yandex.ru> #

case `skb -i` in "Eng") echo "<img>"/usr/share/skb-0.4/icons/us.png"</img>";; "Rus") echo "<img>"/usr/share/skb-0.4/icons/ru.png"</img>";; esac

2. Собираем-ставим пакеты плагина и skb, кто не справился, пусть берет готовенькое, на здоровье. В соответствии с принципами Slackware - "один пакет - одна программа", я решил разделить свой индикатор клавиатуры на два пакета - [url=ftp://linuxru.org/yars/packages/skb/skb-0.4-i486-3_yars.txz]раз[/url] и [url=ftp://linuxru.org/yars/packages/Xfce/xfce4-genmon-plugin-3.4-i486-3_yars.txz]два[/url], но никто вам не мешает затолкать все в один пакет.
3. Выполняем нехитрую настройку - клацаем ПКМ на Панели, выбираем Панель > Добавить новые элементы, в появившемся окне выбираем Общий монитор (так нарекли переводчики xfce4-genmon-plugin), клацаем ОК. Далее, перемещаем будущий индикатор в удобное место на Панели и открываем диалог его настроек: ПКМ на его пока еще пустом значке > Свойства:

В поле "Команда" вписываем путь к нашему скриптику - я собрал плагин так, что путь этот - /usr/share/xfce4-genmon-plugin/helpers/kbdhelper, - а в поле "Период (с)" - число секунд - 1 (одна). Все :)

#282197
yars написал:
Спасибо вам обоим :)
Разработчики таки исправились, будем ждать новые версии. Все прекрасно собирается теперь.

Вышла новая версия, 16, где как раз на новых xlib

#282209

yars
А http://ru.wikipedia.org/wiki/Fbxkb ? Уменя как-то давно работает весто штатного модуля. (правда в е17). Не пойдёт?

Войдите или зарегистрируйтесь, чтобы ответить.