Пуркуа gtk3 тормозит или уебаны дорвались…

GTK такой GTK, все скатывается и скатывается. Впрочем, как и все, к чему прикладывают свои лапки различные копрорации. Хипсетрство, помноженное на некомпетенстность и возведенное в степень внезапно возникшего спроса. Результат – пиздетс.

Попытки скрестить ежа с ужом, а десктопный look&feel с мобильным в одном api – идея изначально убогая и технически крайне сложно реализуемая, зато открывает богатые возможности для пиздобольства и рекламных заманух, что крайне любо манагерам. В случае gtk – это ебанутое баловство с css, вместо нормальных движков, отрисовывающих виджеты и отказ от каких-либо альтернатив.
Читать далее «Пуркуа gtk3 тормозит или уебаны дорвались…»

Блокировка экрана

Блокировка экрана – вещь, в принципе, архиполезная. Иногда. Для некоторых

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

Читать далее «Блокировка экрана»

К вопросу о шрифтах

чудаки на букву м выпилили поддержку битмап шрифтов из pango, начиная с версии 1.44

меня это в принципе, не особо и жарило, любимый terminus используется преимущественно в urxvt и emacs, которые от pango не зависят, да еще и в консоли.
но вот конфигурялка urxvt, которая использует yad, и, как следствие, зависит от всего gtk стека, таки начала сбоить.

ну ладно. как там у высоцкого – зачем мне считаться шпаной и бандитом луддитом и ретроградом? решил сделать все стильно, модно, молодежно. но вот все эти ваши inconsolata-ы и прочие droid mono не вперли аж ни разу. голая консоль еще куда ни шло, Cyr_a8x16 решает. но в иксах заменой terminus-у может быть только terminus, для прочего хипстерства я уже слишком стар

готовые ttf варианты не канают, потому что не используют нужный/привычный мне набор патчей (dv1 ij1 ll2 td1). но шустрый гуглеж привел к mkttf, что позволило сгенерировать нужный мне шрифт без особых проблем.

результат можно взять здесь

ну и все любят картинки

Читать далее «К вопросу о шрифтах»

Иконка urxvt

Хотеть иконку. В urxvt. Согласно ewmh, а не костылями fvwm. И чтобы без всяких –enable-pixbuf и прочего свистяще-пердящего барахла, тянущего лишние зависимости типа gdk-pixbuf

Ну чо, хотеть – сделать. На то он и опенсорц. Иконки, согласно ewmh, задаются через XChangeProperty и атом _NET_WM_ICON. Собственно атом – массив чисел, описывающих иконку. Иконок в одном атоме может быть несколько. Первые два слова описания иконки – размер, дальше пиксели в формате ARGB. Основной фокус – эти числа получить

Читать далее «Иконка urxvt»

Очередные странности gtk3

Понадобилось вызывать всплывающее меню. По “горячей клавише”. Из любого места. Есть для этого такая маленькая приятная либа – keybinder. И как отдельная либа хороша, и в свой код интегрируется легко, т.к. в либе всего один файл с кодом. В общем – прелесть. Вот только меню из обработчиков хоткеев всплывать не желает, хоть ты тресни. Любое другое действие – пожалуйста. Меню – хрен тебе на воротник, а не меню. Причем, тот же самый код для вызова меню прекрасно работает, если его дергать через механизмы GApplication. Такая вот омерзительность.

Читать далее «Очередные странности gtk3»

Run dialog для FVWM

захотелось странного – нормальную запускалку в fvwm. но возникли трудности. то, что дается самим fvwm-ом – убого до безобразия. виджеты для ввода текста что в FvwmScripts, что в FvwmForm тупые до ужаса, не позволяют редактирование от слова вообще, да и ограничения по длине у них идиотские. зато есть Swallow и urxvt. первое позволяет встроить что угодно, благодаря XEmbed, второе – то, что надо для ввода. но, хочу свою историю и поменьше всякого лишнего. сначала подумывал об отдельном конфиге для zsh (bash собран без каких-либо интерактивностей, только для скриптов), но уж очень громоздкие решения. в результате нарыл rlwrap – очень годная тулза, использующая readline и history для организации ввода с историей и прочими плюшками. в результате родилось следующее

urxvt -name YRun +sb -bg "$[infostore.pr_bg]" -fg "$[infostore.pr_fg]" -fn "$[infostore.pr_fn]" -g 35x1-1500-1500 -e rlwrap -o -S "> " -pRed $[FVWM_LIBDIR]/prun.sh

Читать далее «Run dialog для FVWM»

Полезность перенаправлений

Довольно распространенная задача в скриптах – получить размер файла в различных попугаях, к примеру в строках. Для этих целей есть годная утилита wc. Вот только выхлоп у нее не очень удобный, кроме попугаев в выхлопе присутствует еще и имя файла. Чтобы эту гадость вырезать, необходимо прибегать к каким-то конвейерным конструкциям. НО! В случае, если файл подается на стандартный вход, имени никакого нет, и на выходе получается только необходимая величина. Поэтому идеал – lines=$(wc -l < /path/to/file)

  WHY, STUPID MOTHERFUCKERS, WHY ?!?!?!                                                                                                                               
  i don't need your fucking restrictions to your drug-based naming conventions                                                     
--- glib-2.54.3/gio/glib-compile-schemas.c.orig     2018-02-09 07:22:22.154862311 +0200              
+++ glib-2.54.3/gio/glib-compile-schemas.c  2018-02-09 07:23:04.773862128 +0200                      
@@ -1219,19 +1219,6 @@                                                               
       return;                                                                                                                          
     }                                                                                                                                  
                                                                                                                                        
-  if (path && (g_str_has_prefix (path, "/apps/") ||                               
-               g_str_has_prefix (path, "/desktop/") ||                                    
-               g_str_has_prefix (path, "/system/")))                                      
-    {                                                                                               
-      gchar *message = NULL;                                                                        
-      message = g_strdup_printf (_("Warning: Schema “%s” has path “%s”.  "                
-                                   "Paths starting with "                                 
-                                   "“/apps/”, “/desktop/” or “/system/” are deprecated."),
-                                 id, path);                                                         
-      g_printerr ("%s\n", message);                                                       
-      g_free (message);                                                                             
-    }                                                                                               
-                                                                                                    
   state->schema_state = schema_state_new (path, gettext_domain,                                                                     
                                           extends, extends_name, list_of);                                                             
                                                                                                                                        

Fullscreen в fvwm

Раскрытие окна на весь экран – приятная штука. Иногда. Особенно, когда экран невелик. Вот только есть эта фича не везде, где нужно. Но, “мы не можем ждать милостей от природы, взять их у нее — наша прямая задача”, так, кажись, дедушка мичурин говорил. Посему, вместо того, чтобы надеяться на разработчиков того или иного софта на предмет полноэкранного режима, такое вот решение для fvwm

Читать далее «Fullscreen в fvwm»

Numpad и xmodmap

лично меня редкостно выбешивает отвратная работа numpad-а, как средства навигации. т.к. начинал с xt-клавиатур, то эти ваши at-стрелочки считаю новомодным хипстерством. после каких-то очередных обновлений эта гадость в связке urxvt+tmux отказалась работать вообще. только цифровой ввод, и пох на состояние numlock. игрища с разными типами терминалов и баловства с настройками не особо и помогли. причем без tmux/screen, в голом urxvt все работало as expected

в результате этих головняков я задался простым вопросом – а нахер мне в системе вообще два типа стрелок, хомендов и прочих пейджапов? ответ был однозначный – нахер мне это не упало, и одного достаточно. в результате родился такой вот конфиг для xmodmap, мапящий numpad-овские кнопки на соответствующую навигацию. заодно и caps на shift+caps перевесил, а то частенько ложные срабатывания были

Читать далее «Numpad и xmodmap»

Шалости с перенаправлениями

есть в составе coreutils очень забавная команда tty. все, что она делает – это выводит путь к текущему терминалу или псведотерминалу. что-то типа /dev/tty1 или /dev/pts/1. зачем это нужно, кроме как для понтов, спросите вы? а вот зачем.

к примеру, есть скриптик, кругом красивый и интерактивный, и использующий dialog, а не обычный read или подобное, для получения данных от пользователя. и есть необходимость получить какое-то значение, и сразу загнать его в переменную, без извращений с временными файлами или иными дополнительными сущностями. классический подход var=$(command) здесь не сработает. однако наворотив вот такую конструкцию

var=$(dialog --inputbox "Enter some data" 8 60 2>&1 > $(tty))

можно спокойно получить требуемый результат

gtk-doc для eudev

все в этом мире имеет как свои хорошие, так и плохие стороны. gentoo в этом плане – не исключение. сейчас речь об их форке udev-а – eudev.

хорошее, в принципе, дело. systemd в частности и поттеринг вообще очень многих (я не исключение) крайне заебали своими закидонами. поэтому иметь подобную альтернативу крайне нужно. но вот как они развиваются? ладно, выбросили gudev, glib-овую обвязку, это, в принципе, нормально. но вот нахуя при этом еще и выпиливать gtk-doc для всего – это пионерство для меня осталось загадкой. документация по api библиотек – для лохов? программа хорошо документированная на языке программирования си?

я бы еще воспринял это изменение, если бы ребятки предоставили более-менее адекватную замену, какой-нибудь man 3 libudev или что-то наподобие. так ведь хуй там.

благо, комментарии из кода не выкинуты (пока), и gtk-doc можно запилить обратно. патч для версии 3.2.1 можно взять здесь

Читать далее «gtk-doc для eudev»

Безопасность eval

и еще раз к вопросу о пользе чтения man-ов

eval считается крайне уязвимой конструкцией, особенно на произвольных данных. дескать, подставь ; и лепи себе дальше патчи бармина, сколько душе угодно.

оно то так, но есть в bash одна очень приятная штука для борьбы с этим злом – расширитель @. позволяет экранировать всякую каку без особых извратов с echo/sed/perl/whatever

Читать далее «Безопасность eval»

Ошибка в GraphicsMagick

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

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

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