LINUX.ORG.RU

Gtk+ RGBA в действии


0

0

Все мы помним сообщение об автора движка Murrine о поддержке RGBA в своем движке? Вот и оно. Murrine-svn, собственный пропатченный гтк+ (патч очень тривиальный, хотя не без проблем - см. ниже). Также, в принципе, можно пропатчивать отдельные приложения, если не нравится чтобы все так выглядело )))) Естественно все работает на компизе. Вроде выглядит ниче )))

а теперь о печальном... меню в файрфоксе выглядит очень и очень печально, смотреть на это без слез нельзя (см скриншот ниже). Скорее всего это проблема файрфокса

пидгин вообще не захотел запускатся (хотя может это в нем самом дело - я его до этого не запускал, да и вообще сидел на копыте в кде)

в gconf-editor разработчики видимо навернули один лишний виджет в нижнем правом углу, выглядит не очень опрятно

дополнительные скрины: первый скрин, PNG весрия: http://img213.imageshack.us/img213/3167/screenit7.png

некоторые проблемы с RGBA colormap-ами, PNG: http://img115.imageshack.us/img115/2526/200803030429151680x1050iv5.png

>>> Просмотр (1680x1050, 228 Kb)

anonymous

Проверено: Shaman007 ()

Re: Gtk+ RGBA в действии

Шрифты говно и обоину надо бы поменять. Остальное весьма неплохо.

anonymous ()

Re: Gtk+ RGBA в действии

Суицидальненько...

Sikon ★★★ ()

Re: Gtk+ RGBA в действии

Супер! Очень понравилось! Что за дистр? А где обои брал? Это какой-то пак? Ну вот потянуло на гном...

anonymous ()

Re: Gtk+ RGBA в действии

ААА, дайте мне эту обоину, давно ищу :) А скрин супер ^^

Masaki ()

Re: Gtk+ RGBA в действии

Олицетворение глУмура и готишности, млин.

wfrr ★★☆ ()

Re: Gtk+ RGBA в действии

ну, будем надеяться что оно попадет в основной gtk+, и будет повод за него порадоваться.

dmiceman ★★★★★ ()

Re: Gtk+ RGBA в действии

По-моему, это прекрасно! Автору зачёт.

humand ()

Re: Gtk+ RGBA в действии

патч! патч! Где патч? Дайте патч!

lester_dev ★★★★★ ()

Re: Gtk+ RGBA в действии

Эй, а что это за murrine-svn? где достать?

lester_dev ★★★★★ ()

Re: Gtk+ RGBA в действии

Когда оно будет в основной ветке гтк?

anonymous ()

Re: Gtk+ RGBA в действии

Я что-то не понял всей шутки юмора. Оно что только со своими собственными темами работает?

mutronix ★★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от mutronix

Re: Gtk+ RGBA в действии

насколько я понял, за прозрачность отвечает движок murrina, патченый гтк нужен чтобы эту прозрачность видеть, так что да, только со своими темами.

Хотя никто не мешает создать свою тему, где за муррина будет рисовать только фон, а контролы повесить на другой какой-либо движок.

lester_dev ★★★★★ ()

Re: Gtk+ RGBA в действии

Увы, надо заметить, что с мурриной из свн подглючивают старые темы. Новых исчо в общем-то и нет, да и гтк надо патчить (или ставить патченное), ради того что на скрине. В общем, ждем патч в основной ветке, ждем новый релиз муррины, и, самое главное, ждем когда темы адаптируют к новой мурине.

anonymous ()

Re: Gtk+ RGBA в действии

слишком много прозрачности.

polachok ()

Re: Gtk+ RGBA в действии

Муррину просто не узнать, гораздо лучше стало без этих дурацких "стеклянностей". А патч ждём в основной ветке, может к тому времени и компиз стабилизируется хоть немного.

Bohtvaroh ★★★★ ()

Re: Gtk+ RGBA в действии

А не мог бы автор показать, как с этим всем выглядит eclipse?

Bohtvaroh ★★★★ ()

Re: Gtk+ RGBA в действии

>меню в файрфоксе выглядит очень и очень печально, смотреть на это без слез нельзя (см скриншот ниже). Скорее всего это проблема файрфокса

возможно, это проблема темы.

x3al ★★★★★ ()

Re: Gtk+ RGBA в действии

Очень красиво. Еще бы шрифты так не замывались. Например, просто чудесно вот на этом скрине несильно контрастные шрифтики в темной гамме смотрятся:

http://www.linux.org.ru/gallery/2542170.png

Здесь бы таким же образом оформить.

malices_gossips ★★★ ()

Re: Gtk+ RGBA в действии

Супер, мне очень понравилось - темное оформление удачно сделано

zodiac ★★ ()
Ответ на: Re: Gtk+ RGBA в действии от zodiac

Re: Gtk+ RGBA в действии

А тем временем модераторы пропускают какую-то муть вместо чего-то интересного.

Bohtvaroh ★★★★ ()

Re: Gtk+ RGBA в действии

вот модуль для gtk, включающий rgba для murrine-svn
компиляете в librgba.so, копируете результат в /usr/lib/gtk-2.0/modules и выставляете переменную среды GTK_MODULES="rgba"

у меня работает


#include <glib/gtypes.h>
#include <gtk/gtk.h>

static	GdkColormap *colormap;


G_MODULE_EXPORT void
gtk_module_init (gint * argc, gchar *** argv)
{
    
    colormap = gdk_screen_get_rgba_colormap(gdk_screen_get_default());
    
    gtk_widget_push_colormap(colormap);
    
    gtk_widget_set_default_colormap(colormap);   

}

geek ★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от geek

Re: Gtk+ RGBA в действии

Гек, а темы-то, темы мурриновские? Вот например как у Кими в блоге. Лежат может уже где?

anonymous ()
Ответ на: Re: Gtk+ RGBA в действии от lester_dev

Re: Gtk+ RGBA в действии

Жестер, этого кой-чего дофига, я говорил о темах созданных или адаптированных для муррино 0.60свн. Бо как я говорил выше, старые темы подчас безбожно глючат.

anonymous ()
Ответ на: Re: Gtk+ RGBA в действии от anonymous

Re: Gtk+ RGBA в действии

>Гек, а темы-то, темы мурриновские? Вот например как у Кими в блоге. Лежат может уже где?

я с сайта муриновского качал вроде. А сама муррина из свн

geek ★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от anonymous

Re: Gtk+ RGBA в действии

>Бо как я говорил выше, старые темы подчас безбожно глючат.

вообще, клим (или как там его) заверил меня, что муррина 100% безглючная и баги есть в gtk+, иксах и аппликухах с фековыми гтк-виджетами (firefox,ooo)

ну и про то, что иконки в трее MUST use rgb colormap

ща добавлю в модуль blacklist и проверю

geek ★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от anonymous

Re: Gtk+ RGBA в действии

>Жестер, этого кой-чего дофига, я говорил о темах созданных или адаптированных для муррино 0.60свн. Бо как я говорил выше, старые темы подчас безбожно глючат.

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

lester_dev ★★★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от geek

Re: Gtk+ RGBA в действии

так, первые кандидаты на blacklist

gnome-panel firefox

и все приложения, юзающие трей :-\

geek ★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от geek

Re: Gtk+ RGBA в действии

Ну фокс, у него свой велосипед на морде, а вот про остальное - о_О Эх, быстрее бы ужо допилили..

anonymous ()
Ответ на: Re: Gtk+ RGBA в действии от polachok

Re: Gtk+ RGBA в действии

>как сделать такие шрифты?

эм..убунту поставить =)

geek ★★★ ()

Re: Gtk+ RGBA в действии

а оно работает с компизовским плагином blur-windows? сейчас там то что под прозрачной декорацией emerald как-бы замыливается и получается очень удобно - текст снизу и сверху не сливается. Получается эффект матового стекла. Хорошо бы чтоб оно теперь не только на декорацию, а и на все окно влияло - тогда былоб действительно супер.

sid350 ★★★★★ ()

Re: Gtk+ RGBA в действии

Класс

FiXer ★★☆☆☆ ()

Re: Gtk+ RGBA в действии

сори, что раньне не отвечал, не знал, как комментировать неподтвержденные ))

обоина: http://img291.imageshack.us/img291/416/animepaperwallpaperseurzw1.jpg

теперь насчет патча: если пройти в багзиллу по ссылке с новости про rgba, то становится ясно, что можно не ждать это в основной ветке в ближайшее время. на сколько я понял, разработчики gtk слишком заняты, чтобы тратить время на такую ерунду. Помимо того, они предпочли свалить все на X.org foundation (Xorg должен возвращать RGBA карту, когда доступно). X.org разработчики тоже оказались сильно заняты)))

Патч уже здесь выложили, хотя я реализовал грубым вмешательством в исходники gtk))))

> так, первые кандидаты на blacklist > gnome-panel firefox > и все приложения, юзающие трей :-\

файрфокс у меня работал более менее (за исключением меню, но оно мне нафик не сделось почти)

насчет приложений юзающих трей - можно применить такой фокус

GdkScreen * screen; GdkColormap * colormap;

screen = gtk_widget_get_screen(main_tray_widget); colormap = gdk_screen_get_rgb_colormap(screen); //gtk_widget_push_colormap(colormap); gtk_widget_set_default_colormap(colormap);

// la - la - la

//gtk_widget_pop_colormap(colormap);

push/pop colormap у меня не работают (может я что-то делаю неправильно?)

на треевский виджет. В пидгине это например (docklet-x11.c). Таким образом треевские приложения запускаются (проверено опять же на пидгине), хотя трей теперь подключивает - иконки в нем станут отображатся только после перезапуска трея.

ОпенОффис еще валится

спасибо за внимание

//автор

anonymous ()
Ответ на: Re: Gtk+ RGBA в действии от anonymous

Re: Gtk+ RGBA в действии

>gtk_widget_set_default_colormap(colormap);

т.е. gtk_widget_set_colormap(colormap); ))))

anonymous ()

Re: Gtk+ RGBA в действии

//UPD: немного покопался в треевских приложениях и сырцах трея --------------------------------------------------------------- Патч на пидгин: diff -rNp pidgin-2.4.0/pidgin/gtkdocklet-x11.c pidgin-2.4.0.new/pidgin/gtkdocklet-x11.c *** pidgin-2.4.0/pidgin/gtkdocklet-x11.c 2008-02-29 15:09:28.000000000 +0300 --- pidgin-2.4.0.new/pidgin/gtkdocklet-x11.c 2008-03-12 03:11:48.000000000 +0300 *************** docklet_x11_create(gboolean recreate) *** 256,261 **** --- 256,263 ---- docklet_x11_destroy(); } + gtk_widget_push_colormap(gdk_screen_get_rgb_colormap(gdk_screen_get_default()) ); + docklet = egg_tray_icon_new(PIDGIN_NAME); box = gtk_event_box_new(); image = gtk_image_new(); *************** docklet_x11_create(gboolean recreate) *** 298,303 **** --- 300,307 ---- } purple_debug(PURPLE_DEBUG_INFO, "docklet", "created\n"); + + gtk_widget_pop_colormap(); } static void ------------------------------------------------------------------

патч на exaile: diff -rNp exaile-0.2.11/xl/gui/main.py exaile-0.2.11.new/xl/gui/main.py *** exaile-0.2.11/xl/gui/main.py 2007-10-16 19:44:44.000000000 +0400 --- exaile-0.2.11.new/xl/gui/main.py 2008-03-12 02:54:46.000000000 +0300 *************** class ExaileWindow(gobject.GObject): *** 70,75 **** --- 70,76 ---- gobject.GObject.__init__(self) self.xml = gtk.glade.XML(xlmisc.glade_file(self), 'ExaileWindow', 'exaile') self.window = self.xml.get_widget('ExaileWindow') + self.gtk_screen = self.window.get_screen(); media.exaile_instance = self self.settings = config.Config(xl.path.get_config('settings.ini')) *************** class ExaileWindow(gobject.GObject): *** 755,763 **** --- 756,766 ---- xlmisc.log("Sorry, tray icon is NOT available") return if self.tray_icon: return + gtk.widget_push_colormap(self.gtk_screen.get_rgb_colormap()); self.tray_icon = xlmisc.TrayIcon(self) self.emit('tray-icon-toggled', True) + gtk.widget_pop_colormap(); def remove_tray(self): """ Removes the tray icon -------------------------------------------------------------

anonymous ()

Re: Gtk+ RGBA в действии

ой, прошу прощения, форматирование (не совсем разобрался еще)

//UPD: немного покопался в треевских приложениях и сырцах трея
---------------------------------------------------------------
Патч на пидгин: 
diff -rNp pidgin-2.4.0/pidgin/gtkdocklet-x11.c pidgin-2.4.0.new/pidgin/gtkdocklet-x11.c
*** pidgin-2.4.0/pidgin/gtkdocklet-x11.c	2008-02-29 15:09:28.000000000 +0300
--- pidgin-2.4.0.new/pidgin/gtkdocklet-x11.c	2008-03-12 03:11:48.000000000 +0300
*************** docklet_x11_create(gboolean recreate)
*** 256,261 ****
--- 256,263 ----
  		docklet_x11_destroy();
  	}
  
+ 	gtk_widget_push_colormap(gdk_screen_get_rgb_colormap(gdk_screen_get_default())
);
+ 
  	docklet = egg_tray_icon_new(PIDGIN_NAME);
  	box = gtk_event_box_new();
  	image = gtk_image_new();
*************** docklet_x11_create(gboolean recreate)
*** 298,303 ****
--- 300,307 ----
  	}
  
  	purple_debug(PURPLE_DEBUG_INFO, "docklet", "created\n");
+ 
+ 	gtk_widget_pop_colormap();
  }
  
  static void
------------------------------------------------------------------

патч на exaile:
diff -rNp exaile-0.2.11/xl/gui/main.py exaile-0.2.11.new/xl/gui/main.py
*** exaile-0.2.11/xl/gui/main.py	2007-10-16 19:44:44.000000000 +0400
--- exaile-0.2.11.new/xl/gui/main.py	2008-03-12 02:54:46.000000000 +0300
*************** class ExaileWindow(gobject.GObject): 
*** 70,75 ****
--- 70,76 ----
          gobject.GObject.__init__(self)
          self.xml = gtk.glade.XML(xlmisc.glade_file(self), 'ExaileWindow', 'exaile')
          self.window = self.xml.get_widget('ExaileWindow')
+ 	self.gtk_screen = self.window.get_screen();
          media.exaile_instance = self
  
          self.settings = config.Config(xl.path.get_config('settings.ini'))
*************** class ExaileWindow(gobject.GObject): 
*** 755,763 ****
--- 756,766 ----
              xlmisc.log("Sorry, tray icon is NOT available")
              return
          if self.tray_icon: return
+ 	gtk.widget_push_colormap(self.gtk_screen.get_rgb_colormap());
          self.tray_icon = xlmisc.TrayIcon(self)
          self.emit('tray-icon-toggled', True)
  
+ 	gtk.widget_pop_colormap();
      def remove_tray(self):
          """
              Removes the tray icon
-------------------------------------------------------------

Патч на gnome-power-manager:
diff -rNp gnome-power-manager-2.20.2/src/gpm-tray-icon.c gnome-power-manager-2.20.2.new/src/gpm-tray-icon.c
*** gnome-power-manager-2.20.2/src/gpm-tray-icon.c	2007-11-02 20:31:05.000000000 +0300
--- gnome-power-manager-2.20.2.new/src/gpm-tray-icon.c	2008-03-12 02:16:52.000000000 +0300
*************** GpmTrayIcon *
*** 713,718 ****
--- 713,723 ----
  gpm_tray_icon_new (void)
  {
  	GpmTrayIcon *tray_icon;
+ 
+ 	gtk_widget_push_colormap(gdk_screen_get_rgb_colormap(gdk_screen_get_default())
);
+ 
  	tray_icon = g_object_new (GPM_TYPE_TRAY_ICON, NULL);
+ 
+ 	gtk_widget_pop_colormap();
  	return GPM_TRAY_ICON (tray_icon);
  }

--------------------------------------------------------------------

anonymous ()

Re: Gtk+ RGBA в действии

Но это еще не все, без патча на сам трей иногда у меня треевские иконки вылезали и становились отдельными окнами. Вот фикс, у меня с ним все работает нормально

diff -rNp gnome-panel-2.20.3/applets/notification_area/main.c gnome-panel-2.20.3.new/applets/notification_area/main.c *** gnome-panel-2.20.3/applets/notification_area/main.c 2008-01-08 01:26:27.000000000 +0300 --- gnome-panel-2.20.3.new/applets/notification_area/main.c 2008-03-12 04:52:25.000000000 +0300 *************** applet_factory (PanelApplet *applet, *** 202,212 **** --- 202,218 ---- NaTray *tray; AppletData *data; AtkObject *atko; + GdkScreen * screen; + GdkColormap * colormap; if (!(strcmp (iid, "OAFIID:GNOME_NotificationAreaApplet") == 0 || strcmp (iid, "OAFIID:GNOME_SystemTrayApplet") == 0)) return FALSE; + screen = gtk_widget_get_screen(GTK_WIDGET(applet)); + colormap = gdk_screen_get_rgb_colormap(screen); + gtk_widget_set_colormap(GTK_WIDGET(applet),colormap); + tray = na_tray_new_for_screen (gtk_widget_get_screen (GTK_WIDGET (applet)), get_orientation_from_applet (applet)); --------------------------------------------------------------------

касательно файрфокса, ОО и прочего: GTK_MODULES=""" firefox, так работает нормально

Спасибо за внимание

// автор

anonymous ()

Re: Gtk+ RGBA в действии

опять форматирование ((((

Но это еще не все, без патча на сам трей иногда у меня треевские иконки вылезали и становились отдельными окнами. Вот фикс, у меня с ним все работает нормально

diff -rNp gnome-panel-2.20.3/applets/notification_area/main.c gnome-panel-2.20.3.new/applets/notification_area/main.c
*** gnome-panel-2.20.3/applets/notification_area/main.c	2008-01-08 01:26:27.000000000 +0300
--- gnome-panel-2.20.3.new/applets/notification_area/main.c	2008-03-12 04:52:25.000000000 +0300
*************** applet_factory (PanelApplet *applet,
*** 202,212 ****
--- 202,218 ----
    NaTray     *tray;
    AppletData *data;
    AtkObject  *atko;
+   GdkScreen * screen;
+   GdkColormap * colormap;
  
    if (!(strcmp (iid, "OAFIID:GNOME_NotificationAreaApplet") == 0 ||
          strcmp (iid, "OAFIID:GNOME_SystemTrayApplet") == 0))
      return FALSE;
  
+   screen = gtk_widget_get_screen(GTK_WIDGET(applet));
+   colormap = gdk_screen_get_rgb_colormap(screen);
+   gtk_widget_set_colormap(GTK_WIDGET(applet),colormap);
+ 
    tray = na_tray_new_for_screen (gtk_widget_get_screen (GTK_WIDGET (applet)),
  				 get_orientation_from_applet (applet));
  
--------------------------------------------------------------------

касательно файрфокса, ОО и прочего: GTK_MODULES=""" firefox, так работает нормально

Спасибо за внимание

// автор

anonymous ()

Re: Gtk+ RGBA в действии

Великолепно! Без преувеличения. Хочу хау-ту для Генты.

MaGIc2laNTern ()

Re: Gtk+ RGBA в действии

И после всего написанного кто-то смеет утверждать, что Gnome - это для
работы???

Я все понимаю (новое, не от разработчика и т.д.) , но такой рихтовки напильником
уже давно не встречал...:))

GlorySmith ()
Ответ на: Re: Gtk+ RGBA в действии от anonymous

Re: Gtk+ RGBA в действии

>Спасибо за внимание

патч на notification_area неплохо бы в список рассылки запихать.

касательно фф, оо и прочего - надо гтк ковырять, там походу отваливается именно при попытке отрисовки rgba на rgb или наоборот. Т.е. в идеале надо бы проверку и преобразование.

geek ★★★ ()
Ответ на: Re: Gtk+ RGBA в действии от GlorySmith

Re: Gtk+ RGBA в действии

>И после всего написанного кто-то смеет утверждать, что Gnome - это для работы???

почему нет?

>Я все понимаю (новое, не от разработчика и т.д.) , но такой рихтовки напильником уже давно не встречал...:))

можно подумать, без рихтовки не работает нихрена =)

geek ★★★ ()

Re: Gtk+ RGBA в действии

нижняя панель немного великовата на мой взгляд. Но в принципе зачёт :)

amoralyrr ★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.