<?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; Letters</title>
	<atom:link href="http://blogs.gnome.org/metacity/category/letters/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>Tue, 18 Jan 2011 20:10:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<item>
		<title>Come calm content serene and sweet</title>
		<link>http://blogs.gnome.org/metacity/2010/06/01/come-calm-content-serene-and-sweet/</link>
		<comments>http://blogs.gnome.org/metacity/2010/06/01/come-calm-content-serene-and-sweet/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 13:12:24 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[EWMH]]></category>
		<category><![CDATA[Letters]]></category>
		<category><![CDATA[Thought experiments]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=725</guid>
		<description><![CDATA[Most themes place the icon of the current application somewhere on the titlebar. Some operating systems (notably OS X) allow you to drag this icon as if it was the very file which is being viewed in that window. This behaviour has been suggested for Metacity in the past. One of the two main problems [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Hanging by Glamhag, on Flickr" href="http://www.flickr.com/photos/glamhag/3052925237/"><img src="http://farm4.static.flickr.com/3240/3052925237_b9de98bc83.jpg" alt="Hanging" width="357" height="500" align="right" /></a>Most themes place the icon of the current application somewhere on the titlebar.  Some operating systems (notably OS X) allow you to drag this icon as if it was the very file which is being viewed in that window.</p>
<p><a href="http://blogs.gnome.org/metacity/2008/12/11/dragging-the-window-icon/">This behaviour has been suggested for Metacity</a> in the past.  One of the two main problems with implementing it is that we have no way to identify the document being viewed in a window; we only barely have <a href="http://blogs.gnome.org/metacity/2008/11/02/window-matching/">a way to identify the <em>application</em></a>.</p>
<p>In a blog post last week, Michal Hruby <a href="http://mhr3.blogspot.com/2010/05/lets-make-users-lives-easier.html">suggests a new window property</a> to indicate the URI of a window&#8217;s current document.  This <a href="http://mail.gnome.org/archives/wm-spec-list/2010-June/msg00000.html">spilled out onto wm-spec-list this morning</a>.  (&#8220;NEW&#8221; in the title is a typo for &#8220;NET&#8221;.)</p>
<p>Such a property is a matter for the toolkit to set, rather than the window manager.  But if it <em>was</em> available, it would make the lives of window managers a little easier: not only would it make the window icon dragging possible, but it would also <a href="http://blogs.gnome.org/metacity/2009/07/10/matches/">allow window matching</a> by document or even document type, as well as by application.</p>
<p><em>Photo © Glamhag, cc-by-nc-sa.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2010/06/01/come-calm-content-serene-and-sweet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The order of windows in alt-tab</title>
		<link>http://blogs.gnome.org/metacity/2010/05/03/the-order-of-windows-in-alt-tab/</link>
		<comments>http://blogs.gnome.org/metacity/2010/05/03/the-order-of-windows-in-alt-tab/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:20:34 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Bugs and issues]]></category>
		<category><![CDATA[Letters]]></category>
		<category><![CDATA[Switching]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=712</guid>
		<description><![CDATA[When you press alt-tab under Metacity, the windows you see in the switcher are displayed in most-recently-used (MRU) order, except that minimised windows are always sorted to the end, and urgent (&#8220;needs attention&#8221;) windows are sorted to the beginning. A comment in the source describes this as &#8220;Windows sellout mode&#8221;. In a recent blog post, [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Big surprise by kevindooley, on Flickr" href="http://www.flickr.com/photos/pagedooley/4453455519/"><img src="http://farm5.static.flickr.com/4057/4453455519_0cc3cb024e.jpg" alt="Big surprise" width="500" height="500" align="right" /></a>When you press alt-tab under Metacity, the windows you see in the switcher are displayed in most-recently-used (MRU) order, except that minimised windows are always sorted to the end, and urgent (&#8220;needs attention&#8221;) windows are sorted to the beginning. A comment in the source describes this as <a href="http://git.gnome.org/browse/metacity/tree/src/core/display.c#n4386">&#8220;Windows sellout mode&#8221;</a>.</p>
<p><a href="http://www.azarask.in/blog/post/solving-the-alt-tab-problem/">In a recent blog post, Aza Raskin suggests</a> using <a href="http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html">Markov modelling</a> to learn which applications you commonly switch between, so that they will be in the right place when you need them.  For example, if the system learns that you most often switch between gedit and firefox, then when you are using firefox, gedit will be the first application in the list.</p>
<p>Your chronicler believes the readership of this journal may be interested in discussing the idea.  Anyone who wishes to implement it may count on all the help and advice they need from the Metacity maintainers.</p>
<p>Thanks to <a href="http://arunraghavan.net/">Arun Raghavan</a> for bringing this to our attention.</p>
<p><em>Photo © Kevin Dooley, cc-by.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2010/05/03/the-order-of-windows-in-alt-tab/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Setting the button order</title>
		<link>http://blogs.gnome.org/metacity/2010/05/03/setting-the-button-order/</link>
		<comments>http://blogs.gnome.org/metacity/2010/05/03/setting-the-button-order/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:14:39 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Bugs and issues]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[Letters]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=708</guid>
		<description><![CDATA[Ubuntu Lucid Lynx was released last week. It modifies the order of the titlebar buttons so that they all appear on the left-hand side. Some people would like the buttons in another order. This post explains how to change the order of the buttons. Firstly, decide which buttons you want: Here are your choices. Only [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Old Pink Buttons by Stars*Go*Blue, on Flickr" href="http://www.flickr.com/photos/artbydebora/2100679319/"><img src="http://farm3.static.flickr.com/2108/2100679319_d15c2696f9.jpg" alt="Old Pink Buttons" width="302" height="230" align="right" border="0" /></a><a href="http://www.channelregister.co.uk/2010/04/28/canonical_ubuntu_isv_support/">Ubuntu <em>Lucid Lynx</em> was released last week</a>.  It <a href="https://bugs.launchpad.net/ubuntu/+source/light-themes/+bug/532633">modifies the order of the titlebar buttons</a> so that they all appear on the left-hand side.  Some people would like the buttons in another order.</p>
<p>This post explains how to change the order of the buttons.</p>
<p>Firstly, decide which buttons you want:</p>
<ul>
<li><a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/buttons.svg">Here are your choices.</a></li>
<li>Only the top four are available in <em>every </em>theme.  Themes which support <em>all</em> the button types include <em>Crux</em> and <em>Bright.</em></li>
</ul>
<p>Take all the names and separate them with commas.  However, for the gap in the middle where the title goes, use a colon.  Thus for the traditional order:<br />
<blockquote><tt>menu:minimize,maximize,close</tt></p></blockquote>
<p>Now open a terminal, and type:<br />
<blockquote><tt>gconftool-2 -<!-- x -->-set /apps/metacity/general/button_layout -<!-- x -->-type string menu:minimize,maximize,close</tt></p></blockquote>
<p>or whatever order you prefer.</p>
<p>It has also been suggested that <a href="http://blogs.gnome.org/metacity/2010/03/21/theme-based-button-layouts/">we might allow button order to be set by the theme</a>, so the default theme in Lucid has the buttons on the left and the other themes have them in the traditional order.</p>
<p><em>Photo © Debora, cc-by-nc-nd.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2010/05/03/setting-the-button-order/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to help with Metacity</title>
		<link>http://blogs.gnome.org/metacity/2010/05/02/how-to-help-with-metacity/</link>
		<comments>http://blogs.gnome.org/metacity/2010/05/02/how-to-help-with-metacity/#comments</comments>
		<pubDate>Sun, 02 May 2010 17:46:42 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Letters]]></category>
		<category><![CDATA[overview]]></category>
		<category><![CDATA[Policy]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=701</guid>
		<description><![CDATA[Someone was asking how they could help with Metacity. Here are some thoughts. Why it&#8217;s important.  Metacity is (for now) the official window manager of the GNOME desktop.  Even though Metacity supports compositing, one of its strengths is that it can also run in a non-composited mode: plenty of people run Metacity who can&#8217;t or [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Never turn your back on the fire... by Anxious223, on Flickr" href="http://www.flickr.com/photos/cdixon/316214959/"><img src="http://farm1.static.flickr.com/108/316214959_d90710c67a.jpg" alt="Never turn your back on the fire..." width="333" height="500" align="right" /></a>Someone was asking how they could help with Metacity.  Here are some thoughts.</p>
<p><strong>Why it&#8217;s important</strong>.  Metacity is (for now) the official window manager of the GNOME desktop.  Even though Metacity supports compositing, one of its strengths is that it can also run in a <em>non</em>-composited mode: plenty of people run Metacity who can&#8217;t or don&#8217;t want to run a compositing window manager.  Then there are the people who use Metacity in compositing mode because they prefer it that way, often because Metacity&#8217;s maturity gives it the edge over other window managers. Even after Mutter becomes the official window manager, Metacity will remain important: the core of Metacity is the core of Mutter.</p>
<p><strong>Things you should read.<br />
</strong></p>
<ul>
<li>You should read <a href="http://git.gnome.org/browse/metacity/tree/HACKING">the HACKING file</a> to get a decent overview of the project.  This will also tell you how to go about debugging a window manager.</li>
<li>The project continues to be guided by the directions given by its creator, <a href="http://ometer.com/">Havoc Pennington</a>.  You should read <a href="http://pobox.com/~hp/features.html">his policy on adding new features</a>.</li>
<li>The two specifications which guide us the most are the <a href="http://tronche.com/gui/x/icccm/">ICCCM</a> and the <a href="http://standards.freedesktop.org/wm-spec/latest/">EWMH</a>.  They are <a href="http://lists.slug.org.au/archives/slug-chat/2001/07/msg00054.html">not the easiest reading material</a>, however, and you can safely put off reading them until you need to.</li>
<li>You should read <a href="http://blogs.gnome.org/metacity/">this blog</a>!</li>
<li>You should subscribe to the <a href="http://mail.gnome.org/mailman/listinfo/metacity-devel-list">metacity-devel-list</a>.  It&#8217;s very low traffic.</li>
<li>If you&#8217;re new to fixing GNOME bugs, talk to the <a href="http://live.gnome.org/GnomeLove">Gnome Love</a> team.  They&#8217;re good at helping newbies.</li>
</ul>
<p><strong>What needs doing.</strong> Metacity is a mature system, coming up to its ninth birthday, so there isn&#8217;t much new development to deal with.  Day-to-day work falls into one of these categories:</p>
<ul>
<li><a href="http://live.gnome.org/Bugsquad/TriageGuide">Triaging new bugs</a>.  A bug is either a report of breakage or a request for an enhancement.  Bugzilla will show you <a href="https://bugzilla.gnome.org/browse.cgi?product=metacity">a summary of current bugs</a>.  There are a <em>lot</em> of them.</li>
<li>For reports of breakage, writing patches.  This is really important.  If you&#8217;re looking for something to work on, try searching for the &#8220;gnome-love&#8221; keyword in Bugzilla.  This is used to mark bugs which are particularly suited to being fixed by newcomers to the project.  <a href="https://bugzilla.gnome.org/buglist.cgi?keywords=gnome-love;query_format=advanced;keywords_type=allwords;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=metacity">There are currently six of them.</a></li>
<li>For enhancement requests, deciding whether they should go in or not.  Usually the answer is &#8220;not&#8221; (see <a href="http://pobox.com/~hp/features.html">Havoc&#8217;s policy document</a>).  This kind of bug has traditionally been discussed in a <a href="http://blogs.gnome.org/metacity/category/bugs-and-issues/bug-of-the-day/">&#8220;bug of the day&#8221;</a> feature here on the blog, but this took more time to write than it took to fix bugs, and so it&#8217;s been quiet recently.</li>
<li>For enhancement requests which<em> should</em> go in, writing patches.</li>
<li><a href="https://bugzilla.gnome.org/page.cgi?id=patchreport.html&amp;product=metacity&amp;patch-status=none">Reviewing those patches</a> and deciding whether they should be committed.</li>
<li>Making releases.</li>
</ul>
<p><strong>New developments.</strong> But if it&#8217;s new development you want, you might be interested in helping out with:</p>
<ul>
<li><a href="http://lwn.net/Articles/344734/">Mutter</a>.  This is the forthcoming window manager and desktop system for GNOME 3.  It uses Metacity as its core.</li>
<li><a href="http://blogs.gnome.org/cowbell/">Cowbell.</a> This is an attempt to reform the recondite window border theme system into CSS, which is much simpler to understand.  This is stalled for the moment for lack of time and direction.</li>
</ul>
<p><em>Photo © Chris Dixon, cc-by-nc-nd.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2010/05/02/how-to-help-with-metacity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tabs</title>
		<link>http://blogs.gnome.org/metacity/2010/01/21/tabs/</link>
		<comments>http://blogs.gnome.org/metacity/2010/01/21/tabs/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 20:38:53 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Letters]]></category>
		<category><![CDATA[Metacity Labs]]></category>
		<category><![CDATA[Switching]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=674</guid>
		<description><![CDATA[In the comments to a previous post, we were asked about implementing tabs in the window manager.  Calum pointed out that the HIG recommends against applications adding their own document-level tabs on the grounds that this is a job for the window manager.  Yet the window manager has never risen to the challenge, and very [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/emdot/523734318/"><img src="http://farm1.static.flickr.com/211/523734318_a72be6ba78.jpg" alt="" align="right" /></a>In the comments to a previous post, <a href="http://blogs.gnome.org/metacity/2010/01/21/snap/#comment-1199">we were asked</a> about implementing tabs in the window manager.  <a href="http://blogs.gnome.org/calum/2008/07/11/tab-frenzy/">Calum pointed out</a> that the <a href="http://library.gnome.org/devel/hig-book/stable/windows-primary.html.en#mdi">HIG recommends against applications adding their own document-level tabs</a> on the grounds that this is a job for the window manager.  Yet the window manager has never risen to the challenge, and very many applications do in fact <a href="http://library.gnome.org/devel/gtk/unstable/GtkNotebook.html">implement document-level tabs</a>.</p>
<p>Implementing this will fall into three parts:</p>
<ul>
<li>there must be a way of identifying groups of windows which may be tabbed together (we might, for example, use <a href="http://tronche.com/gui/x/xlib/ICC/client-to-window-manager/wm-class.html">WM_CLASS</a>);</li>
<li>there must be a display listing all tabs in the window border below the title (in a first revision, this could perhaps be done using the system menu);</li>
<li>there must be a mechanism for unmapping all but the selected window, and, when appropriate, for reconfiguring the unmapped windows to match the mapped window (that is, when the mapped window is resized or moved).</li>
</ul>
<p>There have been <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-July/msg00014.html">some volunteers willing to do the work</a> in the past, but no word yet of working code.  It should be a large piece of work, but not a monumentally huge one.  Again, if anyone wants to help now, abundant assistance is available; this may be something the maintainers could work on, but not until the bug queue has been reduced a little more.</p>
<p><em>Photo © emdot, cc-by-nc-nd.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2010/01/21/tabs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Future directions of Cowbell</title>
		<link>http://blogs.gnome.org/metacity/2009/11/04/future-directions-of-cowbell/</link>
		<comments>http://blogs.gnome.org/metacity/2009/11/04/future-directions-of-cowbell/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:50:16 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[CSS themes]]></category>
		<category><![CDATA[Letters]]></category>
		<category><![CDATA[Metacity Labs]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=654</guid>
		<description><![CDATA[Future directions. Here&#8217;s where Cowbell is going next: The existing functionality is going to be moved into a library called libcowbell.  Very little will be changed at this point from what we already have.  (But there will be some extra tests.) A release of the metacity-cowbell branch will be made that can use libcowbell. A [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Traffic signs by Honza Soukup, on Flickr" href="http://www.flickr.com/photos/honzasoukup/2493109170/"><img src="http://farm4.static.flickr.com/3022/2493109170_b7d0c9553f.jpg" alt="Traffic signs" width="500" height="332" align="right" /></a><strong>Future directions. </strong>Here&#8217;s where Cowbell is going next:</p>
<ol>
<li> The existing functionality is going to be moved into a library called libcowbell.  Very little will be changed at this point from what we already have.  (But there will be some extra tests.)</li>
<li>A release of the metacity-cowbell branch will be made that can use libcowbell.</li>
<li>A release of real Metacity will be made that can use either libcowbell or conventional themes.</li>
<li>Development of libcowbell can continue.  (I expect pseudoclasses to be among the first things added.)</li>
</ol>
<p><strong>More more cowbell. </strong>Iain has pointed out <a href="http://more-cowbell.org/index.php/Main_Page">an existing GNOME-based project called cowbell</a>.  I hope the fact that <em>this</em> project will be <em>lib</em>cowbell will be enough to avoid confusion.</p>
<p><strong>Feedback on feedback. </strong>Screwtape has reviewed <a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/">the existing cowbell documentation</a> in a web page <a href="http://zork.net/~st/cowbell-themes.txt">here</a>.  Here is my feedback on the feedback:</p>
<ul>
<li><strong>§3:</strong> I did start out by showing the structure as pseudo-XML, but <a href="http://blogs.gnome.org/metacity/2009/07/18/more-css-thoughts/#comment-1062">people commented as if</a> the window borders were the result of rendering that XML (as if it were <a href="https://developer.mozilla.org/En/XUL">XUL</a>, or something similar), so I think it may be misleading.</li>
<li><strong>§3:</strong> I dithered over using the ID or a class for this sort of thing for quite a while.  In the end I went with a class because we use classes for buttons (since they may repeat) and it seemed as well to use the same design for areas, and because you may have more than one content area visible at once, even if they <em>are</em> on separate windows.  But I may have been wrong, and I invite opposing opinions.</li>
<li><strong>§</strong><strong>3: <em>buttongroup:</em></strong> I really like this idea.  But AFAIK libccss doesn&#8217;t yet support last-child etc (see next&#8230;)</li>
<li><strong>§</strong><strong>3.1<em>:</em></strong> I want our CSS support to be up to level 3 wherever possible.  However, we are constrained partly by what libccss is currently capable of.  Of course we can patch libccss too!  <a href="http://www.w3.org/TR/css3-background/"><em>Backgrounds and Borders</em></a> is largely supported by libccss, though.</li>
<li><strong>§</strong><strong>3.2:<em></em></strong> Unpainted areas are transparent (though if the frame is opaque, you&#8217;ll just see the frame through them).</li>
<li><strong>§</strong><strong>3.3<em></em></strong><strong>:</strong> font-size is important; what should the interaction be between the font size set in Metacity gconf and the font size in the theme?  Just use the theme font size for scaling as in v2?</li>
<li><strong>§</strong><strong>3.3<em></em></strong><strong>:</strong> button heights: I think I didn&#8217;t explain myself properly here.  You can (should) set <em>height</em> and <em>width</em> on buttons.  But these only serve to establish an aspect ratio.  The height is always calculated from the titlebar height at present.  Perhaps this is overly confusing.</li>
<li><strong>§</strong><strong>3.</strong><strong>5:</strong> <em>:focus</em> pseudoclass: perhaps this should be set on <em>all</em> elements in a focused window.  Or perhaps just the frame and we can use the descendant selector.</li>
<li><strong>§</strong><strong>3.5</strong><strong>:</strong> <em>:disabled</em> &#8212; hadn&#8217;t thought of this, good idea.  <a href="http://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it">TMTOWTDI</a>.</li>
<li><strong>§</strong><strong>3.5</strong><strong>:</strong> I&#8217;m not sure libccss supports <em>:not() </em>(but maybe it does!)  If so, yes, we should use it.  It&#8217;s far better to work the way people expect us to work.</li>
<li><strong>§</strong><strong>3.7</strong><strong>:</strong> I hope we support SVG too.  It would be extra nice if it could be styled with the same CSS somehow.</li>
<li><strong>§</strong><strong>3.8</strong><strong>:</strong> I really want mm and em as well as px.  I&#8217;m not certain libccss knows how to do this, but I will check.</li>
<li><strong>§</strong><strong>4</strong><strong>:</strong> Nobody&#8217;s really tried to put Dublin Core data in CSS before, and I&#8217;m probably not doing it the best way.  I worry that including a required custom XML file will be slipping back into using custom formats, though.  Maybe we should use an @rule.  Or specially-formatted comments.  Or maybe we should give up on the whole required metadata idea.</li>
<li><strong>§</strong><strong>4</strong><strong>:</strong> I like the idea of specifying alternative stylesheets, though metadata in the stylesheets themselves could also do this.</li>
<li><strong>§</strong><strong>6.1</strong><strong>:</strong> yes, we really need a default stylesheet.  I&#8217;m not sure what should go into it.  I will think about this and include it in the first libcowbell release.</li>
<li><strong>§</strong><strong>6.2</strong><strong>:</strong> okay, we&#8217;ll avoid data: URLs.</li>
<li><strong>§</strong><strong>6.2</strong><strong>:</strong> let&#8217;s implement <a href="http://people.collabora.co.uk/~tthurman/cowbell/doc/x341.html#single">the single file doctrine</a> by allowing any file in <em>~/.themes/ThemeName/cowbell/ThemeName.tar</em> to be treated as if it was in <em>~/.themes/ThemeName/cowbell/</em>.  I think we can get that in the first libcowbell release too.</li>
<li><strong>§</strong><strong>6.5</strong><strong>:</strong> I really like <a href="http://getfirebug.com/">Firebug</a>.  Are you thinking we could use Firebug itself, or just copy its UI?</li>
<li><strong>§</strong><strong>6.11</strong><strong>:</strong> Maybe we could also modify hue/saturation/value directly in the URL thus: <em>url(&#8216;file:fred.png?hue=#f00&#8242;)</em>?</li>
<li><strong>§</strong><strong>6.13<em></em></strong><strong>:</strong> I was thinking of themes which, say, repeat a pattern an integral number of times on the otherwise empty part of the titlebar, scaled to fit; this wouldn&#8217;t be possible using border-images, but would work fine with <em>filler</em>.  On the other hand, perhaps this is overkill.</li>
</ul>
<p>Feedback from everyone reading this, on the above and on the original document, is very welcome.</p>
<p>Maybe we need to take over a little piece of live.gnome.org to hash all this out.  Or maybe we need a mailing list.  I&#8217;ll wikify all this tonight and then post about it here.</p>
<p><a href="http://www.flickr.com/photos/honzasoukup/2493109170/"><em>Photo © Honza Soukup, cc-by.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/11/04/future-directions-of-cowbell/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apologia for CSS</title>
		<link>http://blogs.gnome.org/metacity/2009/07/20/apologia/</link>
		<comments>http://blogs.gnome.org/metacity/2009/07/20/apologia/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:05:07 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[CSS themes]]></category>
		<category><![CDATA[Letters]]></category>
		<category><![CDATA[Metacity Labs]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=633</guid>
		<description><![CDATA[This blog is not about to become devoted to the single topic of experimental CSS theming, but some interesting points were raised in the discussion yesterday, which spilled over to Slashdot.  We should have emphasised the experimental nature of the CSS subsystem in its name: perhaps &#8220;CSS On Window Borders Experimental Layout Language&#8221;. Why? Some [...]]]></description>
			<content:encoded><![CDATA[<p><a title="2000 two pence by johninbkk, on Flickr" href="http://www.flickr.com/photos/jinbkk/2540460406/"><img src="http://farm4.static.flickr.com/3194/2540460406_71cbd17b9b.jpg" alt="2000 two pence" width="500" height="332" align="right" /></a>This blog is not about to become devoted to the single topic of <a href="http://blogs.gnome.org/metacity/category/themes/themes-v3/css-themes/">experimental CSS theming</a>, but some interesting points were raised in the discussion yesterday, which <a href="http://slashdot.org/comments.pl?sid=1307903">spilled over to Slashdot</a>.  We should have emphasised the experimental nature of the CSS subsystem in its name: perhaps &#8220;<span style="text-decoration: underline;"><strong>C</strong></span>SS <span style="text-decoration: underline;"><strong>O</strong></span>n <span style="text-decoration: underline;"><strong>W</strong></span>indow <span style="text-decoration: underline;"><strong>B</strong></span>orders <span style="text-decoration: underline;"><strong>E</strong></span>xperimental <span style="text-decoration: underline;"><strong>L</strong></span>ayout <span style="text-decoration: underline;"><strong>L</strong></span>anguage&#8221;.</p>
<p><strong>Why?</strong> Some people have asked why anyone should be interested in CSS theming, given the existence of a stable and mature theme description format.  The answer is that there are perhaps a couple of hundred people in the world who understand the Metacity theme format, and its complexity presents a significant barrier to entry for anyone else attempting to learn it.  By contrast, millions upon millions of people have a basic understanding of CSS.</p>
<p><strong>Efficiency.</strong> Some have pointed out that using CSS may cause great increase in memory footprint or execution time.  Both of these are of primary importance to us.  Furthermore, we know just <a href="http://blogs.gnome.org/metacity/2008/12/29/theme-speed/">how fast every theme renders</a> using the standard engine.  We are not prepared to introduce a new theme engine unless it is at least as efficient as the old one.</p>
<p><strong>Mismatch.</strong> Some complain that <a href="http://blogs.gnome.org/metacity/2009/07/18/more-css-thoughts/">the lists we gave</a> of things we would need to ignore and things which would need to be added proved that there was a mismatch between CSS and what was needed.  This is based on a misunderstanding of CSS as a language to style HTML.  In fact CSS is a general-purpose styling language, and there are only a few places where it does not quite meet our needs.  Even in those places the design is flexible enough to accommodate us.</p>
<p><strong>The balance of power. </strong><a href="http://blogs.gnome.org/metacity/2009/07/18/more-css-thoughts/#comment-1067">Ray asked whether</a> the structure of the window should be under theme control, as well as the styling. Some ask how we decide what is under the control of the CSS.  We always need to find a balance between giving power to themes and giving power to users.  Some things should be under theme control and some under user control, but it&#8217;s not trivial to decide which.  Here are some examples:</p>
<ul>
<li><em>Justification of the text on the titlebar</em>.  Currently this is entirely under theme control; the user can&#8217;t change it.  <a href="http://blogs.gnome.org/metacity/2008/05/31/justifying-window-titles/">Some people would like this to change.</a></li>
<li><em>The arrangement of buttons on the titlebar</em>: which are on the left, which are on the right, and which aren&#8217;t shown at all.  This is currently entirely under user control; the theme can&#8217;t change it.  (This means that <a href="http://www.gnome-look.org/content/show.php/OSX-Tiger+theme?content=56577">themes which attempt to look like OS X</a> have to ask you to reorder your buttons so that close is on the left, since they can&#8217;t do it themselves.)</li>
<li><em>The font on the titlebar.</em> Currently this is entirely under user control; the theme can&#8217;t change it.  This among other things is something we&#8217;d need to reexamine with a CSS theming engine.</li>
</ul>
<p>(&#8220;Under user control&#8221; means set in GConf and, generally, modifiable in the control panel.  Some of these options cannot be set in the control panel at present, but that&#8217;s a separate problem.)</p>
<p>It <em>may be</em> true that windows should have a more flexible structure, and the ability to have the titlebar elsewhere is certainly <a href="http://blogs.gnome.org/metacity/2008/12/28/the-letters-page/#comment-658">something that&#8217;s been asked for</a> from time to time.  But assuming we should add such abilities, should the decision to use them be made by the theme, or should it be something selectable by the user in the control panel?  These are deep questions.</p>
<p><strong>Co-operation with GTK CSS theming.</strong> Yes: a good idea.  Whatever they&#8217;re doing, we should probably try to share in it.</p>
<p><strong>Complexity.</strong> Some have said that CSS is a complex system, and that anything implementing it will therefore also be complex and difficult to implement.  This is an unwarranted assumption.  Take a look at the <a href="http://www.w3.org/TR/CSS2/">table of contents of the CSS specification</a> and see how little of it actually applies to a fully-functional system for description of window borders:</p>
<ul class="toc">
<li class="tocline1"><em><span class="tocxref">Syntax and basic data types; Selectors</span></em>; <em><span class="tocxref">Assigning property values, Cascading, and Inheritance</span></em>; <em><span class="tocxref">Media types</span></em>:  all handled for us already by <a href="http://www.freespiders.org/projects/libcroco/">libcroco</a>.</li>
<li class="tocline1"><em><span class="tocxref">Box model</span></em>: we would need to implement this.  Not terribly complex because we have a simple and unchangeable layout model.</li>
<li class="tocline1"><em><span class="tocxref">Visual formatting model</span>; <span class="tocxref">Visual effects</span></em>: these are complex, and we can ignore them entirely, since our layout needs are simple and unchangeable.</li>
<li class="tocline1"><em><span class="tocxref">Generated <span class="index-def" title="generated content">content</span>, automatic <span class="index-def" title="automatic numbering">numbering</span>, and lists</span></em>: we would need to implement basic generated content (the easy part); we have no content to be numbered, and no lists.</li>
<li class="tocline1"><em><span class="tocxref">Paged media</span></em>: does not apply to us.</li>
<li class="tocline1"><em><span class="tocxref">Colors and Backgrounds</span></em>: the most complex part which we would need to implement.</li>
<li class="tocline1"><em><span class="tocxref">Fonts; Text</span></em>: partially applies to us (since some of it isn&#8217;t theme-controlled); mostly involves passing things into Pango.</li>
<li class="tocline1"><em><span class="tocxref">Tables</span></em>: doesn&#8217;t apply to us; we have no tables.</li>
<li class="tocline1"><em><span class="tocxref">User interface</span></em>: this is about setting cursors and things, and doesn&#8217;t apply to us.</li>
</ul>
<p><strong>Finally</strong>, we should probably reiterate that:</p>
<ul>
<li>this is still an experiment, and not an official direction which Metacity is taking;</li>
<li>even if it ever happens, there&#8217;s certainly no decision to use WebKit.</li>
</ul>
<p><em>Photo © johninbkk, cc-by.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/07/20/apologia/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Window matching experiment</title>
		<link>http://blogs.gnome.org/metacity/2009/07/10/matches/</link>
		<comments>http://blogs.gnome.org/metacity/2009/07/10/matches/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 14:04:52 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Bugs and issues]]></category>
		<category><![CDATA[Letters]]></category>
		<category><![CDATA[Metacity Labs]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=592</guid>
		<description><![CDATA[At the Collabora party, Robert Ancell asked me how difficult it would be to implement window matching in Metacity. I decided this was an interesting question and spent an hour and a half today working on it. The results are now in the matching branch in GNOME git. If you&#8217;d like to download it and [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Saint Patrick's Day Matches by Bob.Fornal, on Flickr" href="http://www.flickr.com/photos/fornal/424716302/"><img src="http://farm1.static.flickr.com/184/424716302_9482c6ae63.jpg" alt="Saint Patrick's Day Matches" width="500" height="375" align="right" /></a>At the <a href="http://www.collabora.co.uk">Collabora</a> <a href="http://www.flickr.com/photos/sebr/3704021948/">party</a>, <a href="http://bobthegnome.blogspot.com/">Robert Ancell</a> asked me how difficult it would be to implement <a href="http://blogs.gnome.org/metacity/2008/11/02/window-matching/">window matching</a> in Metacity.  I decided this was an interesting question and spent an hour and a half today working on it.  The results are now in the <a href="http://git.gnome.org/cgit/metacity/log/?h=matching"><em>matching</em></a> branch in GNOME git.  If you&#8217;d like to download it and give it a try, please feel free.</p>
<p>It currently saves configuration data in a <a href="http://library.gnome.org/devel/glib/stable/glib-Key-value-file-parser.html">keyfile</a> which contains one group per window, in this format:</p>
<blockquote><p><tt>[xlogo]<br />
x=287<br />
y=178<br />
w=250<br />
h=231</tt></p></blockquote>
<p>This isn&#8217;t necessarily how it will end up: we could use GConf or perhaps some database-like format.  It uses a modified version of the system <a href="http://blogs.gnome.org/metacity/2008/11/02/window-matching/#comment-576">suggested</a> by <a href="http://izumi.plan99.net/blog">Hongli Lai</a>: if WM_WINDOW_ROLE is set, we use that to recognise the window, <em>otherwise</em> we use the window title&#8211; otherwise programs like <tt>xclock</tt> wouldn&#8217;t be matchable.  The role or title is currently represented by the group name in the keyfile.  The keyfile is saved at <tt>~/.cache/metacity/matching.conf</tt>.</p>
<p>The system stores the position and size of every window at the moment it was closed.  There is no need to edit configuration files by hand.</p>
<p>There are inevitably some caveats:</p>
<ul>
<li>There is a bug such that when windows are restored they are offset by the size of the top-left hand corner of the frame.  (In other words, the coordinates are misinterpreted as the client window&#8217;s position, not the frame&#8217;s.)</li>
<li>I haven&#8217;t tested this for scalability at all.  Keyfiles might be very inefficient when you have hundreds of records for all I know.</li>
<li>It doesn&#8217;t know about workspaces, and it should; this will probably be the next thing I add.</li>
<li>If your window was minimised or maximised, this will not be restored, and it should be.  This will probably be the next thing after that.</li>
<li>It might not be the best idea to write out the keyfile on every window close.  Probably better to keep it in memory until the WM exits.</li>
<li>It might be useful to have a switch on the window menu to lock the position and size so it restores the same way when you reload it, in case you move it.  On the other hand, this sounds like crack.</li>
</ul>
<p>Should this branch be merged when the bugs are ironed out?  <a href="http://blogs.gnome.org/metacity/2009/02/20/zenity-sessions-and-window-matching/">Should it replace WM-based session files?</a> These are good and interesting questions and ones we should discuss.  Tune in next time, gentle reader!  Or better, comment below.</p>
<p><em>Photo © Bob Fornal, cc-by-nc-sa.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/07/10/matches/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Notes from Gran Canaria</title>
		<link>http://blogs.gnome.org/metacity/2009/07/09/notes-from-gran-canaria/</link>
		<comments>http://blogs.gnome.org/metacity/2009/07/09/notes-from-gran-canaria/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 15:16:43 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Letters]]></category>
		<category><![CDATA[Mutter]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=588</guid>
		<description><![CDATA[Lots of happy buzz about window managers here at the desktop summit.  Some things people have said: Someone asked about implementing window matching.  It&#8217;s always been our policy that it should be done with an external tool, but policies can of course be rethought.  We might implement it in a branch and see whether anyone [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Gran Canaria Desktop Summit by jcorrius, on Flickr" href="http://www.flickr.com/photos/jcorrius/3692657310/"><img src="http://farm3.static.flickr.com/2542/3692657310_fded9bfc62.jpg" alt="Gran Canaria Desktop Summit" width="500" height="333" align="right" /></a></p>
<p>Lots of happy buzz about window managers here at <a href="http://grancanariadesktopsummit.org">the desktop summit</a>.  Some things people have said:</p>
<ul>
<li>Someone asked about implementing <a href="http://blogs.gnome.org/metacity/2008/11/02/window-matching/">window matching</a>.  It&#8217;s always been our policy that it should be done with <a href="http://burtonini.com/blog/computers/devilspie">an external tool</a>, but policies can of course be rethought.  We might implement it in a branch and see whether anyone likes it.</li>
<li>People are very excited about Mutter.</li>
<li>Some concern was expressed by distros about whether enough machines will be capable of running gnome-shell: not just rather old machines but new ones which don&#8217;t have drivers yet.  Some interest in a version that uses software rendering.</li>
<li>Owen Taylor&#8217;s work on the git migration and on gnome-shell <a href="http://twitter.com/Gnome/statuses/2550044813">got a standing ovation</a> at the AGM.</li>
<li>Several patches got reviewed and committed at last in hack sessions.</li>
<li>Some discussion of <a href="http://blogs.gnome.org/metacity/2009/07/06/libccss/">the use of CSS in theming</a>.</li>
<li>Someone raised the idea of a generalised EWMH testing suite that can be used with Metacity or Mutter.  This sounds like a sterling idea.</li>
</ul>
<p>In addition,</p>
<ul>
<li>the <a href="http://git.gnome.org/cgit/metacity/log/?h=rpnparser">rpnparser</a> branch (which is a simpler and faster theme expression parser) is still viable, but since the theme format for Mutter isn&#8217;t decided, it doesn&#8217;t really make sense to merge it.  But perhaps it still belongs in Metacity 2.  What are your thoughts, gentle reader?</li>
<li>the <a href="http://blogs.gnome.org/metacity/category/bugs-and-issues/bug-of-the-day/">squib of the day</a> section in the blog only deals with enhancements, and since enhancements in Metacity are less likely and moving things to Mutter is more likely, this section may be on hiatus for a bit.</li>
</ul>
<p><em>Photo © jcorrius, cc-by.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/07/09/notes-from-gran-canaria/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>meta_warning() and dialogue boxes</title>
		<link>http://blogs.gnome.org/metacity/2009/02/28/meta_warning-and-dialogue-boxes/</link>
		<comments>http://blogs.gnome.org/metacity/2009/02/28/meta_warning-and-dialogue-boxes/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 19:16:58 +0000</pubDate>
		<dc:creator>Thomas Thurman</dc:creator>
				<category><![CDATA[Letters]]></category>
		<category><![CDATA[Thought experiments]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/metacity/?p=404</guid>
		<description><![CDATA[I didn&#8217;t expect to get useful suggestions from the Linux Haters&#8217; blogs, but here&#8217;s something that might fly: they point out that warnings from the window manager end up in .xsession-errors where nobody ever sees them. But now that we&#8217;re using Zenity for dialogues throughout, there&#8217;s no reason why we can&#8217;t adapt meta_warning() to put up [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gnome.org/~tthurman/pics/metacity/meta-warning.png" alt="meta_warning example" align="right" />I didn&#8217;t expect to get useful suggestions from the <a href="http://linux-haters-redux.blogspot.com/2009/02/errors-what-errors.html">Linux Haters&#8217; blogs</a>, but here&#8217;s something that might fly: they point out that warnings from the window manager end up in <tt>.xsession-errors</tt> where nobody ever sees them. But now that <a href="http://blogs.gnome.org/metacity/2008/03/31/zenity/">we&#8217;re using Zenity for dialogues throughout</a>, there&#8217;s no reason why we can&#8217;t adapt <code>meta_warning()</code> to put up a dialogue every time a warning is issued, which might alert users to useful things, such as why they can&#8217;t bind the keystroke they want.  Having a way to turn this off might also be helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/metacity/2009/02/28/meta_warning-and-dialogue-boxes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blogs.gnome.org/metacity/category/letters/feed/ ) in 1.38663 seconds, on Feb 11th, 2012 at 4:59 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 11th, 2012 at 5:59 am UTC -->
