Index: Terminal-0.2.5.8rc2/terminal/terminal-screen.c =================================================================== --- Terminal-0.2.5.8rc2.orig/terminal/terminal-screen.c +++ Terminal-0.2.5.8rc2/terminal/terminal-screen.c @@ -868,11 +868,13 @@ terminal_screen_timer_background (gpoint vte_terminal_set_background_image (VTE_TERMINAL (screen->terminal), NULL); vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0); vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), FALSE); + vte_terminal_set_opacity(VTE_TERMINAL(screen->terminal), 0xffff); } else if (background_mode == TERMINAL_BACKGROUND_IMAGE) { vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0); vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), FALSE); + vte_terminal_set_opacity(VTE_TERMINAL(screen->terminal), 0xffff); loader = terminal_image_loader_get (); image = terminal_image_loader_load (loader, @@ -883,12 +885,21 @@ terminal_screen_timer_background (gpoint g_object_unref (G_OBJECT (image)); g_object_unref (G_OBJECT (loader)); } - else + else if (background_mode == TERMINAL_BACKGROUND_TRANSPARENT) { g_object_get (G_OBJECT (screen->preferences), "background-darkness", &background_darkness, NULL); vte_terminal_set_background_image (VTE_TERMINAL (screen->terminal), NULL); vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0 - background_darkness); vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), TRUE); + vte_terminal_set_opacity(VTE_TERMINAL(screen->terminal), 0xffff); + } + else + { + g_object_get (G_OBJECT (screen->preferences), "background-darkness", &background_darkness, NULL); + vte_terminal_set_background_image (VTE_TERMINAL (screen->terminal), NULL); + vte_terminal_set_background_saturation (VTE_TERMINAL (screen->terminal), 1.0); + vte_terminal_set_background_transparent (VTE_TERMINAL (screen->terminal), FALSE); + vte_terminal_set_opacity(VTE_TERMINAL(screen->terminal), background_darkness * 0xffff); } return FALSE; Index: Terminal-0.2.5.8rc2/terminal/terminal-enum-types.c =================================================================== --- Terminal-0.2.5.8rc2.orig/terminal/terminal-enum-types.c +++ Terminal-0.2.5.8rc2/terminal/terminal-enum-types.c @@ -102,6 +102,7 @@ terminal_background_get_type (void) { TERMINAL_BACKGROUND_SOLID, "TERMINAL_BACKGROUND_SOLID", "solid" }, { TERMINAL_BACKGROUND_IMAGE, "TERMINAL_BACKGROUND_IMAGE", "image" }, { TERMINAL_BACKGROUND_TRANSPARENT, "TERMINAL_BACKGROUND_TRANSPARENT", "transparent" }, + { TERMINAL_BACKGROUND_REALLY_TANSPARENT, "TERMINAL_BACKGROUND_REALLY_TRANSPARENT", "really_transparent" }, { 0, NULL, NULL } }; type = g_enum_register_static ("TerminalBackground", values); Index: Terminal-0.2.5.8rc2/terminal/terminal-preferences-dialog.c =================================================================== --- Terminal-0.2.5.8rc2.orig/terminal/terminal-preferences-dialog.c +++ Terminal-0.2.5.8rc2/terminal/terminal-preferences-dialog.c @@ -95,6 +95,19 @@ transform_is1_or_is2 (const GValue *src_ return TRUE; } +/* Convert int -> boolean (i == 1 || i == 2 || i == 3) */ +static gboolean +transform_is1_is_2_or_is2 (const GValue *src_value, + GValue *dst_value, + gpointer user_data) +{ + gint i; + + i = g_value_get_enum (src_value); + g_value_set_boolean (dst_value, (i == 1 || i == 2 || i == 3)); + + return TRUE; +} static void @@ -440,7 +453,8 @@ terminal_preferences_dialog_init (Termin combo = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("None (use solid color)")); gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Background image")); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Transparent background")); + gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Pseudo transparent background")); + gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Real transparent background")); exo_mutual_binding_new (G_OBJECT (dialog->preferences), "background-mode", G_OBJECT (combo), "active"); #if !GTK_CHECK_VERSION(2,9,0) g_signal_connect (G_OBJECT (combo), "changed", G_CALLBACK (g_object_notify), "active"); @@ -505,7 +519,7 @@ terminal_preferences_dialog_init (Termin gtk_widget_show (ibox); exo_binding_new_full (G_OBJECT (dialog->preferences), "background-mode", G_OBJECT (ibox), "visible", - transform_is1_or_is2, NULL, NULL); + transform_is1_is_2_or_is2, NULL, NULL); label = gtk_label_new (_("Shade transparent or image background:")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); Index: Terminal-0.2.5.8rc2/terminal/terminal-preferences.h =================================================================== --- Terminal-0.2.5.8rc2.orig/terminal/terminal-preferences.h +++ Terminal-0.2.5.8rc2/terminal/terminal-preferences.h @@ -56,6 +56,7 @@ typedef enum /*< enum,prefix=TERMINAL_BA TERMINAL_BACKGROUND_SOLID, TERMINAL_BACKGROUND_IMAGE, TERMINAL_BACKGROUND_TRANSPARENT, + TERMINAL_BACKGROUND_REALLY_TANSPARENT } TerminalBackground; typedef enum /*< enum,prefix=TERMINAL_BACKGROUND_STYLE >*/