[desktop-discuss] Eye Candy for Solaris's Desktop - Compiz on Solaris x86

Brian Cameron Brian.Cameron at Sun.COM
Tue Mar 6 07:07:38 PST 2007


Alan: Note ARC issues and issues I notice with upgrading to the
       Nevada build 60 Xorg.

Erwann:

> I got compiz (the compositing window manager) to run very nicely on 
> Solaris x86 (build 55)
> 
> The full details on how to compile it can be found on my Sun blog hcoere : 
> http://blogs.sun.com/erwann/entry/compiz_on_solaris_x86

Great stuff!  I just got this built and it looks great!  I have found a
number of issues with compiz, upgrading my Xserver, and with GTK+.

Problems with building compiz
=============================

1) You missing-stuff tarball for adding missing Xserver pieces does not
    include the Xcomposite pc file or header files.  I was able to grab
    the header files by grabbing the Xcomposite.h file from here:

http://xorg.freedesktop.org/releases/X11R7.2/src/lib/libXcomposite-X11R7.2-0.3.1.tar.bz2

    And you also need to grab the composite.h and compositeproto.h files
    from here (this took me forever to find):

http://xorg.freedesktop.org/releases/individual/proto/compositeproto-0.3.tar.bz2

    I attach these header files for those of you who are trying to build
    compiz and don't want to have to dig around for them.

    Once you put them in /usr/X11/include/X11/extensions, then you can
    build compiz, though since I didn't have the pc file I had to hack
    LDPATH to include "-lXcomposite" when making compiz as a hacky
    workaround.

2) I found I also needed to move aside the old libXcomposite* and
    libXrender* symlinks and make them point to the new libraries in
    your missing-stuff tarball or I wasn't able to compile compbiz.
    Specifically, I mean the libXcomposite.so, libXrender.so, and
    libXrender.so.1 symlinks.

3) compizsettings does not compile with Sun Studio (although compiz does
    compile with it okay).  You might want to mention that you need to
    make sure CC=gcc to build these.

4) On my system I didn't have an xorg.conf file so I had to run
    /usr/X11/bin/Xorg -configure, then take the generated xorg.conf-new
    file in the system root (/) directory and move it to /etc/xorg.conf
    and then add the sections you mention.  Your steps weren't really
    clear (at first I just tried to add an xorg.conf file with the text
    you have on the webpage - and this made Xorg crash).  Might be nice
    if you explained this.

5) You blog links to the "SFE Repository" and says that the spec files
    are there.  At first I thought that you meant that there were spec
    files for compiz and compizsettings.  I think we should put these
    modules into spec-files-extra and the patch so it applies when you
    build via the CBE.  I think the blog steps could be a bit more clear
    that you only need to build git if you want to access the code from
    the repository.

    At first I grabbed the SFEgit spec file and started building it
    since you mention "git" in this section.  SFEgit has a lot of
    dependencies and after building them I found compile problems trying
    to build SFEgit.

    After wasting a good bit of time on this, I finally gave up and
    just built with your compiz and compizsettings tarballs.

6) Usability problems (for me anyway)

    - When I run thunderbird and click on the "Compose" button or
      respond to an email, the window that pops up is black and has
      nothing in it - the window that comes up is useless.  It's not
      really possible for me to run compiz all the time if I can't
      write emails when running with it.

    - When I right click I get a neat zoom feature, but I can't seem
      to get any right click menus, like the ones I often use when
      using Thunderbird.  How do you get to the right-click menu?

    - The animation when you move windows around makes me feel
      seasink.  Which configuration option turns this off?

    - If you wanted compiz to run all the time without having to
      "gtk-window-decorator --replace & compiz --replace gconf &"
      all the time, how would you do so?  Perhaps your blog should
      say?


Problems upgrading my Xserver
=============================

I am using Nevada build 55 and I didn't want to reinstall my system so I
just went and ran the Xserver upgrade-X script to upgrade it to the
build 60 version.  I found that the Xserver crashed when I first tried
to start it.  It had weird error messages complaining that it was trying
to load files from /usr/X11/lib/modules/drivers/amd64,
/usr/X11/lib/modules/amd64, and /usr/X11/lib/modules/input/amd64 and
that these files were the wrong ELF type.  This is weird since I run
in 32-bit mode, so I don't know why it is trying to access the 64 bit
libraries.

I hacked around this problem by creating a subdirectory called "bad"
in the three above directories and then copying all the libraries
from one directory above int the amd64 directory.  For example, I
copied the files from /usr/X11/lib/modules/*so into the
/usr/X11/lib/modules/amd64 directory.  This seems to make the Xserver
run okay.

It sort of seems the Xorg server in build 60 is really broken on x86
if it is trying to load the 64-bit libraries when running in 32 bit
mode.  Alan?

I didn't have to upgrade my Nvidia driver, so I guess the driver in
Nevada build 55 is new enough.


Problems with GTK+
==================

After getting my Xserver working, I found all GTK based programs
crashed, so I started dtlogin and used a CDE session until I figured
out why.  Seems that GTK+ in previous builds was linking against
XCursor which seems to be gone in Xorg 7.2.

I noticed in GTK+ that XCursor is an optional dependency so I rebuilt
the SUNWgnome-base-libs package and this prolem went away.  Not sure
what, if anything, breaks if we don't include this.  I seem to remember
that some a11y features depended on this extension (e.g. the ability to
see the cursor in the magnifier if I'm remembering correctly).

However, I think that this means that our stable GNOME 2.16 builds
will not work after the Xserver 7.2 upgrade.  I unfortunately notice
that we don't have an ARC contract with the Xserver team to use the
Xcursor interfaces.  So I think that this means that either we need
to respin the 2.16 stable build for Nevada 60+ using the Xorg 7.2
libraries and start building our vermillion-devel builds the same way.
Either that or the Xserver team could include the XCursor module and
we could fix the problem this way (and get an ARC contract).

This made me review the GTK+ configure.in file and I notice that
there are a few X interfaces that we don't have contracts for.
Alan, could you advise whether we need contracts for these?

Solaris Xinerama
Xsync
Shaped window extension (XShapeCombineMask)
XSyncQueryExtension
Xshm
Xcursor

It also uses these interfaces which we do have contracts for:

Xinput
RANDR
Xfixes
Xft
XKB

I hope this helps people who might be trying to get compiz working!

Brian
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Xcomposite.h
Url: http://oss-beta1.opensolaris.org/pipermail/desktop-discuss/attachments/20070306/1d53d20a/attachment.h 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: composite.h
Url: http://oss-beta1.opensolaris.org/pipermail/desktop-discuss/attachments/20070306/1d53d20a/attachment-0001.h 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: compositeproto.h
Url: http://oss-beta1.opensolaris.org/pipermail/desktop-discuss/attachments/20070306/1d53d20a/attachment-0002.h 


More information about the desktop-discuss mailing list