<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>EB&#039;s TE Blog</title>
	<atom:link href="http://ebsteblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ebsteblog.wordpress.com</link>
	<description></description>
	<lastBuildDate>Fri, 11 Nov 2011 11:21:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ebsteblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>EB&#039;s TE Blog</title>
		<link>http://ebsteblog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ebsteblog.wordpress.com/osd.xml" title="EB&#039;s TE Blog" />
	<atom:link rel='hub' href='http://ebsteblog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Finding the language for a xkb keyboard</title>
		<link>http://ebsteblog.wordpress.com/2011/07/21/finding-the-language-for-a-xkb-keyboard/</link>
		<comments>http://ebsteblog.wordpress.com/2011/07/21/finding-the-language-for-a-xkb-keyboard/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 14:29:10 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[GTK]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=156</guid>
		<description><![CDATA[During the last days I was working on keyboarding issues on Linux. In our app we want to display the (xkb) keyboards that the user has installed and that are visible in the gnome panel. Displaying them is relatively easy, but then I also needed the language that is associated with the keyboard. libxklavier provides [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=156&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During the last days I was working on keyboarding issues on Linux. In our app we want to display the (xkb) keyboards that the user has installed and that are visible in the gnome panel. Displaying them is relatively easy, but then I also needed the language that is associated with the keyboard.<span id="more-156"></span></p>
<p><em>libxklavier</em> provides the necessary methods but isn&#8217;t exactly well documented. It took quite a bit of trying and searching for apps that provide similar functionality. Eventually I found what I needed in <em>gnome-control-center</em>, file <em>gnome-keyboard-properties-xkbltadd.c</em>.</p>
<p>To get a list of languages <em>libxklavier</em> provides the method <code>xkl_config_registry_foreach_language</code>; and there&#8217;s also <code>xkl_config_registry_foreach_language_variant</code> that can be called for each language. What I didn&#8217;t understand first is that the <code>TwoConfigItemsProcessFunc</code> callback method sometimes gets called with <code>config_item == NULL</code>. It is important <em>not</em> to ignore these calls since these are the default layouts. Additionally, the country that you also need to build a proper locale string is conveyed in the <code>parent_config_item</code>.</p>
<p>Below is some sample code that lists all languages with their keyboard layouts. Beware that the language and variants are separated by a tab character in xkb_id.</p>
<pre>#include &lt;string.h&gt;
#include &lt;libgnomekbd/gkbd-keyboard-drawing.h&gt;
#include &lt;libgnomekbd/gkbd-keyboard-config.h&gt;

char * description_utf8 (XklConfigRegistry * config_registry, const char * name)
{
    char *l, *sl, *v, *sv;
    char *v1, *utf_name;
    if (gkbd_keyboard_config_get_descriptions(config_registry, name, &amp;sl, &amp;l, &amp;sv, &amp;v))
        name = gkbd_keyboard_config_format_full_layout (l, v);
    v1 = g_strdup(name);
    utf_name = g_locale_to_utf8(g_strstrip(v1), -1, NULL, NULL, NULL);
    g_free(v1);
    return utf_name;
}

char * desc_to_utf8 (XklConfigItem * ci)
{
    char *sd = g_strstrip(ci-&gt;description);
    return sd[0] == 0 ? g_strdup(ci-&gt;name) : g_locale_to_utf8(sd, -1, NULL, NULL, NULL);
}

static void print_language_variant(
    XklConfigRegistry * config_registry, XklConfigItem * parent_config_item,
    XklConfigItem * config_item, void * data)
{
    char *utf_variant_name = config_item ?
        description_utf8(config_registry, gkbd_keyboard_config_merge_items(parent_config_item-&gt;name, config_item-&gt;name)) :
        desc_to_utf8(parent_config_item);

    const gchar *xkb_id = config_item ?
        gkbd_keyboard_config_merge_items(parent_config_item-&gt;name, config_item-&gt;name) :
        parent_config_item-&gt;name;

    printf("\t%s: %s\n", xkb_id, utf_variant_name);
    g_free (utf_variant_name);
}

static void LanguageVariants(XklConfigRegistry * reg, XklConfigItem * item, char * data)
{
    printf("Adding variants for language %s (%s)\n", item-&gt;name, item-&gt;description);
    xkl_config_registry_foreach_language_variant(reg, item-&gt;name,
        (TwoConfigItemsProcessFunc)print_language_variant, data);
}

int main (int argc, char *argv[])
{
    gtk_init(&amp;argc, &amp;argv);
    Display * disp = XOpenDisplay(NULL);
    XklEngine * eng = xkl_engine_get_instance(disp);

    XklConfigRegistry* reg = xkl_config_registry_get_instance(eng);
    if (xkl_config_registry_load(reg, TRUE))
    {
        xkl_config_registry_foreach_language(reg, (ConfigItemProcessFunc)LanguageVariants, NULL);
    }
    return 0;
}</pre>
<br />Filed under: <a href='http://ebsteblog.wordpress.com/category/gtk/'>GTK</a>, <a href='http://ebsteblog.wordpress.com/category/linux/'>Linux</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=156&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2011/07/21/finding-the-language-for-a-xkb-keyboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Cross-Platform Development and Data Type Sizes</title>
		<link>http://ebsteblog.wordpress.com/2011/06/10/cross-platform-development-and-data-type-sizes/</link>
		<comments>http://ebsteblog.wordpress.com/2011/06/10/cross-platform-development-and-data-type-sizes/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 07:52:49 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=157</guid>
		<description><![CDATA[One of the problems when developing cross-platform apps is the question how long the intrinsic data types are on the different platforms. A while ago I created a table with the sizes of the different data types on 32- and 64-bit Windows and Linux, both for C++ and C#/.NET. Since this might be useful for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=157&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the problems when developing cross-platform apps is the question how long the intrinsic data types are on the different platforms. A while ago I created a table with the sizes of the different data types on 32- and 64-bit Windows and Linux, both for C++ and C#/.NET. <span id="more-157"></span>Since this might be useful for others (and for me when accessing this from a different computer <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) I thought I&#8217;d share my table.</p>
<p>On 32bit Windows and on 32bit Linux, a <code>short</code> in C++ is 16 bit long, an <code>int</code> 32 bit, <code>long</code> 32 bit and <code>pointers</code> 32 bit. On 64bit Windows <code>short</code>, <code>int</code> and <code>long</code> are the same as on 32bit Windows, but <code>pointers</code> are 64 bit long. On 64bit Linux, a <code>short</code> is 16 bit, <code>int</code> 32 bit and <code>long</code> and <code>pointers</code> 64 bit.</p>
<p>Comparison of data type sizes:</p>
<table border="1">
<tbody>
<tr>
<th></th>
<th> Windows 32bit</th>
<th> Linux 32bit</th>
<th> Windows 64bit</th>
<th> Linux 64bit</th>
</tr>
<tr>
<td>C++ short</td>
<td>2 bytes</td>
<td>2 bytes</td>
<td>2 bytes</td>
<td>2 bytes</td>
</tr>
<tr>
<td>C++ int</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td>4 bytes</td>
</tr>
<tr>
<td>C++ long</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td><strong>8 bytes</strong></td>
</tr>
<tr>
<td>C++ void *</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td><strong>8 bytes</strong></td>
<td><strong>8 bytes</strong></td>
</tr>
<tr>
<td>C++ char</td>
<td>1 byte</td>
<td>1 byte</td>
<td>1 byte</td>
<td>1 byte</td>
</tr>
<tr>
<td>C++ wchar_t</td>
<td>2 bytes</td>
<td><strong>4 bytes</strong></td>
<td>?</td>
<td><strong>4 bytes</strong></td>
</tr>
<tr>
<td>C# short</td>
<td>2 bytes</td>
<td>2 bytes</td>
<td>2 bytes?</td>
<td>2 bytes</td>
</tr>
<tr>
<td>C# int</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td>4 bytes?</td>
<td>4 bytes</td>
</tr>
<tr>
<td>C# long</td>
<td>8 bytes</td>
<td>8 bytes</td>
<td>8 bytes?</td>
<td>8 bytes</td>
</tr>
<tr>
<td>C# IntPtr</td>
<td>4 bytes</td>
<td>4 bytes</td>
<td>?</td>
<td><strong>8 bytes</strong></td>
</tr>
<tr>
<td>C# char</td>
<td>1 byte</td>
<td><strong>2 bytes</strong></td>
<td>?</td>
<td><strong>2 bytes</strong></td>
</tr>
</tbody>
</table>
<p>Note: I didn&#8217;t have a 64bit Windows machine to do these tests, that&#8217;s why there are some holes. The values that are there for 64bit Windows are from the documentation; all other values were retrieved experimentally.</p>
<br />Filed under: <a href='http://ebsteblog.wordpress.com/category/net/'>.NET</a>, <a href='http://ebsteblog.wordpress.com/category/cross-platform/'>Cross Platform</a>, <a href='http://ebsteblog.wordpress.com/category/linux/'>Linux</a>, <a href='http://ebsteblog.wordpress.com/category/mono/'>Mono</a>, <a href='http://ebsteblog.wordpress.com/category/windows/'>Windows</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=157&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2011/06/10/cross-platform-development-and-data-type-sizes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Lost Menu in Monodevelop in Unity</title>
		<link>http://ebsteblog.wordpress.com/2011/06/07/lost-menu-in-monodevelop-in-unity/</link>
		<comments>http://ebsteblog.wordpress.com/2011/06/07/lost-menu-in-monodevelop-in-unity/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 15:28:07 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[MonoDevelop]]></category>
		<category><![CDATA[Natty]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=149</guid>
		<description><![CDATA[Recently I got a new desktop computer on which I installed Ubuntu 11.04 Natty with the Unity UI. Yesterday I compiled Monodevelop 2.6 beta 3 (using the scripts described here) which worked fine &#8211; only when I run monodevelop the menu can&#8217;t be found anywhere: there is no menu in the monodevelop window nor in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=149&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I got a new desktop computer on which I installed Ubuntu 11.04 Natty with the Unity UI. Yesterday I compiled Monodevelop 2.6 beta 3 (using the scripts described <a href="http://www.integratedwebsystems.com/2011/05/install-mono-2-10-2-and-monodevelop-2-6-beta-3-on-ubuntu-or-fedora-with-a-bash-script/#more-1147">here</a>) which worked fine &#8211; only when I run monodevelop the menu can&#8217;t be found anywhere: there is no menu in the monodevelop window nor in the global menu bar. Since it&#8217;s pretty hard to do any work without a visible menu, I decided to try to get this fixed.<span id="more-149"></span></p>
<p>A little bit of googling revealed that this is a bug that is known for a long time; there are several bug reports mentioning it. Eventually I <a href="https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationMenu">found</a> a pretty easy workaround: calling monodevelop with UBUNTU_MENUPROXY set to empty string makes the menu appear in the monodevelop window:</p>
<pre>env UBUNTU_MENUPROXY= ./monodevelop-launcher.sh</pre>
<p>Even nicer is to modify the monodevelop-launcher.sh script and set the UBUNTU_MENUPROXY there.</p>
<br />Filed under: <a href='http://ebsteblog.wordpress.com/category/mono/'>Mono</a>, <a href='http://ebsteblog.wordpress.com/category/tools/monodevelop/'>MonoDevelop</a>, <a href='http://ebsteblog.wordpress.com/category/linux/ubuntu/natty/'>Natty</a>, <a href='http://ebsteblog.wordpress.com/category/linux/ubuntu/'>Ubuntu</a>, <a href='http://ebsteblog.wordpress.com/category/linux/ubuntu/unity/'>Unity</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=149&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2011/06/07/lost-menu-in-monodevelop-in-unity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Location of special folders on Linux</title>
		<link>http://ebsteblog.wordpress.com/2011/04/14/location-of-special-folders-on-linux/</link>
		<comments>http://ebsteblog.wordpress.com/2011/04/14/location-of-special-folders-on-linux/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 14:41:33 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=136</guid>
		<description><![CDATA[One thing that always confuses me is how the special folders of Environment.SpecialFolder translate into real directories. Some are really obvious, especially on Windows, but on Mono on Linux it&#8217;s not so obvious. So I wrote a little app that tells where those folders are. Here are the results: Environment.SpecialFolder .NET 3.5 on Windows 7 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=136&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One thing that always confuses me is how the special folders of <code>Environment.SpecialFolder</code> translate into real directories. Some are really obvious, especially on Windows, but on Mono on Linux it&#8217;s not so obvious. So I wrote a little app that tells where those folders are. <span id="more-136"></span>Here are the results:</p>
<table>
<tbody>
<tr>
<td><strong>Environment.SpecialFolder</strong></td>
<td><strong>.NET 3.5 on Windows 7 (32bit)</strong></td>
<td><strong>Mono on Ubuntu 10.10</strong></td>
</tr>
<tr>
<td>Personal</td>
<td>C:\Users\%USERNAME%\Documents</td>
<td>$HOME</td>
</tr>
<tr>
<td>Desktop</td>
<td>C:\Users\%USERNAME%\Desktop</td>
<td>$HOME/Desktop (or $XDG_DESKTOP_DIR if set)</td>
</tr>
<tr>
<td>MyComputer</td>
<td>&#8220;&#8221;</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>Programs</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>Personal</td>
<td>C:\Users\%USERNAME%\Documents</td>
<td>$HOME</td>
</tr>
<tr>
<td>Favorites</td>
<td>C:\Users\%USERNAME%\Favorites</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>Startup</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>Recent</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>SendTo</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\SendTo</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>StartMenu</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>MyMusic</td>
<td>C:\Users\%USERNAME%\Music</td>
<td>$HOME/Music (or $XDG_MUSIC_DIR if set)</td>
</tr>
<tr>
<td>DesktopDirectory</td>
<td>C:\Users\%USERNAME%\Desktop</td>
<td>$HOME/Desktop (or $XDG_DESKTOP_DIR if set)</td>
</tr>
<tr>
<td>Templates</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Templates</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>ApplicationData</td>
<td>C:\Users\%USERNAME%\AppData\Roaming</td>
<td>$HOME/.config (or $XDG_CONFIG_HOME if set)</td>
</tr>
<tr>
<td>LocalApplicationData</td>
<td>C:\Users\%USERNAME%\AppData\Local</td>
<td>$HOME/.local/share (or $XDG_DATA_HOME if set)</td>
</tr>
<tr>
<td>InternetCache</td>
<td>C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>Cookies</td>
<td>C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Cookies</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>History</td>
<td>C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\History</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>CommonApplicationData</td>
<td>C:\ProgramData</td>
<td>/usr/share</td>
</tr>
<tr>
<td>System</td>
<td>C:\Windows\system32</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>ProgramFiles</td>
<td>C:\Program Files</td>
<td>&#8220;&#8221;</td>
</tr>
<tr>
<td>MyPictures</td>
<td>C:\Users\%USERNAME%\Pictures</td>
<td>$HOME/Pictures (or $XDG_PICTURES_DIR if set)</td>
</tr>
<tr>
<td>CommonProgramFiles</td>
<td>C:\Program Files\Common Files=C:\Users\%USERNAME%\Documents</td>
<td>&#8220;&#8221;</td>
</tr>
</tbody>
</table>
<p>See also <a href="http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html">http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html</a></p>
<br />Filed under: <a href='http://ebsteblog.wordpress.com/category/net/'>.NET</a>, <a href='http://ebsteblog.wordpress.com/category/cross-platform/'>Cross Platform</a>, <a href='http://ebsteblog.wordpress.com/category/mono/'>Mono</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=136&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2011/04/14/location-of-special-folders-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Applications menu disappeared</title>
		<link>http://ebsteblog.wordpress.com/2010/01/19/applications-menu-disappeared/</link>
		<comments>http://ebsteblog.wordpress.com/2010/01/19/applications-menu-disappeared/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 07:36:04 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[Karmic]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=131</guid>
		<description><![CDATA[This morning when I turned on my laptop I noticed that the Applications menu in Ubuntu 9.10 had disappeared &#8211; well, not completely, it was still shown in the panel, but when clicking on it it only showed a tiny little rectangle instead of popping up the application list. After a bit of googling around [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=131&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This morning when I turned on my laptop I noticed that the Applications menu in Ubuntu 9.10 had disappeared &#8211; well, not completely, it was still shown in the panel, but when clicking on it it only showed a tiny little rectangle instead of popping up the application list.<span id="more-131"></span></p>
<p>After a bit of googling around I found that the solution is really simple: just rename or delete the file</p>
<pre>~/.config/menus/applications.menu
</pre>
<p>For some reason it had been created with a size of 0. As soon as I had deleted it the applications menu did show again!</p>
<br />Posted in Karmic, Linux, Troubleshooting, Ubuntu  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=131&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2010/01/19/applications-menu-disappeared/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Firefox suddenly doesn&#8217;t resolve names any more</title>
		<link>http://ebsteblog.wordpress.com/2009/08/07/firefox-suddenly-doesnt-resolve-names-any-more/</link>
		<comments>http://ebsteblog.wordpress.com/2009/08/07/firefox-suddenly-doesnt-resolve-names-any-more/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 13:45:49 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[Jaunty]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=126</guid>
		<description><![CDATA[After returning from vacation I was confronted with a really strange problem on my laptop. Firefox wasn&#8217;t any more able to load pages from certain domains. After a reboot it worked, but sooner or later it stopped working. At first I suspected a network problem, but my Windows PC was still able to load those [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=126&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After returning from vacation I was confronted with a really strange problem on my laptop. Firefox wasn&#8217;t any more able to load pages from certain domains. After a reboot it worked, but sooner or later it stopped working.<span id="more-126"></span></p>
<p>At first I suspected a network problem, but my Windows PC was still able to load those pages.</p>
<p>I played around with the settings in <em>/etc/nsswitch.conf</em>. This made <em>nslookup</em> work correctly, but Firefox and <em>wget</em> etc still wouldn&#8217;t work. Very strange &#8211; you&#8217;d think that they would resolve a name in the same way as <em>nslookup</em> or <em>host</em> would do.</p>
<p>Eventually I found a solution: Disabling the DNS proxy in the Samba configuration file (setting &#8216;<em>dns proxy = no</em>&#8216; in<em> /etc/samba/smb.conf</em>) did the trick.</p>
<br />Posted in Jaunty, Ubuntu  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=126&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2009/08/07/firefox-suddenly-doesnt-resolve-names-any-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Fingerprint Reader Working Again!</title>
		<link>http://ebsteblog.wordpress.com/2009/08/06/fingerprint-reader-working-again/</link>
		<comments>http://ebsteblog.wordpress.com/2009/08/06/fingerprint-reader-working-again/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 13:44:07 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[D830]]></category>
		<category><![CDATA[Jaunty]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=122</guid>
		<description><![CDATA[I had some problems with my fingerprint reader for quite some time, probably since upgrading to Jaunty. It took multiple attempts to read my fingerprint, and often it wouldn&#8217;t succeed at all. So I had stopped using it. Today, while I was researching a different problem I found a solution: upgrading the Thinkfinger libraries from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=122&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had some problems with my fingerprint reader for quite some time, probably since upgrading to Jaunty. It took multiple attempts to read my fingerprint<span id="more-122"></span>, and often it wouldn&#8217;t succeed at all. So I had stopped using it.</p>
<p>Today, while I was researching a different problem I found a solution: upgrading the Thinkfinger libraries from ppa helped. I added</p>
<pre>deb http://ppa.launchpad.net/jon-oberheide/ubuntu jaunty main</pre>
<p>to my <em>/etc/apt/sources.list </em>file and updated the Thinkfinger libraries, and it started working again!</p>
<br />Posted in D830, Jaunty, Ubuntu  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=122&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2009/08/06/fingerprint-reader-working-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Upgrading to Jaunty</title>
		<link>http://ebsteblog.wordpress.com/2009/05/25/upgrading-to-jaunty/</link>
		<comments>http://ebsteblog.wordpress.com/2009/05/25/upgrading-to-jaunty/#comments</comments>
		<pubDate>Mon, 25 May 2009 07:07:01 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[D830]]></category>
		<category><![CDATA[Jaunty]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=116</guid>
		<description><![CDATA[Recently I updated my laptop to Ubuntu 9.04 Jaunty. It went pretty smooth; the only drawback was a problem with my graphics card Intel GM965: because there are known problems it is blacklisted, so Compiz doesn&#8217;t work anymore. And because of refactorings in the graphics driver some things don&#8217;t work so well anymore with the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=116&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I updated my laptop to Ubuntu 9.04 Jaunty.</p>
<p>It went pretty smooth; the only drawback was <span id="more-116"></span>a problem with my graphics card Intel GM965: because there are known problems it is blacklisted, so Compiz doesn&#8217;t work anymore. And because of refactorings in the graphics driver some things don&#8217;t work so well anymore with the kernel included in Jaunty. But I got it working: I installed a newer version of the graphics driver <code>xserver-xorg-video-intel</code>. I edited the blacklist file and removed my graphics card from there.</p>
<p>A few days later I also changed my xorg.conf to use the UXA acceleration method. With this change Google Earth eventually works really well without displaying only flicker.</p>
<p>Another problem I had (again) was that Xorg was using way too much CPU. I remembered the <a href="http://ebsteblog.wordpress.com/2008/11/18/upgrade-to-ubuntu-810-intrepid/">problems I had after one of the last upgrades</a> and removed/renamed my ~/.gconf directory. That solved the problem. It is annoying that this seems to happen after every upgrade.</p>
<p>I also had to update the Y-viewport positions in the &#8216;Place Windows Compiz Plugin&#8217;. While the X-positions had changed from being 0-based to 1-based with the last upgrade, the previous version was still happy to have 0-based Y-positions. But this changed now&#8230;</p>
<p>The good thing is that multi-monitor support really improved with Jaunty. The patches that I had to apply manually previously are all included. Nice.</p>
<br />Posted in D830, Jaunty, Linux, Ubuntu  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=116&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2009/05/25/upgrading-to-jaunty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>Debug.Assert and Mono</title>
		<link>http://ebsteblog.wordpress.com/2009/05/06/debugassert-and-mono/</link>
		<comments>http://ebsteblog.wordpress.com/2009/05/06/debugassert-and-mono/#comments</comments>
		<pubDate>Wed, 06 May 2009 12:38:58 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[MonoDevelop]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=110</guid>
		<description><![CDATA[On Microsoft&#8217;s .NET implementation on Windows a Debug.Fail() (which is equal to a Debug.Assert(false)) when run on a debug build displays a dialog box with the options Abort, Retry, Ignore. When run in the debugger it also displays the call stack. On Mono however no dialog box shows; it behaves the same as when the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=110&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On Microsoft&#8217;s .NET implementation on Windows a Debug.Fail() (which is equal to a Debug.Assert(false)) when run on a debug build displays a dialog box with the options Abort, Retry, Ignore. When run in the debugger it also displays the call stack.</p>
<p>On Mono however no dialog box shows; it behaves the same as when the user pressed &#8216;Ignore&#8217;. What&#8217;s worse is that it doesn&#8217;t display the call stack by default, even when run in debugger. This doesn&#8217;t give any hint if an exception happened.<span id="more-110"></span></p>
<p>But: some research showed that there is an environment variable MONO_TRACE_LISTENER that can be set that outputs the call stack to wherever:</p>
<pre>export MONO_TRACE_LISTENER=Console.Out</pre>
<p>In MonoDevelop you can set the environment variable in Project/Options/Run/General.</p>
<p>Some background information can be found in the Mono bug <a href="https://bugzilla.novell.com/show_bug.cgi?id=317040">#317040</a>.</p>
<p>And even better: if you create a .config file for your app and set the <em>assertuienabled</em> attribute to <em>true</em>, you get the same dialog as with .NET (discussion in bug <a href="https://bugzilla.novell.com/show_bug.cgi?id=430477">#430477</a>):</p>
<pre>File app.config:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;configuration&gt;
    &lt;system.diagnostics&gt;
        &lt;assert assertuienabled="true" /&gt;
    &lt;/system.diagnostics&gt;
&lt;/configuration&gt;</pre>
<p>But there are still some differences to .NET: if the message box displays we don&#8217;t get a call stack in the output. I guess it might be possible to add another TraceListener (e.g. ConsoleTraceListener) that takes care of that.</p>
<br />Posted in .NET, Cross Platform, Mono, MonoDevelop  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=110&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2009/05/06/debugassert-and-mono/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
		<item>
		<title>IME and TSF and bugs when typing Chinese</title>
		<link>http://ebsteblog.wordpress.com/2009/01/16/ime-and-tsf-and-bugs-when-typing-chinese/</link>
		<comments>http://ebsteblog.wordpress.com/2009/01/16/ime-and-tsf-and-bugs-when-typing-chinese/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 05:00:34 +0000</pubDate>
		<dc:creator>eb</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[TSF]]></category>

		<guid isPermaLink="false">http://ebsteblog.wordpress.com/?p=10</guid>
		<description><![CDATA[Quite a while ago I investigated some problems we were having with Chinese IME with one of our applications. Since that was new stuff for me I made some notes but never came around to finish this blog entry. IME (Input Method Editor) &#8211; allows input of complex scripts like Chinese. TSF (Text Services Framework) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=10&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quite a while ago I investigated some problems we were having with Chinese IME with one of our applications. Since that was new stuff for me I made some notes but never came around to finish this blog entry.</p>
<p><span id="more-10"></span><strong>IME (Input Method Editor)</strong> &#8211; allows input of complex scripts like Chinese.</p>
<p><strong>TSF (Text Services Framework)</strong> &#8211; introduced with XP. Will eventually replace the traditional IMEs.</p>
<p>An application needs some extra code in order to make use of TSF. However, XP SP1 introduced an option on the OS level to make use of TSF even in non-TSF-aware applications. Vista extended that even more.</p>
<p>This means if an application allows to enter text with an IME it doesn&#8217;t say anything whether or not it supports TSF.</p>
<p>In one of our applications (Flex) Chinese IME behaves differently on Vista than other applications, e.g. it doesn&#8217;t show a horizontal menu that gives you choices. It works on XP.</p>
<p>Involved in the Chinese IME is IMM32.dll in Windows\System32 directory.  It turns out that on Vista this dll is implemented using the TSF &#8211; it references MSCTF.DLL.</p>
<p>TSF has (at least) two  sides: probably the most common use of the TSF interfaces is to implement a new text service that might provide an additional input method. There are some samples in <a href="http://msdn2.microsoft.com/en-us/library/ms629032(VS.85).aspx" target="_blank">MSDN</a> that show how to do that.</p>
<p>The other side is the client side. An article in <a href="http://msdn.microsoft.com/msdnmag/issues/07/07/Dictation/#S1" target="_blank">MSDN magazine</a> suggests that you get automatic TSF support if you use plain edit controls, RichEdit controls, HTML editor controls, or the app is based on Windows Presentation Foundation. This means that most people don&#8217;t have to implement this side. The mentioned MSDN magazine article shows an example how to do it.</p>
<p>The <a href="http://blogs.msdn.com/tsfaware/archive/2007/04/27/tsf-application-interfaces.aspx" target="_blank">TSF aware blog</a> has some information and explains that you have to implement at least the <a href="http://msdn2.microsoft.com/en-us/library/ms538384.aspx">ITextStoreACP</a> interface.</p>
<p>One of the problems we&#8217;re having on an XP machine was that the Chinese IME didn&#8217;t work anymore after we went to certain dialogs. The user had to restart the app. I found a workaround: Add a DWORD value to the registry entry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\KnownClasses\&lt;RealClassName&gt; = 1. You can find the real class name e.g. with Spy++ by clicking in the Note edit box. On my machine it&#8217;s &#8220;WindowsForms10.Window.8.app.0.2004eee&#8221;. Unfortunately it seems that the class name changes either with different builds or on different machines.</p>
<p>However, this workaround didn&#8217;t seem to work in all cases &#8211; don&#8217;t know why.</p>
<p>.NET has built in support for IME and supports it for all controls that are built in to .NET. However, ContainerControl (and derived classes) can&#8217;t receive IME input by default, so IME support is disabled for them. Before .NET 2.0 SP1 the Control.CanEnableIme property used to be internal, so there was no chance to make a control derived from UserControl (which derives from ContainerControl) IME-aware.</p>
<p>With .NET 2.0 SP1 Microsoft fixed this and made CanEnableIme protected so that it can be overridden.</p>
<p><span><span>Miguel Lacouture</span></span> describes some of the things that are going on in a <a href="http://forums.microsoft.com/msdn/showpost.aspx?postid=1399271&amp;siteid=1" target="_blank">forum message</a>. Microsoft describes this problem in a <a href="http://support.microsoft.com/kb/934197" target="_blank">KB article</a> (934197). However, the hot fix they are announcing seems a little dated&#8230;</p>
<p>After overriding CanEnableIme things work much better, but there are still the following issues open:</p>
<ul>
<li>On XP:  With the QuanPin IME, if you go to a different field, it switches to English Input Mode (which you can see by the A in the QuanPin toolbar in the lower left corner of your screen).</li>
<li>On Vista: With Pinyin it switches to English Input Mode when you go to a different field.</li>
<li>On Vista: With QuanPin it displays the candidate window, but it doesn&#8217;t write any text to the field when you select a candidate.</li>
</ul>
<p>Vista introduced a new kind of IME, Table Driven Text Service, that QuanPin 6.0 is based on. Michael S. Kaplan explains how it works in his <a href="http://blogs.msdn.com/michkap/archive/2008/01/21/7178421.aspx" target="_blank">blog</a>.</p>
<br />Posted in .NET, COM, IME, TSF  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ebsteblog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ebsteblog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ebsteblog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ebsteblog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ebsteblog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ebsteblog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ebsteblog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ebsteblog.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ebsteblog.wordpress.com&amp;blog=1532321&amp;post=10&amp;subd=ebsteblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ebsteblog.wordpress.com/2009/01/16/ime-and-tsf-and-bugs-when-typing-chinese/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/56e93ba634a72e535bbc7ec6f78246a4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eb</media:title>
		</media:content>
	</item>
	</channel>
</rss>
