понедельник, 26 января 2009 г.

Продолжение запятой

Несколько недель назад посетила меня мысль сделать нециклическое переключение раскладок и заодним прикрутить ввод японских иероглифов. С этой целью был довольно быстро установлен SCIM, в башпрофиль было прописано XMODIFIERS=@im=SCIM и в итоге радостный я получил то, чего добивался. SCIM периодически отваливается в qt-шных приложениях (по одному, пока не перезапустишь приложение, в нем не работает ввод вообще, в остальных нормально), но это не очень часто и не очень страшно. Жить можно. Так как раскладки у SCIM свои, точнее от библиотеки m17n, то раскладку с нижней запятой пришлось делать заново.
ru-kbd-my.patch
--- ru-kbd.mim  2009-01-15 13:51:19.000000000 +0400
+++ ru-kbd-my.mim 2009-01-26 16:45:01.000000000 +0400
@@ -26,7 +26,7 @@
;;; @image html ru-kbd.png "Keyboard Layout"
;;; @image latex ru-kbd.eps "Keyboard Layout" width=\narrowwidth

-(input-method ru kbd)
+(input-method ru kbd-my)

(description
"Russian input method simulating the Russian keyboard.
@@ -74,7 +74,7 @@
("m" ?ь)
("," ?б)
("." ?ю)
- ("/" ?.)
+ ("/" ?,)
("!" ?!)
("@" ?\")
("#" ?№)
@@ -121,7 +121,7 @@
("M" ?Ь)
("<" ?Б)
(">" ?Ю)
- ("?" ?,)))
+ ("?" ?.)))

(state
(init

Прикручивать так: patch -o /usr/share/m17n/ru-kbd-my.mim /usr/share/m17n/ru-kbd.mim < ru-kbd-my.patch
После этого появится раскладка ru-kbd-my, где запятая и точка будут на месте точки и запятой соответственно.

ArchLinux в цветах Gentoo

Осознал я однажды что арчевый префикс "::" синего цвета в инитскриптах нагоняет уныние на меня и решил перекрасить инитскрипты в цвета более позитивные - гентушные. И вот что из этого получилось:

Чтобы добиться такого результата я патчил /etc/rc.d/functions и огорчался по поводу того что эту процедуру придется повторять после каждого его обновления, но в процессе патчинга узнал о /etc/rc.d/functions.d/, в итоге получилось такое довольно короткое и красивое решение:
/etc/rc.d/functions.d/colors
# colors:
if [ "$USECOLOR" = "YES" -o "$USECOLOR" = "yes" ]; then
C_DONE="\033[1;32;40m" # completed
PREFIX_REG="\033[1;32;40m *"
fi

stat_done() {
deltext
printf " ${C_OTHER}[${C_DONE} OK ${C_OTHER}]${C_CLEAR} \n"
}