
Недавно, настраивая рабочее место для пользователя, столкнулся с просьбой сделать так, чтобы программы запущенные из-под wine выглядели по возможности максимально однородно в среде KDE4. Задача интересная, и в будущем пригодиться. поэтому не стал отказывать и решил подумать как это можно реализовать. Во-первых, в голову сразу пришла программа qt4win в возможностях которой кажется что-то было подобное. Скачивать, собирать и устанавливать данную программу для использования лишь одной функции для меня показалось слишком тяжким занятием, по-этому решил посмотреть как это сделано в qt4wine. Но к сожалению информации об этом не нашел, а скачивать исходники ради того чтоб подглядеть было тоже лень.
В итоге родился следующий скрипт, который обеспечивал перенос необходимой цветовой палитры из файла настройки QT4 в реестр wine.
#!/bin/bash
TMPFILE=$TMP/$$.tmp
REGFILE=$TMP/$$.reg
on_exit ()
{
rm -f $TMPFILE
rm -f $REGFILE
}
trap on_exit EXIT ERR
convert_html2rgb ()
{
KEY=$1
html_color="$2"
r=${html_color:0:2} g=${html_color:2:2} b=${html_color:4:2}
let r=0x$r g=0x$g b=0x$b
echo "\"$KEY\"=\"$r $g $b\""
}
qtconfig_file=$HOME/.config/Trolltech.conf
echo "REGEDIT4
[HKEY_CURRENT_USER\Control Panel\Colors]" > $REGFILE
grep 'Palette\\\active=' $qtconfig_file | sed "s/.*=#[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\).*/\8/g" > $TMPFILE
ButtonFace=`cat $TMPFILE`
convert_html2rgb ButtonFace $ButtonFace >> $REGFILE
convert_html2rgb Scrollbar $ButtonFace >> $REGFILE
convert_html2rgb Menu $ButtonFace >> $REGFILE
convert_html2rgb MenuBar $ButtonFace >> $REGFILE
convert_html2rgb ButtonLight $ButtonFace >> $REGFILE
grep 'Palette\\\active=' $qtconfig_file | sed "s/.*=#[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\).*/\6/g" > $TMPFILE
ButtonText=`cat $TMPFILE`
convert_html2rgb ButtonText $ButtonText >> $REGFILE
convert_html2rgb MenuText $ButtonText >> $REGFILE
grep 'Palette\\\active=' $qtconfig_file | sed "s/.*=#[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\).*/\8/g" > $TMPFILE
Hilight=`cat $TMPFILE`
convert_html2rgb Hilight $Hilight >> $REGFILE
grep 'Palette\\\active=' $qtconfig_file | sed "s/.*=#[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\).*/\9/g" > $TMPFILE
HilightText=`cat $TMPFILE`
convert_html2rgb HilightText $HilightText >> $REGFILE
grep 'Palette\\\active=' $qtconfig_file | sed "s/.*=#[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\).*/\7/g" > $TMPFILE
Window=`cat $TMPFILE`
convert_html2rgb Window $Window >> $REGFILE
grep 'Palette\\\active=' $qtconfig_file | sed "s/.*=#[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #[0-9A-Fa-f]*,\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\),\ #\([0-9A-Fa-f]*\).*/\4/g" > $TMPFILE
WindowText=`cat $TMPFILE`
convert_html2rgb WindowText $WindowText >> $REGFILE
regedit $REGFILE
Скрипт бы сделан на скорую руку и не претендует оптимальность и красоту кода. Если у вас будут замечания, то с удовольствием выслушаю их.
Комментарии (0)
rss свернуть / развернуть