
Hello list, I have some small patches as well as some questions regarding localisation of xmonad, I'm sorry if this runs a little long. Attached is a patch to rewrite David Roundy's NamedWindow using getTextProperty and wcTextPropertyToTextList, which makes it aware of the user's locale. I couldn't find these functions in the existing X11 bindings or in X11-extra so I have attached a second patch for X11-extras that adds them as well as the the TextProperty structure. To make these patches do anything useful, xmonad also needs to call setlocale at some point. It is natural to do this first thing in main, and it is trivial to add except I don't think setlocale or the category constants are in the standard libraries, so the ffi and hsc2hs or similar is needed. In fact, applying these patches without calling setlocale will stop some titles that are now fetched correctly from working, namely those that are in ISO-8859-1 but not ASCII, in effect setting the locale to C, so don't do that. Note also that the patch assumes wchar_t = Data.Char, i.e. that withCWString works correctly. This is often true (always in glibc, I think) but not by any means guaranteed. Another choice would be to use XmbTextPropertyToTextList and keep the title as an opaque byte array. This is nice as long as you don't need to interpret it as a string at which point you need something like iconv. In addition to this, everything that displays text needs to be changed to be locale-aware. This applies to xmonad itself when it prints log messages to stderr without encoding them, but maybe this isn't such a pressing issue to address as it is intended for debugging. More important are extensions that draw text, window titles in particular. I think these should be changed to use X(mb/wc)DrawString, xft, pango or some other locale-aware method. I have some patches that modify David Roundy's Decoration and Tabbed modules to use a small xft binding I made, here's a screen shot: http://www.mdstud.chalmers.se/~jansborg/screenshot.png I have used these for a couple of days now and they seem to work, but I don't propose to apply them for several reasons: * they break anything using Decoration * they introduce a dependency on xft which clearly shouldn't be a hard requirement for building xmonad * some people don't like anti-aliasing, I tend to agree at small resolutions/font sizes If there's interest I can post them anyway for people to play with. How is the the organisation of xmonad supposed to account for extensions such as these that need to be linked with additional libraries? It seems any such extensions must patch not only XMonadContrib but also core xmonad to account for the build process, or is there some way around this? /Mats Jansborg