Main Page CompizSharp

From NDesk

(Difference between revisions)
Jump to: navigation, search
Revision as of 21:19, 19 August 2006 (edit)
Alp (Talk | contribs)

← Previous diff
Current revision (21:25, 4 February 2009) (edit) (undo)
Alp (Talk | contribs)
(s/git/gitweb)
 
(14 intermediate revisions not shown.)
Line 5: Line 5:
compiz-sharp was written as part of the [http://code.google.com/soc/ Google Summer of Code] 2006 for the [http://www.go-mono.com/ Mono project]. compiz-sharp was written as part of the [http://code.google.com/soc/ Google Summer of Code] 2006 for the [http://www.go-mono.com/ Mono project].
-The aim of this project is to provide a means of driving OpenGL+compiz-sharp provides a means of driving OpenGL
-compositing in the X Window System using the Mono framework. The+compositing and window management in the [http://xorg.freedesktop.org/ X Window System] ([http://en.opensuse.org/Xgl Xgl]) using the Mono framework. Desktop effects can be provided
-project must achieve this in a way such that effects can be provided+
concurrently by individual effect plugins with their logic written concurrently by individual effect plugins with their logic written
purely in a CLS-compliant language supported by Mono, such as C#. The purely in a CLS-compliant language supported by Mono, such as C#. The
-infrastructure itself is not restricted to this requirement and may be+infrastructure itself is implemented with a combination of C "glue" code and C#.
-implemented with a combination of C "glue" code and C# in the style of+
-existing bindings. The project must yield one or more effect plugins+
-that demonstrates a sensible subset of functionality offered by GL+
-compositing managers. Common sense should be the guiding force rather+
-than a word-for-word adherence to the following plans, as this project+
-explores some new ground:+
-The project should achieve its goals by extending [http://en.opensuse.org/Compiz compiz]+Sample effect plugins are included to demonstrate a subset of functionality available to plugin authors.
-non-invasively, ideally as a a regular compiz module which hosts the+
-Mono runtime. In the case that this is infeasible or highly inelegant,+
-the project mentor may be consulted as to whether it would be a better+
-solution to extend compiz itself to allow more flexible extensions by+
-working with the author of compiz and contributing to that project+
-directly.+
-David Reveman's description of compiz:+The project achieves its goals by extending [http://en.opensuse.org/Compiz compiz]
 +non-invasively as a regular compiz plugin which hosts the
 +Mono runtime. To allow this, the maintainers of compiz have provided [http://gitweb.freedesktop.org/?p=xorg/app/compiz.git;a=commit;h=70f7c818b39d2791d5cab7990114bb15b5496ac4 hooks for plugin loader plugins] based on feedback from this project.
-compiz - OpenGL window and compositing manager+The API exposed by the binding covers the subset of entry points
 +needed to create functional effect plugins, and is close to providing
 +complete coverage of all relevant public API. The managed (C#) API
 +follows the
 +naming conventions and style of the CLR and existing Mono libraries, making it easy for developers to get started. Writing complex 3D desktop effects has never been easier!
-<pre>+Managed plugins can implement effects by changing the behaviour of existing plugins or by using Mono's [http://www.mono-project.com/Tao Tao]
- Compiz is an OpenGL compositing manager that uses+OpenGL library. This library has recently been updated with a new build system that will help make it widely available in Linux distributions and more accessible to developers.
- GLX_EXT_texture_from_pixmap for binding redirected top-level windows+
- to texture objects. It has a flexible plug-in system and it is+
- designed to run well on most graphics hardware.+
-</pre>+
-The API exposed by the project must cover the subset of entry points+=== Physics model ===
-needed to create functional effect plugins, and should provide+
-complete coverage of all relevant public API. The managed (C#) API may+
-deviate in terminology from that used in compiz in order to follow the+
-naming standards and style of the CLR and existing Mono libraries.+
-The project should allow plugins to implement effects using Mono's Tao+[[Image:PhysModel.png|thumb]]
-OpenGL library. This library has not been widely distributed and is+
-not yet in a deliverable form, so some work towards making it+
-shippable might be made but productisation of dependent libraries will+
-generally be outwith the scope of the project.+
-Code will be written foremost with maintainability, correctness and+During development, compiz-sharp got its own physics model. This is based on [http://people.freedesktop.org/~krh/akamaru.git/ Akamaru], which is a generalised version of the model used in compiz with a different numerical integration technique. Similar algorithms were previously implemented by [http://live.gnome.org/Luminocity Luminocity] and the sproing prototype in cairo-demo.
-stability in mind, followed by completeness and performance concerns.+
-Progress should be made such that there is demonstrable integration of+
-Mono with the compositing manager for the mid-program evaluation, and+
-a complete workable framework that meets the requirements set out in+
-this specification by the time of the final evaluation.+
-[http://en.opensuse.org/Xgl Xgl]+To users, this kind of physics model is best known for providing desktop effects like ''wobbly windows'' in compiz and the [http://www.apple.com/macosx/ Mac OS X] ''dock animations''. It has also been used for character animation in the movie industry and computer games.
- +
-=== Design ===+
- +
-TODO+
=== Building === === Building ===
Line 66: Line 38:
The build system currently has two stages. The build system currently has two stages.
-=== Physics model ===+The glue part of the binding is implemented as a compiz plugin and can be built with ./configure and make etc.
-[[Image:PhysModel.png|thumb]]+The managed part of the binding exists in src/. It can be built by entering that directory and running make.
-During development, compiz-sharp got its own physics model.+The example plugins are in plugins/ and can be compiled after src/ has been built. Certain plugins depend on the physics model and will need the code in physics/ to be built first.
 + 
 +The modularity of the binding means that you don't need Tao unless you intend to use OpenGL and similarly, the physics model is an optional extra provided to make writing slick effects fun and easy by abstracting the underlying algorithms.
=== Download === === Download ===
-TODO+The source code is maintained in git:
 + 
 +git-clone [http://gitweb.ndesk.org/?p=compiz-sharp git://git.ndesk.org/pub/scm/compiz-sharp]

Current revision

Contents

[edit] compiz-sharp: OpenGL desktop compositing framework for .NET

compiz-sharp was written as part of the Google Summer of Code 2006 for the Mono project.

compiz-sharp provides a means of driving OpenGL compositing and window management in the X Window System (Xgl) using the Mono framework. Desktop effects can be provided concurrently by individual effect plugins with their logic written purely in a CLS-compliant language supported by Mono, such as C#. The infrastructure itself is implemented with a combination of C "glue" code and C#.

Sample effect plugins are included to demonstrate a subset of functionality available to plugin authors.

The project achieves its goals by extending compiz non-invasively as a regular compiz plugin which hosts the Mono runtime. To allow this, the maintainers of compiz have provided hooks for plugin loader plugins based on feedback from this project.

The API exposed by the binding covers the subset of entry points needed to create functional effect plugins, and is close to providing complete coverage of all relevant public API. The managed (C#) API follows the naming conventions and style of the CLR and existing Mono libraries, making it easy for developers to get started. Writing complex 3D desktop effects has never been easier!

Managed plugins can implement effects by changing the behaviour of existing plugins or by using Mono's Tao OpenGL library. This library has recently been updated with a new build system that will help make it widely available in Linux distributions and more accessible to developers.

[edit] Physics model

During development, compiz-sharp got its own physics model. This is based on Akamaru, which is a generalised version of the model used in compiz with a different numerical integration technique. Similar algorithms were previously implemented by Luminocity and the sproing prototype in cairo-demo.

To users, this kind of physics model is best known for providing desktop effects like wobbly windows in compiz and the Mac OS X dock animations. It has also been used for character animation in the movie industry and computer games.

[edit] Building

The build system currently has two stages.

The glue part of the binding is implemented as a compiz plugin and can be built with ./configure and make etc.

The managed part of the binding exists in src/. It can be built by entering that directory and running make.

The example plugins are in plugins/ and can be compiled after src/ has been built. Certain plugins depend on the physics model and will need the code in physics/ to be built first.

The modularity of the binding means that you don't need Tao unless you intend to use OpenGL and similarly, the physics model is an optional extra provided to make writing slick effects fun and easy by abstracting the underlying algorithms.

[edit] Download

The source code is maintained in git:

git-clone git://git.ndesk.org/pub/scm/compiz-sharp