Ошибка в GraphicsMagick

обнаружилась тут давеча омерзительная вещь, при создании скриншотов gm import начисто игнорирует опцию -frame, и вообще не желает включать обрамление окон в скриншот. причем гадость эта проявляется только при выборе окна мышью. если явно указывать id, к примеру предварительно узнав его через xwininfo -frame, все делается корректно.

пришлось лезть в исходники. сначала я грешил на некорректную работу XQueryTree, но потом все оказалось значительно тривиальнее. классический use after free при разборе данной опции.

Читать далее «Ошибка в GraphicsMagick»

FVWM и переводы gettext

в fvwm есть хорошая штука — встроенная поддержка gettext. все сроки описанные как $[gt.String] являются переводимыми. одна проблема, как это все извлечь и запихать в .po файл. руками — неспортивно, писать отдельную тузлинку — как-то чрезмерно. наиболее оптимальный вариант — внедрить поддержку этого дела в какой-нибудь из существующих инструментов.

я выбрал пакет intltool. везде его использую, реализован он на perl-е, что весьма лепо, и для подобных задач самое оно. патчик получился на удивление простеньким

Читать далее «FVWM и переводы gettext»

Read в конфиге FVWM

в man fvwm по поводу команды Read написано следующее — This looks for file config in $FVWM_USERDIR and $FVWM_DATADIR directories, as described in Read.

но вот чтобы работала таки $FVWM_DATADIR, т.е. переменная окружения, а не FVWM_DATADIR, т.е. макрос m4, определяемый и используемый на момент compile-time, не неизменяемый в runtime, приходится таки напильничать.

надфиль следующий

--- fvwm-2.6.7/fvwm/read.c.orig   2016-12-07 14:12:09.000000000 +0200
+++ fvwm-2.6.7/fvwm/read.c  2016-12-07 14:19:43.728814143 +0200
@@ -239,8 +239,14 @@
 
                if((f = fopen(full_filename, "r")) == NULL)
                {
-                   full_filename = CatString3(
-                                   FVWM_DATADIR, "/", filename);
+                   char *datadir = getenv ("FVWM_DATADIR");
+                   
+                   if (datadir)
+                           full_filename = CatString3(
+                                           datadir, "/", filename);
+                   else
+                           full_filename = CatString3(
+                                           FVWM_DATADIR, "/", filename);
                        f = fopen(full_filename, "r");
                }
        }

Провал перехода на gtk3

очередная попытка перейти в системе на gtk3 — очередной провал, и очередной откат на gtk2

первая причина проста — нет софта.

  • firefox без наличия в системе gtk2 не собирается, какие рашпили не применяй. а последние версии, требующие обязательного присутствия в системе антикварного autoconf-2.13 — вообще лютейший пиздец.
  • нормального почтового клиента — нет. любимый sylpheed — только gtk2. claws — хоть и собирается под gtk3, но его собственные виджеты для списков — полный пэ, кладущий стопицот болтов на текущие темы в частности и css-движок вообще. balsa — эта дура не умеет локальные ветки, только с сервера. поле references (rcf 4021) — то ли не осилили, то ли для лохов. громоптиц — та же беда, что и с огнелисом
  • gimp — пока что только gtk2. что там у них в git-е творится, даже и смотреть не хочу.
  • pidgin — аналогично. а учитывая то, что они весь интерфейс 3-й ветки переводят на webkit, но при этом почему-то используют webkit, а не webkit2 — вообще вызывает изрядное недоумение

вторая причина — собственно либа и вектор ее развития

тут подходит старая поговорка «садился — бодрился, стал срать — и упал». нелогичность развития просто поражает. есть куча положительных моментов, типа выкидывания всяких [vh] классов, вроде GtkVSeparator/GtkHSeparator и т.д. унификация сложных виджетов (selector->chooser). выбрасывание deprecated барахла, и как следствие — чистка кодовой базы. но блядь!!! с барахлом они переборщили. от релиза к релизу куча полезных штук объявляется устаревшими, взамен ничего не предлагается.

  • стоковые элементы — устарели. замены нет. объяснение — дергайте иконки из темы. ДОЛБОЕБЫ, БЛЯ, СТОКОВЫЕ ЭЛЕМЕНТЫ — ЭТО НЕ ТОЛЬКО ИКОНКИ! а еще и перевод меток и простота api для пользователей.
  • иконки в меню — устарели. пояснение — хотите иконки, пихайте свой контейнер. схуяли? на кой хрен эту рутину переносить из библиотеки в приложения?
  • csd — вообще боль и печаль. особенно их неотключаемость без хаков с LD_PRELOAD
  • отсутствие color picker-а в диалоге выбора цвета — тоже изрядно напрягает
  • popover — отдельная тема для ненависти. изначально идея неплохая, но ее реализация — бля, узнаю, какая тварь это выдумала — буду топтать пожизненное на американской киче

вот такие пироги. жаль, что поторопился свой yad покострячить. теперь придется задвигать trunk в отдельную ветку и мержить legacy обратно в trunk

upd: и да, отдельную ненависть вызывает стремление использовать GSettings для хранения настроек и прочих текущих состояний диалогов выбора файла и цвета, и как следствие — косвенное требование наличия dconf в системе

FVWM и буфер обмена

В связи с переходом на gtk3 встал вопрос о менеджере буфера обмена. Всякие parcellite и клоны, мягко говоря, дерьмецо. Заточены в основном под gtk2. Да и хренова туча всякой дополнительной лабуды в них мне и в хер не уперлась. Пришлось воротить что-то свое. В принципе, все, что мне нужно — это хранить некую не очень большую историю и иметь возможность выбрать нужный кусок.

В результате родилось следующее. Небольшой скриптик, использующий xclip для управления буферами и fvwm для его периодического дергания и организации меню выбора нужного куска.

Читать далее «FVWM и буфер обмена»

десктопное

похоже, что переход на gtk3 в пределах одного, отдельно взятого нетбука, таки удался

что остается? остаются охуенные мелочи. нормального почтового клиента нет, только balsa. придется допиливать. pidgin, падла, требует webkit, а не webkit2. и глядя на код, я малость приохуел. тоже на допил. epiphany вроде заточил

тему еще допилить надо, но в первом приближении вроде рабочая уже.

единственный плюс всего этого — давно собирался запилить свой десктопчик на базе fwvm + скриптовые плюшки, и это наконец свершается.

такие вот пирожки (на более крупное не тянет пока)

Десктопные уведомления на perl

Нормальный человек проводит отпуск нормально. Я — человек не очень нормальный, потому и отпуск провожу не очень нормально. Одна из ненормальностей нынешнего отпуска — реализация уведомлений на perl-е.

Читать далее «Десктопные уведомления на perl»