[compiz] [ANNOUNCE] compiz-0.7.0

Dennis Kasprzyk onestone at opencompositing.org
Thu Feb 7 06:36:10 PST 2008

A new compiz release 0.7.0 is now available from:


    which can be verified with:

        59b019b6cd627140f44006876ee2b0c3ab92f150  compiz-0.7.0.tar.gz

        (signed by Dennis Kasprzyk)

  Additionally, a git clone of the source tree:

        git clone git://git.freedesktop.org/git/xorg/app/compiz

    will include a signed compiz-0.7.0 tag which points to a commit named:

    which can be verified with:
        git verify-tag compiz-0.7.0

    and can be checked out with a command such as:
        git checkout -b build compiz-0.7.0


A core plugin has been added that allows handling certain core APIs, such as
querying the ABI version, similarly to plugin APIs, allowing sharing more

Added a simple object system, which generalize the privates mechanism and the 
plugin system. It allows to share more code between display, screen and 
window objects. It also makes it possible to properly introduce new object 
types without changing the plugin interface or breaking the API.

Multi-display support.

Various fixes in ICCCM compliance, window stacking and focus handling.

Validity checking of ConfigureRequest events.

Fixes to transient children placement in place plugin.

Hooks have been added to the cube plugin which allow better control of
viewport drawing.

Middle and right click actions have been made configurable in

Gtk-window-decorator now optionally allows mouse wheel title bar actions, such
as shading.

A KDE4 port of the kde-window-decorator has been added.

Frequent crashes of kde-window-decorator for some people have been fixed.



Changes since compiz-0.5.4:

Alyssa Hung (1):
      * Also account for window borders when ensuring that transient windows 
are fully visible on the current workspace.

C-F Language team (3):
      translation updates
      translation updates
      translation update

Compiz Fusion l10n team (1):
      Translations update

Danny Baumann (168):
      Add edge action for "Show desktop".
      Never modify w->state outside changeWindowState function.
      Don't save last window state in CompWindow structure.
      Coding style adjustments.
      Added button bindings for initiating scale.
      Added button bindings for rotating left/right.
      Only show resize rectangle on the screen the resized window is on.
      Re-add rotate_right_key option to metadata which was removed by 
      Only assign the default shadow to windows which use default decorations.
      Fix copy'n'paste mistake.
      Free core private index, not display private index.
      Remove frame window property on removing the window frame.
      Minor cleanup.
      Remove Metacity bell settings integration.
      Added mouse wheel handling to g-w-d.
      Integrate Metacity's configurable middle and right click actions.
      Correct default behaviour of middle mouse button: It should be lowering 
the window, not raising it.
      Added minimization as title bar button action.
      Fixed Gconf setting parsing for title bar button actions.
      XineramaQueryScreens is not guaranteed to set the number parameter to 
zero if it returns NULL, so better initialize the parameter properly.
      Properly remove window decorations on plugin unload.
      Use normal mode for maximized windows.
      Translation update for pt by Nicolau Goncalves.
      Translation update for it by Milo Casagrande.
      Check for changes to the override_redirect flag on window map.
      Recalculate window type and window actions if override_redirect state 
      Handle MapRequest event after core so that decorWindowUpdate sees window 
type and override_redirect state changes that might have happened during 
event processing.
      Re-query Xinerama information on root window reshape.
      Always update event windows when the allowed actions have changed.
      Revert "Handle MapRequest event after core so that decorWindowUpdate 
sees window type and override_redirect state changes that might have happened 
during event processing."
      Call matchPropertyChanged handler when the override_redirect flag 
      Allow plugins to not only clear allowed window actions, but also to add 
allowed actions.
      Bump ABIVERSION.
      Whitespace and formatting improvements.
      Only copy structures when needed.
      Formatting fix.
      Include compiz-core.h before Xrender.h because newer versions of Xrender 
headers need Xlib.h included first.
      Fix whitespace.
      Minor cleanup.
      Add minimum and maximum restrictions for opacity values.
      Only apply clipping planes when the cube is actually rotated.
      Fix whitespacing.
      Don't wrap into functions when not needed.
      Use matrixTranslate instead of ScreenPaintAttrib.
      Use matrixTranslate instead of ScreenPaintAttrib.
      Greek translation update by jimdusis at yahoo.gr.
      Added CubePostPaintViewportProc.
      Added paintAllViewports variable.
      Minor beautification.
      Bump ABIVERSION.
      Make sure the position is randomized only for windows that are smaller 
than the workarea.
      Translation updates for gl, nb, sv and tr.
      Sort LINGUAS list alphabetically and remove duplicate item.
      Update decoration with a timer after resize.
      Rename focusWindowOnMap to allowWindowFocus and make it use the current 
window viewport, not the initial one.
      Support restack requests in ConfigureRequest events.
      Don't restack windows on map if their focus should be prevented.
      Fix map and restack ordering.
      Fix full window frame being painted once after shading.
      Fix warning.
      el translation update. Closes bug #12593.
      Delete property first and delete frame window after that to avoid race 
      Use focus stealing prevention for application initiated active window 
change requests.
      Move input (if desired) focus after mapping the window.
      We don't need to care about converting the returned name string.
      Focus default window after switching viewports.
      We always need to restack windows on map. Newly created windows are 
placed on top of the stack first, which is not desired for some windows that 
may be denied focus (such as desktop windows).
      Sort windows that are present before the WM starts.
      Fix variable naming.
      Don't restack desktop windows. They are placed correctly by 
      An aboveId of None means that the window was placed on bottom of the 
stack, so also update the linked list accordingly.
      Don't touch override_redirect windows on initial sorting.
      Send synthetic configure notify events where needed according to ICCCM 
chapter 4.1.5.
      Remove initial stack sanitization.
      glGetString is allowed to return NULL in case an error happened, so 
avoid crashing in this case and bail out instead.
      Always use the old geometry passed to addWindowSizeChanges for 
      Fix handling of ConfigureRequest events with CWStackMode set, but 
without CWSibling set.
      Correct handling of grab window in case it is destroyed.
      Fix findLowestSiblingBelow function for desktop windows.
      Immediately update the internal stack representation on stack changes 
caused by MapRequest events.
      Fix typo.
      Also update saved X position.
      Don't prevent focus for desktop and dock windows on arrival of a 
      Use client message timestamp rather than window user time when 
processing focus stealing prevention on _NET_ACTIVE_WINDOW messages.
      We have a CompScreen* variable, use it.
      Update saved window coordinates when window is resized by some client.
      Minor cleanup.
      Clear all coordinates that match the server coordinates from the 
configure request mask to make sure a synthetic configure notify event is 
sent whenever needed.
      We have to send the WM_TAKE_FOCUS message even if we directly set the 
input focus.
      Only send synthetic ConfigureNotify when ignoring ConfigureRequest 
      Use real screen number rather than 0.
      Use real screen number rather than 0.
      Get private pointer for the current screen.
      Run external commands with a DISPLAY string adjusted for the screen 
number that was passed to runCommand.
      putenv doesn't work properly with dynamically allocated strings that are 
free'd right after the putenv call.
      Always allow focus for active window.
      Added close window button and raise/lower window key options.
      Added button options for minimize window and toggle window maximized.
      Added clear button option.
      Prevent wobbling when shading maximized windows.
      Fix in-viewport calculation.
      Minor cleanup.
      Check inside of changeWindowState if state was actually changed instead 
of on the caller side.
      Also set demands attention hint if focus was prevented because a window 
is on another viewport.
      Set demands_attention hint everytime window focus was prevented.
      Fix typo.
      We don't need to constrain y movement after placing transients.
      Also check if parent's Y coordinate is inside the current viewport.
      Fix typo.
      Don't switch to selected window if switcher was cancelled.
      Allow DnD for scale edges.
      Get rid of cached values for paint modifier options.
      Whitespace fixes.
      Avoid duplicated defines.
      Added some matrix functions that can be useful for plugins.
      Complete comment.
      Added CompVector type for describing vectors.
      Use CompVector.
      pt_BR translation update (closes #12861).
      fr translation update (closes #12918).
      Make focusDefaultWindow() take the screen as parameter.
      Move focusDefaultWindow function from display.c to screen.c.
      Fix call argument.
      Compare to wmType, not type variable.
      Added wrappable validateWindowResizeRequest function that can be used to 
adjust window resize request processing. Made place plugin wrap into this 
function and ensure the window remains inside the work area.
      Improve calculations.
      Try to maximize window if it requested to be resized larger than the 
work area.
      Avoid unnecessarily constraining window size.
      Whitespace fixes.
      Bump ABIVERSION.
      Prevent transient children being stacked below their parent if their 
focus was denied.
      Fix typo.
      Minor optimization
      Clip transient child placement to parent output instead of current 
      Fix whitespace.
      tr translation update (closes #13094)
      Don't restack ancestors on initial map.
      Factor out retrieving the highest valid sibling under a given window 
into a separate function.
      Move restacking due to focus stealing prevention to 
updateWindowAttributes function.
      The sibling found by findSIblingBelow might already be the active 
window, so include it in check.
      The display dbus path is now "display", no longer "allscreens".
      Wrap setOptionForPlugin function.
      Fix typos.
      Fix dbus paths (shadow_offset_x/y -> shadow_x/y_offset).
      Avoid possible dereference of NULL pointer; and fix duplicate variable 
      Give options passed over the command line priority over ones from gconf.
      NULL is allowed as sibling value, too.
      Make the window frame also process the configured actions for middle and 
right mouse button click, so that the frame behaves the same way as the 
      Fix calculations.
      Only maximize windows that intend to be resized larger than the work 
area in both directions.
      Make sure that
      Correctly reset hoveredWindow variable on invoking scale.
      Change behaviour when an error on regex creation is encountered.
      On shading, set input focus after setting the hidden state to make sure 
that the frame is properly focussed.
      Allow maximizing dialog windows.
      Allow minimizing non-transient dialog windows.
      Minor coding style enhancement.
      Make decoration atom names part of the decoration interface.
      Bump decorator interface version as decoration atom names changed.
      Give switcher window active window decorations.
      Fixed list parsing.
      Disable "Slow animations" key by default.
      Use outputDeviceForGeometry function for implementing 

David Reveman (129):
      Post release version increment.
      Add getPluginABI utility function.
      Add utility function checkPluginABI.
      Add utility function getPluginDisplayIndex.
      Use new core utility functions in rotate plugin.
      Add core plugin loader and core plugin code.
      Hook up core loader.
      Fix typo.
      Pass NULL as path when listing plugins in current directory.
      Only allow loading of core plugin when trying to load
      Hook up core options to core plugin.
      Remove getDisplayOptions and setDisplayOption functions.
      Remove setScreenOption and make sure core plugin is loaded
      Adjust metadata to have core plugin loaded by default.
      Make sure the core plugin is always loaded.
      Add ABI option to core.
      Kill whitespaces.
      Bump ABI version.
      Minor clean up.
      screenInode -> objectInode.
      Bump cube ABI version.
      Add core ABI version check to all plugins. Plugins are now
      Remove getVersion function from plugin VTable.
      Have the configure script generate a compiz-common.h file.
      Install compiz-common.h.
      Use compiz-common.h, move _CompPluginVTable struct to
      Clean up.
      Rename cube.h to compiz-cube.h.
      Rename scale.h to compiz-scale.h.
      Add proper preprocessor check to compiz-cube.h.
      Add proper preprocessor check to compiz-scale.h.
      Split compiz.h into compiz.h and compiz-core.h.
      Remove whitespaces.
      Add simple object system, which generalize the privates
      Remove duplicate error message.
      Add plugin interface version number to getCompPluginInfo
      Bump ABI versions.
      Add missing object.c.
      Adjust core option functions so they match the prototype used
      Add core object.
      Add core object type.
      Add forEach functions to object interface.
      Rename ObjectCallbackProc to ObjectCallBackProc and add return
      Add compObjectForEach function.
      Use compObjectForEach for plugin initialization of
      Re-write object initialization code to properly handle
      Add name to object info struct.
      Add compObjectTypeName function.
      Add nameObject function to object interface.
      Move file watch interface to core object.
      Remove setDisplayOptionForPlugin and setScreenOptionForPlugin
      Add findObject function to object interface.
      Add parent to object struct.
      Use 'base' as default name for base object instead of 'object'.
      Fix typo.
      Allow key and button options in objects that are descendants
      Allow key and button options in objects that are descendants
      Cleanup dbus plugin.
      Have compObjectForEachType take a parent argument to
      Add support for any kind of object type to kconfig plugin.
      Add support for any kind of object type to gconf plugin.
      Add removeScreen function.
      Remove all screens before we return from event loop.
      Move window restore functions to screen.c.
      Remove all windows when removing screen.
      Only update client list and workarea if window has
      Move window restore functionality into removeWindow function
      Destroy screen edges and grab window when removing screen.
      Free background texture when removing screen.
      Destroy GLX context when removing screen.
      Free invisibleCursor when removing screen.
      Free options, damage region and startup notification context
      Release overlay window in removeScreen.
      Keep track of display objects in core object.
      Allocate display objects properly.
      Remove whitespace.
      Add removeDisplay and use it before returning from event loop.
      Ungrab keys, free buttonGrab and keyGrabs.
      Destroy damage, remove passive button grabs and remove
      Move shutdown code out of for loop.
      Destroy temporary regions properly.
      Remove display connection watch properly.
      Move plugin and display removal to finiCore and call
      Remove compDisplays variable and add comments to code
      Avoid waking up once every second.
      Remove trailing whitespaces.
      Move CompTimeout struct to compiz-core.h.
      Move timeout variables into core object.
      Move outputRegion and tmpRegion into core object.
      Move CompWatchFd struct into compiz-core.h.
      Move WatchFd variables into core object.
      Add multi-display support to eventLoop.
      Remove displays before plugins.
      Close display connection.
      Load core plugin when initializing core object.
      Initialize display object for plugins properly.
      Remove ping timeout when removing display.
      Make decoration plugin hook into windowRemoveNotify and
      Add objectAdd and objectRemove hooks to core. These are similar to
      Hook into objectAdd and objectRemove functions.
      Use objectAdd/Remove interface instead of old WindowAdd/Remove
      Call decorWindowAdd instead of decorWindowUpdate directly.
      Free core private index in decorFini and not the display
      Have blur plugin hook into objectAdd instead of windowAdd.
      Remove windowAddNotify and windowRemoveNotify hooks.
      Only call matchExpHandlerChanged if display has not been
      Free window private index.
      Unwrap setOptionForPlugin function.
      Unwrap setOptionForPlugin function.
      Free cs->vertices.
      Cleanup file watches properly.
      Check d->base.parent to see if the object is properly
      Fix memory leaks and clean up properly in gconf plugin.
      Fix a number of obvious memory leaks.
      Bump ABI versions.
      Check return status of dbus_message_iter_open_container.
      Remove whitespaces.
      Minor cleanup.
      Revert "Check d->base.parent to see if the object is properly"
      Reparent window instead of flipping the WType_TopLevel bit.
      Remove whitespaces.
      Make mCompositeWindow an X window instead of a QWidget.
      Don't remove WType_TopLevel bit when reloading decorations.
      Reparent window just before mapping it and avoid hiding it
      Add --sm-disable option to kwd.

Dennis Kasprzyk (54):
      Disable backface culling only for front-to-back painted transparent cube 
      Draw cube caps only once per output, but allow plugin plugins to reset 
this handling. Fixes switcher with transparent cube.
      Added wrapable output clipping functions.
      Wrap enableOutputClipping to set correct clipping of the cube faces.
      Use current viewport for skydome rotation calculation.
      Don't restack new "dock" type windows behind the active window.
      Use KDE functions to get the visible window name.
      Make sure that everything is painted, if another plugin requests it.
      Make sure that unredirected windows get redirected on unmap.
      Added windowOnAllViewports function.
      Use windowOnAllViewports in moveScreenViewport.
      Added setWindowPaintOffset function.
      Added new PAINT_WINDOW_WITH_OFFSET_MASK mask that indicates that a 
window will be painted with an offset.
      Initialize windowOffsetX/windowOffsetY correctly.
      Added function to calculate window movement for a given offset.
      Added support for window paint offsets into painting system.
      Bump core ABI.
      Use setWindowPaintOffsets instead of moveScreenViewport in cube.
      Use getWindowMovementForOffset in moveScreenViewport.
      Use setWindowPaintOffsets instead of moveScreenViewport in plane.
      Fixed window offset calculation for multihead configurations.
      getWindowMovementForOffset should always return correct values, also for 
too big offsets.
      Use window Offsets to paint correct background.
      Use the kwin translation catalogue to provide a translated window menu.
      Draw cube caps correctly in inside cube mode.
      Damage window extents correcly of windows with borders.
      Add window actions "menu" type windows (ex. gimp detached menus).
      Decorate "menu" window type windows.
      Wait for the proper configure (and map) events before rebinding the 
decoration pixmap.
      Added KDE4 configure checks.
      Added kde-window-decorator KDE 4 port.
      Check only for public KDE 4.0 decoration headers. (Will be available in 
4.0.1 and 4.1)
      The KDE4 window decorator now only uses public KDE API (version >= 
4.0.1) to build.
      Use _COMPIZ_ prefix to symbolize that this is a compiz private atom.
      Use _COMPIZ_ prefix for all non stadardized decoration manager atom 
      Use _COMPIZ_ prefix for all decoration related atoms.
      Update to new atom names.
      Use new atom names.
      Use new atom names.
      Link against Plasma.
      Use Plasma to draw the application switcher window.
      Set blur property for the switcher window.
      Include only needed headers.
      Removed old switcher code.
      Add atom define that allows the decorator to change the color of the 
selection rectangle of the switcher window.
      Allow the window decorator to change the selection rectangle color.
      Set switcher selection color.
      Do not resize the decoration widget to the wrong dimensions first.
      Use Plasma::Svg and some code from Plasma::Dialog to paint directly into 
a QPixmap.
      Set switcher backgound pixmap instead of only a color.
      Watch for plasma theme changes.
      Fixed handling of autogenerated files to make distcheck work again.
      Add NEWS entry and bump version for 0.7.0 release.
      Post release version increment.

Erkin Bahceci (1):
      Do librsvg initialization/termination.

Guillaume Seguin (1):
      * Add snap_bottom option

Jigish Gohil (4):
      pl translation from Maciej Warnecki <maciekw5 at gmail.com>
      fr translation update from Tristan RABLAT <tristan.rablat at gmail.com>
      ko translation updates from Lee June Hee <bugbear5 at gmail.com>
      nb translation updated from Ketil W. Aanensen 
<ketil.w.aanensen at gmail.com>

Jürgen Kreileder (2):
      Fix smart placement client size calculations.
      Fix copy'n'paste mistakes.

Kristian Høgsberg (4):
      Add back --with-default-plugins option.
      Set SM restart style to SmRestartIfRunning on exit.
      Require 'compiz' not @COMPIZ_REQUIRES@ in plugin pkg-config files.
      Add run_command to keyboard shortcut list.

Kristian Lyngstol (1):
      Autoraise for transients too

Michael Vogt (1):
      metadata/schemas.xslt: - fix generation of the active_plugin list in the 
schema file

Nicolas Viennot (1):
      Add windowRemoveNotify function.

Randolph Chung (1):
      Fix operator order.

Robert Noland (1):
      Replace strndup with malloc and strncpy. FreeBSD doesn't support 

Roland Baer (6):
      Return value of XGetKeyboardMapping() has to be XFree()d, not to be 
      Storage of XGetVisualInfo() needs to be free()d
      realloc with correct size
      mods is useless or "modifiers" will not work
      Removed dead condition/code
      Return in out of mem condition

Roland Bär (2):
      Added sanity check for screenInode value.
      Plug minor memleak.

Steven Robertson (1):
      Fix window unsnapping for vertically arranged Xinerama heads.

Tomas Carnecky (1):
      Start window decorator on all screens.

Δημήτρης (djdoo) (2):
      el translation update
      el translation update

More information about the compiz mailing list