True transparency in Xgl/AIGLX

Suggest features you'd like to see in the future. You're not likely to get it without writing the code, but it can't hurt to try :)

True transparency in

Postby mdw » 11 Oct 2006 12:24

The subject says it all; pseudotransparency looks just weird in an environment with real window translucency.

mdw
mdw
 
Posts: 2
Joined: 11 Oct 2006 12:16

Re: True transparenc

Postby peterz » 11 Oct 2006 12:29

[quote00cf42="mdw"]The subject says it all; pseudotransparency looks just weird in an environment with real window translucency.

mdw[/quote00cf42]

Sounds good. Which distros & versions have Xgl now?
User avatar
peterz
 
Posts: 1007
Joined: 09 Jun 2004 13:51
Location: Australia

Re: True transparenc

Postby mdw » 11 Oct 2006 12:42

[quote5bea4e]Sounds good. Which distros & versions have Xgl now?[/quote5bea4e]

Mandriva 2007 and SuSE 10.1 at this moment, with more to come. Mandriva even has live CD called Mandriva One with Xgl/AIGLX/Compiz. gnome-terminal and rxvt-unicode have native support for true transparency.

mdw
mdw
 
Posts: 2
Joined: 11 Oct 2006 12:16

Postby funkyhat » 09 Dec 2006 13:57

Ubuntu 6.10 (possibly 6.06 too actually...)
Gentoo
Probably most of the major distros have it as an option now as it's been around for quite a while...
The method could probably be copied from the gnome-terminal app.
funkyhat
 
Posts: 2
Joined: 09 Dec 2006 13:50
Location: Northampton, UK

Postby funkyhat » 08 Mar 2007 22:48

Just giving this a bump...

Ubuntu 7.04 is to have composite support installed by default, Mandriva has had composite for a long time. All other main distros can configure composite relatively easily if it's not already done.

I'll post a screenshot of gnome-terminal with translucency set if anyone's interested but can't be bothered to play themselves ;-)
funkyhat
 
Posts: 2
Joined: 09 Dec 2006 13:50
Location: Northampton, UK

Postby veers » 20 Mar 2007 01:16

Well, I've got a prototype up and running ;)
Image
veers
 
Posts: 6
Joined: 20 Mar 2007 01:09

Postby peterz » 20 Mar 2007 01:54

Looking good. Looks like the only problem left is the background behind the text?
What's the speed like?
User avatar
peterz
 
Posts: 1007
Joined: 09 Jun 2004 13:51
Location: Australia

Postby veers » 20 Mar 2007 17:35

I've fixed the issue with the text background.
Image

The performance is good on my notebook using an Intel 945GM gpu.
At the moment everything is hardcoded. Disable your background image and transparent background/tinting before using the patch, at least on fedora core 6 you'll get a X11 error otherwise.

Anyway here is the patch:
Code: Select all
[veers@darkvault fe-gtk]$ cvs diff -u
? .gtkutil.c.swp
? Makefile.in
? xtext2.c
cvs diff: Diffing .
Index: gtkutil.c
===================================================================
RCS file: /cvsroot/xchat/xchat2/src/fe-gtk/gtkutil.c,v
retrieving revision 1.30
diff -u -r1.30 gtkutil.c
--- gtkutil.c   31 Jan 2007 07:25:35 -0000      1.30
+++ gtkutil.c   20 Mar 2007 17:30:25 -0000
@@ -523,6 +523,14 @@
        GtkWidget *win;

        win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+    GdkScreen *screen;
+    GdkColormap *colormap;
+    screen = gtk_widget_get_screen(GTK_WIDGET(win));
+    colormap = gdk_screen_get_rgba_colormap(screen);
+    if(colormap != NULL && gdk_screen_is_composited (screen))
+    {
+        gtk_widget_set_colormap(GTK_WIDGET(win), colormap);
+    }
        gtkutil_set_icon (win);
#ifdef WIN32
        gtk_window_set_wmclass (GTK_WINDOW (win), "XChat", "xchat");
Index: xtext.c
===================================================================
RCS file: /cvsroot/xchat/xchat2/src/fe-gtk/xtext.c,v
retrieving revision 1.121
diff -u -r1.121 xtext.c
--- xtext.c     11 Dec 2006 02:52:42 -0000      1.121
+++ xtext.c     20 Mar 2007 17:30:27 -0000
@@ -4168,6 +4168,11 @@
                xtext->color[i].color.alpha = 0xffff;
                xtext->color[i].pixel = palette[i].pixel;
#endif
+        if(i==XTEXT_BG)
+        {
+            guint8* pixel = &palette[i].pixel;
+            pixel[3] = 0xdd;
+        }
                xtext->palette[i] = palette[i].pixel;
        }
Please give it a try. In the meantime I'll try to make it replace the existing transparent background functionality ...somehow.
veers
 
Posts: 6
Joined: 20 Mar 2007 01:09

Postby veers » 21 Mar 2007 00:03

Code: Select all
[veers@darkvault fe-gtk]$ cvs diff -u
? .xtext.c.swp
? Makefile.in
cvs diff: Diffing .
Index: gtkutil.c
===================================================================
RCS file: /cvsroot/xchat/xchat2/src/fe-gtk/gtkutil.c,v
retrieving revision 1.30
diff -u -r1.30 gtkutil.c
--- gtkutil.c   31 Jan 2007 07:25:35 -0000      1.30
+++ gtkutil.c   21 Mar 2007 00:00:34 -0000
@@ -523,6 +523,14 @@
        GtkWidget *win;

        win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+    GdkScreen *screen;
+    GdkColormap *colormap;
+    screen = gtk_widget_get_screen(GTK_WIDGET(win));
+    colormap = gdk_screen_get_rgba_colormap(screen);
+    if(colormap != NULL && gdk_screen_is_composited (screen))
+    {
+        gtk_widget_set_colormap(GTK_WIDGET(win), colormap);
+    }
        gtkutil_set_icon (win);
#ifdef WIN32
        gtk_window_set_wmclass (GTK_WINDOW (win), "XChat", "xchat");
Index: xtext.c
===================================================================
RCS file: /cvsroot/xchat/xchat2/src/fe-gtk/xtext.c,v
retrieving revision 1.121
diff -u -r1.121 xtext.c
--- xtext.c     11 Dec 2006 02:52:42 -0000      1.121
+++ xtext.c     21 Mar 2007 00:00:39 -0000
@@ -994,6 +994,15 @@
        gdk_window_set_user_data (widget->window, widget);

        xtext->depth = gdk_drawable_get_visual (widget->window)->depth;
+    if(xtext->depth == 32)
+    {
+        if(xtext->transparent)
+        {
+            guint8* pixel = &xtext->palette[XTEXT_BG];
+            pixel[3] = 0xdd;
+        }
+        xtext->transparent = FALSE;
+    }

        val.subwindow_mode = GDK_INCLUDE_INFERIORS;
        val.graphics_exposures = 0;
@@ -4283,6 +4292,28 @@

        if (trans && (xtext->tint_red != 255 || xtext->tint_green != 255 || xtext->tint_blue != 255))
                shaded = TRUE;
+    /* rgba mode */
+    if(xtext->depth == 32)
+    {
+        if(trans)
+        {
+            guint8* pixel = &xtext->palette[XTEXT_BG];
+            pixel[3] = 0xdd;
+        }
+        else
+        {
+            guint8* pixel = &xtext->palette[XTEXT_BG];
+            pixel[3] = 0xff;
+        }
+        xtext_set_fg (xtext, xtext->fgc, XTEXT_FG);
+        xtext_set_bg (xtext, xtext->fgc, XTEXT_BG);
+        xtext_set_fg (xtext, xtext->bgc, XTEXT_BG);
+        /* rgba mode breaks the old transparency mechanism
+         * X11 Bad Match. */
+        trans = FALSE;
+        shaded = FALSE;
+        pixmap = 0;
+    }

#if !defined(USE_XLIB) && !defined(WIN32)
        shaded = FALSE;

Now it replaces the pseudo transparency with the real one. Still pretty ugly but at least working.
veers
 
Posts: 6
Joined: 20 Mar 2007 01:09

Postby AccoGrayfox » 30 Apr 2007 03:06

Hi, I know I'm probably going to be crucified for reviving a close-to-one-month old topic, but how exactly do you apply the patches? I've tried with my limited knowledge, but don't understand how it works. (or a simple .patch file would be nice :D)
AccoGrayfox
 
Posts: 1
Joined: 30 Apr 2007 03:00

Postby veers » 04 May 2007 00:15

I'll upload a .patch file for you tomorrow/in some hours.

edit:
http://www.swiss-bash.ch/static/xchat-alpha.patch

to apply:
patch -u < xchat-alpha.patch
veers
 
Posts: 6
Joined: 20 Mar 2007 01:09

Postby atrus » 05 May 2008 00:43

Anybody looking at this? (Reviving a year old thread, to say nothing of reviving a month old one...)
atrus
 
Posts: 1
Joined: 05 May 2008 00:40

Postby DASPRiD » 06 Jul 2008 12:30

I just tested it with the newest version of X-Chat, works fine. Should be integrated by default into the release version.
DASPRiD
 
Posts: 1
Joined: 06 Jul 2008 12:29

Postby kthxbye » 09 Jul 2008 02:46

Hi.

How would I go about doing this? I've not a clue. I see the lil patch command but.. what do I do? >,<
kthxbye
 
Posts: 5
Joined: 25 Jun 2008 07:20

bump

Postby s0ulslack » 25 Sep 2008 03:29

bump #69 ;)

Anyway to merge this patch and have an "true trans" GUI option if correct additions appear?
s0ulslack
 
Posts: 13
Joined: 07 Oct 2005 12:18
Location: Idaho

Next

Return to Feature Requests

Who is online

Users browsing this forum: Google [Bot] and 0 guests