воскресенье, 24 марта 2013 г.

Генератор иконок с текстом для индикатора клавиатуры

Навеяно сообщением в теме про программу gxkb. Суть скрипта в том, что бы из имен раскладок создать вот такие файлы для замены стандартных флагов раскладки:

ИзображениеИзображениеИзображение




четверг, 21 марта 2013 г.

gxkb - индикатор и переключатель раскладки клавиатуры для X11

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

Изображение

Программа основана на исходном коде проекта xfce4-xkb-plugin и наследует его функции:

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

Краткая инструкция по установке:

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

2. Загружаем архив gxkb с исходным кодом, распаковываем и переходим в каталог с исходниками
wget http://sourceforge.net/projects/gxkb/files/gxkb-0.6.tar.gz
tar xvfz gxkb-0.6.tar.gz
cd gxkb-0.6


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

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

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

[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

понедельник, 10 декабря 2012 г.

[Xfce][Xkb-plugin] Размер значка флага в Xfce

После установки Xfce 4.10 на Debian Wheezy я столкнулся с давно известной всем проблемой - размер флага раскладки в xfce4-xkb-plugin. Проблема не новая, но увы, инструкция как пересобрать xfce4-xkb-plugin в интернете провала. Поэтому мой долг полученные ранее знания передать дальше.

В последний раз посмотрим на текущий значок:

Посмотрели? А теперь начинаем.
Устанавливаем зависимости для пересборки пакета:
sudo apt-get build-dep xfce4-xkb-plugin
Скачиваем исходный код пакета:
mkdir -p /tmp/xfce-xkb-plugin ; cd /tmp/xfce-xkb-plugin ; apt-get source xfce4-xkb-plugin ; rm *.tar.* *.dsc
В каталоге /tmp/xfce-xkb-plugin будет только один каталог с версией плагина. В моем случае xfce4-xkb-plugin-0.5.4.3, заходим в этот каталог:
cd xfce4-xkb-plugin-0.5.4.3
Вот мы и подобрались до редактирования исходного кода. Открываем и редактируем файл panel-plugin/xkb-cairo.c
gedit panel-plugin/xkb-cairo.c
Находим с 90 по 98 строку код. У меня они выглядят вот так
    scalex = (double) (width - 4) / dim.width;
    scaley = (double) (height - 4) / dim.height;

    if (handle)
    {
        layoutx = (actual_width - width) / 2 + 2;
        layouty = (actual_height - height) / 2 + 2;
        cairo_translate (cr, layoutx, layouty); 
И исправляем его на вот такой:
    scalex = (double) (width - 8) / dim.width;
    scaley = (double) (height - 8) / dim.height;

    if (handle)
    {
        layoutx = (actual_width - width) / 2 + 4;
        layouty = (actual_height - height) / 2 + 4;
        cairo_translate (cr, layoutx, layouty); 
Это мы изменили размер значка в трее, но есть еще один "подводный камень" - всплывающая подсказка.

Исправим и его!

Открываем и редактируем файл panel-plugin/xkb-cairo.c
gedit panel-plugin/xkb-callbacks.c
Ищем между 207-212 строками следующий код
    if (handle)
    {
        tmp = rsvg_handle_get_pixbuf (handle);
        pixbuf = gdk_pixbuf_scale_simple (tmp, 24, 24, GDK_INTERP_BILINEAR);
        gtk_tooltip_set_icon (tooltip, pixbuf); 
И исправляем его на вот такой:
    if (handle)
    {
        tmp = rsvg_handle_get_pixbuf (handle);
        pixbuf = gdk_pixbuf_scale_simple (tmp, 30, 20, GDK_INTERP_BILINEAR);
        gtk_tooltip_set_icon (tooltip, pixbuf);
Компилируем и заменяем xfce4-xkb-plugin!
./configure --prefix=/usr ; make
После сборки должен появиться файл /tmp/xfce-xkb-plugin/xfce4-xkb-plugin-0.5.4.3/panel-plugin/xfce4-xkb-plugin

Которым необходимо будет заменить оригинальный файл. Но сначала надо посмотреть где он находится. Для этого апплет должен быть запущен на панели. И в терминале выполняем команду
ps aux | grep xfce4-xkb | grep lib | awk '{print $11}'
У меня плагин нашелся в /usr/lib/i386-linux-gnu/xfce4/panel-plugins/xfce4-xkb-plugin. Теперь предстоит его заменить скомпилированным. Обязательно перед этим убираем плагин с панели и выполняем команду из терминала
sudo -s ; cat /tmp/xfce-xkb-plugin/xfce4-xkb-plugin-0.5.4.3/panel-plugin/xfce4-xkb-plugin > /usr/lib/i386-linux-gnu/xfce4/panel-plugins/xfce4-xkb-plugin ; exit
Добавляем xfce4-xkb-plugin на панель и радуемся новому значку с нормальной всплывающей подсказкой:


Создаем deb-пакет для поделиться
sudo apt-get install dpkg-repack ; sudo dpkg-repack xfce4-xkb-plugin
И в текущем каталоге получим deb-пакет xfce4-xkb-plugin_0.5.4.3-1.1_i386.deb
Скачать готовый пакет для архитектуры i386, проверенный на CrunchBang 11 "Waldorf", можно по данной ссылке xfce4-xkb-plugin_0.5.4.3-1.1_i386

среда, 5 декабря 2012 г.

[WEB] Firefox 17 - Цвет фона при просмотре изображения

Еще с релиза Firefox 11 приходится мучаться с режимом отображения изображения. А именно с нормальным отображением границ и прозрачности изображения. Вот пример как отображается картинка по-умолчанию:

Изображение

Все бы хорошо, но как здесь понять белый фон - фон картинки или на самом деле она прозрачная? Поэтому дальше я расскажу как изменить режим просмотра вот в такой вид:

Изображение

Здесь удобно отображается рамка, что бы понять где границы картинки, а так же видно что фон у картинки был и есть прозрачный!

Теперь сам процесс исправления.

  1. Запускаем mc с правами администратора
    sudo mc
  2. Переходим в каталог /usr/lib/firefox
  3. Выбираем файл omni.ja, который на самом деле архив, и нажимаем ENTER что бы зайти в него.
  4. Переходим дальше по каталогам, открываем путь chrome/toolkit/skin/classic/global
  5. Выбираем файл TopLevelImageDocument.css и нажимаем F4 для его редактирования. У меня он выглядел до изменений вот так:

    Изображение
  6. Стираем строчку backgound-color: #fff;
  7. Пишем вместо неё border: gray 1px dotted;
    Должно получиться вот так:

    Изображение
  8. Сохраняем файл, закрываем mc и перезапускаем firefox

Всё!

среда, 12 сентября 2012 г.

[LIFE] День программиста

Мои поздравления всем причастным к программированию. Именно сегодня наступил 256-й день в году.

Число 256 (два в восьмой степени) выбрано потому, что это количество чисел, которые можно выразить с помощью одного байта. В високосные годы этот праздник попадает на 12 сентября, в не високосные — на 13 сентября.

В этот день я хочу выразить благодарность всем разработчикам программного обеспечения. Именно благодаря им оживают бездушные железки и получают навыки, которые так нам облегчают жизнь.

С праздником, друзья!

вторник, 28 августа 2012 г.

[WEB] Firefox 15 - Цвет фона при просмотре изображения

UPD. Информация ниже устарела. Про настройку Firefox 17 информацию можно найти в следующей статье.

Обновился до Firefox 15 и обнаружил, что так как раньше изменить цвет фона при просмотре изображения уже не получается. Разработчики из Mozilla решили пойти дальше и в css вшить картинку закодированную в base64. В качестве решения так же, как и раньше открываем архив omni.ja и переходим к файлам

/chrome/toolkit/skin/classic/global/TopLevelImageDocument.css
/chrome/toolkit/skin/classic/global/TopLevelVideoDocument.css

В обеих файлах меняем длинную строку:
background: #222 url(data:image/png;base64,iVBORw0KGgo....Zk0AAAAABJRU5ErkJggg==);
на
background-color: #FFF;

сохраняем и получаем как и прежде картинку на белом фоне.

Как обычно, вариант для ленивых, готовый архив omni.ja

воскресенье, 5 августа 2012 г.

[QutIM][RnQ] Дублирование записей хистори формата JSON

Не так давно появилось у меня желание вспомнить былые времена, перечитать хистори из ICQ. Тут-то я и обнаружил проблему, которая жила уже достаточно давно. А именно, при импортировании истории чата из программы RnQ в QutIM появились дубли сообщений. Что бы решить данную проблему была написана мною программа парсер формата JSON. Для написания использовался фреймворк Qt, IDE QtCreator, компилятор GCC и операционная система Debian GNU/Linux. С учетом кроссплатформенности Qt, собрать данную программу на других платформах будет не трудно. И так, внешний вид программы простой. При запуске появляется главное окно. После клика на кнопку "Открыть" выбираем проблемный файл и смотрим на него в окне просмотра:

Изображение

Далее командуем "Обработка" и ждем когда полоса прогресса покажет 100%. Вот результат:

Изображение

После этого нужно лишь нажать на "Сохранить", что бы изменения сохранились в файл.

**Внимание!!! Программу использовать на свой страх и риск. Перед использованием рекомендуется сделать резервную копию файлов истории.

Скачать исходный код + исполняемый файл под Linux