Add a configuration option for inactive window opacity. This patch depends on xfwm4_inactive_translucent.patch. Signed-off-by: Darren Salt diff -u defaults/defaults defaults/defaults --- defaults/defaults (revision 22201) +++ defaults/defaults (working copy) @@ -14,6 +14,7 @@ focus_new=true frame_opacity=100 full_width_title=true +inactive_opacity=100 keytheme=Default move_opacity=100 placement_ratio=25 diff -u mcs-plugin/wmtweaks_plugin.c mcs-plugin/wmtweaks_plugin.c --- mcs-plugin/wmtweaks_plugin.c (revision 22201) +++ mcs-plugin/wmtweaks_plugin.c (working copy) @@ -71,6 +71,7 @@ static gboolean wrap_cycle = FALSE; static int placement_ratio = 25; +static int inactive_opacity = 100; static int move_opacity = 100; static int resize_opacity = 100; static int popup_opacity = 100; @@ -84,6 +85,7 @@ "Xfwm/EasyClick" "Xfwm/FocusHint" "Xfwm/FrameOpacity" + "Xfwm/InactiveOpacity" "Xfwm/MoveOpacity" "Xfwm/PlacementRatio" "Xfwm/PopupOpacity" @@ -549,6 +551,12 @@ gtk_widget_show (range); range = + create_int_range (mcs_plugin, _("Opacity of inactive windows"), _("Transparent"), + _("Opaque"), "Xfwm/InactiveOpacity", 10, 100, 5, &inactive_opacity); + gtk_box_pack_start (GTK_BOX (vbox), range, FALSE, TRUE, 0); + gtk_widget_show (range); + + range = create_int_range (mcs_plugin, _("Opacity of windows during move"), _("Transparent"), _("Opaque"), "Xfwm/MoveOpacity", 10, 100, 5, &move_opacity); gtk_box_pack_start (GTK_BOX (vbox), range, FALSE, TRUE, 0); @@ -703,6 +711,7 @@ init_gboolean_setting (mcs_plugin, "Xfwm/WrapCycle", &wrap_cycle); init_int_setting (mcs_plugin, "Xfwm/PlacementRatio", &placement_ratio); + init_int_setting (mcs_plugin, "Xfwm/InactiveOpacity", &inactive_opacity); init_int_setting (mcs_plugin, "Xfwm/FrameOpacity", &frame_opacity); init_int_setting (mcs_plugin, "Xfwm/MoveOpacity", &move_opacity); init_int_setting (mcs_plugin, "Xfwm/ResizeOpacity", &resize_opacity); diff -u src/compositor.c src/compositor.c --- src/compositor.c (revision 22201) +++ src/compositor.c (working copy) @@ -202,7 +202,8 @@ return cw->opacity; } #endif - return cw->opacity / 3 * 2; /* overflow here is bad :-) */ + return (guint)((double)cw->opacity * + cw->screen_info->params->inactive_opacity / 100.0); } static gboolean diff -u src/settings.c src/settings.c --- src/settings.c (revision 22201) +++ src/settings.c (working copy) @@ -380,6 +380,11 @@ screen_info->params->frame_opacity = setting->data.v_int; reloadScreenSettings (screen_info, UPDATE_FRAME); } + else if (!strcmp (name, "Xfwm/InactiveOpacity")) + { + screen_info->params->inactive_opacity = setting->data.v_int; + reloadScreenSettings (screen_info, UPDATE_FRAME); + } else if (!strcmp (name, "Xfwm/MoveOpacity")) { screen_info->params->move_opacity = setting->data.v_int; @@ -745,6 +750,12 @@ setIntValueFromInt ("placement_ratio", setting->data.v_int, rc); mcs_setting_free (setting); } + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/InactiveOpacity", CHANNEL5, + &setting) == MCS_SUCCESS) + { + setIntValueFromInt ("inactive_opacity", setting->data.v_int, rc); + mcs_setting_free (setting); + } if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/MoveOpacity", CHANNEL5, &setting) == MCS_SUCCESS) { @@ -1243,6 +1254,7 @@ {"focus_new", NULL, TRUE}, {"frame_opacity", NULL, TRUE}, {"full_width_title", NULL, TRUE}, + {"inactive_opacity", NULL, TRUE}, {"keytheme", NULL, TRUE}, {"margin_bottom", NULL, FALSE}, {"margin_left", NULL, FALSE}, @@ -1388,6 +1400,8 @@ !g_ascii_strcasecmp ("true", getValue ("restore_on_move", rc)); screen_info->params->frame_opacity = abs (TOINT (getValue ("frame_opacity", rc))); + screen_info->params->inactive_opacity = + abs (TOINT (getValue ("inactive_opacity", rc))); screen_info->params->move_opacity = abs (TOINT (getValue ("move_opacity", rc))); screen_info->params->resize_opacity = diff -u src/settings.h src/settings.h --- src/settings.h (revision 22201) +++ src/settings.h (working copy) @@ -148,6 +148,7 @@ int double_click_action; int easy_click; int frame_opacity; + int inactive_opacity; int move_opacity; int placement_ratio; int popup_opacity;