Вот хау-ту, как завести примерно вот такую штуку

1.
Установка движкаИтак, для начала надо скачать svn trunk последнего murrine engine отсюда
http://svn.gnome.org/svn/murrine/trunk/У вас должны быть установлены девелоперские пакеты libgtk2.0-dev, их можно поставить командой
sudo apt-get install libgtk2.0-dev
Теперь можно компилять муррину. Запускаем
autogen.sh --prefix=/usr --enable-animation
make
sudo make install
2.
Настройка темТеперь интересная часть.
Просто поставить тему murrine и наслаждаться прозрачностью вам не дадут.
Потому что приложения гтк ничего про эту прозрачность не знают.
Поэтому заходим сюда -
http://www.cimitan.com/murrine/rgba-support/list , находим ссылки на плагины, качаем и ставим их.
Например в плагин для ритмбокса нужно закинуть в ~/.gnome2/rhythmbox/plugins, то же и для других приложений eog и gedit, каждый в свой каталог соответственно.
Теперь ставим любую тему отсюда
http://www.cimitan.com/murrine/themes/gallery , запускаем, e.g. rhythmbox и наслаждаемся.
3.
Настройка для маньяковПока была легкая прогулка. Теперь самая жесть. Для того чтобы другие приложения, не имеющие плагинов, тоже умели rgba,
нужно каким-то образом подсунуть им 32-битный колормап перед инициализацией. Некоторые патчат gtk, я же предлагаю вариант ввиде
гткашного модуля.
Итак, берем код:
/*
* gtk rgba module
*
* Original code: geek
* Improvements: lester
*
* Copyright (c) 2008 geek <ggeek.sa@mail.ru>,
* lester <lester.dev@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <glib/gtypes.h>
#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include <glib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
static GdkColormap *colormap;
gchar *config = ".librgba.conf";
gboolean
rgba_cmp_prgname_config (const gchar *config,
const gchar *prgname)
{
gchar **contents;
gsize size;
if (g_file_get_contents(config, contents, &size, NULL) == FALSE)
{
return FALSE;
}
gint i = 0;
while (contents[i] != NULL)
{
/* look if we have a progname in the config */
if (g_strrstr (contents[i], prgname) != NULL)
{
g_free(contents[i]);
return TRUE;
}
i++;
}
g_free(contents[0]);
return FALSE;
}
G_MODULE_EXPORT void
gtk_module_init (gint * argc, gchar *** argv)
{
gchar *prgname = g_get_prgname();
#if 0
FILE *f = g_fopen("/home/lester/rgba.log", "a");
if (f)
{
struct timeval tv;
struct timezone tz;
gettimeofday(&tv, &tz);
gchar *timestamp = ctime (&tv.tv_sec);
g_fprintf(f, "Found %s at %s\n", prgname, timestamp);
fclose(f);
}
#endif
g_print ("%s\n", prgname);
gboolean ready_to_go = TRUE;
struct stat buf;
gchar filename[255];
g_sprintf(filename, "%s/%s", g_get_home_dir(), config);
/* check whether we have a config */
if (!g_stat(filename, &buf))
{
/* we just wanna know is the progname simply
* in the config or not */
if (rgba_cmp_prgname_config(filename, prgname))
{
/* if it is, cry without rgba */
ready_to_go = FALSE;
}
}
/*
* We have a normal application
* which won't glitch
*/
if (ready_to_go)
{
colormap = gdk_screen_get_rgba_colormap(gdk_screen_get_default());
gtk_widget_push_colormap(colormap);
gtk_widget_set_default_colormap(colormap);
}
}
и компиляем его
gcc -shared `pkg-config --libs --cflags gtk+-2.0` rgba.c -o librgba.so
получившуюся либу копируем в /usr/lib/gtk-2.0/modules/
sudo cp librgba.so /usr/lib/gtk-2.0/modules/
Теперь нужно создать файлика ~/.librgba.conf, куда нужно вписать такие строчки:
firefox-bin
eclipse
soffice
thunderbird-bin
gxine
banshee
codeblocks
pidgin
gajim
audacity
ekiga
gnome-panel
deskbar-applet
gnome-keyboard-applet
gnome-globalmenu-applet
mixer_applet2
awn-applet-activation
rhythmbox
update-notifier
beagle-search
gnome-power-manager
gksu
xaralx
nm-applet
firestarter
gajim.py
gnome-keyring-ask
freeloader
transmission
evolution
Это список тех приложений, которые, как я заметил, не работают с rgba. Для них будет использована обычная 24-битная палитра.
Если у вас есть приложение которое отказывается запускаться (чаще всего на java) - просто запустите ее в консоли, и сразу после запуска оно выдаст настоящую команду. Например так
$firefox
firefox-bin
Segmentation fault
$
Вот этот firefox-bin надо скопипастить в .librgba.conf и все будет ок.
3a.
Последние штрихиВключаем librgba в переменную GTK_MODULES. Можно поместить следующий код в ~/.profile и ~/.bashrc
GTK_MODULES=$GTK_MODULES:rgba
export GTK_MODULES
3б.
ИтогПерелогиниваемся и наслаждаемся. Надеюсь хауту вам помогло, если возникнут вопросы или предложения - пишите сюда или на мыло!
з.ы. тема на скрине - не муррина, а моя модификация на основе движков murrine и nodoka. Если надо, могу выложить.