Mon . 19 Aug 2019
TR | RU | UK | KK | BE |

Clutter (software)

stress software, debt software
Clutter is a GObject-based graphics library for creating hardware-accelerated user interfaces Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements It relies upon OpenGL 14+ or OpenGL ES 11 or 20 for rendering,citation needed It also supports media playback using GStreamer and 2D graphics rendering using Cairo4

Clutter was authored by OpenedHand Ltd, now part of Intel Clutter is free and open-source software, subject to the requirements of the GNU Lesser General Public License LGPL, version 213


  • 1 Adoption
  • 2 Software architecture
    • 21 ClutterActor
    • 22 Supported platforms
    • 23 Programming language bindings
    • 24 Integration libraries
    • 25 Example
    • 26 Interface builder
      • 261 Example
    • 27 Animation
      • 271 Example
  • 3 COGL
  • 4 libchamplain
  • 5 History
    • 51 Release history
  • 6 See also
  • 7 References
  • 8 External links


Popular programs that adopt Clutter are GNOME Videos aka Totem, GNOME Shell, Pitivi, Cinnamon Desktop and GNOME Ease

Mx is a widget toolkit based on Clutter originally designed for the graphical shell of Moblin/MeeGo netbook, but evolved into an independent project

The widget toolkits Netbook Toolkit nbtk and Mx are based on Clutter5 Often Clutter is seen analogous to GTK+ but this is inaccurate Only Clutter together with Mx or Nbtk can match the extent of the GTK+ This is also the reason why Clutter is used together with GTK+

Clutter supports multi-touch gesturescitation needed

  • Clayland is a Wayland compositor utilizing Clutter6
  • Snappy is a lighweight media player based on Clutter and GStreamer
  • Pinpoint is a simple light-weight presentation program
  • GNOME Maps uses ClutterActor
  • More of a proof of concept for casual gaming are PillPopper a Pac-Man-clone and HappyWombats an Angry Birds-clone PillPopper & HappyWombats

Software architectureedit

GDK contains back-ends to X11, Wayland, Broadway HTTP, Quartz and GDI and relies on Cairo for the rendering Its new SceneGraph is work-in-progress, Clutter's SceneGraph can be used Example of Clutter usage in Linux-based systems

Clutter is a scene graph-based canvas working in retained mode Every object on the scene is usually a 2D surface inside a 3D space

Clutter abstracts the native windowing environment behind a backend, which is also responsible for creating the main container for the scene graph; this top level container is called the stage Items on the stage are called actors

Instead of operating on matrices, as does OpenGL, the Clutter developer changes properties of each actor Clutter will then notice the changes, and render the scene accordingly

Clutter is currently being developed by OpenedHand to provide visually rich graphical user interfaces on desktop and embedded hardware The main target are media center-like applications, small devices UIs and base drawing API for GL- and GL/ES-based UI toolkits Clutter uses Pango for text rendering with a special GL/GLES renderer and GdkPixbuf for loading images into GL textures Interaction with other GNOME platform libraries is done through multiple integration libraries, eg: clutter-gst GStreamer, clutter-gtk for embedding the stage into a GTK+ application, clutter-cairo for using cairo to draw into a texture It's API and ABI are kept stable within micro releases, but can break API during minor releases—until it reaches 10, then it will be API and ABI stable until the following major release


ClutterActor is the basic element of Clutter's scene graph, it encapsulates the position, size, and transformations of a node in the graph7

  • A ClutterActor can receive and handle input device events, for instance pointer events and key events
  • Animation is a core concept of modern user interfaces; Clutter provides a complete and powerful animation framework that automatically tweens the actor's state without requiring direct, frame by frame manipulation from your application code

Supported platformsedit

Clutter is developed for the X Window System using GLX as well as Wayland8910 using EGL Clutter can also use the framebuffer As of release 06, native support for Mac OS X has been added11 A native Microsoft Windows backend is supported since the 08 release12 and Windows pre-compiled DLLs are available,131415 however, it is possible to build the latest DLL for Windows with MinGW and Bash shell for Windows

Since version 1194 from June 2014, Clutter's evdev input backend depends on libinput 04016

Programming language bindingsedit

Clutter is implemented using the C programming language with a design based on the GObject object system Bindings are available for these languages:

  • C++ 1 cluttermm
  • Perl perl-Clutter
  • Python PyClutter
  • Haskell clutterhs
  • JavaScript Seed and GJS
  • C# clutter-sharp aka Clutter# 
  • Ruby rbclutter 
  • Vala clutter-vala 

Integration librariesedit

Clutter can be integrated with other libraries and toolkits, for instance:

  • GTK+ applications can embed Clutter stages using a special widget
  • Clutter applications can embed GTK+ widgets using the 'client-side windows' feature since GTK+ 21817
  • Clutter applications can use GStreamer to play videos directly into a Clutter texture actor
  • Clutter applications can use Cairo to draw onto a texture
  • Video Acceleration API


This example will add a label on the stage written in C

// Retrieve the default stage, which will contain all the actors on the scene ClutterActor stage = clutter_stage_get_default ; // Create a new label, using the Sans font 32 pixels high, and with the "Hello, world" text, // and will place it into the stage ClutterActor label = clutter_text_new_with_text "Sans 32px", "Hello, world"; clutter_container_add_actor CLUTTER_CONTAINER stage, label; // Position the label at the center of the stage, taking into account the stage and the label size float x = clutter_actor_get_width stage - clutter_actor_get_width label / 2; float y = clutter_actor_get_height stage - clutter_actor_get_height label / 2; clutter_actor_set_position label, x, y; // Show the stage All actors in Clutter are visible unless explicitly hidden, except for the stage; // thus showing the stage will // automatically display all of its visible children clutter_actor_show stage;

Interface builderedit

Clutter can build user interfaces using a specialized JSON dialect18 The entire scene graph is defined using JSON types and built at run time through the ClutterScript class


This definition will create the main window and place a label with the text Hello, world! inside it

, "signals":

The definition can be saved into a file or as a string, and loaded using:

ClutterScript script = clutter_script_new ; GError error = NULL; clutter_script_load_from_data script, description, -1, &error; if error else


Clutter allows implicit animations of every item on the canvas using special objects called behaviours: each behaviour can be applied to multiple actors, and multiple behaviours can be composed on the same actor Behaviours handle animations implicitly: the developer specifies the initial and final states, the time or number of frames needed to complete the animation, the function of time to be used linear, sine wave, exponential, etc, and the behaviour will take care of the tweening Clutter provides a generic base class for developers to implement custom behaviours, and various simple classes handling simple properties, like opacity, position on the Z axis depth, position along a path, rotation, etc

Since Clutter 10, it is also possible to create simple, one-off animations using the ClutterAnimation class and the clutter_actor_animate convenience function The clutter_actor_animate function animates an actor properties between their current state and the specified final state


This example will scale the label from its size to a factor of 2 in 2 seconds, using a linear function of time and behaviours:

ClutterTimeline timeline = clutter_timeline_new 2000; ClutterAlpha alpha = clutter_alpha_new_full timeline, CLUTTER_LINEAR; ClutterBehaviour behaviour = clutter_behaviour_scale_new alpha, 10, 10, / initial scaling factors / 20, 20 / final scaling factors / ; clutter_behaviour_apply behaviour, label; These statements will create a timeline with a duration of 2 seconds; an alpha, binding the timeline to a linear easing mode; a behaviour, which will scale any actor to which it is applied between factor 10 and factor 20 both horizontally and vertically Finally, it applies the behaviour to an actor

The equivalent code using the implicit animations API is:

clutter_actor_animate label, / the actor to animate / CLUTTER_LINEAR, / the easing mode / 2000, / the duration of the animation / "scale-x", 20, / final horizontal scaling factor / "scale-y", 20, / final vertical scaling factor / NULL; This statement will create an implicit ClutterAnimation19 object, which will animate the provided GObject properties between their current value and the specified final value


Cogl is a small open source software library for using 3D graphics hardware to draw pretty pictures20 The API departs from the flat state machine style of OpenGL and is designed to make it easy to write orthogonal components that can render without stepping on each other's toes Cogl currently supports OpenGL ES 11/20 and OpenGL > 13 or 12 if you have the GL_ARB_multitexture extension, and having Gallium3D or D3D back-ends are options for the future


libchamplain is a C library providing a ClutterActor to display maps It also provides a Gtk+ widget to display maps in Gtk+ applications libchamplain is named after Samuel de Champlain, a French navigator, explorer and cartographer

  • https://gitgnomeorg/browse/libchamplain
  • https://wikignomeorg/Projects/libchamplain


Release historyedit

Version Release date Significant changes
10 2010-Jan-11
11 2010-Feb-16
12 2010-Sep-24
13 2010-Sep-15
14 2010-Sep-24
15 2011-Jan-24
16 2011-Sep-15
17 2011-Sep-12
18 2012-Jan-30
19 2012-Mar-19
110 2012-Jun-19
111 2012-Sep-17
112 2012-Oct-17
113 2013-Mar-19
114 2013-Nov-21
115 2013-Sep-20
116 2014-Jan-24
117 2014-Mar-04
118 2014-Aug-13
119 2014-Sep-17
120 2015-Apr-23
121 2015-Mar-15
122 2015-Jun-30
123 2015-Aug-21
124 2015-Oct-12
125 2016-Feb-18
126 2016-Mar-21

See alsoedit

  • Free software portal
  • Core Animation – data visualization API used by Mac OS X 105 and later
  • Qt Quick – a similar application framework based on Qt and QML


  1. ^ "ANNOUNCE: Clutter 1220 stable" 2015-03-23 Retrieved 2015-03-31 
  2. ^ "ANNOUNCE: Clutter 1218 snapshot" 2015-03-15 
  3. ^ a b "Clutter license" 
  4. ^ http://developergnomeorg/clutter/stable/ClutterCairoTexturehtml Clutter API Reference: ClutterCairoTexture
  5. ^ https://wikignomeorg/Projects/Vala/MxSample
  6. ^ https://githubcom/clutter-project/clayland
  7. ^ "GNOME developer documentation" 
  8. ^ Bassi, Emmanuele 31 January 2011 "ANNOUNCE: Clutter 160 stable" Retrieved 9 March 2016 
  9. ^ Bradford, Rob 16 December 2011 "Clutter & Cogl Wayland update" Retrieved 9 March 2016 
  10. ^ Bassi, Emmanuele 24 September 2013 "ANNOUNCE: Clutter 1160 stable" 
  11. ^ http://blogsgnomeorg/tko/2008/05/26/three-steps-forward-one-giant-step-back/ Life with Clutter on OSX
  12. ^ http://wwwclutter-projectorg/docs/clutter/stable/clutter-Win32-Specific-Supporthtml
  13. ^ "vala-win32 Vala binaries for Windows" Retrieved 27 January 2013 
  14. ^ "ValaIDE in Launchpad" Retrieved 27 January 2013 
  15. ^ "x6-development-share" Retrieved 27 January 2013 
  16. ^ "ANNOUNCE libinput 040" freedesktoporg 2014-06-24 
  17. ^ http://mailgnomeorg/archives/gnome-announce-list/2009-September/msg00099html GNOME Mailing Lists: GTK+ 2180 released
  18. ^ http://wwwclutter-projectorg/docs/clutter/stable/ClutterScripthtml#ClutterScriptdescription Clutter API Reference: ClutterScript
  19. ^ http://wwwclutter-projectorg/docs/clutter/stable/clutter-Implicit-Animationshtml
  20. ^ "cogl 1182" 2014-07-04 

External linksedit

  • Clutter homepage
  • Clutter project blog

clutter cleaner computer software, debt software, debt software for mac, debt software free, debt software programs, debt software reviews, stress software

Clutter (software) Information about

Clutter (software)

  • user icon

    Clutter (software) beatiful post thanks!


Clutter (software)
Clutter (software)
Clutter (software) viewing the topic.
Clutter (software) what, Clutter (software) who, Clutter (software) explanation

There are excerpts from wikipedia on this article and video

Random Posts

Body politic

Body politic

The body politic is a metaphor that regards a nation as a corporate entity,2 likened to a human body...


Kakamega is a town in western Kenya lying about 30 km north of the Equator It is the headquarte...
Academic year

Academic year

An academic year is a period of time which schools, colleges and universities use to measure a quant...
Lucrezia Borgia

Lucrezia Borgia

Lucrezia Borgia Italian pronunciation: luˈkrɛttsja ˈbɔrdʒa; Valencian: Lucrècia Borja luˈkrɛsia...

Random Posts (



Wargame (from the English. "Wargame" - Russian. "War game") - a kind of strategi
Umudova, Nargiz Mamedaga Kyzy

Umudova, Nargiz Mamedaga Kyzy

Nargiz Umudova Azerb Nåğárgiz Umudova; born June 20, 1989, Baku, USSR - Azerbaijan chess player, gra
Critters (film)

Critters (film)

fantasy, horror, comedy Directed by Steven Herek Producer Rupert Harvey Screenwriter Stephen He
Pashayev, Arif Mir-Jalal oglu

Pashayev, Arif Mir-Jalal oglu

February 15, 1934 (1934-02-15) (81 year) Place of birth: Baku Country: Science field: Radiofiz