CompositeByDefault

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

  • Launchpad Entry: composite-by-default.

  • Packages affected: compiz-core gnome-control-center ccs-settings libccs python-ccs compcomm-plugins (Compiz Fusion) emerald emerald-theme-manager gnome-keybinding-settings

See also:

  • Xorg7.3Integration - Integrate Xorg 7.3 components, adopt config autodetection

  • BulletProofX - Failsafe mode when X doesn't start, with displayconfig-gtk to configure; includes a whitelisting capability that CompositeByDefault could share

Summary

  • Deploy Compiz, with a set of plugins and settings backends as the default window manager in Gutsy Gibbon.

Rationale

  • Compiz is now able to function as a drop in replacement for Metacity. Due to increasing support for required GL extensions in both free drivers and proprietary drivers, and increasing stability in the project and its associated plugins, the software is usable and available for a broad base of users. Users have shown a large amount of interest in Compiz/Beryl for making their computing experience more usable and enjoyable. The highly visible effects of Compiz can act to encourage users to try Ubuntu.

Use Cases

  • John is a new user coming from windows and finds the idea of workspaces/viewports completely foreign. The wall plugin for Compiz presents these to John in a tactile and intuitive way helping his workflow.
  • Steve is a power user and often works with dozens of windows. Plugins such as Scale (tile out all windows and let you pick one) helps him to stay organized and work faster.
  • Edward is visually impaired. The neg and zoom plugins help him to zoom in close on small text, and improve contrast in some interfaces.
  • Mark likes wobbly windows and other special effects and wants to have them on his Ubuntu desktop.

Scope

  • Deploying Compiz as the default window manager in Ubuntu involves changes in several areas. Work with Compiz will have to be done for integration in to the existing GNOME desktop, behavior should be consistent with metacity when possible (true to a degree already), and users should be able to both include their metacity settings, and use existing GNOME tools to configure Compiz (already true to a large degree again). libwnck will have to be patched (patch available, probably going in upstream) to properly support viewports. A theme for the Emerald decorator will have to be prepared, blending in with the Metacity human theme, but additionally including some of the effects allowed by compositing.
  • Sane default plugin settings will have to be chosen, along with a sane default set of plugins such as to provide an impressive, but not overwhelming experience.

Design

  • Integration with the GNOME desktop will be largely handled through the Compiz Configuration System (CCS). CCS is a plugin, library, set of backends, and tools for Compiz providing the following:
    • Consistent manner to access Compiz settings stored in GConf, ini (flat file), or kconfig backends.
    • Exporting, importing, and editing of profiles (For defaults, etc...) from/to any backend.
    • Python bindings around the library to enable easy manipulation of settings from Python apps.
    • Reading and writing of Compiz settings while Compiz is not running.
    • Translation in the GConf and KConfig backends from a large number of metacity/kwin settings to the equivalent Compiz settings, including watching for changes on the keys.
    • Support for multiple X Screens.
  • Some applications such as gnome-keybinding will be patched to use CCS to add settings for Compiz specific keybindings. A default set of plugins, animations, etc is chosen, with the rest being shipped by default or available for the user to enable if they so desire. Desktop effects will be moved in to GNOME appearance properties.

Implementation

  1. Ensure all required components are present in main and up to date with upstream
    • compiz-core - Need to discuss with upstream about producing a release; otherwise we will need to use a git snapshot
    • different plugins packages (one source package multiple binary packages?)
    • CCS Plugin/Library.
    • CCS Python bindings.
    • CCS Backends.
    • CCS Settings Managers.
    • CCS-GNOME/CCS-KDE metapackages.
    • emerald
    • emerald-theme-manager
  2. Establish "standard plugin list":
    • move
    • resize
    • place
    • snap
    • wall
    • expo
    • zoom
    • neg
    • video
    • animation
    • switcher
    • fade
    • ccp/gconf
    • dbus
    • decoration
    • extrawm
    • jpeg, png, svg (image loader plugins)
    • regex
    • text
    • scale
    • resizeinfo
  3. Establish "optional plugin list" (checkbox to turn on):
    • ring (replacing switcher with same keybindings)
    • trailfocus
    • blur
    • wobbly
  4. Establish a whitelist of Drivers/PCI IDs where composite can be enabled by default
    • See BulletProofX, which will be maintaining a similar whitelist that could be reused here

  5. Integration with existing GNOME desktop
  6. Patch libwnck to properly support viewports (patch exists, may be incorporated upstream).
  7. Create theme for the Emerald decorator
    • Strive to make it blend in with the Metacity human theme
    • Incorporate the following composite effect animations:
      • glide 1 for create Transients use fade
      • glide 2 for close Transients use fade
      • minimize/maximize zoom
      • shade - rollup
      • Focus - fade
        • Maybe change to dodge? --maccam94
    • Identify sane default plugin settings to craft an impressive but not overwhelming experience

Test Plan

  • Evaluate behavioral differences between Metacity and Compiz
    • For each difference identified, determine whether to keep Compiz behavior or adopt Metacity behavior
  • Verify that metacity window manager settings are correctly used by Compiz
  • Ensure all useful functionality (including activating/deactivating) can be done with keybindings that are commonly available - i.e., don't rely on Button2,3,4,5 as they may not be available with touchpads or some mice.

Outstanding Issues

  • Nvidia resource exhaustion bug (black windows when too many are present with TFP) need to be evaluated if they are not fixed.
  • A whitelist of cards needs to be created (or a blacklist) for enabling/disabling Composite. A wrapper needs to be written which does system checks, etc.

Comments

  • NicholasTelford: Might want to be careful, by the looks of the "standard plugins" list you have, many of them are from the (currently unnamed) community project (formerly Beryl). While I have a great deal of admiration for their work, some of it can be less stable or clash with the official compiz plugins. The animation plugin for example clashes with the minimize and fade plugins. Although I believe the animation plugin to be superior, it's something that should be taken in to consideration. (Note: This isn't really relevant as the current plan is for most of the plugins to be moved under the banner of said community project -- Robert Carr) To fix the clashing of Animation plugin with the Fade plugin, by default you should disable the minimize_open_close option in Fade plugin. As for the Minimize plugin, it really shouldn't be used together with Animation, since it interferes on minimize/open/close events, and doesn't let Animation animate shade events. (Note: the conflicts won't happen anymore once the patches I sent to Compiz mailing list get included). -- Erkin Bahceci

    Also, if you're going to use community plugins it might be worth looking at things like the new "dodge" animation (http://www.youtube.com/jp.swf?video_id=3nDzyXFVyIY) for the focus effect as (I believe) it adds a lot of usability (users, especially novice users, can see where the windows have gone). (I think the focus fade effect is more suitable to be the default because it's more subtle. Dodge is fun and maybe it adds some usability, but it might seem a little "in your face" for many users. -- Erkin Bahceci)

    Finally, back when I used to use Beryl I made an Emerald theme to fit in with the Ubuntu Human theme. I'm no artist so I'm sure the art team can do better, but it's worth a look for any ideas: http://themes.beryl-project.org/theme_details.php?id=32

  • maccam94: Compiz and Beryl are currently merging. Beryl is now discontinued, but I think that by the upstream freeze date there should be a stable release of Compiz Fusion. In this merge process, duplicate plugins will probably reworked/removed, and exciting new plugins are being written. Check the blog and the forums on http://www.opencompositing.org for updates. I do not know what will happen to Emerald, and at the moment Compiz Fusion uses the GTK Window Decorator (which can use the existing Metacity theme afaik) (Note: This isn't correct, the emerald at opencompositing.org works fine with latest compiz GIT and libdecoration -- Robert Carr).

    I'd also rather see the Cube plugin than the wall plugin. While both are cool, the cube is something truly unique that no one questions Linux came up with, whereas by the time Gutsy comes out OS X 10.5 Leopard will already be out, featuring Spaces (which looks quite similar to the wall plugin: http://video.google.com/videoplay?docid=1254656550190215821 ) As to the black window bug with nVidia cards, this can most easily be cured by changing the rendering path from "Texture from Pixmap" to "Copy". There are also workarounds documented here. (Note: Compiz doesn't contain a copy rendering path except in a plugin requiring core changes which David hasn't commented on. -- Robert Carr) I think a major consideration when including these plugins will not only be which ones to use, but to make the initiation of these effects intuitive. Unlike Metacity, Compiz let the "Windows" key act as a modifier key. This would allow Ubuntu to further replicate shortcuts used in Windows for users that make the switch. In OS X, the last four F# keys activate features like the dashboard, expose, and show desktop. The corners of the screen also act as hotspots for these features. Not only are these things easy to remember, they provide users of other operating systems comfortability when using Ubuntu. I'm not saying all of these specific shortcuts should be used, as Ubuntu should remain unique, but they are things to take into consideration.

  • sirblackheart: I don't know if this is the right place to mention, but I think when integrating Composite by default, it would be also interesting to have a ubuntu-compiz-theme, i'm speaking of cubecaps, skydomes and similar
  • KamilPáral: Concerning mentioned "behavioral differences between Metacity and Compiz", I have found one pretty annoying for me: I am used to have a panel with a window list and a workspace switcher on the left side on the screen. I am used to switch between active windows and between workspaces using the mouse wheel. Here's the problem: If you move the mouse pointer to the very left side of the screen, the mouse wheel does not send events to the panel applets. It feels like the mouse is not over the panel, but outside it. You have to move the mouse at least 1 pixel to the right (that means from [0,y] screen coordinate to [1,y] screen coordinate), for the mouse to work. This is pretty annoying, it is easy to move the mouse to the left screen edge and move the wheel, but it's pretty hard to move it to left without beeing completely at the edge. In Metacity this works well.

CompositeByDefault (last edited 2008-08-06 16:19:24 by localhost)