Интеграция цветовой палитры QT4 в WINE


Недавно, настраивая рабочее место для пользователя, столкнулся с просьбой сделать так, чтобы программы запущенные из-под 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



Скрипт бы сделан на скорую руку и не претендует оптимальность и красоту кода. Если у вас будут замечания, то с удовольствием выслушаю их.
Опубликовать в своем блоге livejournal.com

Комментарии Вконтакте facebook

Комментарии (0)

rss свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Блоги, Полезные советы и секреты, Интеграция цветовой палитры QT4 в WINE