I've updated the description with everything I've learned about this
problem (thanks to gnome developers for helping me understand it) - I'm
by no means an expert on this so I can't really suggest a fix, but I do
know that you can write a rule which will directly set the background
and foreground colour for the MetaFrames class used by mutter, thus
setting the window decorations to whatever colour you want without
affecting anything else. I can't say if it is the best way or not but it
looks something like this:

MetaFrames:selected{
background-color:@selected_bg_color;
}

This has to go after all the other more generic rules of course, and
this doesn't make Human quite look the way it does in metacity - more
rules are needed.


** Description changed:

  See screenshot
  
  To reproduce:
  
  sudo apt-get install human-theme
  dconf-editor, set org.pantheon.desktop.gala.appearance.theme to "Human"
  Set Gtk+ widget theme to radiance.
+ 
+ Analysis:
+ 
+ When the window manager draws a metacity theme it looks at the gtk
+ colours defined in the Gtk+ theme set for widgets, rather than the theme
+ selected for window decorations. Thus, if you have Human window
+ decorations and Radiance widgets, it will use the Radiance theme to
+ determine the colour of the window decorations and the Human theme to do
+ the actual drawing.
+ 
+ The problem here is that there are two versions of each widget theme,
+ gtk2 and gtk3. Under gtk2 there is only one "background selected"
+ colour, which is the orange colour.
+ 
+ Under gtk3 however, you can set a different colour for each class of
+ widget using CSS rules.
+ 
+ The problem in mutter-theme-viewer: it uses a different widget class to
+ draw it's preview, therefore it uses a different set of CSS rules to
+ calculate which colours everything should be. This is why the theme
+ looks orange in the preview: the rule which resets the background to
+ white does not apply to the widget used in the preview.
+ 
+ The problem in light-themes: in Radiance/gtk-3.0/gtk-widgets.css there
+ is the following CSS rules:
+ 
+ *:selected,
+ *:selected:focused {
+     background-color: alpha (@selected_bg_color, 0.9);
+ 
+     color: @selected_fg_color;
+ }
+ 
+ .background {
+     background-color: @bg_color;
+     border-width: 0;
+ }
+ 
+ The first sets the background colour for any selected widget (including
+ window decorations both real and preview) to @selected_bg_color, which
+ is the expected orange.
+ 
+ The second sets the background of any item with "background" property
+ @bg_color. This is a white colour. This rule applies the real window
+ decorations of mutter but not the ones in the preview.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to light-themes in Ubuntu.
https://bugs.launchpad.net/bugs/1090896

Title:
  metacity themes not coloured correctly

Status in Gala Window Manager:
  Won't Fix
Status in Mutter:
  New
Status in “light-themes” package in Ubuntu:
  New

Bug description:
  See screenshot

  To reproduce:

  sudo apt-get install human-theme
  dconf-editor, set org.pantheon.desktop.gala.appearance.theme to "Human"
  Set Gtk+ widget theme to radiance.

  Analysis:

  When the window manager draws a metacity theme it looks at the gtk
  colours defined in the Gtk+ theme set for widgets, rather than the
  theme selected for window decorations. Thus, if you have Human window
  decorations and Radiance widgets, it will use the Radiance theme to
  determine the colour of the window decorations and the Human theme to
  do the actual drawing.

  The problem here is that there are two versions of each widget theme,
  gtk2 and gtk3. Under gtk2 there is only one "background selected"
  colour, which is the orange colour.

  Under gtk3 however, you can set a different colour for each class of
  widget using CSS rules.

  The problem in mutter-theme-viewer: it uses a different widget class
  to draw it's preview, therefore it uses a different set of CSS rules
  to calculate which colours everything should be. This is why the theme
  looks orange in the preview: the rule which resets the background to
  white does not apply to the widget used in the preview.

  The problem in light-themes: in Radiance/gtk-3.0/gtk-widgets.css there
  is the following CSS rules:

  *:selected,
  *:selected:focused {
      background-color: alpha (@selected_bg_color, 0.9);

      color: @selected_fg_color;
  }

  .background {
      background-color: @bg_color;
      border-width: 0;
  }

  The first sets the background colour for any selected widget
  (including window decorations both real and preview) to
  @selected_bg_color, which is the expected orange.

  The second sets the background of any item with "background" property
  @bg_color. This is a white colour. This rule applies the real window
  decorations of mutter but not the ones in the preview.

To manage notifications about this bug go to:
https://bugs.launchpad.net/gala/+bug/1090896/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to