gtk-window-decorator using outdated specifications

Bug #1152854 reported by quequotion
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Compiz
Won't Fix
Undecided
Unassigned
Metacity
New
Undecided
Unassigned
elementary Stylesheet
Won't Fix
Undecided
Unassigned

Bug Description

I was unable to apply the elementary window decoration theme in Unity.
It seems there are a number of specifications gtk-window-decorator is unaware of or incompatible with.

Log with comments:

:~$ gtk-window-decorator --replace
Window manager warning: Failed to load theme "elementary": Failed to find a valid file for theme elementary

#The filename must be "metacity-theme-1.xml" not "metacity-theme-3.xml"
#Solved by renaming the file.

Window manager warning: Failed to load theme "elementary": Line 18 character 1: Boolean values must be "true" or "false" not "4"

#Corner rounding is apparently boolean.
#Worked around by changing values (on line 17) to "true"

Window manager warning: Failed to load theme "elementary": Line 64 character 101: Could not parse color "C_border_focused"

#This constant does not work; constants may not work.
#Worked around by replacing all instances with the value

Window manager warning: Failed to load theme "elementary": Line 378 character 61: Unknown function "shade" for button
Window manager warning: Failed to load theme "elementary": Line 380 character 63: Unknown function "unshade" for button
Window manager warning: Failed to load theme "elementary": Line 383 character 43: Unknown function "above" for button
Window manager warning: Failed to load theme "elementary": Line 387 character 43: Unknown function "stick" for button

#All of these functions are unknown....
#Worked around by commenting all instances of these functions.

Window manager warning: Failed to load theme "elementary": Line 952 character 74: Attribute "version" is invalid on <window> element in this context
Window manager warning: Failed to load theme "elementary": Line 953 character 57: Unknown type "attached" on <window> element

#Neither "version" nor "attached" are acceptable...
#Worked around by commenting this line.

Relevant software versions:

gtk-window-decorator (compiz-gnome) 0.9.8+bzr3319
elementary-theme 3.2~r597+pkg289~precise1

I've also attached my modified version of the theme file.

Revision history for this message
quequotion (quequotion) wrote :
quequotion (quequotion)
summary: - Numerous problems in window theme file preventing application
+ Window theme is not gtk compliant
quequotion (quequotion)
description: updated
Revision history for this message
Sergey "Shnatsel" Davidoff (shnatsel) wrote : Re: Window theme is not gtk compatible with Compiz's gtk decorator

Compatibility with outdated decorator implementations is not a priority.

summary: - Window theme is not gtk compliant
+ Window theme is not gtk compatible with Compiz's gtk decorator
affects: elementaryos → egtk
Changed in egtk:
status: New → Won't Fix
status: Won't Fix → Opinion
Revision history for this message
Sergey "Shnatsel" Davidoff (shnatsel) wrote :

Although supplying an older theme version along with the current one can be discussed, because the file names are versioned.

Revision history for this message
quequotion (quequotion) wrote :

>>Sergey

Indeed, it is possible to have both "metacity-theme-1.xml" and "metacity-theme-3.xml" in the same directory.
Furthermore, the changes needed to get the theme working in gtk-window-decorator are trivial.

There are a few things missing--some indicator icons (also missing in pantheon, indicator-cpufreq for example) and a unity panel theme.

To fill in missing icons, I copied the elementary theme file into a new icon theme that inherits elementary and ubuntu-mono-dark. (file attached)

Theming Unity is obviously not one of the project goals, nor would I suggest it should be. Nonetheless, this has been done already:

NanaBluku's "Redux" includes a Unity panel theme based on elementary artwork. Primarily, this provides elementary-styled close/restore/etc buttons for maximized windows in Unity.

I simply copied the "unity" directory from this theme package into elementary's.

Redux: http://nanabuluku.deviantart.com/art/Redux-288881077

Changed in egtk:
status: Opinion → New
Revision history for this message
Danielle Foré (danrabbit) wrote :

This is 100% a Compiz window decorator bug. They need to update their decorator to comply with the latest metacity spec. It's not really our fault if Unity uses a legacy window decorator spec. Please file a bug with them instead.

Changed in egtk:
status: New → Won't Fix
Revision history for this message
quequotion (quequotion) wrote :

>>Daniel

I'll see if they are interested. This may have been handled in versions of compiz more recent than mine (0.9.8+bzr3319-0ubuntu1).

summary: - Window theme is not gtk compatible with Compiz's gtk decorator
+ gtk-window-decorator using outdated specifications
quequotion (quequotion)
description: updated
quequotion (quequotion)
description: updated
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

gtk-window-decorator uses libmetacity in order to load themes. If it cant handle a theme, its libmetacity's problem, and probably a problem with the version we ship in ubuntu.

(Note, gtk-window-decorator won't be ported to use libmutter. Substantial API required in order to use it has been removed from libmutter, and it would also require that gtk-window-decorator would be ported to use the gtk+3.0 api, something which is not a trivial task because we're quite heavily dependent on the GdkX11 stuff).

Changed in compiz:
status: New → Won't Fix
Revision history for this message
quequotion (quequotion) wrote :

It's not necessary (at the moment / as far as I can tell / for my purposes at least) to port gtk-window-decorator to libmutter, unless you mean that the unsupported theme parameters in the bug report are mutter-exclusive?

It would be nice to know if there's a version of libmetacity that supports those parameters. Any thoughts?

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.