Размер значка флага в Xfce (xfce4-xkb-plugin)

Автор ZEN, 17 декабря 2012, 02:25:17

« назад - далее »

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

ZEN

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

Данная инструкция так же была проверена в xfce 4.6

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



Посмотрели? А теперь начинаем.

1. Устанавливаем зависимости для пересборки пакета:

Цитата: /bin/bashsudo apt-get build-dep xfce4-xkb-plugin

2. Скачиваем исходный код пакета:

Цитировать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, заходим в этот каталог:

Цитата: /bin/bashcd xfce4-xkb-plugin-0.5.4.3

3. Вот мы и подобрались до редактирования исходного кода. Открываем и редактируем файл panel-plugin/xkb-cairo.c

Цитата: /bin/bashgedit 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);


Это мы изменили размер значка в трее, но есть еще один "подводный камень" - всплывающая подсказка.



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

4. Открываем и редактируем файл panel-plugin/xkb-cairo.c

Цитата: /bin/bashgedit 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);


5. Компилируем и заменяем xfce4-xkb-plugin!

Цитата: /bin/bash./configure --prefix=/usr ; make
После сборки должен появиться файл /tmp/xfce-xkb-plugin/xfce4-xkb-plugin-0.5.4.3/panel-plugin/xfce4-xkb-plugin
Которым необходимо будет заменить оригинальный файл. Но сначала надо посмотреть где он находится. Для этого апплет должен быть запущен на панели. И в терминале выполняем команду

Цитата: /bin/bashps aux | grep xfce4-xkb | grep lib | awk '{print $11}'

У меня плагин нашелся в /usr/lib/i386-linux-gnu/xfce4/panel-plugins/xfce4-xkb-plugin. Теперь предстоит его заменить скомпилированным. Обязательно перед этим убираем плагин с панели и выполняем команду из терминала

Цитата: /bin/bashsudo -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

6. Добавляем xfce4-xkb-plugin на панель и радуемся новому значку с нормальной всплывающей подсказкой:





7. Создаем deb-пакет для поделиться

Цитата: /bin/bashsudo apt-get install dpkg-repack ; sudo dpkg-repack xfce4-xkb-plugin

И в текущем каталоге получим deb-пакет xfce4-xkb-plugin_0.5.4.3-1.1_i386.deb
Crimea is Ukraine

BULATUS

Спасибо за интересный способ. Осталось теперь поменять унылые флаги на более красочные, и не обязательно прямоугольные...

ZEN

Цитата: BULATUS от 17 декабря 2012, 02:36:37
Спасибо за интересный способ. Осталось теперь поменять унылые флаги на более красочные, и не обязательно прямоугольные...
флаги - это уже личное дело) Мою безвкусицу хватает и на обычные флаги :) Ах да, в целях правосудия, раньше был патч где-то в рассылке FreeBSD... Но так, как он не гуглится, инструкция восстановлена по памяти. Если у кого-то есть опыт создания *.patсh файла, то инструкцию можно будет укоротить.
Crimea is Ukraine