Автор Тема: gxkb - индикатор и переключатель раскладки клавиатуры для X11  (Прочитано 16592 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ZEN

Прежде, чем дать описания проекта, отвечу на вопрос "зачем?". Я давно задавался целью написания утилиты для раскладки клавиатуры, которая умеет привязывать раскладку к приложению в разных WM/DE. Пробовал xxkb и fbxkb, но они обладают лишь привязкой раскладки к окнам. Приведу пример, когда привязка к окнам не удобна: запускаем pidgin/gajim/qutim/psi, открываем контакт лист, переключаем с по-умолчанию английской раскладки на русскую, "сворачиваем" программу в трей, вызываем программу из трея и... видим английскую раскладку, тогда как с привязкой раскладки к приложению будет русская. Таких примеров можно привести много, но лучше я расскажу дальше о программе.

Программа написана на языке Си и использует только библиотеки GTK (GNOME не требуется).


Программа основана на исходном коде проекта xfce4-xkb-plugin и наследует его функции:
  • Привязка раскладки клавиатуры глобально, к окнам или к приложению
  • Раскладка по-умолчанию (пример ситуации, когда хочется что бы на русской раскладке загорался scrollock светодиод и она же была раскладкой по-умолчанию для новых окон)
  • При количестве раскладок больше двух по клику левой кнопкой мыши отображается список доступных раскладок, иначе выполняется попытка переключиться на следующую раскладку
  • Так же, при прокрутке колесом мыши раскладка переключается вперед или назад в зависимости от направления.
  • Программа доступна по лицензии GPL2
Краткая инструкция по установке:

Цитата: /bin/bash
1. Устанавливаем нужные для сборки из исходников пакеты:
sudo apt-get install libwnck-dev libxklavier-dev libgtk2.0-dev

2. Загружаем архив gxkb с исходным кодом, распаковываем и переходим в каталог с исходниками
wget http://www.linuxhub.ru/download/gxkb-0.4.tar.gz
tar xvfz gxkb-0.4.tar.gz
cd gxkb-0.4

так же, возможно скачать архив с sf.net

3. Собираем и устанавливаем из исходников
./configure && make && sudo make install

Настройка программы:

При первом запуске программы будут использоваться настройки по-умолчанию, а именно привязка раскладки к приложению, две раскладки US/RU которые переключаются по Alt+Shift, а так же включение светодиода scrollock на русской раскладке. При выходе из программы настройки будут сохранены в файле ~/.config/gxkb.cfg, который теперь можно отредактировать обычным текстовым редактором. Ниже пример файла настроек по-умолчанию:

Цитата: /bin/bash
[xkb config]
group_policy=2
default_group=0
never_modify_config=false
model=pc105
layouts=us,ru
variants=,
toggle_option=grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp
compose_key_position=

group_policy - параметр отвечающий за привязку раскладки. Может принимать значения: 0 - глобальная раскладка, 1 - привязка раскладки к окнам, 2 - привязка раскладки к приложениям

default_group - раскладка по умолчанию для новых окон. Отсчет начинается с нуля, потому 1 раскладка будет нулевой, 2-я первой и т.д.

never_modify_config - gxkb не будет пытаться заменить настройки X11 раскладок и их переключение, а так же не будет при выходе из программы переписывать свой файл настроек

model - модель клавиатуры

layouts - раскладки клавиатуры

variants - варианты раскладок

toggle_option - параметры переключения раскладок

compose_key_position - назначение клавиши Compose

Известные проблемы:

Вопрос: gnome2/gnome3,unity,e17, (возможно и kde3/kde4) - не корректно меняется раскладка при переключении окон
Ответ: нужно в настройках DE найти управление раскладками системы и отключить функции наследования раскладки от прошлого окна и функцию разделение раскладки по окнам

Вопрос: gnome3,unity - не отображается значок раскладки в трее
Ответ: в связи с разными версиями gnome 3 как точно вернуть значок в трей подскажет гугл, но можно поступить иначе, программа на самом деле запущена и выполняет свои функции, для визуального отображения можно пользоваться стандартным индикатором раскладки gnome3 или unity. Главное не забыть про отключение разделения раскладки по окнам в индикаторе gnome3/unity.
« Последнее редактирование: 02 Июня 2013, 22:23:53 от ZEN »
Crimea is Ukraine
 

Оффлайн kobzar

НУ что я могу сказать, вещь канечно нужная, но простите
при установке либ я был поражен кол-вом зависимостей

НОВЫЕ пакеты, которые будут установлены:
  autopoint debhelper gettext gir1.2-xkl-1.0 html2text intltool-debian libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libelf1 libexpat1-dev
  libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev libgettextpo0 libglib2.0-bin libglib2.0-dev libgtk2.0-dev libice-dev libmail-sendmail-perl
  libpango1.0-dev libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev
  libstartup-notification0-dev libsys-hostname-long-perl libunistring0 libwnck-dev libx11-dev libx11-doc libxau-dev libxcb-render0-dev
  libxcb-shm0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev
  libxinerama-dev libxklavier-dev libxklavier16 libxml2-dev libxml2-utils libxrandr-dev libxrender-dev libxres-dev pkg-config po-debconf
  x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev
  x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev zlib1g-dev

А утилиты данного рода прежде всего должны быть маленькими. Так что от тестирования отказался. Хотя очень вкусняшко :)
Если перепишите под стандартные какито либы - что бы не ставить 50 пакетов, думаю процесс пойдет.
Ты дорого мой друг, заплатишь за ошибку,..
Когда оскал мой милый, ты приймешь за улыбку.
 

Оффлайн ZEN

это зависимости, если собирать из исходников. Могу предложить бинарный пакет для Debian Wheezy x86:
https://sourceforge.net/projects/gxkb/files/gxkb_0.4-1_i386.deb/download
37.7 kB

и бинарный пакет для Debian Wheezy x86_64:
https://sourceforge.net/projects/gxkb/files/gxkb_0.4-1_amd64.deb/download
37.3 kB
« Последнее редактирование: 24 Марта 2013, 22:10:43 от ZEN »
Crimea is Ukraine
 

Оффлайн kobzar

Ну так другое ж дело, еще для х64 дайте и я в команде тестеров!
Ты дорого мой друг, заплатишь за ошибку,..
Когда оскал мой милый, ты приймешь за улыбку.
 

Оффлайн ZEN

Обновил пакет до версии 0.4, исправил два бага связанных с поиском флага раскладки.
К слову, один баг совместим с xfce4-xkb-plugin. Например, если на лету сменить раскладку вот так с проблеами
setxkbmap "us, ru"
setxkbmap "us, ru "
то русская раскладка будет, а флаг отображаться нет.

Ссылки на deb-пакеты в предыдущем сообщении.
« Последнее редактирование: 24 Марта 2013, 22:27:45 от ZEN »
Crimea is Ukraine
 

Оффлайн kobzar

 то что нужно. пока нареканий нет.
но нужно добавить --help  или ман. потому что бегать на сайт смотреть опции не есть тру метод.

Инструкция для Новичков:
Качаем файл под свою архитектуру, открываем терминал, переходим в папку куда вы скачали файлик и :
sudo dpkg -i filename.deb
sudo apt-get install -f
gxkb &

Профит.
Ты дорого мой друг, заплатишь за ошибку,..
Когда оскал мой милый, ты приймешь за улыбку.
 

Оффлайн ZEN

kobzar, в будущем добавлю man, а до тех пор за эталон опций можно взять man xkeyboard-config. Ну или иначе сделать, запустить программу. Через setxkbmap установить параметры раскладки (программа автоматом подхватит измененные настройки) и при выходе из gxkb в конфиг буду записаны настройки выставленные через setkbmap. Даже не придется открывать в редакторе файл настроек.

Да, кстати, в версии 0,5 добавлена поддержка старых библиотек libxklavier. Делал совместимость ради поддержки CentOS, а вместе с тем код компилится и работает даже на Debian Lenny
Crimea is Ukraine
 

Оффлайн kobzar

ништяк. дописывай гуи с галками и в репы...
Ты дорого мой друг, заплатишь за ошибку,..
Когда оскал мой милый, ты приймешь за улыбку.
 

Оффлайн Malaheenee

Еще пожелание: возможность задавать путь к пользователським флагам. А то если заменять в /usr/share - при любом обновлении пакета все щатрется.
Все мы где-то, когда-то и в чем-то были новичками.
 

Оффлайн ZEN

ништяк. дописывай гуи с галками и в репы...
гуи  влом делать, так как хватает команды setxkbmap "us,ua" , что бы gxkb на лету установил нужные раскладки и по завершению работы запомнил их в конфиге. А что касается реп, так уже...
https://packages.debian.org/search?suite=all&searchon=names&keywords=gxkb

Еще пожелание: возможность задавать путь к пользовательским флагам. А то если заменять в /usr/share - при любом обновлении пакета все затрется.
Залил изменения в trunk, но вместе с тем изменилась локация конфига с ~/.config/gxkb.cfg на ~/.config/gxkb/gxkb.cfg
Каталог с дефолтным конфигом создастся автоматически при первом запуске. Так что, можно будет завершить программу и выполнить mv ~/.config/gxkb.cfg ~/.config/gxkb/gxkb.cfg
Системные флаги теперь можно переопределить в каталоге ~/.config/gxkb/flags
deb-пакетов нет, так как это не релиз. Но есть  вариант, что в скором времени будет собран пакет в ppa. (Выполнено, версия пакета     0.6-0~17)
« Последнее редактирование: 03 Августа 2014, 12:43:46 от ZEN »
Crimea is Ukraine
 

Оффлайн Malaheenee

Вот спасибо!  ;) Ничего, запостим баг-реквест на новую версию. Мэйнтейнер вроде акдекватный.
Все мы где-то, когда-то и в чем-то были новичками.
 

Оффлайн ZEN

Мэйнтейнер вроде акдекватный.
это да, мы как-то обменивались патчами и слова друг другу не сказали   :D
Crimea is Ukraine
 

Оффлайн ferum

ZEN, Скажи пожалуйста будет ли работать эта штука с razor или FLWM ? Отсутствие индикатора раскладки в них один из главных недостатков.
Русские дебианщики против цифрового слабоумия !
 

Оффлайн ZEN

думаю, что будет работать в обеих WM
Crimea is Ukraine
 

Оффлайн ZEN

Релиз gxkb 0.7.0


Что нового:

  • Добавлена поддержка appindicator
  • Добавлена возможность автоматического переключения на классический трей, если appindicator не возможно создать
  • Изменен путь к файлу настроек (~/.config/gxkb/gxkb.cfg). Если у вас не стандартный конфиг, то перед запуском программы стоит выполнить следующие команды в терминале
Цитата: /bin/bash
mkdir -p ~/.config/gxkb/ && mv ~/.config/gxkb.cfg ~/.config/gxkb/gxkb.cfg
  • Появилась возможность использовать собственные изображения флагов. Для этого нужно создать каталог ~/.config/gxkb/flags и поместить в него png файл с именем раскладки
Цитата: /bin/bash
mkdir -p ~/.config/gxkb/flags
  • Исправлено переключение раскладки при использовании скрола. Ранее, раскладка переключалась противоположно порядку раскладок в меню
  • Сохранена возможность собирать gxkb без поддержки appindicator
Цитата: /bin/bash
./configure --enable-appindicator=no && make && sudo make install
  • Проведен рефакторинг кода
Установка:

Исходники доступны на sourceforge.net (там же есть пакет для Debian wheezy x86)
Для Ubuntu Precise и Ubuntu Trusty существует ppa - ppa:zen-root/gxkb-daily-ppa

Известные проблемы:

  • В ubuntu при включенном appindicator возможно проблемы, если штатный переключатель раскладки (indicator-keyboard) использует ту же комбинацию клавиш. В качестве решения проблемы можно изменить раскладку для штатного индикатора на никогда не используемую комбинацию. Или удалить пакет indicator-keyboard, но тот в свою очередь по зависимостям удалит центр настроек Unity (будет установлен gnome-control-center).
  • В Elementary OS Freya gxkb не работает, на данный момент ищу причины почему.
  • Не корректно меняется раскладка при переключении окон - такой "баг" возможен при использовании несколько индикаторов раскладки. В Gnome/Unity решается отключением функции наследования раскладки от прошлого окна и отключении функции разделения раскладки по окнам в штатном индикаторе раскладки.
P.S.
жду отзывов и сообщений об ошибках :)
Crimea is Ukraine
 

Теги: