## page was renamed from HardyDesktopEffects ##(see the SpecSpec for an explanation) ''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''': UbuntuSpec:hardy-desktop-effects * '''Packages affected''': compiz, compiz-core, compiz-plugins, compiz-fusion-plugins-main, compiz-fusion-plugins-extra, gnome-panel, gnome-control-center == Summary == To ensure the smooth operation of compiz as the default window-manager the integration work into the desktop has to be emphasized. The tools for controlling appearance, workspaces, keyboard and sessions have to be made more compiz-aware. The default behaviour (actions triggered via keyboard-shortcuts or by popping up dialogs) of compiz is not to be different from metacity. It has to be taken care of that shortcuts of applications are not overridden by compiz. Interaction with the underlying framework (RandR) provided by Xorg has to be ensured so hotplugging of displays, screen-rotations and resolution-changes work without causing compiz to quit or crash. == Release Note == Run compiz as the default compositing/window-manager on supported graphics-hardware. == Rationale == Running compiz as default instead of metacity is meant to be as smooth and non-intrusive as possible, while improving the visual appeal and accessability of the default desktop-setup. The user should only recognize the improved visual appeal and added usability-improvements on the desktop. There should be as little breakage as possible moving from metacity to compiz in terms of behaviour, keyboard-shortcuts and themes. New compiz features (additions over metacity) should be more discoverable for users. Aside from that compiz should really behave just like metacity from a keyboard-shortcut point of view. == Use Cases == Users switching from metacity to compiz (e.g. updating from Dapper/6.06 LTS to Hardy/8.04 LTS) will expect all learned keyboard-shortcuts from metacity to result in the same behaviour under compiz. It would alienate people, if they were required to learn new keyboard-shortcut to perform the same actions or if known keyboard-shortcuts would no longer result in the same behaviour. People who are upgrading from Ubuntu 7.10 to 8.04 will expect their settings for compiz to be preserved. The session-management users of Dapper 6.06 are used to, has to work the same way under compiz. This is a functionality that must not be dropped! At the time users recognize the improved desktop-rendering (provided via compiz), they naturally become curious and want to investigate its additional features. These have to be "handed" to them in the most simple way possible, without them being required to read any manuals or web-forums in order to get to know new functionality. New features of the underlying Xorg should not cause compiz to crash or switch off (fallback to metacity). It has to be made sure that additional functionality provided via RandR (monitor-hotplugging, screenrotation) does not break the compiz-rendered desktop. More technical users, who wish to tweak specific properties or behaviours of compiz, would expect a streamlined graphical-frontend for doing so, due to the integrated nature of compiz into the desktop. Forcing them to something like gconf-editor would cause a break in terms of UI-integration and therefore has to be avoided. A user is running 8.04 on a notebook with a supported GPU (thus compiz is enabled by default) and has to give a presentation. She/he connects the notebook to the projector and expects the output on the projector to be either cloned or an additional monitor depeding on the settings. For this to work compiz should not be required to be disabled for the presentation. == Assumptions == For Ubuntu 8.04 LTS compiz 0.7 is used as the base for "Visual Effects". According to information from upstream compiz 0.7 will be ready for the timeframe of Ubuntu 8.04 LTS. compiz will introduce an object system and abstract the output, allowing output plugins based on XRender or OpenGL. The XRender-plugin will be used when OpenGL is not available or the OpenGL-support on the machine running compiz is missing some feature or extension. == Design == * A new window-decorator needs to be written in C, which sports a SVG-backend (it is strongly advised to use [[https://code.launchpad.net/librsvg|librsvg]] here). To prototype this new decorator it is agreed to write it in python first to gather experience of what is needed from a functionality standpoint. According to [[mailto:onestone@kemper.freedesktop.org|Dennis "onestone" Kasprzyk]] this new window-decorator could be written in a way so that it unredirects the window, makes a frame window and reparents the window to it's decoration. After this all painting code in compiz is disabled, and then you have a 2D version of Compiz that will work without Compiz/OpenGL (we would still need a new 2d switcher plugin). * A new plugin for proper session-management needs to be written ([[mailto:amaranth@ubuntu.com|Travis "amaranth" Watkins]]). This will be enabled for the normal and extra effects-levels. * Add scaleaddons and scalefilter (+ enable case-insensitive) to the normal effects-level. Add live-preview for wall (in the change animation) to the extra effects-level. * The provided features and plugins of compiz need to be made more discoverable. Triggering functions via hotcorners are meant to be bound to the "compiz-modifier" (this is the Super-key by default). So when pressing the modifier the configured hotcorners should "lighten up" to give the user a visual clue that they are now able to trigger a hotcorner-function (e.g. trigger the expo- or scale-plugin). The window-menu of the decoration has to list the most commonly used compiz-functions == Implementation == === UI Changes === * The graphical frontend for manipulating the custom effects-level will be changed from ccsm to simple-ccsm. We need to make sure that simple-ccsm complies with the GNOME-HIG. * gnome-keyboard-properties will be the place to advertise the new default compiz-shortcuts users can use. A file called compiz-keys.xml could be used to achieve that. * the window-menu of the new window-decorator will have to be extended to yield the commonly used compiz functions * wnck-applet of gnome-applets will need to dynamically adapt its context-menu UI (the right-click menu) in order to display shortcuts for compiz when compiz is running (e.g. move between viewports, trigger expo-plugin, trigger scale-plugin) === Code Changes === * gtk-window-decorator (part of compiz) will need to be rewritten to allow theming via SVGs * gnome-keyboard-properties (part of gnome-control-center) needs to be extended to expose additional/default keyboard-shortcuts for compiz, which go beyond features of metacity * gnome-appearance-properties (part of gnome-control-center) has to be extended to allow saving and loading a profile of plugins and settings via libcompizconfig * wnck-applet (part of gnome-panel) needs to be extended to have its popup-menu yield compiz-function shortcuts like wall, expo, scale * simple-ccsm (will replace ccsm, which is currently accessable from the "Visual Effects"-tab in gnome-appearance-properties) * a new compiz-plugin for proper session-management has to be written == Test/Demo Plan == (This need not be added or completed until the specification is nearing beta.) == Outstanding Issues == * [[https://wiki.ubuntu.com/DesktopTeam/Specs/HardyDesktopEffectsProfiles|hardy-desktop-effects-profiles]] * [[https://wiki.ubuntu.com/DesktopTeam/Specs/HardyDesktopEffectsShortcuts|hardy-desktop-effects-shortcuts]] * Redirected direct rendering does not work with the current implementation of the DRI-drivers (free, OpenSource drivers). The on-going work regarding [[http://wiki.x.org/wiki/DRI2|DRI2]] will automatically fix this. It is certain that this will not be ready for the Hardy-cycle. The only solution to speed this up is providing [[mailto:krh@bitplanet.net|Kristian Høgsberg]], the main developer behind this effort, with a set of helping hands implementing all the needed parts. It has to be regarded as a regression of functionality especially for people who will move from Ubuntu 6.06 LTS to Ubuntu 8.04 LTS. While OpenGL-based applications worked flawlessly for them with Ubuntu 6.06 LTS they will not work glitch-free under Ubuntu 8.04 LTS. * The current migration of workspace-layout from metacity to compiz is a unpleasant workaround, because the number of rows of the workspaces under metacity is a property of the wnck-applet and not metacity. After speaking with upstream the [[http://standards.freedesktop.org/wm-spec/wm-spec-latest.html|EWMH-spec]] needs to be extended to make this cleaner in the future. == BoF agenda and discussion == Sander Smid: Perhaps add AWN as the launcher / taskbar replacement since they now support applets. More info at http://wiki.awn-project.org/index.php?title=Main_Page (demo at: http://awn.wetpaint.com/page/Demo) Mirco Müller: AWN will not be a default panel- or taskbar-replacement for Hardy. But it would be reasonable to have it available in universe, thus people who want it can install it easily. Maybe if interested developers push hard for it (to make it a solid alternative to the gnome-panel... I honestly don't know how well it is tested atm) it could be considered for Hardy+1. As a hint for the future, Sander, if you want to see this discussed in a thorough fashion during an Ubuntu Developer Summit create a spec for it. The wish to replace gnome-panel with awn, which is what I assume you imply, isn't something that is easily changed. A lot of thought needs to go into something like this, if you want to change installed defaults. Gillespie: the BIGGEST issue here is the redirected direct rendering. This is deep xorg (maybe even kernel?) stuff that needs to be fixed asap. I know it isnt easy to get stuff upstream, but this is a major regression and imho must be fixed before compiz is enabled by default (should have been fixed before it was enabled in gutsy) ---- CategorySpec == Comments == Daengbo : I didn't notice the following mentioned: moving windows between workspaces uses an entirely different method when effects are enabled or disabled. This is bad usability. Drag and drop from the workspace switcher should be supported when desktop effects are on. liorwohl : The Metacity version in Hardy now have some simple effects (like shadow), so maybe the "Normal" effects level will still use Metacity but with this effects on, and only "extra" will use Compiz? this will solve a lot of problems.. http://ubuntuforums.org/showthread.php?t=684793 sean-hammond: The alt-tab window switcher in compiz in gutsy is very broken, it differs from metacity in ways that make it much less usable. Instead of the representations of the windows holding still while the highlight moves from window-to-window as you press tab, the highlight holds still and the windows move. This makes it difficult to focus on the windows, and therefore to know when you've hit the right window or how close you are to the right one, because they are moving. If you have enough windows open then they don't all show at once, instead windows will scroll off the left-hand side of the switcher and scroll back onto the right-hand side. This means you can't see how many windows you have open and it is difficult to know when you have tabbed through all windows and returned to the start (you have to recognise the first window when you return to it). The correct behaviour is to arrange many windows into several columns that are all displayed at once like metacity, if necessary shrink the representations of the windows to fit them all on screen at once. I hope this has been fixed in compiz by now, if not it's a major usability issue. Also the overuse of fading and transparency creates a disturbing flicker if you quickly alt-tab between two applications. If one of them is maximised the whole screen appears to flash in your face. Very disturbing. Benji2 : I second that about the overuse : even the window titlebars are not correctly colored anymore and half transparent for no apparent reason, making them both unprofessional and unreadable. And altough it's very bad for usability, there is no way to disable it. This should be fixed, especially for an LTS release that people may use for more than six months.