diff -ur tilda-0.09.3/src/load_tilda.c tilda-0.09.3-real-transparency/src/load_tilda.c --- tilda-0.09.3/src/load_tilda.c 2006-02-01 05:16:58.000000000 +0900 +++ tilda-0.09.3-real-transparency/src/load_tilda.c 2007-01-04 22:54:36.000000000 +0900 @@ -137,10 +137,9 @@ if (TRANS_LEVEL > 0) { vte_terminal_set_background_saturation (VTE_TERMINAL (tt->vte_term), TRANS_LEVEL); - vte_terminal_set_background_transparent (VTE_TERMINAL(tt->vte_term), TRUE); - } - else - vte_terminal_set_background_transparent (VTE_TERMINAL(tt->vte_term), FALSE); + vte_terminal_set_opacity (VTE_TERMINAL (tt->vte_term), (1.0 - TRANS_LEVEL) * 0xffff); + vte_terminal_set_background_transparent (VTE_TERMINAL(tt->vte_term), !tw->have_argb_visual); + } vte_terminal_set_background_tint_color (VTE_TERMINAL(tt->vte_term), &tint); vte_terminal_set_colors (VTE_TERMINAL(tt->vte_term), &fore, &back, NULL, 0); diff -ur tilda-0.09.3/src/tilda_window.c tilda-0.09.3-real-transparency/src/tilda_window.c --- tilda-0.09.3/src/tilda_window.c 2006-06-29 13:13:08.000000000 +0900 +++ tilda-0.09.3-real-transparency/src/tilda_window.c 2007-01-04 22:52:47.000000000 +0900 @@ -88,6 +88,28 @@ CFG_END() }; +static void +initialize_alpha_mode (tilda_window *tw) +{ + GdkScreen *screen; + GdkColormap *colormap; + + screen = gtk_widget_get_screen (GTK_WIDGET (tw->window)); + colormap = gdk_screen_get_rgba_colormap (screen); + if (colormap != NULL && gdk_screen_is_composited (screen)) + { + /* Set RGBA colormap if possible so VTE can use real alpha + * channels for transparency. */ + + gtk_widget_set_colormap(GTK_WIDGET (tw->window), colormap); + tw->have_argb_visual = TRUE; + } + else + { + tw->have_argb_visual = FALSE; + } +} + /** * Get a pointer to the config file name for this instance. * @@ -273,6 +295,7 @@ /* Create a window to hold the scrolling shell, and hook its * delete event to the quit function.. */ tw->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + initialize_alpha_mode (tw); gtk_container_set_resize_mode (GTK_CONTAINER(tw->window), GTK_RESIZE_IMMEDIATE); g_signal_connect (G_OBJECT(tw->window), "delete_event", GTK_SIGNAL_FUNC(deleted_and_quit), tw->window); diff -ur tilda-0.09.3/src/tilda_window.h tilda-0.09.3-real-transparency/src/tilda_window.h --- tilda-0.09.3/src/tilda_window.h 2006-01-14 06:10:39.000000000 +0900 +++ tilda-0.09.3-real-transparency/src/tilda_window.h 2007-01-04 22:51:35.000000000 +0900 @@ -36,6 +36,7 @@ gchar *lock_file; gchar *config_file; gint instance; + gboolean have_argb_visual; /* Stores all configuration */ cfg_t *tc;