<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>…for the adult in you &#187; overview</title>
	<atom:link href="http://blogs.gnome.org/metacity/category/overview/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/metacity</link>
	<description>"Many window managers are like Marshmallow Froot Loops; Metacity is like Cheerios."</description>
	<lastBuildDate>Wed, 04 Nov 2009 10:59:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<item>
		<title>The wider world of window border themes</title>
		<link>http://blogs.gnome.org/metacity/2009/07/16/the-wider-world-of-window-border-themes/</link>
		<comments>http://blogs.gnome.org/metacity/2009/07/16/the-wider-world-of-window-border-themes/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 17:26:17 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=618</guid>
		<description><![CDATA[After all this talk about theme formats, an overview of how they are handled in other window managers seemed in order.  Your chronicler is no expert on most of these systems, so there may well be mistakes below.

As you probably know, Metacity uses a complex and powerful (perhaps over-powerful) XML-based vector theme format.
Matchbox uses [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Pacific Highway crossing by scazon, on Flickr" href="http://www.flickr.com/photos/scazon/3312858421/"><img src="http://farm4.static.flickr.com/3589/3312858421_d7f492032f.jpg" alt="Pacific Highway crossing" width="500" height="375" align="right" /></a>After all this talk about theme formats, an overview of how they are handled in other window managers seemed in order.  Your chronicler is no expert on most of these systems, so there may well be mistakes below.</p>
<ul>
<li>As you probably know, <strong>Metacity</strong> uses a complex and powerful (perhaps over-powerful) XML-based <a href="http://library.gnome.org/devel/creating-metacity-themes/stable/index-info.html.en">vector theme format</a>.</li>
<li><strong>Matchbox</strong> uses <a href="http://matchbox-project.org/documentation/themes/">a similar XML-based format</a>, but the graphics are done using pixmaps.</li>
<li><strong>Openbox</strong> uses a complex system of <a href="http://icculus.org/openbox/index.php/Help:Themes">hierarchical properties</a>, and again the graphics use pixmaps.</li>
<li><strong>Emerald</strong> has <a href="http://wiki.compiz-fusion.org/Decorators/Emerald">a set of different engines</a> each of which can be used to represent a theme in a particular way.  For example, there is the <em>pixmap</em> engine for pixmap themes.  Settings go into a keyfile called theme.ini shipped inside a gzipped tarball.</li>
<li><strong>KWin</strong> themes <a href="http://rikkus.info/kwin-style-tutorial.html">are either</a> pixmap themes, or written in C++ and compiled.</li>
<li><strong>Compiz</strong> has no theming system of its own, but can use KWin, Emerald, or Metacity themes.</li>
<li><strong>Awesome</strong> allows themes written in Lua using its <a href="http://awesome.naquadah.org/wiki/Beautiful">Beautiful</a> library.</li>
<li><strong>Sawfish</strong> themes are <a href="http://sawfish.wikia.com/wiki/Themes_(1-100)">written in Lisp</a>.</li>
<li><strong>fvwm</strong> themes are written in <a href="http://www.fvwm.org/doc/unstable/allCommands.html">its own custom scripting language</a>.  Here are some <a href="http://www.twobarleycorns.net/fvwm-decors.html">rather beautiful examples</a> (which I think should be ported to Metacity).</li>
<li><strong>Enlightenment</strong> themes are in <a href="http://www1.get-e.org/Themes/E17_-_Border/">some strange binary format</a> which your chronicler does not understand.</li>
<li><strong>icewm</strong> themes are <a href="http://www.icewm.org/themes/">pixmap-based</a>.</li>
<li><strong>xfwm</strong> themes are also <a href="http://www.xfce.org/xfwm4-theme-howto/">pixmap-based</a>.</li>
<li><strong>twm</strong> and <strong>ratpoison</strong> do not support theming.</li>
</ul>
<p>Feel free to add more in comments.</p>
<p>(And then of course there are two examples from outside the free desktop, which are so large they are easy to miss:</p>
<ul>
<li><strong>OS X</strong> does not generally allow theming;</li>
<li><strong>MS Windows</strong> only allows very basic theming and no redefinition of window borders.</li>
</ul>
<p>One reader contacted your chronicler offline to ask whether a theme editor, and indeed customisable themes, were not a white elephant, considering that most users of most computers in the world have no ability, and perhaps also no desire, to remodel their window borders.)</p>
<p><strong>Conclusions:</strong></p>
<ul>
<li>Most environments do not allow anything beyond very basic theming.</li>
<li>Most of the other window managers rely either on pixmap theming or express their themes using a programming language.  The middle ground of using vector graphics is unknown outside Metacity.  (Of course, in the world of gnome-shell, we could always express themes in JavaScript, but expressing themes in code brings a whole raft of security implications of its own.)</li>
<li>Nobody uses external standards such as CSS or SVG, except insofar as programming languages are external standards.</li>
</ul>
<p><em>Photo © scazon, cc-by.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/07/16/the-wider-world-of-window-border-themes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Two hundred</title>
		<link>http://blogs.gnome.org/metacity/2009/07/15/two-hundred/</link>
		<comments>http://blogs.gnome.org/metacity/2009/07/15/two-hundred/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 01:36:49 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=613</guid>
		<description><![CDATA[The Metacity blog has been going now for a little over two years, and this is our two hundredth post.  We began at least partly as a place to keep an essay about building the tab list, and we grew from there, picking up the Metacity Journal, release notes, and the Bug of the [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Bonus 200 by mag3737, on Flickr" href="http://www.flickr.com/photos/mag3737/458211586/"><img src="http://farm1.static.flickr.com/203/458211586_a79a043967.jpg" alt="Bonus 200" width="500" height="500" align="right" /></a>The Metacity blog has been going now for a little over two years, and this is our two hundredth post.  We began at least partly as a place to keep <a href="http://blogs.gnome.org/metacity/2007/05/29/tablist/">an essay about building the tab list</a>, and we grew from there, picking up the Metacity Journal, release notes, and the Bug of the Day feature along the way.  Plenty of people said there was no life in Metacity, and then Iain Holmes came along and implemented the compositor; they said it again, and Owen Taylor created Mutter, and Metacity sprang forth with life anew.  And the blog was there to record it all.</p>
<p>We hope you&#8217;re enjoying the ride, and we hope you stick with us for the next two hundred and beyond.</p>
<p><em>Photo © mag3737, cc-by-nc-sa.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/07/15/two-hundred/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The future of&#8230;</title>
		<link>http://blogs.gnome.org/metacity/2009/07/06/the-future-of/</link>
		<comments>http://blogs.gnome.org/metacity/2009/07/06/the-future-of/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:12:00 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Mutter]]></category>
		<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=573</guid>
		<description><![CDATA[The future of the project: It&#8217;s fairly clear now that Mutter will be an alternative window manager in GNOME 2.28, and the only window manager in GNOME 3.  It is therefore taking over the reins from Metacity 2: effectively, Mutter is Metacity 3.
But what is to happen to Metacity 2?  Your chronicler believes that the [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Mother And Infant Statue by Greg_e, on Flickr" href="http://www.flickr.com/photos/hillsdalehouse/6172234/"><img src="http://farm1.static.flickr.com/7/6172234_01406eb697.jpg" alt="Mother And Infant Statue" width="375" height="500" align="right" /></a><strong>The future of the project:</strong> It&#8217;s <a href="http://blogs.gnome.org/metacity/2009/03/31/mutter-integration-the-story-so-far/">fairly clear now</a> that Mutter will be an alternative window manager in GNOME 2.28, and the only window manager in GNOME 3.  It is therefore taking over the reins from Metacity 2: effectively, Mutter is Metacity 3.</p>
<p>But what is to happen to Metacity 2?  Your chronicler believes that the community is better served by working on Mutter, and will do so.  Metacity 2 will not be actively developed, other than for bug fixes.  It is possible that some people out there would like Metacity 2 to continue, and if so <a href="http://www.usemod.com/cgi-bin/mb.pl?RightToFork">they are welcome to fork</a> the project and take over, and your chronicler will offer them as much support in doing so as possible.</p>
<p><strong>The future of the bug list:</strong> There are <a href="http://bugzilla.gnome.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=metacity&amp;long_desc_type=substring&amp;long_desc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailqa_contact2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Bug+Number&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">five hundred bugs</a> open against Metacity, more than one maintainer can humanly tackle.  Rather than <a href="http://www.jwz.org/doc/cadt.html">simply closing them all</a>, I propose working through them ten at a time and deciding for each one whether:</p>
<ul>
<li><strong>alreadyfixed: </strong>it is already fixed in Mutter or gnome-shell (this is true of several enhancement requests), and so should be marked WORKSFORME or similar</li>
<li><strong>reassign: </strong>it is a Metacity bug that can be reproduced in Mutter, and should therefore be reassigned</li>
<li><strong>enhancement: </strong>it is an enhancement request which Mutter or gnome-shell could take on board; these should be discussed on the mutter-list and perhaps also in the <a href="http://blogs.gnome.org/metacity/category/bugs-and-issues/bug-of-the-day/">squib of the day</a> feature on this blog;</li>
<li><strong>metacity:</strong> it is a bug which should be fixed <em>both</em> in Metacity 2 <em>and</em> in Mutter;</li>
<li><strong>wontfix: </strong>it is an enhancement request which we WONTFIX.</li>
</ul>
<p>These could be done as we go along, or could be marked with the relevant keywords and then group-edited.  Gentle reader, might you be willing to take on a block or two?</p>
<p>How can we best organise this?  Should we use the wiki and assign blocks to people?  Those of you here at <a href="http://www.grancanariadesktopsummit.org/">GCDS</a>, would you like to get into a room somewhere and work through the list together?</p>
<p><strong>The future of this blog:</strong> I want this blog to continue.  I would like to expand it beyond its current focus:</p>
<ul>
<li>to include discussion of Mutter as well, obviously</li>
<li>to include Mutter data in the <a href="http://blogs.gnome.org/metacity/category/journal/">Metacity Journal</a> posts (these are largely automated and only edited by a human)</li>
<li>to include news of interesting developments in window management (such as the <a href="http://mail.gnome.org/archives/wm-spec-list/2009-June/msg00002.html">current debate</a> over compositor-specific hints in the EWMH)</li>
<li>to have guest bloggers occasionally (again, any volunteers?)</li>
</ul>
<p>One danger is that your chronicler spends more of their time writing blog posts than fixing code.  Suggestions for solving this problem are welcome.  It may involve delegation to someone who is better at blogging than coding.</p>
<p><a href="http://www.flickr.com/photos/hillsdalehouse/6172234/"><em>Photo © Greg Emel, cc-by-nc-sa.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/07/06/the-future-of/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Mutter integration: the story so far</title>
		<link>http://blogs.gnome.org/metacity/2009/03/31/mutter-integration-the-story-so-far/</link>
		<comments>http://blogs.gnome.org/metacity/2009/03/31/mutter-integration-the-story-so-far/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 01:12:59 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[2.27]]></category>
		<category><![CDATA[Mutter]]></category>
		<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=560</guid>
		<description><![CDATA[One of the forks of Metacity is known as Mutter, because it&#8217;s Metacity with Clutter support.  It&#8217;s used by the forthcoming gnome-shell project.
In a recent email to d-d-l, Owen Taylor gave two goals for the 2.28 release:

That Mutter should be developed using the GNOME infrastructure; and
That users will be able to choose between gnome-shell and [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Profile mother earth by alexanderdrachmann, on Flickr" href="http://www.flickr.com/photos/drachmann/327045552/"><img src="http://farm1.static.flickr.com/135/327045552_4c79c6908a.jpg" alt="Profile mother earth" width="500" height="375" align="right" /></a>One of the forks of Metacity is known as<em> </em><strong>Mutter</strong>, because it&#8217;s Metacity with <a href="http://www.clutter-project.org/">Clutter</a> support.  It&#8217;s used by the forthcoming <a href="http://live.gnome.org/GnomeShell"><strong>gnome-shell</strong></a> project.</p>
<p>In <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-March/msg00106.html">a recent email</a> to <a href="http://mail.gnome.org/mailman/listinfo/desktop-devel-list">d-d-l</a>, Owen Taylor gave two goals for the 2.28 release:</p>
<ol>
<li>That Mutter should be developed using the GNOME infrastructure; and</li>
<li>That users will be able to choose between gnome-shell and ordinary Metacity.</li>
</ol>
<p>Some possible ways of doing these were suggested:</p>
<ul>
<li><strong>Merge Mutter and Metacity.</strong> Have Mutter as a separate compositor within Metacity.  Alternatively, as Colin Walters <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-March/msg00107.html">suggested</a>, make Mutter a separate branch within Metacity&#8217;s DVCS.</li>
<li><strong>Import Mutter as a separate window manager.</strong> Remove all the parts in Mutter which are left over from Metacity and don&#8217;t work towards Mutter&#8217;s goals.  Metacity remains for people who don&#8217;t want to run gnome-shell.  Eventually it dies off.</li>
<li><strong>Forget about Mutter.</strong> Whatever we need to do would be done either in Metacity or in gnome-shell using JavaScript plugins.</li>
</ul>
<p>One advantage of making gnome-shell play nicely with a standard (possibly Mutterised) Metacity is that it would still be possible to switch to other window managers: a great deal of ink was spilt in the discussion over <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-March/msg00119.html">whether users would mind switching away from Compiz</a>, <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-March/msg00130.html">whether the Compiz developers would mind</a>, and <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-March/msg00129.html">whether Compiz was the <em>de facto</em> standard window manager these days</a>.  However, Owen <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-March/msg00133.html">says</a> that gnome-shell requires tighter coupling with the window manager than is usual, and that this isn&#8217;t really an option.</p>
<p>The discussion continues&#8230;</p>
<p><em>Photo © Alexander Drachmann, cc-by-sa.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/03/31/mutter-integration-the-story-so-far/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Blogger&#8217;s Choice Awards</title>
		<link>http://blogs.gnome.org/metacity/2009/03/16/bloggers-choice-awards/</link>
		<comments>http://blogs.gnome.org/metacity/2009/03/16/bloggers-choice-awards/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 17:45:02 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=508</guid>
		<description><![CDATA[Administrivia: I&#8217;ve nominated this blog in the Blogger&#8217;s Choice awards, more because it might bring in fresh readers and more insight than because I think it might win.  Other GNOME blogs might consider whether they&#8217;d like to enter as well.
]]></description>
			<content:encoded><![CDATA[<p><em>Administrivia:</em> <a href="http://bloggerschoiceawards.com/blogs/show/69413">I&#8217;ve nominated this blog in the Blogger&#8217;s Choice awards</a>, more because it might bring in fresh readers and more insight than because I think it might win.  Other GNOME blogs might consider whether they&#8217;d like to enter as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/03/16/bloggers-choice-awards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Administrivia</title>
		<link>http://blogs.gnome.org/metacity/2009/03/05/administrivia/</link>
		<comments>http://blogs.gnome.org/metacity/2009/03/05/administrivia/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 03:24:16 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=447</guid>
		<description><![CDATA[
LiveJournal users may read the Metacity blog by friending its syndicated feed.
Photographers and other artists who publish work under the Creative Commons licences and who would like their work to appear occasionally in the &#8220;bug of the day&#8221; series here should contact Thomas by email (tthurman at gnome dot org).  These would be interleaved with [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>LiveJournal users may read the Metacity blog by friending <a href="http://syndicated.livejournal.com/metacity/profile">its syndicated feed</a>.</li>
<li>Photographers and other artists who publish work under the Creative Commons licences and who would like their work to appear occasionally in the &#8220;bug of the day&#8221; series here should contact Thomas by email (tthurman at gnome dot org).  These would be interleaved with random beautiful things we find on Flickr, as usual.</li>
<li>Remember when there was a <a href="http://blogs.gnome.org/metacity/2008/12/27/take-that-descartes/">talking version</a> of the blog (the little <em>Listen to this</em> links on every post)?  Was that useful to anyone?  Would anyone want it to appear on iTunes?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/03/05/administrivia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zenity, sessions, and window matching</title>
		<link>http://blogs.gnome.org/metacity/2009/02/20/zenity-sessions-and-window-matching/</link>
		<comments>http://blogs.gnome.org/metacity/2009/02/20/zenity-sessions-and-window-matching/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 21:31:48 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Bugs and issues]]></category>
		<category><![CDATA[Thought experiments]]></category>
		<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=397</guid>
		<description><![CDATA[It has been pointed out that session management in Metacity is currently a bit broken.  Firstly, it leaves a lot of useless files around.  I assume that the only session file which is really necessary is the most recent one.  Secondly, I recently found and fixed a bug where Metacity actually crashed [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Apples &amp;amp; Oranges - They Don't Compare by TheBusyBrain, on Flickr" href="http://www.flickr.com/photos/thebusybrain/2492945625/"><img src="http://farm3.static.flickr.com/2123/2492945625_e7f1c078b3.jpg" alt="Apples &amp;amp; Oranges - They Don't Compare" width="500" height="343" align="right" /></a><a href="http://www.kirya.net/weblog/2009/02/20/gnome-leaves-a-lot-of-useless-files/">It has been pointed out</a> that session management in Metacity is currently a bit broken.  Firstly, it leaves a lot of useless files around.  I assume that the only session file which is really necessary is the most recent one.  Secondly, I recently found and fixed a bug where Metacity actually crashed when attempting to save a session.  I wonder nobody had found it before, but maybe this shows that session management doesn&#8217;t get used, or at least looked at, very much.  Thirdly, there&#8217;s still a bug in the session management that I found the other day while fixing <a href="http://blogs.gnome.org/metacity/2008/03/31/zenity/ ">Zenity support</a>, wherein it tries to put up a dialogue before closing the session&#8230; and then always quits, so you can&#8217;t see what you were told.</p>
<p>It seems to me that session management is three-quarters of window matching, but isn&#8217;t half as useful.  It further seems to me that if window positions were remembered properly during day-to-day use, they would be remembered properly across sessions.  This seems to be a rather compelling argument for dropping session handling entirely and adding some kind of window matching in its place.  After all, it wouldn&#8217;t affect our claim to be a lightweight window manager to drop one broken feature and add a more useful one instead.</p>
<p><i>Photo &copy; TheBusyBrain, cc-by.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/02/20/zenity-sessions-and-window-matching/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Away</title>
		<link>http://blogs.gnome.org/metacity/2009/02/19/away/</link>
		<comments>http://blogs.gnome.org/metacity/2009/02/19/away/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 10:45:30 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=395</guid>
		<description><![CDATA[I&#8217;m away on business until the middle of next week, so posting here will be scarce.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m away on business until the middle of next week, so posting here will be scarce.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/02/19/away/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extra buttons</title>
		<link>http://blogs.gnome.org/metacity/2008/12/22/extra-buttons/</link>
		<comments>http://blogs.gnome.org/metacity/2008/12/22/extra-buttons/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 18:29:54 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Policy]]></category>
		<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=210</guid>
		<description><![CDATA[Listen to this.
Sometimes, as in  GNOME bug 562650, people ask for extra buttons on the titlebar to go along with the standard set.  On the face of it, if you may bind a keystroke to some action, there is no reason why you should not be allowed to add it to the titlebar.  The [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;"><a href="http://marnanel.org/metacity/metacity-08-12-22a.mp3">Listen to this.</a></p>
<p>Sometimes, as in  <a href='http://bugzilla.gnome.org/show_bug.cgi?id=562650' class='bug-link bug-link-gnome'>GNOME bug 562650</a>, people ask for extra buttons on the titlebar to go along with the standard set.  On the face of it, if you may bind a keystroke to some action, there is no reason why you should not be allowed to add it to the titlebar.  The problem is, though, that somehow it must be drawn with a recognisable icon.  This has led to the current policy that all themes must declare all possible buttons, and that no buttons are allowed outside that set.</p>
<p>Version 1 of the theme standard required all themes to declare how to draw <em>menu, minimize, maximize, unmaximize</em> (restore), and <em>close</em>.  Version 2 allowed the addition of <span class="para"><em><span class="literal">shade</span>, <span class="literal">above</span></em> (&#8221;always on top&#8221;) <span class="literal">and <em>stick</em> (&#8221;on all workspaces&#8221;).  If you&#8217;re looking to add one of those functions, as  <a href='http://bugzilla.gnome.org/show_bug.cgi?id=562650' class='bug-link bug-link-gnome'>GNOME bug 562650</a> actually is, the solution is to switch to a theme which has a copy in version 2; unfortunately, there aren&#8217;t many which have adopted this version.  <em>Bright</em> and <em>Crux</em> both support it, though:</span></span></p>
<p><center><a title="metacity-theme-2 by marnanel, on Flickr" href="http://www.flickr.com/photos/marnanel/263262455/"><img src="http://farm1.static.flickr.com/91/263262455_08a635720b_o.png" alt="metacity-theme-2" width="273" height="167" /></a></center></p>
<p>But requiring a theme to contain all permitted buttons restricts the number of buttons which can reasonably be permitted.  In the future, how can we permit <strong>any</strong> buttons to be added?  We could require <em>unknown</em> as a button type, which would certainly solve the problem of not being able to draw a button, but the user who was faced with two or three buttons bearing question marks might object.  Or we could allow buttons we didn&#8217;t know to be decorated with text saying, for example, &#8220;<tt>stick</tt>&#8220;,  which would work but wouldn&#8217;t be beautiful.</p>
<p>Alternatively, we could require all possible buttons to be declared in the base theme, <em>Atlanta</em>, and simply allow fallback.  This is reminiscent of the way fonts work: a font may contain any Unicode character, but most fonts don&#8217;t attempt to cover the whole range.  This means that people wanting to write any language which includes characters outside the ASCII range would often run into holes in their words&#8211; so the system will use a glyph from another font as a substitute.  <a href="http://languagelog.ldc.upenn.edu/nll/?p=915#comment-14622">This often leads to ugly rendering</a>, though, even for names from a language as common and well-known as French:</p>
<p><div id="attachment_211" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-211" title="He was Edmond Dant(oops!)s... and he was my father." src="http://blogs.gnome.org/metacity/files/2008/12/dantes.png" alt="He was Edmond Dant(oops!)s... and he was my father." width="500" height="35" /><p class="wp-caption-text">He was Edmond Dant(oops!)s... and he was my father.</p></div>Similar results would no doubt be common with a similar system for buttons.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2008/12/22/extra-buttons/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
<enclosure url="http://marnanel.org/metacity/metacity-08-12-22a.mp3" length="2193536" type="audio/mpeg" />
		</item>
		<item>
		<title>Window matching</title>
		<link>http://blogs.gnome.org/metacity/2008/11/02/window-matching/</link>
		<comments>http://blogs.gnome.org/metacity/2008/11/02/window-matching/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 18:30:37 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Bugs and issues]]></category>
		<category><![CDATA[EWMH]]></category>
		<category><![CDATA[ICCCM]]></category>
		<category><![CDATA[nargery]]></category>
		<category><![CDATA[overview]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=171</guid>
		<description><![CDATA[Window matching is the process of identifying a new window as one we&#8217;ve seen before.  Of course every new window is new, and so we&#8217;ve never seen it before, but there&#8217;s an intuitive understanding that if you open a document in OpenOffice and then come back to it a week later that the window is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/chiperoni/239435850/" title="glass pane, shattered by nchenga, on Flickr"><img src="http://farm1.static.flickr.com/96/239435850_1a6e489521.jpg" width="500" height="375" alt="glass pane, shattered" align="right" /></a>Window matching is the process of identifying a new window as one we&#8217;ve seen before.  Of course every new window is <em>new</em>, and so we&#8217;ve never seen it before, but there&#8217;s an intuitive understanding that if you open a document in OpenOffice and then come back to it a week later that the window is in some way the same.</p>
<p>Some good properties to use for this are:</p>
<ul>
<li><a href="http://ring.u-toyama.ac.jp/pub/XFree86/4.1.0/doc/xsmp.TXT"><em>SM_CLIENT_ID</em></a>, which is set by the session manager for a particular instance of a running program. XSMP says that &#8220;a unique value called a client-ID is provided by the protocol for the purpose of disambiguating multiple instantiations of clients.&#8221;</li>
<li><a href="http://tronche.com/gui/x/icccm/sec-5.html"><em>WM_WINDOW_ROLE</em></a>, which is optional.  The ICCCM says that &#8220;the combination of SM_CLIENT_ID and WM_WINDOW_ROLE can be used by other clients to uniquely identify a window across sessions.&#8221;  If there is no WM_WINDOW_ROLE, the ICCCM tells us to fall back on WM_CLASS and WM_NAME&#8230;</li>
<li><em>WM_NAME</em> is the window title.</li>
<li><a href="http://tronche.com/gui/x/icccm/sec-4.html"><em>WM_CLASS</em></a> is a two-part property.  Let&#8217;s call these Instance and Class, although these aren&#8217;t the real names. <em>Instance</em> is generally the name of the program, although it can sometimes be set on the commandline.</li>
<li><em>Class</em> is &#8220;the general class of applications to which the client  that owns this window belongs&#8221;, i.e. the brand name of the program (rather than &#8220;editor&#8221;).</li>
</ul>
<p>Metacity does not currently do window matching for three good reasons.</p>
<p><strong>1. Separation of concerns: in-process or not?</strong></p>
<p>The EWMH allows us to do window matching outside the WM, and in fact this is what <a href="http://burtonini.com/blog/computers/devilspie">Devil&#8217;s Pie</a> and <a href="http://www.phaeronix.net/gDevilspie">gdevilspie</a> are for.  They have all the other problems, but they&#8217;re not part of the WM, and if they crash they don&#8217;t bring the WM down.  It appears that because this can be done outside the WM it should be.  (Isn&#8217;t this fun?  We can pretend we&#8217;re the Hurd.)  Feel free to argue the point, of course.</p>
<p><strong>2. Separation of concerns: app or WM?</strong></p>
<p>It is also possible that nobody except the application itself knows where its windows should be placed, and that everything should be left up to the apps (and in practice the toolkits).  This would allow us to do away with session management entirely.  Certainly it would mean that it was none of Metacity&#8217;s business.</p>
<p><strong>3. Paucity of distinguishability: who sets what?</strong></p>
<p>Devil&#8217;s Pie requires you to set up rules to identify windows.  Doing window matching at the window manager level implies that the rules are written for you automatically.  This wouldn&#8217;t be a problem, except that applications set the attributes above very inconsistently.  Although WM_NAME is always set, it isn&#8217;t necessarily reliable&#8211; for example, gedit adds a star to it when you begin editing a document. I believe therefore that we cannot use it in automated window matching.</p>
<p>As to the others, let&#8217;s introduce a notation: <strong>Role|Instance|Class</strong>.  If Role is missing, we write <strong>[NONE]|Instance|Class</strong>.  Here is a program called <a href="http://www.gnome.org/~tthurman/bugs/same.c">same.c</a> which will print these values for you.  Some common examples:</p>
<ul>
<li>Firefox sets <strong>browser|Navigator|Firefox</strong> in all cases.  It is therefore not possible to distinguish Firefox windows from one another except by WM_NAME.</li>
<li>Thunderbird sets <strong>[NONE]|gecko|Thunderbird-bin</strong>, but it usually only has one window open.</li>
<li>nautilus sets <strong>[NONE]|nautilus|Nautilus</strong> and it is therefore impossible to tell the difference between Nautilus windows except by WM_NAME.</li>
<li>inkscape sets <strong>[NONE]|inkscape|Inkscape</strong> similarly.</li>
<li>gnome-calculator sets <strong>[NONE]|gnome-calculator|Gnome-calculator</strong>.</li>
<li>gnome-terminal sets <strong>gnome-terminal-</strong><em>SOME-LONG-STRING-OF-NUMBERS</em><strong>|gnome-terminal|Gnome-terminal</strong> with the string of numbers different each time.  This gets an A.</li>
<li>epiphany sets <strong>epiphany-window-</strong><em>SOME-LONG-STRING-OF-NUMBERS</em><strong>|epiphany-browser|Epiphany-browser</strong> with the numbers differing.  Another A.</li>
<li>The GIMP sets <strong>gimp-</strong><em>XXX</em><strong>|gimp|Gimp</strong> where <em>XXX</em> is &#8220;toolbox&#8221;, &#8220;dock&#8221;, &#8220;tip-of-the-day&#8221;, etc.  This gets an A+.</li>
</ul>
<p>Please feel free to comment with more results and I&#8217;ll add them.</p>
<p><strong>Conclusion</strong></p>
<ul>
<li>People often complain that Metacity doesn&#8217;t do window matching.</li>
<li>There are many reasons why it shouldn&#8217;t (but feel free to disagree in comments).</li>
<li>Window matching of any kind is needlessly difficult because the important properties are set inconsistently.</li>
<li>Therefore for the sake of window matching in general, whether we do it in Metacity or not, it would be a useful exercise to patch all programs which don&#8217;t set roles as well as the GIMP does.  (<a href="http://library.gnome.org/devel/gtk/2.12/GtkWindow.html#gtk-window-set-role">gtk_window_set_role()</a> is the relevant GTK function; <a href="http://www.google.com/codesearch?q=gtk_window_set_role+-package%3Agtk%2B">it&#8217;s not widely used</a>.)  Perhaps this could become a <a href="http://live.gnome.org/GnomeGoals">GNOME Goal</a>.</li>
</ul>
<p><small>Photo: Glass pane, shattered, &copy; nchenga nchenga, cc-by-nc.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2008/11/02/window-matching/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
