четверг, 20 марта 2014 г.

How to disable bold font into guake terminal

Жирный шрифт в окне терминала не всегда и не везде выглядит нормально, отсюда и желание многих - отображение шрифта bold'ом запретить. В gnome-terminal (да и во многих других) для этого есть галочка в настройках, хочешь включай жирный шрифт, хочешь - отключай. А в guake почему-то этого нет. Есть патчи, есть примеры, как настройку добавить, но автор добавлять эту мега-киллер-фичу не хочет.
Вот в https://github.com/Guake/guake/issues/168 есть ответ замечательный:
So, yeah, basically, bold works, and I don't see enough motivation to ever allow to disable it.

Раньше я добавлял в guake настройку для отключения bold'а, но там несколько файлов править приходится ручками, патч-то вслепую не накатишь, версия из репозитория дистрибутива обычно отличается немного от версии в репозитории автора. Поэтому решил не заморачиваться, сперва просто захардкодил отключение bold'а, но потом всё же решил оставить возможность изменения параметра через gconf, чтоб не только мне полезно было.

Итак. Всё применительно к Arch'у, в других дистрибутивах путь может немного отличаться.

Правим /usr/bin/guake.

В GConfHandler.__init__ вставляем строку
    notify_add(KEY('/style/font/allow_bold'), self.fallowbold_changed)


у меня она встала на 144 строку, над
    notify_add(KEY('/style/font/style'), self.fstyle_changed)
(я везде новый код добавил над /style/font/style)

Дальше в сам GConfHandler добавляем метод
def fallowbold_changed(self, client, connection_id, entry, data):
    policy = entry.value.get_bool()
    for i in self.guake.term_list:
        i.set_allow_bold( policy )
(я метод вставил над существующим методом fstyle_changed, 257 строка)




Теперь в Guake.load_config добавляем строку
    self.client.notify(KEY('/style/font/allow_bold'))
(всё так же рядом с font/style, 894 строка)

Всё. Больше ничего редактировать не надо. Сохраняем, выходим.

Осталось добавить в gconf настройку, которую теперь умеет читать guake. Можно это делать через gconf-editor, либо из консоли
$ gconftool-2 --type boolean -s /apps/guake/style/font/allow_bold false

установка в true разрешит использование жирного шрифта
установка в false отключит его использование


Можно запустить guake, и прямо в нём повыставлять значение нового атрибута настроек то в true, то в false, и сразу видеть результат работы добавленного кода :)


diff моих изменений
144d143
<         notify_add(KEY('/style/font/allow_bold'), self.fallowbold_changed)
257,271d265
<     def fallowbold_changed(self, client, connection_id, entry, data):
<         policy = entry.value.get_bool()
<         for i in self.guake.term_list:
<             i.set_allow_bold( policy )
<
894d887
<         self.client.notify(KEY('/style/font/allow_bold'))

Update (august 2015)
После ряда обновлений такой патч перестал работать. Нужно откорректировать.
В методе fallowbold_changed заменяем self.guake.term_list на self.guake.notebook.iter_terminals(). В общем, заглядываем в fstyle_changed и обходим параметры тем же способом.
И теперь вносить правки нужно в /usr/lib/python2.7/site-packages/guake/guake_app.py и /usr/lib/python2.7/site-packages/guake/gconfhandler.py

Комментариев нет:

Отправить комментарий