Преамбула

Есть такой отличный индикатор раскладок клавиатуры, называется xxkb. Пользовался я этой программой практически с самого начала знакомства с Linux и всегда был доволен. Решил вот собрать эту программу в Slackware 12.1 Небольшой индикатор в виде флага в заголовке окна — что может быть удобнее?

Так же стоит заметить, что xxkb сама по себе не загружает раскладок и не манипулирует ими. Она просто отображает состояние xkb. Впрочем, обо всем этом можно прочитать на сайте.


Подготовка пакета

Скачиваем xxkb-1.10.tgz. Распаковываем, пробуем собрать.

$ xmkmf
$ make


У меня вот не получилось.

resource.c:387: ошибка: метка в конце составного оператора

Открываем файл, переходим к строке 387. Заменяем конструкцию

default:
}


на

default:
break;
}


Теперь все в порядке. Подготавливаем патч.

$ diff -u resource.c.orig resource.c | gzip > patch.resource.c.gz


Создаем иерархию каталогов и копируем туда наши файлы, что-то вроде:

xxkb/patches/patch.resource.c.gz
xxkb/slack-desc
xxkb/xxbk-1.10.tgz
xxkb/xxkb.SlackBuild


Файл slack-desc и SlackBuild берем из состава дистрибутива Slackware и правим под свои нужды. В slack-desc я просто поместил описание, взятое с официального сайта программы.

Весь SlackBuild приводить не буду, вот описание правок:

PKGNAM=xxkb
VERSION=${VERSION:-1.10}


далее немного правим код, отвечающий за наложение патчей

zcat $file | patch -p1 || exit 1


заменяем на

zcat $file | patch -p0 || exit 1


в код, занимающийся сборкой, перед вызовом make добавляем

xmkmf


и, наконец исправляем цикл, копирующий документацию в целевой каталог таким образом, чтобы он обработал все файлы с документацией входящие в состав xxkb.

cp -a \
CHANGES* LICENSE README* \
$PKG/usr/doc/${PKGNAM}-$VERSION


Ура!

Установка

Запускаем только что созданный xxkb.SlackBuild, в /tmp находим сгенерированный пакет и выполняем установку

$ sudo installpkg xxkb-1.10-i486-1.tgz


Настройка

Программа хранит свои настройки в файле

/etc/X11/app-defaults/XXkb


Я отключил главное окно программы

XXkb.mainwindow.enable: no

и изменил местоположение индикатора в заголовке окна

XXkb.button.geometry: 15x15-45+2

Вот собственно и все:-) Спасибо Ивану Паскалю за отличную программу!