<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-27773648</id><updated>2012-01-22T15:09:21.088+01:00</updated><category term='ruby'/><category term='www'/><category term='meego'/><category term='sysadmin'/><category term='vala'/><category term='tips'/><category term='security'/><category term='xfce'/><category term='script'/><category term='mpd'/><category term='free-time'/><category term='eatmonkey'/><category term='life'/><category term='notes'/><title type='text'>m8t's blog</title><subtitle type='html'>See my &lt;small&gt;not-too-long-not-too-short-hacky-tricky-things&lt;/small&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-27773648.post-2244723619331505288</id><published>2012-01-22T11:20:00.002+01:00</published><updated>2012-01-22T11:20:20.706+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>.screenrc</title><content type='html'>So I pimped up my &lt;i&gt;.&lt;a href="http://ddg.gg/?q=man+screen" target="_blank"&gt;screenrc&lt;/a&gt;&lt;/i&gt;, and since it's been a long time I didn't care about my hardstatus I keep the content here just in case I need it again in a few years...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;defscrollback 2048&lt;br /&gt;startup_message off&lt;br /&gt;caption always "%{= Wk}%-w%{= KW}%f%n %t%{-}%+w"&lt;br /&gt;hardstatus off&lt;br /&gt;hardstatus alwayslastline&lt;br /&gt;hardstatus string "%{= ky}[ %H %l ]%=%{= kg}%{+b}[ %n %t ]%-=%{= ky}[ %D %d.%m.%Y %0c ]"&lt;br /&gt;&lt;br /&gt;screen -t irssi 0&lt;br /&gt;screen -t mutt 1&lt;br /&gt;screen -t bubbie 2&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2244723619331505288?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2244723619331505288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2012/01/screenrc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2244723619331505288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2244723619331505288'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2012/01/screenrc.html' title='.screenrc'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-8425499538707262544</id><published>2011-08-21T18:22:00.000+02:00</published><updated>2011-08-21T18:22:42.205+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Xfce 4.8 with Conky</title><content type='html'>I have been following a short discussion on the IRC channel &lt;a href="irc://irc.freenode.net/#xfce"&gt;#xfce&lt;/a&gt; regarding an issue with the use of &lt;a href="http://conky.sourceforge.net/"&gt;Conky&lt;/a&gt; and transparency. I didn't use Conky for a very long time, but since I knew it was possible to have Conky perfectly running, I gave it a shot again and since I did a fresh reinitialization of Xfce on my workstation, I tweaked the configuration file to my need. Now I have it running in the background and I'll most probably keep it.&lt;br /&gt;&lt;br /&gt;The configuration I was able to get for a good working Conky window with transparency is bellow. Of course I could tell you which combination doesn't work, with the why, but since there are so many of them I simply put a working one.&lt;br /&gt;&lt;pre&gt;&lt;b&gt;own_window yes&lt;/b&gt; &lt;i&gt;# create a separate XWindow over the one from Xfdesktop&lt;/i&gt;&lt;br /&gt;&lt;b&gt;own_window_type desktop&lt;/b&gt; &lt;i&gt;# the window cannot be moved or resized&lt;/i&gt;&lt;br /&gt;&lt;b&gt;own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager&lt;/b&gt; &lt;i&gt;# make it behave like it belongs to the desktop&lt;/i&gt;&lt;br /&gt;&lt;b&gt;own_window_argb_visual yes&lt;/b&gt; &lt;i&gt;# true transparency, a compositor has to be active&lt;/i&gt;&lt;br /&gt;&lt;b&gt;own_window_argb_value 100&lt;/b&gt; &lt;i&gt;# make the background semi-transparent&lt;/i&gt;&lt;br /&gt;&lt;b&gt;double_buffer yes&lt;/b&gt; &lt;i&gt;# avoid flickering&lt;/i&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is a screenshot of the desktop with Conky in the bottom right corner, I made sure there is some I/O activity going on :-)&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tDWwpHyw3r0/TlErvInUXqI/AAAAAAAAAYA/ireULyy9QaY/s1600/Xfce+with+Conky+2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-tDWwpHyw3r0/TlErvInUXqI/AAAAAAAAAYA/ireULyy9QaY/s400/Xfce+with+Conky+2.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Xfce with Conky&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now if you want you can steal my &lt;a href="http://bubbie.mmassonnet.info/~mike/public/.conkyrc"&gt;.conkyrc&lt;/a&gt; file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-8425499538707262544?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/8425499538707262544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2011/08/xfce-48-with-conky.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8425499538707262544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8425499538707262544'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2011/08/xfce-48-with-conky.html' title='Xfce 4.8 with Conky'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-tDWwpHyw3r0/TlErvInUXqI/AAAAAAAAAYA/ireULyy9QaY/s72-c/Xfce+with+Conky+2.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3295678850702739956</id><published>2011-07-16T15:02:00.000+02:00</published><updated>2011-07-16T15:02:41.000+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Analysing a phishing email</title><content type='html'>I've been hit by several &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Phishing"&gt;phishing&lt;/a&gt; emails in a short time the last week. Having time this morning I took the initiative to look at the headers from one email and the phishing location.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;The hosting server&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The domains DNS zone is hosted on a particular network just like its website. Two different servers actually, but behind it seems to be a lucrative webhosting service where you can get your domain registered although it's not a registrar.&amp;nbsp;All of this is hosted in Texas.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;The email server&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The email is originating from Italy. The FROM address is set up to show a truthful email (usually where you put the surname) with an inexistant email address behind that. The email address' domain name exists however and is hosted in France, but has no relation to the scam, at least the owner of this domain can't do anything about it.&lt;br /&gt;&lt;br /&gt;The Return-Path shows a real email address with a different domain name but same network anyway. The domain name shows a dummy webpage "Under construction".&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Who to contact?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;All of them if you care, otherwise just let it go, because phishing pages are set up and down daily...&lt;br /&gt;&lt;br /&gt;To contact the webhosting or email server, request the &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Whois"&gt;Whois&lt;/a&gt; information of the IP address and contact the abuse department, there is always an abuse section in the Whois of an IP address. You can also contact the domain name holder and/or look if the registrar or webhosting sevice has a dedicated abuse website page.&lt;br /&gt;&lt;br /&gt;Of course it happens that an abuse email address forwards everything to the trash can. In order to have a chance to stop the scam, it is good to contact as many services as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3295678850702739956?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3295678850702739956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2011/07/analysing-phishing-email.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3295678850702739956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3295678850702739956'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2011/07/analysing-phishing-email.html' title='Analysing a phishing email'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7342270376813570243</id><published>2011-05-27T08:11:00.001+02:00</published><updated>2011-05-27T19:22:08.214+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Changing PolicyKit settings per user</title><content type='html'>I have been hit twice by a required authentication on my workstation after the Wifi connection got lost and it is clearly irritating, especially when you are not around. The authentication requests are handled by PolicyKit (polkit for short) and can be tweaked.&lt;br /&gt;&lt;br /&gt;The message by which I was hit was the following: "&lt;i&gt;System policy prevents modification of network settings for all users&lt;/i&gt;."&lt;br /&gt;&lt;br /&gt;Before you get started, the system wide configuration files that contain the default values reside inside the &lt;i&gt;/usr/share/polkit-1/actions/&lt;/i&gt; directory. In this directory resides the file &lt;i&gt;org.freedesktop.NetworkManager.policy&lt;/i&gt; which contains all the default actions. It does also contain the message about the network settings for which the action id is "&lt;i&gt;org.freedesktop.NetworkManager.settings.modify.system&lt;/i&gt;." At this point I was still clueless of what I was supposed to do.&lt;br /&gt;&lt;br /&gt;After having search the web for information about PolicyKit I have found one &lt;a href="http://skvidal.wordpress.com/2009/11/18/polkit-and-package-kit-and-changing-settings/"&gt;interesting article&lt;/a&gt; that helped me getting done with my issue and learning more about this authorization framework. This action being very seldom to perform, I'm summing up everything here.&lt;br /&gt;&lt;br /&gt;There are two useful commands to perform tests with PolicyKit, &lt;b&gt;pkcheck&lt;/b&gt; and &lt;b&gt;pkaction&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;The first interesting command to use is &lt;b&gt;pkcheck&lt;/b&gt;. It will trigger an authorization request and prompt you to type in a password, simply return true if no authorization is required otherwise false. For example:&lt;br /&gt;&lt;pre&gt;pkcheck --action-id org.freedesktop.NetworkManager.settings.modify.system \&lt;br /&gt;    --process `pidof gnome-session` -u `id -u`&lt;/pre&gt;You have to adapt the process and user parameters of course.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IIp-KKwqHaI/Td9AYbwvEHI/AAAAAAAAAWs/YKC_FNqSA4s/s1600/authentication-request.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://2.bp.blogspot.com/-IIp-KKwqHaI/Td9AYbwvEHI/AAAAAAAAAWs/YKC_FNqSA4s/s400/authentication-request.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Next the command &lt;b&gt;pkaction&lt;/b&gt; can be used to print the default system values, for example:&lt;br /&gt;&lt;pre&gt;pkaction --action-id org.freedesktop.NetworkManager.settings.modify.system \&lt;br /&gt;    --verbose&lt;/pre&gt;Now to have a custom setting for your user, what has to be done is to create a &lt;i&gt;PolicyKit Local Authority&lt;/i&gt; file inside the directory &lt;i&gt;/var/lib/polkit-1/localauthority/&lt;/i&gt;. Here is an example:&lt;br /&gt;&lt;pre&gt;[Let user mike modify system settings for network]&lt;br /&gt;Identity=unix-user:mike&lt;br /&gt;Action=org.freedesktop.NetworkManager.settings.modify.system&lt;br /&gt;ResultAny=no&lt;br /&gt;ResultInactive=no&lt;br /&gt;ResultActive=yes&lt;/pre&gt;I have saved this file under &lt;i&gt;/var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;There are three main values you can pass to &lt;i&gt;ResultActive&lt;/i&gt; that are &lt;i&gt;no&lt;/i&gt;, &lt;i&gt;auth_admin&lt;/i&gt; or &lt;i&gt;yes&lt;/i&gt;. Respectively it will deny the authorization, ask for a password, and give access. For further information about the possible values check the &lt;a href="http://hal.freedesktop.org/docs/polkit/polkit.8.html"&gt;polkit manpage&lt;/a&gt;, also don't miss the &lt;a href="http://hal.freedesktop.org/docs/polkit/pklocalauthority.8.html"&gt;pklocalauthority manpage&lt;/a&gt; to read more about the &lt;i&gt;localauthority&lt;/i&gt; tree structure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7342270376813570243?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7342270376813570243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2011/05/changing-policykit-settings-per-user.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7342270376813570243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7342270376813570243'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2011/05/changing-policykit-settings-per-user.html' title='Changing PolicyKit settings per user'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-IIp-KKwqHaI/Td9AYbwvEHI/AAAAAAAAAWs/YKC_FNqSA4s/s72-c/authentication-request.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2159547157186068748</id><published>2011-01-23T10:20:00.001+01:00</published><updated>2011-01-23T10:21:53.459+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Update the GeoIP database</title><content type='html'>&lt;a href="http://www.maxmind.com/app/ip-location"&gt;GeoIP&lt;/a&gt; is a proprietary technology provided by &lt;a href="http://www.maxmind.com/"&gt;MaxMind &lt;/a&gt;that allows the geolocalization of IPs. It&amp;nbsp;provides databases as both free and paid solutions with IP records matching the country and the city. The &lt;a href="http://www.maxmind.com/app/geolitecountry"&gt;GeoLite Country&lt;/a&gt; database can be downloaded for free and is updated about once a month.&lt;br /&gt;&lt;br /&gt;The database can be used with the command line tool &lt;i&gt;geoiplookup &lt;ip&gt;&lt;/ip&gt;&lt;/i&gt;. By calling it, it will check for the default database, but you can specify another one through a command line option.&lt;br /&gt;&lt;br /&gt;First download and install the &lt;a href="http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz"&gt;latest database&lt;/a&gt; and &lt;a href="http://geolite.maxmind.com/download/geoip/database/LICENSE.txt"&gt;license&lt;/a&gt; under your home directory, for example &lt;i&gt;~/.local/share/GeoIP/&lt;/i&gt;. Make sure to decompress the database with &lt;i&gt;gunzip&lt;/i&gt;. The directory has to contain these files:&lt;br /&gt;&lt;pre&gt;GeoIP.dat&lt;br /&gt;LICENSE.txt&lt;/pre&gt;Next create an alias for the command &lt;i&gt;geoiplookup&lt;/i&gt;, for example through your &lt;i&gt;~/.bashrc&lt;/i&gt; script put the following line:&lt;br /&gt;&lt;pre&gt;alias geoiplookup='geoiplookup -d $HOME/.local/share/GeoIP/'&lt;/pre&gt;&lt;br /&gt;And done! But why all the hassle? Because your system may not provide the updates on a regular basis. Of course you can set up a scheduled task to download the database right into your home directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2159547157186068748?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2159547157186068748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2011/01/update-geoip-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2159547157186068748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2159547157186068748'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2011/01/update-geoip-database.html' title='Update the GeoIP database'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2621700414510042238</id><published>2010-11-28T15:31:00.002+01:00</published><updated>2010-12-02T20:01:02.961+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>SPAM-ips.rb</title><content type='html'>I'm sharing a small script that allows to scan IPs against Whois and GeoIP databases. It allows to quickly retrieve the geolocation of the IPs and print statistics, so that you know from where the connections are originating from. The Whois information is stored inside text files named whois.xxx.yyy.zzz.bbb.&lt;br /&gt;&lt;br /&gt;You can download the script &lt;a href="http://dl.dropbox.com/u/2670286/scripts/spam-ips.rb"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;pre&gt;&lt;em&gt; • Usage&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;$ spam-ips.rb --help&lt;/strong&gt;&lt;br /&gt;Usage: /home/mike/.local/bin/spam-ips.rb ip|filename [[ip|filename] ...]&lt;br /&gt;&lt;br /&gt;&lt;em&gt; • First we retrieve some IPs&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;$ awk '{print $6}' /var/log/httpd/access.log &gt; /tmp/ip-list.txt&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt; • Now we run the script with the list of IPs inside the text file&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;$ cd /tmp&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;$ spam-ips.rb ip-list.txt&lt;/strong&gt;&lt;br /&gt;Scanning 18 IPs... done.&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: IP Address not found&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: BR, Brazil&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: AR, Argentina&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: SE, Sweden&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: CA, Canada&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: US, United States&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: DE, Germany&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: BE, Belgium&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: FR, France&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: NL, Netherlands&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: NO, Norway&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: FI, Finland&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: DE, Germany&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: FR, France&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: FR, France&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: DE, Germany&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: RU, Russian Federation&lt;br /&gt;xxx.zzz.yyy.bbb GeoIP Country Edition: RU, Russian Federation&lt;br /&gt;3       FR, France&lt;br /&gt;3       DE, Germany&lt;br /&gt;2       RU, Russian Federation&lt;br /&gt;1       US, United States&lt;br /&gt;1       NL, Netherlands&lt;br /&gt;1       IP Address not found&lt;br /&gt;1       NO, Norway&lt;br /&gt;1       FI, Finland&lt;br /&gt;1       SE, Sweden&lt;br /&gt;1       CA, Canada&lt;br /&gt;1       BR, Brazil&lt;br /&gt;1       BE, Belgium&lt;br /&gt;1       AR, Argentina&lt;br /&gt;Total: 18&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I wrote this script when I noticed Wiki SPAM and concluded that SPAM originated from a single Bot master but of course I was unable to figure out which one. The script can still be useful from times to times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2621700414510042238?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2621700414510042238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/11/spam-ipsrb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2621700414510042238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2621700414510042238'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/11/spam-ipsrb.html' title='SPAM-ips.rb'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4848605626720013877</id><published>2010-10-23T10:43:00.000+02:00</published><updated>2010-10-23T10:43:26.571+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>XTerm as root-tail</title><content type='html'>The idea behind this title is to use XTerm as a log viewer over the desktop, just like &lt;a href="http://oldhome.schmorp.de/marc/root-tail.html" title="http://oldhome.schmorp.de/marc/root-tail.html" rel="nofollow"&gt;root-tail&lt;/a&gt; works. The tool root-tail paints text on the root window by default or any other XWindow when used with the &lt;code&gt;-id&lt;/code&gt; parameter.&lt;br /&gt;&lt;br /&gt;Using XTerm comes with little advantage, it is possible to scroll into the “backlog” and make text selections. On a downside, it won't let you click through into the desktop, therefore it is rather useful for people without desktop icons for example.&lt;br /&gt;&lt;br /&gt;We will proceed with a first simple example, by writing a Shell script that will use the combo&amp;nbsp;&lt;a class="urlextern" href="http://live.gnome.org/DevilsPie" rel="nofollow" title="http://live.gnome.org/DevilsPie"&gt;DevilsPie&lt;/a&gt;&amp;nbsp;and XTerm. The terminals will all be kept in the background below other windows and never take the focus thanks to DevilsPie. DevilsPie is a tool watching the creation of new windows and applies special rules over them.&lt;br /&gt;&lt;br /&gt;Obviously, you need to install the command line tool&amp;nbsp;&lt;code&gt;devilspie&lt;/code&gt;. It's a command to run in the background as a daemon. Configuration files with a&amp;nbsp;&lt;code&gt;.ds&lt;/code&gt;&amp;nbsp;extensions contain matches for windows and rules that are put within the&amp;nbsp;&lt;code&gt;~/.devilspie&lt;/code&gt;&amp;nbsp;directory.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;First example&lt;/h4&gt;The first example shows how to match only one specific XTerm window.&lt;br /&gt;&lt;br /&gt;The DevilsPie configuration:&lt;br /&gt;&lt;dl class="code"&gt;&lt;dt&gt;&lt;a class="mediafile mf_ds" href="http://wiki.xfce.org/_export/code/howto/xterm-as-root-tail?codeblock=0" title="Download Snippet"&gt;DesktopLog.ds&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;pre class="code lisp"&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;if&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;is &lt;span class="br0"&gt;(&lt;/span&gt;window_class&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="st0"&gt;"DesktopLog"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;begin&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;wintype &lt;span class="st0"&gt;"dock"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;geometry &lt;span class="st0"&gt;"+20+45"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;below&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;undecorate&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;skip_pager&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;opacity &lt;span class="nu0"&gt;80&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/dd&gt;&lt;/dl&gt;The Shell script making sure&amp;nbsp;&lt;code&gt;devilspie&lt;/code&gt;&amp;nbsp;is running, and spawning a single&amp;nbsp;&lt;code&gt;xterm&lt;/code&gt;&amp;nbsp;process:&lt;br /&gt;&lt;dl class="code"&gt;&lt;dt&gt;&lt;a class="mediafile mf_sh" href="http://wiki.xfce.org/_export/code/howto/xterm-as-root-tail?codeblock=1" title="Download Snippet"&gt;desktop-log.sh&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;pre class="code bash"&gt;&lt;span class="co0"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span class="kw3"&gt;test&lt;/span&gt; &lt;span class="sy0"&gt;`&lt;/span&gt;&lt;span class="kw2"&gt;pidof&lt;/span&gt; devilspie&lt;span class="sy0"&gt;`&lt;/span&gt; &lt;span class="sy0"&gt;||&lt;/span&gt; devilspie &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;br /&gt;xterm &lt;span class="re5"&gt;-geometry&lt;/span&gt; 164x73 &lt;span class="re5"&gt;-uc&lt;/span&gt; &lt;span class="re5"&gt;-class&lt;/span&gt; DesktopLog &lt;span class="re5"&gt;-T&lt;/span&gt; daemon.log &lt;span class="re5"&gt;-e&lt;/span&gt; &lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="kw2"&gt;tail&lt;/span&gt; &lt;span class="re5"&gt;-f&lt;/span&gt; &lt;span class="sy0"&gt;/&lt;/span&gt;var&lt;span class="sy0"&gt;/&lt;/span&gt;log&lt;span class="sy0"&gt;/&lt;/span&gt;daemon.log &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;strong&gt;NB:&lt;/strong&gt;&amp;nbsp;You can notice the size of the XTerm window is set through the Shell script while the position is set through the DevilsPie rules file, and there is a simple reason for this. By default XTerm has a size of 80 columns and 24 lines and text with too long lines will be wrapped on the next line. If afterwards you resize the window the wrapped text won't move up and the result will be ugly. Therefore it's better to set the initial size of the terminal correctly.&lt;br /&gt;&lt;br /&gt;To try the example, save the DevilsPie snippet inside the directory&amp;nbsp;&lt;code&gt;~/.devilspie&lt;/code&gt;, and download and execute the Shell script. Make sure to quit any previous DevilsPie process whenever you modify or install a new&amp;nbsp;&lt;code&gt;.ds&lt;/code&gt;&amp;nbsp;file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_wcTww_e0VUY/TMKeTioj57I/AAAAAAAAAVI/V9b665QWifA/s1600/desktop-log-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://1.bp.blogspot.com/_wcTww_e0VUY/TMKeTioj57I/AAAAAAAAAVI/V9b665QWifA/s400/desktop-log-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4&gt;Second example&lt;/h4&gt;The second example is a little more complete, it starts three terminals of which one is coloured in black.&lt;br /&gt;&lt;dl class="code"&gt;&lt;dt&gt;&lt;a class="mediafile mf_ds" href="http://wiki.xfce.org/_export/code/howto/xterm-as-root-tail?codeblock=2" title="Download Snippet"&gt;DesktopLog.ds&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;pre class="code lisp"&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;if&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;matches &lt;span class="br0"&gt;(&lt;/span&gt;window_class&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="st0"&gt;"DesktopLog[0-9]+"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;begin&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;wintype &lt;span class="st0"&gt;"dock"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;below&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;undecorate&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;skip_pager&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="br0"&gt;(&lt;/span&gt;opacity 80&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;if&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;is &lt;span class="br0"&gt;(&lt;/span&gt;window_class&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="st0"&gt;"DesktopLog1"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;geometry &lt;span class="st0"&gt;"+480+20"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;if&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;is &lt;span class="br0"&gt;(&lt;/span&gt;window_class&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="st0"&gt;"DesktopLog2"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;geometry &lt;span class="st0"&gt;"+20+20"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;if&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;is &lt;span class="br0"&gt;(&lt;/span&gt;window_class&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="st0"&gt;"DesktopLog3"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;(&lt;/span&gt;geometry &lt;span class="st0"&gt;"+20+330"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;dl class="code"&gt;&lt;dt&gt;&lt;a class="mediafile mf_sh" href="http://wiki.xfce.org/_export/code/howto/xterm-as-root-tail?codeblock=3" title="Download Snippet"&gt;desktop-log.sh&lt;/a&gt;&lt;/dt&gt;&lt;dd&gt;&lt;pre class="code bash"&gt;&lt;span class="co0"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span class="kw3"&gt;test&lt;/span&gt; &lt;span class="sy0"&gt;`&lt;/span&gt;&lt;span class="kw2"&gt;pidof&lt;/span&gt; devilspie&lt;span class="sy0"&gt;`&lt;/span&gt; &lt;span class="sy0"&gt;||&lt;/span&gt; devilspie &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;br /&gt;xterm &lt;span class="re5"&gt;-geometry&lt;/span&gt; 88x40 &lt;span class="re5"&gt;-uc&lt;/span&gt; &lt;span class="re5"&gt;-class&lt;/span&gt; DesktopLog1 &lt;span class="re5"&gt;-T&lt;/span&gt; daemon.log &lt;span class="re5"&gt;-e&lt;/span&gt; &lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="re5"&gt;-s&lt;/span&gt; &lt;span class="kw2"&gt;tail&lt;/span&gt; &lt;span class="re5"&gt;-f&lt;/span&gt; &lt;span class="sy0"&gt;/&lt;/span&gt;var&lt;span class="sy0"&gt;/&lt;/span&gt;log&lt;span class="sy0"&gt;/&lt;/span&gt;daemon.log &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;br /&gt;xterm &lt;span class="re5"&gt;-geometry&lt;/span&gt; 70x20 &lt;span class="re5"&gt;-uc&lt;/span&gt; &lt;span class="re5"&gt;-class&lt;/span&gt; DesktopLog2 &lt;span class="re5"&gt;-T&lt;/span&gt; auth.log &lt;span class="re5"&gt;-e&lt;/span&gt; &lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="re5"&gt;-s&lt;/span&gt; &lt;span class="kw2"&gt;tail&lt;/span&gt; &lt;span class="re5"&gt;-f&lt;/span&gt; &lt;span class="sy0"&gt;/&lt;/span&gt;var&lt;span class="sy0"&gt;/&lt;/span&gt;log&lt;span class="sy0"&gt;/&lt;/span&gt;auth.log &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;br /&gt;xterm &lt;span class="re5"&gt;-fg&lt;/span&gt; grey &lt;span class="re5"&gt;-bg&lt;/span&gt; black &lt;span class="re5"&gt;-geometry&lt;/span&gt; 70x16 &lt;span class="re5"&gt;-uc&lt;/span&gt; &lt;span class="re5"&gt;-class&lt;/span&gt; DesktopLog3 &lt;span class="re5"&gt;-T&lt;/span&gt; pacman.log &lt;span class="re5"&gt;-e&lt;/span&gt; &lt;span class="kw2"&gt;sudo&lt;/span&gt; &lt;span class="re5"&gt;-s&lt;/span&gt; &lt;span class="kw2"&gt;tail&lt;/span&gt; &lt;span class="re5"&gt;-f&lt;/span&gt; &lt;span class="sy0"&gt;/&lt;/span&gt;var&lt;span class="sy0"&gt;/&lt;/span&gt;log&lt;span class="sy0"&gt;/&lt;/span&gt;pacman.log &lt;span class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_wcTww_e0VUY/TMKeaXrMTQI/AAAAAAAAAVM/hj70xS5m-ho/s1600/desktop-log-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://3.bp.blogspot.com/_wcTww_e0VUY/TMKeaXrMTQI/AAAAAAAAAVM/hj70xS5m-ho/s400/desktop-log-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NB:&lt;/strong&gt;&amp;nbsp;You will probably notice that setting the geometry is awkward, specially since position and size are in two different files, getting it right needs several tweakings.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;This blog post was cross-posted to the &lt;a href="http://wiki.xfce.org/howto/xterm-as-root-tail"&gt;Xfce Wiki&lt;/a&gt;.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4848605626720013877?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4848605626720013877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/10/xterm-as-root-tail.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4848605626720013877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4848605626720013877'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/10/xterm-as-root-tail.html' title='XTerm as root-tail'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wcTww_e0VUY/TMKeTioj57I/AAAAAAAAAVI/V9b665QWifA/s72-c/desktop-log-1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-6975236474860763510</id><published>2010-09-19T15:14:00.000+02:00</published><updated>2010-09-19T15:14:44.622+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>CLI tool to review PO files</title><content type='html'>If there is something annoying about reviewing PO files is that it is &lt;i&gt;impossible&lt;/i&gt;. When there are two hundred messages in a PO file, how are you going to know which messages changed? Well, that's the way it works currently for &lt;a href="http://transifex.org/"&gt;Transifex &lt;/a&gt;but there are very good news, first a review board is already available which is a good step forward but second it is going to get some good kick to make it awesome. But until this happens, I have written two scripts to make such a review.&lt;br /&gt;&lt;h4&gt;A shell script &lt;em&gt;msgdiff.sh&lt;/em&gt;&lt;/h4&gt;&lt;u&gt;Pros&lt;/u&gt;: tools available on every system&lt;br /&gt;&lt;u&gt;Cons&lt;/u&gt;: ugly output, needs template file&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;PO_ORIG=$1&lt;br /&gt;PO_REVIEW=$2&lt;br /&gt;PO_TEMPL=$3&lt;br /&gt;&lt;br /&gt;MSGMERGE=msgmerge&lt;br /&gt;DIFF=diff&lt;br /&gt;PAGER=more&lt;br /&gt;RM=/bin/rm&lt;br /&gt;MKTEMP=mktemp&lt;br /&gt;&lt;br /&gt;# Usage&lt;br /&gt;if test "$1" = "" -o "$2" = "" -o "$3" = ""; then&lt;br /&gt;    echo Usage: $0 orig.po review.po template.pot&lt;br /&gt;    exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Merge&lt;br /&gt;TMP_ORIG=`$MKTEMP po-orig.XXX`&lt;br /&gt;TMP_REVIEW=`$MKTEMP po-review.XXX`&lt;br /&gt;$MSGMERGE $PO_ORIG $PO_TEMPL &gt; $TMP_ORIG 2&gt; /dev/null&lt;br /&gt;$MSGMERGE $PO_REVIEW $PO_TEMPL &gt; $TMP_REVIEW 2&gt; /dev/null&lt;br /&gt;&lt;br /&gt;# Diff&lt;br /&gt;$DIFF -u $TMP_ORIG $TMP_REVIEW | $PAGER&lt;br /&gt;&lt;br /&gt;# Clean up files&lt;br /&gt;$RM $TMP_ORIG $TMP_REVIEW&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;pre&gt;$ ./msgdiff.sh fr.po fr.review.po thunar.pot&lt;br /&gt;[...]&lt;br /&gt; #: ../thunar-vcs-plugin/tvp-git-action.c:265&lt;br /&gt;-#, fuzzy&lt;br /&gt; msgid "Menu|Bisect"&lt;br /&gt;-msgstr "Différences détaillées"&lt;br /&gt;+msgstr "Menu|Couper en deux"&lt;br /&gt; &lt;br /&gt; #: ../thunar-vcs-plugin/tvp-git-action.c:265&lt;br /&gt; msgid "Bisect"&lt;br /&gt;-msgstr ""&lt;br /&gt;+msgstr "Couper en deux"&lt;br /&gt;[...]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;A Python script &lt;em&gt;podiff.py&lt;/em&gt;&lt;/h4&gt;&lt;div&gt;&lt;u&gt;Pros&lt;/u&gt;: programmable output&lt;/div&gt;&lt;div&gt;&lt;u&gt;Cons&lt;/u&gt;: external dependency&lt;/div&gt;&lt;br /&gt;The script depends on &lt;a href="http://pypi.python.org/pypi/polib/"&gt;polib&lt;/a&gt; that can be installed with the &lt;em&gt;setuptools&lt;/em&gt; scripts. Make sure &lt;em&gt;setuptools&lt;/em&gt; is installed and than run the command &lt;code&gt;sudo easy_install polib&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/usr/bin/env python&lt;br /&gt;import polib&lt;br /&gt;&lt;br /&gt;def podiff(path_po_orig, path_po_review):&lt;br /&gt;    po_orig = polib.pofile(path_po_orig)&lt;br /&gt;    po_review = polib.pofile(path_po_review)&lt;br /&gt;    po_diff = polib.POFile()&lt;br /&gt;    po_diff.header = "PO Diff Header"&lt;br /&gt;    for entry in po_review:&lt;br /&gt;        orig_entry = po_orig.find(entry.msgid)&lt;br /&gt;        if not entry.obsolete and (orig_entry.msgstr != entry.msgstr \&lt;br /&gt;        or ("fuzzy" in orig_entry.flags) != ("fuzzy" in entry.flags)):&lt;br /&gt;            po_diff.append(entry)&lt;br /&gt;    return po_diff&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    import sys&lt;br /&gt;    import os.path&lt;br /&gt;&lt;br /&gt;    # Usage&lt;br /&gt;    if len(sys.argv) != 3 \&lt;br /&gt;      or not os.path.isfile(sys.argv[1]) \&lt;br /&gt;      or not os.path.isfile(sys.argv[2]):&lt;br /&gt;        print "Usage: %s orig.po review.po" % sys.argv[0]&lt;br /&gt;        sys.exit(1)&lt;br /&gt;&lt;br /&gt;    # Retrieve diff&lt;br /&gt;    path_po_orig = sys.argv[1]&lt;br /&gt;    path_po_review = sys.argv[2]&lt;br /&gt;    po_diff = podiff(path_po_orig, path_po_review)&lt;br /&gt;&lt;br /&gt;    # Print out orig v. review messages&lt;br /&gt;    po = polib.pofile(path_po_orig)&lt;br /&gt;    for entry in po_diff:&lt;br /&gt;        orig_entry = po.find(entry.msgid)&lt;br /&gt;        orig_fuzzy = review_fuzzy = "fuzzy"&lt;br /&gt;        if "fuzzy" not in orig_entry.flags:&lt;br /&gt;            orig_fuzzy = "not fuzzy"&lt;br /&gt;        if "fuzzy" not in entry.flags:&lt;br /&gt;            review_fuzzy = "not fuzzy"&lt;br /&gt;        print "'%s' was %s is %s\n\tOriginal =&gt; '%s'\n\tReviewed =&gt; '%s'\n" % (entry.msgid, orig_fuzzy, review_fuzzy, orig_entry.msgstr, entry.msgstr)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;pre&gt;$ ./podiff.py fr.po fr.review.po&lt;br /&gt;'Menu|Bisect' was fuzzy is not fuzzy&lt;br /&gt; Original =&gt; 'Différences détaillées'&lt;br /&gt; Reviewed =&gt; 'Menu|Couper en deux'&lt;br /&gt;&lt;br /&gt;'Bisect' was not fuzzy is not fuzzy&lt;br /&gt; Original =&gt; ''&lt;br /&gt; Reviewed =&gt; 'Couper en deux'&lt;br /&gt;[...]&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-6975236474860763510?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/6975236474860763510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/09/cli-tool-to-review-po-files.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6975236474860763510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6975236474860763510'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/09/cli-tool-to-review-po-files.html' title='CLI tool to review PO files'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-6634708636259879662</id><published>2010-09-06T21:31:00.002+02:00</published><updated>2010-09-06T21:49:22.865+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Benchmarking Compression Tools</title><content type='html'>Comparison of several compression tools: lzop, gzip, bzip2, 7zip, and xz.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Lzop&lt;/b&gt;: small and very fast yet good compression.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Gzip&lt;/b&gt;: fast and good compression.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Bzip2&lt;/b&gt;: slow for both compression and decompression although very good compression.&lt;/li&gt;&lt;li&gt;&lt;b&gt;7-Zip&lt;/b&gt;: LZMA algorithm, slower than Bzip2 for compression but very good compression.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Xz&lt;/b&gt;: LZMA2, evolution of LZMA algorithm.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Preparation&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Be skeptic about compression tools and wanna promote &lt;b&gt;the&lt;/b&gt; compression tool&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Compare quickly old and new compression tools and find interesting results&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So much for the spirit, what you really need is to write a &lt;b&gt;script&lt;/b&gt;&amp;nbsp;(Bash, Ruby, Perl, anything will do) because you will want to generate the benchmark data automatically. I picked up Ruby as it's nowadays the language of my choice when it comes to any kind of Shell-like scripts. By choosing Ruby I have a large panel of classes to process benchmarking data, for instance I have a Benchmark class (wonderful), I have a CSV class (awfully documented, redundant), and I have a zillion of Gems for any kind of tasks I would need to do (although I always avoid them).&lt;/div&gt;&lt;br /&gt;I first focused on retrieving the data I was interested into (memory, cpu time and file size) and saving it in the &lt;b&gt;CSV&lt;/b&gt;&amp;nbsp;format. By doing so I am able to produce &lt;b&gt;charts&lt;/b&gt;&amp;nbsp;easily with existing applications, and I was thinking maybe it was possible to use &lt;a href="http://code.google.com/p/googlecl/"&gt;GoogleCL&lt;/a&gt;&amp;nbsp;to generate charts from the command line with Google Docs but it isn't supported (maybe it will maybe it won't, it's up to &lt;a href="http://code.google.com/p/gdata-python-client/"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;gdata-python-client&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;). However there is an actual Google tool to generate charts, it is the &lt;a href="http://code.google.com/apis/chart/docs/making_charts.html"&gt;&lt;b&gt;Google Chart API&lt;/b&gt;&lt;/a&gt;&amp;nbsp;that works by providing a URI to get an image. The &lt;a href="http://imagecharteditor.appspot.com/"&gt;Google Image Chart Editor&lt;/a&gt;&amp;nbsp;website helps you to generate the chart you want in a friendly WYSIWYG mode, after that it is just a matter of computing the data into shape for the URI. But well while focusing on the charts I found the Ruby Gem &lt;a href="http://googlecharts.rubyforge.org/"&gt;&lt;i&gt;googlecharts&lt;/i&gt;&lt;/a&gt;&amp;nbsp;that makes it friendly to pass the data and save the image.&lt;br /&gt;&lt;h4&gt;Ruby Script&lt;/h4&gt;The Ruby script needs the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It was written with Ruby 1.9&lt;/li&gt;&lt;li&gt;Linux/Procfs for reading the status of processes&lt;/li&gt;&lt;li&gt;&lt;a href="http://googlecharts.rubyforge.org/"&gt;Googlecharts&lt;/a&gt;: &lt;i&gt;gem install googlecharts&lt;/i&gt;&lt;/li&gt;&lt;li&gt;ImageMagick for the command line tool &lt;i&gt;convert&lt;/i&gt;&amp;nbsp;(optional)&lt;/li&gt;&lt;/ul&gt;The Ruby script takes a path as argument, with which it creates a tarball inside a tmpfs directory in order to avoid I/O latencies from a hard-drive. Next it runs a number of commands over the tarball from which it collects benchmark data. The benchmark data is then saved inside CSV files that are reusable within spreadsheet applications. The data is also reused to retrieve charts from the Google Chart API and finally it calls the ImageMagick tool ''convert'' to collect the charts inside a single image. The summary displayed on the standard output is also saved inside a text file.&lt;br /&gt;&lt;br /&gt;The script is a bit long for being pasted here (more or less 300 lines) so you can &lt;a href="http://mmassonnet.info/~mike/benchmark-compression.rb"&gt;download&lt;/a&gt;&amp;nbsp;it from my workstation. If the link doesn't work make sure the web browser doesn't encode ~&amp;nbsp;(f.e. to "&lt;i&gt;%257E&lt;/i&gt;"), I've seen this happening with Safari (inside my logs)! If really you are out of luck, it is available on &lt;a href="http://pastebin.com/nWR1GWy8"&gt;Pastebin&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;Benchmarks&lt;/h4&gt;The benchmarks are available for three kinds of data. Compressed media files, raw media files (image and sound, remember that the compression is lossless), and text files from an open source project.&lt;br /&gt;&lt;h5&gt;Media Files&lt;/h5&gt;Does it make sense at all to compress already compressed data. Obviously not! Let's take a look at what happens anyway.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_wcTww_e0VUY/TIU6rlESZQI/AAAAAAAAAU8/pxVd8kHPTZM/s1600/medias-3charts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="325" src="http://4.bp.blogspot.com/_wcTww_e0VUY/TIU6rlESZQI/AAAAAAAAAU8/pxVd8kHPTZM/s400/medias-3charts.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As you see, compression tools with focus on speed don't fail, they still do the job quick while gaining a few hundred kilo bytes. However the other tools simply waste a lot of time for no gain at all.&lt;br /&gt;&lt;br /&gt;So always make sure to use a backup application without compression over media files or the CPU will be heating up for nothing.&lt;br /&gt;&lt;h5&gt;Raw Media Files&lt;/h5&gt;Will it make sense to compress raw data? Not really. Here are the results:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_wcTww_e0VUY/TIU63aWOxyI/AAAAAAAAAVA/ea6e_YO5iFk/s1600/medias-raw-3charts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="325" src="http://1.bp.blogspot.com/_wcTww_e0VUY/TIU63aWOxyI/AAAAAAAAAVA/ea6e_YO5iFk/s400/medias-raw-3charts.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There is some gain in the order of mega bytes now, but the process is still the same and for that reason it is simply unadapted. For media files there are existing formats that will compress the data lossless with a higher ratio and a lot faster.&lt;br /&gt;&lt;br /&gt;Let's compare lossless compression of a sound file. The initial WAV source file has a size of &lt;i&gt;44MB&lt;/i&gt;&amp;nbsp;and lasts &lt;i&gt;4m20s&lt;/i&gt;. Compressing this file with &lt;i&gt;xz&lt;/i&gt;&amp;nbsp;takes about &lt;i&gt;90s&lt;/i&gt;, this is very long while it reduced the size to &lt;i&gt;36MB&lt;/i&gt;. Now if you choose the format FLAC, which is doing lossless compression for audio, you will have a record. The file is compressed in about &lt;i&gt;5s&lt;/i&gt;&amp;nbsp;to a size of &lt;i&gt;24MB&lt;/i&gt;! The good thing about FLAC is that media players will decode it without any CPU cost.&lt;br /&gt;&lt;br /&gt;The same happens with images, but I lack knowledge about photo formats so your mileage may vary. Anyway, except the Windows bitmap format, I'm not able to say that you will find images uncompressed just like you won't find videos uncompressed... &lt;a href="http://en.wikipedia.org/wiki/Tagged_Image_File_Format"&gt;TIFF&lt;/a&gt;&amp;nbsp;or &lt;a href="http://en.wikipedia.org/wiki/Raw_image_format"&gt;RAW&lt;/a&gt;&amp;nbsp;is the format provided by many reflex cameras, it has lossless compression capabilities and contains many information about image colors and so on, this makes it the perfect format for photographers as the photo itself doesn't contain any modifications. You can also choose the &lt;a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics"&gt;PNG&lt;/a&gt;&amp;nbsp;format but only for simple images.&lt;br /&gt;&lt;h5&gt;Text Files&lt;/h5&gt;We get to the point where we can compare interesting results. Here we are compressing data that is the most commonly distributed over the Internet.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_wcTww_e0VUY/TIU69fluSrI/AAAAAAAAAVE/-NNLWqt1vfQ/s1600/text-3charts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="325" src="http://2.bp.blogspot.com/_wcTww_e0VUY/TIU69fluSrI/AAAAAAAAAVE/-NNLWqt1vfQ/s400/text-3charts.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lzop and Gzip perform fast and have a good ratio. Bzip2 has a better ratio, and both LZMA and LZMA2 algorithms even better. We can use an initial archive of 10MB, 100MB, or 400MB, the charts will always look alike the one above. When choosing a compression format it will either be good compression or speed, but it will definitely never ever be both, you must choose between this two constraints.&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;I never heard about the &lt;b&gt;LZO&lt;/b&gt;&amp;nbsp;format until I wanted to write this blog post. It looks like a good choice for end-devices where CPU cost is crucial. The compression will always be extremely fast, even for giga bytes of data, with a fairly good ratio. While &lt;b&gt;Gzip&lt;/b&gt;&amp;nbsp;is the most distributed compression format, it works just like Lzop, by focusing by default on speed with good compression. But it can't beat Lzop in speed, even when compressing in level 1 it will be fairly slower in matter of seconds, although it still beats it in the final size. When compressing with Lzop in level 9, the speed is getting ridiculously slow and the final size doesn't beat Gzip with its default level where Gzip is doing the job faster anyway.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Bzip2&lt;/b&gt;&amp;nbsp;is noise between LZMA and Gzip. It is very distributed as default format nowadays because it beats Gzip in term of compression ratio. It is of course slower for compression, but easily spottable is the decompression time, it is the worst amongst all in all cases.&lt;br /&gt;&lt;br /&gt;Both &lt;b&gt;LZMA&lt;/b&gt;&amp;nbsp;and &lt;b&gt;LZMA2&lt;/b&gt;&amp;nbsp;perform almost with an identical behavior. They are using dynamic memory allocation, unlike the other formats, where the higher the input data the more the memory is allocated. We can see the evolution of LZMA is using less memory but has on the other hand a higher cost on CPU time. And we can see they have excellent decompression time, although Lzop and Gzip have the best scores but then again there can't be excellent compression ratio and compression time. The difference between the compression ratio of the two formats is in the order of hundred of kilo bytes, well after all it is an evolution and not a revolution.&lt;br /&gt;&lt;br /&gt;On a last note, I ran the benchmarks on an Intel Atom N270 that has two cores at 1.6GHz but I made sure to run the compression tools with only one core.&lt;br /&gt;&lt;br /&gt;A few interesting links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.glasslantern.com/RAWpository/"&gt;RAWpository&lt;/a&gt;: a collection of RAW images&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.thegeekstuff.com/2010/06/lzma-better-compression-than-bzip2-on-unix-linux/"&gt;LZMA vs Bzip2 at TheGeekStuff&lt;/a&gt;&amp;nbsp;from 2010-06-04&lt;/li&gt;&lt;li&gt;&lt;a href="http://stephane.lesimple.fr/wiki/blog/lzop_vs_compress_vs_gzip_vs_bzip2_vs_lzma_vs_lzma2-xz_benchmark_reloaded"&gt;Benchmarks by Stéphane Lesimple&lt;/a&gt;&amp;nbsp;with different levels from 2010-03-09&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.advogato.org/person/badger/diary/80.html"&gt;Benchmarks by Advogato&lt;/a&gt;&amp;nbsp;also with different levels from 2009-09-25&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-6634708636259879662?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/6634708636259879662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/09/benchmarking-compression-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6634708636259879662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6634708636259879662'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/09/benchmarking-compression-tools.html' title='Benchmarking Compression Tools'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wcTww_e0VUY/TIU6rlESZQI/AAAAAAAAAU8/pxVd8kHPTZM/s72-c/medias-3charts.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3492768647017711263</id><published>2010-07-15T22:25:00.001+02:00</published><updated>2010-07-15T22:26:50.729+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Don't produce Gzipped tarballs</title><content type='html'>A quick note so I can delete it from my desktop. In order to produce only a Bzip2 tarball with the Autotools, specially when running &lt;i&gt;make distcheck&lt;/i&gt;, set the automake init call with these parameters:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AM_INIT_AUTOMAKE([no-dist-gzip dist-bzip2])&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;By the way I wonder if it's worth dumping bzip2 against &lt;a href="http://tukaani.org/xz/"&gt;xz&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3492768647017711263?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3492768647017711263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/07/dont-produce-gzipped-tarballs.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3492768647017711263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3492768647017711263'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/07/dont-produce-gzipped-tarballs.html' title='Don&apos;t produce Gzipped tarballs'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-8982737936943203257</id><published>2010-06-14T17:01:00.000+02:00</published><updated>2010-06-14T17:01:44.091+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Major changes in the Xfce Task Manager going 1.0</title><content type='html'>It's done. The task manager application available in Xfce for quite some years is now available with major changes. It has been rewritten from scratch, with GtkBuilder UI definitions and GObjects, everything is fresh and clean.&amp;nbsp;The application has support for Linux, OpenBSD, FreeBSD and OpenSolaris.&lt;br /&gt;&lt;br /&gt;Let's start by visual changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The buttons at the bottom are gone, the progress bars at the top are vanished, say hello to a &lt;b&gt;toolbar&lt;/b&gt; with buttons and &lt;b&gt;monitors&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;You read well, monitors are in, they show a graph of the CPU and memory usage by time.&lt;/li&gt;&lt;li&gt;A &lt;b&gt;status bar&lt;/b&gt; is visible at the bottom, it displays a general information about the system usage.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Icons&lt;/b&gt; are displayed beneath the task names.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Let's continue with less visual:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tasks that start are displayed with a &lt;b&gt;green background&lt;/b&gt; for a short delay and tasks that terminate with a &lt;b&gt;red background&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Tasks which state is changing are temporarily displayed with a &lt;b&gt;yellow background&lt;/b&gt;. This covers tasks changing their state from &lt;i&gt;idle&lt;/i&gt; to &lt;i&gt;running&lt;/i&gt;, vice versa and etc.&lt;/li&gt;&lt;li&gt;The tree views context menu contains the same actions as before, sending signals to the task and changing the priority. They have been polished however, for example the &lt;i&gt;continue&lt;/i&gt; and &lt;i&gt;stop&lt;/i&gt; signals aren't shown altogether anymore, and there are only five priorities to set ranging from &lt;i&gt;Very low&lt;/i&gt; to &lt;i&gt;Very high&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;The tree view columns can be &lt;b&gt;reordered&lt;/b&gt; as you wish.&lt;/li&gt;&lt;li&gt;An optional &lt;b&gt;status icon&lt;/b&gt; can be activated allowing you to hide the application.&lt;/li&gt;&lt;li&gt;It is possible to display percentage values with &lt;b&gt;more precision&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;And finally, the default &lt;b&gt;refresh rate&lt;/b&gt; is 750ms and it can be switched from 500ms up to 10s.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;And the result is as follows:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_wcTww_e0VUY/TBY79saVzzI/AAAAAAAAAUg/vq4qAk2TObk/s1600/xfce4-taskmanager-1.0.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://4.bp.blogspot.com/_wcTww_e0VUY/TBY79saVzzI/AAAAAAAAAUg/vq4qAk2TObk/s400/xfce4-taskmanager-1.0.0.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The application is fully translated into fifteen &lt;a href="https://translations.xfce.org/projects/p/xfce4-taskmanager/c/master/"&gt;languages&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Go to &lt;b&gt;&lt;a href="http://goodies.xfce.org/projects/applications/xfce4-taskmanager"&gt;project webpage&lt;/a&gt;&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-8982737936943203257?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/8982737936943203257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/06/major-changes-in-xfce-task-manager.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8982737936943203257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8982737936943203257'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/06/major-changes-in-xfce-task-manager.html' title='Major changes in the Xfce Task Manager going 1.0'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wcTww_e0VUY/TBY79saVzzI/AAAAAAAAAUg/vq4qAk2TObk/s72-c/xfce4-taskmanager-1.0.0.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3138370386190673863</id><published>2010-05-30T21:59:00.006+02:00</published><updated>2010-05-31T00:39:14.087+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Meego installation on a USB stick</title><content type='html'>This post wouldn't be if the hard-drive from my Acer Aspire One didn't die. I have a fresh backup of the disk (a full 'dd' plus a separate one for just the home partition) so if I need something back, and I know I don't I care but backups are important, I can always mount it in a loopback and copy files.&lt;br /&gt;&lt;br /&gt;The hard-drive is actually, what I want to call it, a cheap and fake SSD. It's a PATA SSD that I'm sure I will never find a replacement for. Look:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_wcTww_e0VUY/TAKzeLWHtwI/AAAAAAAAAUI/iDn7dpLXabs/s1600/aa-one-pata-ssd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_wcTww_e0VUY/TAKzeLWHtwI/AAAAAAAAAUI/iDn7dpLXabs/s320/aa-one-pata-ssd.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now the dilemma was easy, or I threw the netbook to trash, or I found something to boot on. I started to look for a solution and &lt;a href="http://meego.com/"&gt;Meego&lt;/a&gt; just got released, this is crazy timing. I downloaded the boot image and tried it out, and guess what, it is getting better and better. It's definitely more beautiful, it is getting faster, it has better dialogs for customization, well just try it out if you didn't yet, you wont be disappointed but surprised.&lt;br /&gt;&lt;br /&gt;So in the end, installing a system on a USB stick is the only solution I can come up with.&amp;nbsp;I ordered an extra USB stick, but &lt;i&gt;mini&lt;/i&gt; please, a &lt;a href="http://www.kingston.com/ukroot/flash/dtm10.asp"&gt;Kingston DTmini10&lt;/a&gt;! Now when I tell people this is my actual hard-drive, they are like “&lt;i&gt;say-whaaat.”&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The installation of Meego didn't went that fluently. I have two USB sticks, one with the boot image, another serving as target device for installation. The installation worked fine without any modification, it boots but ends on a black screen with the CAPS del blinking. Boo, kernel panic, or something else &lt;i&gt;ungroovy&lt;/i&gt;. I also tried an installation with the file-system ext3, the default is btrfs, but then the grub installer fails and the Meego installer is knocked out in a waiting sequence. So I did a default installation again, sigh. After a search I tried out some parameters for the kernel command line and adding “&lt;i&gt;rootdelay=8&lt;/i&gt;” did the trick. In fact, the USB stick boots without problem, but past that there is some delay for the kernel to discover the USB device, you can then see the following message:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; sd 11:0:0:0: [sdx] Assuming drive cache: write through&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If there is no rootdelay parameter there is no root device found, and booting just ain't gonna work out. End of story. There are some tiny tweaks to be done afterwards. The kernel command line must point to the right root device, just like for the fstab file. The kernel command line can be edited in the file &lt;i&gt;/boot/extlinux/extlinux.conf&lt;/i&gt;. Everything else works out just fine. Booting time, except the rootdelay, is acceptable, but shutting down seems to be endless, and precisely when I want the netbook to turn off I want it to be really fast. I'm going to send it to sleep more often than usual, by closing and opening the lid, which is the fastest “boot” sequence one can get ;-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_wcTww_e0VUY/TALbNyyEWMI/AAAAAAAAAUY/x69sUyYlppk/s1600/aa-one-dtm10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_wcTww_e0VUY/TALbNyyEWMI/AAAAAAAAAUY/x69sUyYlppk/s320/aa-one-dtm10.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Update&lt;/b&gt;: I've been wrong stating the shutdown process is taking ages, I just did a shutdown and this time it went quick, so something must have been be unlucky and the disk synced something around and around.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3138370386190673863?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3138370386190673863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/05/meego-installation-on-usb-stick.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3138370386190673863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3138370386190673863'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/05/meego-installation-on-usb-stick.html' title='Meego installation on a USB stick'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wcTww_e0VUY/TAKzeLWHtwI/AAAAAAAAAUI/iDn7dpLXabs/s72-c/aa-one-pata-ssd.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7912736538422163207</id><published>2010-04-30T22:27:00.001+02:00</published><updated>2010-05-30T20:37:18.232+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Moblin blazing fast</title><content type='html'>I updated my netbook to give it a new look. I switched the Xfce Panel against &lt;a href="http://code.google.com/p/bmpanel2/"&gt;bmpanel2&lt;/a&gt; and changed the background (the previous definitelly lasted very long.) Not much changes, but I topped a cold boot of about six seconds, always faster baby :-P And the window manager is &lt;a href="http://openbox.org/"&gt;OpenBox&lt;/a&gt; by the way.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_wcTww_e0VUY/S9s7gjvbbSI/AAAAAAAAATg/nTlq6Iwx7RE/s1600/Moblin-openbox-bmpanel2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://3.bp.blogspot.com/_wcTww_e0VUY/S9s7gjvbbSI/AAAAAAAAATg/nTlq6Iwx7RE/s400/Moblin-openbox-bmpanel2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The only real useful entry missing in this panel is a battery monitor. At least I have an indicator over the keyboard that starts blinking when there is about three percents left. What I like about this panel is the cool themes that it is provided with, however the configuration is set through a hand-written configuration file which sucks but what do you want, it is extremely lightweight on the other hand.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: Should I mention I totally forgot about the Xfce power manager? Well I did, and it is provided with a notification icon displaying the battery status :-) However I had to fix the default ACPI  script related to the lid, since HAL doesn't list it, in order to get the netbook to go into sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7912736538422163207?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7912736538422163207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/04/moblin-blazing-fast.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7912736538422163207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7912736538422163207'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/04/moblin-blazing-fast.html' title='Moblin blazing fast'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wcTww_e0VUY/S9s7gjvbbSI/AAAAAAAAATg/nTlq6Iwx7RE/s72-c/Moblin-openbox-bmpanel2.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-12435100491274438</id><published>2010-04-04T23:37:00.003+02:00</published><updated>2010-04-10T15:32:21.525+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>VLC with GTK+ look-n-feel</title><content type='html'>To get Qt applications to look like GTK+ applications run &lt;b&gt;qtconfig&lt;/b&gt; and in &lt;b&gt;Select GUI Style&lt;/b&gt; choose &lt;b&gt;GTK+&lt;/b&gt;. Next click in the menu bar &lt;b&gt;File &amp;gt; Save&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Something is still puzzling me, why does GNOME run VLC automatically with native GTK+ look-n-feel and not Xfce?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: Thanks to the power of tig and grep, I figured the Qt library (qt_init function) defines the desktop environment as GNOME for Xfce (this results in GTK+ theming, GNOME like Open dialogues, etc) by retrieving an X11 atom on the root window and compares it to “xfce4” &lt;strike&gt;but it seems that this doesn't work nowadays (at least it didn't work within an Xfce 4.7 desktop session)&lt;/strike&gt;. I'm looking forward for sending patches.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update2&lt;/b&gt;: The latest version Qt 4.6.2 doesn't include the code for checking the X11 atom (it's in git), which explains why it doesn't work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-12435100491274438?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/12435100491274438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/04/vlc-with-gtk-look-n-feel.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/12435100491274438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/12435100491274438'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/04/vlc-with-gtk-look-n-feel.html' title='VLC with GTK+ look-n-feel'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-210475929673815890</id><published>2010-03-27T09:48:00.001+01:00</published><updated>2010-04-09T21:58:17.628+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><title type='text'>New notes plugin release 1.7.3</title><content type='html'>Three months since the last release, and three months since it is available as a separate standalone application running in the notification area. This has made it a lot easier to test and debug, as before I had to build the plugin, install the plugin, restart the panel or remove/readd the plugin in the panel, now I just have to run &lt;i&gt;./xfce4-notes&lt;/i&gt; from the source directory.&lt;br /&gt;&lt;br /&gt;This new release has seen some structural tree changes to save time during compilation. Now everything is in &lt;i&gt;src/&lt;/i&gt; and &lt;i&gt;lib/&lt;/i&gt;, where &lt;i&gt;lib/&lt;/i&gt; contains code to build an &lt;i&gt;XnpHypertextView&lt;/i&gt;, an &lt;i&gt;XnpNote &lt;/i&gt;(a composite-widget that embeds a &lt;i&gt;GtkScrolledWindow &lt;/i&gt;with an &lt;i&gt;XnpHypertextView &lt;/i&gt;and sends “save” signals on changes), an &lt;i&gt;XnpWindow &lt;/i&gt;with the custom made navigation and title bars and the right click menu on the title bar, and finally an &lt;i&gt;XnpApplication&lt;/i&gt; class that is the heart of everything, it handles creations/deletions of notes, loads/saves the data, etc. The &lt;i&gt;src/&lt;/i&gt; directory contains the main files for the panel plugin, the status icon, the popup command and the settings dialogue.&lt;br /&gt;&lt;br /&gt;The new stuff is mostly eye-candy as stated in the &lt;a href="http://mmassonnet.blogspot.com/2010/03/include-custom-gtk-rc-style.html"&gt;previous blog entry&lt;/a&gt;. The GTK+ RC style has been pimped up with custom made scrollbars and the source code contains a self-drawn close button. The stuff about GTK+ scrollbars theming is grossly explained on &lt;a href="http://live.gnome.org/GnomeArt/Tutorials/GtkEngines/PixmapEngine"&gt;live.gnome.org&lt;/a&gt; but I opened the &lt;a href="https://launchpad.net/dusttheme"&gt;GTK+ Dust theme&lt;/a&gt; files which was, to me, more understandable :-) Also it was because of this particular theme I took a look at customizing the scrollbars, see below the before/after screenshots. The older article about &lt;a href="http://www.gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28"&gt;writing a Widget with Cairo&lt;/a&gt; helped me getting started from scratch with an empty “close button” widget to replace the simple &lt;i&gt;GtkButton&lt;/i&gt; with label. As I liked  very much the time passed on these changes I contributed a tutorial “&lt;a href="http://dl.dropbox.com/u/2670286/Monochrome-icon.pdf"&gt;Monochrome icon&lt;/a&gt;” available only in PDF as of today which I hope to be useful for Vala beginners but also a nice update of the article about Cairo but with Vala language.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_wcTww_e0VUY/S6thYyFoUxI/AAAAAAAAATQ/IdMf74i4HZY/s1600/notes-before.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_wcTww_e0VUY/S6thYyFoUxI/AAAAAAAAATQ/IdMf74i4HZY/s200/notes-before.png" width="176" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_wcTww_e0VUY/S6thqjg40qI/AAAAAAAAATY/zuqadt8kfNo/s1600/notes-after.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_wcTww_e0VUY/S6thqjg40qI/AAAAAAAAATY/zuqadt8kfNo/s200/notes-after.png" width="176" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The fixes included in this release are the following: correctly restore sticky-window and keep-above states after some race conditions, and restore tab label orientation after renaming a note. And last but definitely not least the undo feature was not working because an internal timeout wasn't reset to zero which made the code think a snapshot was needed and thus the undo/redo buffers ended with the same content after the timeout elapsed. Thanks to Christian (the developer behind &lt;a href="http://www.twotoasts.de/index.php?/pages/midori_summary.html"&gt;Midori&lt;/a&gt;) otherwise I would still not have taken a look around this!&lt;br /&gt;&lt;br /&gt;The forthcoming features I have in mind would be a search dialogue and per-note options for activating a stripped down “markdown” syntax, an orthographic corrector and wrapping words which is the default for the moment.&lt;br /&gt;&lt;br /&gt;The release is available at &lt;a href="http://archive.xfce.org/src/panel-plugins/xfce4-notes-plugin/1.7/"&gt;archive.xfce.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks for the feedbacks and reports you sent and will send back.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: The tutorial is now also available on the &lt;a href="http://wiki.xfce.org/howto/monochrome-icon"&gt;Xfce wiki&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-210475929673815890?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/210475929673815890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/03/new-notes-plugin-release-173.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/210475929673815890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/210475929673815890'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/03/new-notes-plugin-release-173.html' title='New notes plugin release 1.7.3'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wcTww_e0VUY/S6thYyFoUxI/AAAAAAAAATQ/IdMf74i4HZY/s72-c/notes-before.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-732620942514661367</id><published>2010-03-08T16:46:00.002+01:00</published><updated>2010-03-27T21:51:35.113+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Include custom GTK+ RC style</title><content type='html'>I've been using a custom GTK+ RC style for the notes plugin since the version 1.4.0, right now it is at version 1.7.2. I have been playing with GTK+ theming again these last two hours, and I've get custom scrollbars, a gradient for the custom-made “title bar”, and better colours for the notebook to get the current tab stand out from the crowd.&lt;br /&gt;&lt;br /&gt;While experimenting on a test-case code I found out a better way to parse a gtkrc file in the program. The first time I was fighting with the existing gtk_rc related functions, I gave up on a solution I partially dislike that is to include a line to the custom gtkrc file within ~/.gtkrc-2.0.&lt;br /&gt;&lt;br /&gt;Today I understood how &lt;b&gt;&lt;a href="http://library.gnome.org/devel/gtk/unstable/gtk-Resource-Files.html#gtk-rc-parse"&gt;gtk_rc_parse&lt;/a&gt;(filename)&lt;/b&gt; behaves. You have to call this function at the beginning of the program before building any widgets, it will work even if the file doesn't exist yet. Next, while the program is running,  you can modify the file, create it, delete it, truncate it, whatever, and call &lt;b&gt;&lt;a href="http://library.gnome.org/devel/gtk/unstable/gtk-Resource-Files.html#gtk-rc-reparse-all"&gt;gtk_rc_reparse_all&lt;/a&gt;()&lt;/b&gt; to get the style refreshed in the GUI. It's hard to believe that such easy things are sometimes a PITA :-)&lt;br /&gt;&lt;br /&gt;Be prepared for a 1.7.3 notes plugin with nicer &lt;span style="background-color: #fff2cc; color: #7f6000;"&gt;c&lt;/span&gt;&lt;span style="background-color: #ffd966; color: #bf9000;"&gt;o&lt;/span&gt;&lt;span style="background-color: #7f6000; color: #f1c232;"&gt;l&lt;/span&gt;&lt;span style="background-color: #bf9000; color: #fff2cc;"&gt;o&lt;/span&gt;&lt;span style="background-color: #f1c232; color: #ffe599;"&gt;u&lt;/span&gt;&lt;span style="background-color: #bf9000; color: #fff2cc;"&gt;r&lt;/span&gt;&lt;span style="background-color: #7f6000; color: yellow;"&gt;s&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-732620942514661367?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/732620942514661367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/03/include-custom-gtk-rc-style.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/732620942514661367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/732620942514661367'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/03/include-custom-gtk-rc-style.html' title='Include custom GTK+ RC style'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4231854065756218954</id><published>2010-03-01T01:02:00.001+01:00</published><updated>2010-03-27T21:51:35.113+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Show/hide functionality from notification area</title><content type='html'>When using a status icon within the notification area it is common to use the left-click action to show/hide the main window. Obviously this is often done in different ways. So here is my tip on how to do it right :-)&lt;br /&gt;&lt;br /&gt;What I believe to me the most sense-full way is to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Check if the application is invisible and show it,&lt;/li&gt;&lt;li&gt;Otherwise check if the window is inactive and present it,&lt;/li&gt;&lt;li&gt;Otherwise hide it.&lt;/li&gt;&lt;/ol&gt;In C language it looks like this:&lt;br /&gt;&lt;pre&gt;&lt;i&gt;/* Show the window */&lt;/i&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;if&lt;/span&gt; (!(&lt;span style="color: red;"&gt;GTK_WIDGET_VISIBLE&lt;/span&gt;(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;))) {&lt;br /&gt;    &lt;span style="color: red;"&gt;gtk_widget_show&lt;/span&gt;(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;i&gt;/* Present the window */&lt;/i&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;else if&lt;/span&gt; (!&lt;span style="color: red;"&gt;gtk_window_is_active&lt;/span&gt;(GTK_WINDOW(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;))) {&lt;br /&gt;    &lt;span style="color: red;"&gt;gtk_window_present&lt;/span&gt;(GTK_WINDOW(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;));&lt;br /&gt;}&lt;br /&gt;&lt;i&gt;/* Hide the window */&lt;/i&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;else&lt;/span&gt; {&lt;br /&gt;    int &lt;span style="color: #999999;"&gt;winx&lt;/span&gt;, &lt;span style="color: #999999;"&gt;winy&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: red;"&gt;gtk_window_get_position&lt;/span&gt;(GTK_WINDOW(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;), &amp;amp;&lt;span style="color: #999999;"&gt;winx&lt;/span&gt;, &amp;amp;&lt;span style="color: #999999;"&gt;winy&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: red;"&gt;gtk_widget_hide&lt;/span&gt;(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;);&lt;br /&gt;    &lt;span style="color: red;"&gt;gtk_window_move&lt;/span&gt;(GTK_WINDOW(&lt;span style="color: #999999;"&gt;window&lt;/span&gt;), &lt;span style="color: #999999;"&gt;winx&lt;/span&gt;, &lt;span style="color: #999999;"&gt;winy&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;I have been doing this for quite a long time inside the Xfce Notes plugin, except a little different with multiple windows.&lt;br /&gt;&lt;br /&gt;Some remarks, the &lt;a href="http://live.gnome.org/GTK%2B/3.0/PendingSealings"&gt;PendingSealings&lt;/a&gt; proposes &lt;b&gt;gtk_widget_get_visible&lt;/b&gt; instead of its analogous MACRO. And as you may also notice when the window is hidden it gets moved just after, this is important as otherwise the window would be repositioned by its initial value once shown again (e.g. centre of screen or dynamically by the window manager).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4231854065756218954?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4231854065756218954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/03/showhide-functionality-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4231854065756218954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4231854065756218954'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/03/showhide-functionality-from.html' title='Show/hide functionality from notification area'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3628185979003704959</id><published>2010-02-13T23:18:00.005+01:00</published><updated>2010-09-04T21:17:10.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='eatmonkey'/><title type='text'>Eatmonkey 0.1.3 benchmarking</title><content type='html'>Eatmonkey has now been &lt;a href="http://foo-projects.org/pipermail/xfce/2010-February/026765.html"&gt;released&lt;/a&gt; for the 4th time and I started to use it to download &lt;a href="http://video.fosdem.org/2010/"&gt;videos&lt;/a&gt; from FOSDEM2010 by drag-n-dropping the links from the web page to the manager :-)&lt;br /&gt;&lt;br /&gt;I downloaded four files and while they were running I had a close look at &lt;b&gt;top&lt;/b&gt; and &lt;b&gt;iftop&lt;/b&gt; to monitor the CPU usage and the bandwidth usage between the client/server (the connection between eatmonkey and the aria2 XML-RPC server running on the localhost interface).&lt;br /&gt;&lt;br /&gt;I had unexpected results and was surprised by the CPU usage. It is very high currently which means I have a new task for the next milestone, getting the CPU footprint low. The bandwidth comes without surprises, but since the milestone will target performance where possible I will fine down the number of requests made to the server. This problem is also noticeable in the GUI in that it tends to micro-freeze during the updates of each download. So the more active downloads will be running the more the client will be freezing.&lt;br /&gt;&lt;br /&gt;Some results as it will speak more than words:&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Number of active downloads&lt;/th&gt;&lt;th&gt;Reception&lt;/th&gt;&lt;th&gt;Emission&lt;/th&gt;&lt;th&gt;CPU%&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4 downloads&lt;/td&gt;&lt;td&gt;144Kbps&lt;/td&gt;&lt;td&gt;18Kbps&lt;/td&gt;&lt;td&gt;30%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3 downloads&lt;/td&gt;&lt;td&gt;108Kbps&lt;/td&gt;&lt;td&gt;14Kbps&lt;/td&gt;&lt;td&gt;26%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2 downloads&lt;/td&gt;&lt;td&gt;73Kbps&lt;/td&gt;&lt;td&gt;11Kbps&lt;/td&gt;&lt;td&gt;18%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I will start by running benchmarks on the code itself, and thanks to Ruby there is built-in support for Benchmarking and Profiling. It comes with at least three different useful modules: &lt;b&gt;benchmark&lt;/b&gt;, &lt;b&gt;profile&lt;/b&gt; and &lt;b&gt;profiler&lt;/b&gt;. The first measures the time that the code necessitated to be executed on the system. It is useful to measure different kind of loops like &lt;b&gt;for&lt;/b&gt;, &lt;b&gt;while&lt;/b&gt; or &lt;b&gt;do...while&lt;/b&gt;, or for example to see if a string is best to be compared through a dummy compare function or via a compiled regular expression. The second simply needs to be included at the top of a Ruby script and it will print a summary of the time passed within each method/function call. The third does the same except it is possible to run the Profiler around distinctive blocks of code. So much for the presentation, below are some samples.&lt;br /&gt;&lt;br /&gt;File &lt;code&gt;benchmark.rb&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;#!/usr/bin/ruby -w&lt;br /&gt;&lt;br /&gt;require "benchmark"&lt;br /&gt;require "pp"&lt;br /&gt;&lt;br /&gt;integers = (1..10000).to_a&lt;br /&gt;pp Benchmark.measure { integers.map { |i| i * i } }&lt;br /&gt;&lt;br /&gt;Benchmark.bm(10) do |b|&lt;br /&gt;    b.report("simple") { 50000.times { 1 + 2 } }&lt;br /&gt;    b.report("complex") { 50000.times { 1 + 2 - 6 + 5 * 4 / 2 + 4 } }&lt;br /&gt;    b.report("stupid") { 50000.times { "1".to_i + "3".to_i * "4".to_i - "2".to_i } }&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;words = IO.readlines("/usr/share/dict/words")&lt;br /&gt;Benchmark.bm(10) do |b|&lt;br /&gt;    b.report("include") { words.each { |w| next if w.include?("abe") } }&lt;br /&gt;    b.report("regexp") { words.each { |w| next if w =~ /abe/ } }&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;File &lt;code&gt;profile.rb&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;#!/usr/bin/ruby -w&lt;br /&gt;&lt;br /&gt;require "profile"&lt;br /&gt;&lt;br /&gt;def factorial(n)&lt;br /&gt;    n &gt; 1 ? n * factorial(n - 1) : 1;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;factorial(627)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;File &lt;code&gt;profiler.rb&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;#!/usr/bin/ruby -w&lt;br /&gt;&lt;br /&gt;require "profiler"&lt;br /&gt;&lt;br /&gt;def factorial(n)&lt;br /&gt;    (2..n).to_a.inject(1) { |product, i| product * i }&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Profiler__.start_profile&lt;br /&gt;factorial(627)&lt;br /&gt;Profiler__.stop_profile&lt;br /&gt;Profiler__.print_profile($stdout)&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Update&lt;/b&gt;: The profiling showed that during a status request 65% of the time is consumed by the XML parser. The REXML class is written 100% in Ruby, and that gives a good hint that the same request done with a parser written in C may present a real boost. On another hand, the requests are now only run once periodically and cached inside the pooler. This means that the emission bitrate is always the same and that the reception bitrate grows as there are more downloads running. And as a side-effect there is less XML parsing done thus less CPU time used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3628185979003704959?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3628185979003704959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/02/eatmonkey-013-benchmarking.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3628185979003704959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3628185979003704959'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/02/eatmonkey-013-benchmarking.html' title='Eatmonkey 0.1.3 benchmarking'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-9221743104533028956</id><published>2010-02-06T15:20:00.002+01:00</published><updated>2010-09-04T20:55:14.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='eatmonkey'/><title type='text'>Backward compatibility for Ruby 1.8</title><content type='html'>As I'm currently writing some Ruby code and that I started with version 1.9 I felt onto cases where some methods don't exist for Ruby 1.8. This is very annoying and I started by switching the code to 1.8 method calls. I disliked this when it came to &lt;b&gt;Process.spawn&lt;/b&gt; which is a one line call to execute a separate process. Rewriting it takes around 5 lines instead.&lt;br /&gt;&lt;br /&gt;So I had the idea to reuse something I already saw once. I write a new file named &lt;b&gt;compat18.rb&lt;/b&gt; and include it within the sources that need it. Ruby makes it very easy to add new methods to existing classes/modules anyway, even if they exist already, so I just did it and it works like a charm.&lt;br /&gt;&lt;br /&gt;Here is a small snippet:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #ff40ff;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;Array&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ff40ff;"&gt;def&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;find_index&lt;/span&gt;(idx)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index(idx)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ff40ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff40ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #ff40ff;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;Dir&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ff40ff;"&gt;def&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;exists?&lt;/span&gt;(path)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: lime;"&gt;File&lt;/span&gt;.directory?(path)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ff40ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff40ff;"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: It can happen that a fallback method from Ruby 1.8 has been totally dropped and replaced against a new method in 1.9, and in this case the older method has to be checked if it exists, and otherwise make a call to the parent.&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #ff40ff;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;Array&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff40ff;"&gt;def&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;count&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;if&amp;nbsp;defined?&lt;/span&gt;&amp;nbsp;nitems&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;return&lt;/span&gt;&amp;nbsp;nitems&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;return&amp;nbsp;super&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff40ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff40ff;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-9221743104533028956?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/9221743104533028956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/02/backward-compatibility-for-ruby-18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/9221743104533028956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/9221743104533028956'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/02/backward-compatibility-for-ruby-18.html' title='Backward compatibility for Ruby 1.8'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-9043600029557058533</id><published>2010-02-04T01:34:00.001+01:00</published><updated>2010-05-30T20:37:18.233+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><title type='text'>Fed up with Moblin</title><content type='html'>I slowly begin to be fed up with Moblin, the base installation. The base system starts way too often with core-dumps (crash on mutter f.e. which also means X restarts), but mainly because of RPM. When package-kit starts to check for an update — or when you do any installation/upgrade with yum e.g. you use rpm directly or indirectly — the whole system goes unusable, the browser acts like it is frozen, it takes very long to switch between tasks, and all of this for at least a minute up to an hour if you accept to run an update. You can call this whatever you want, I call this a big fail.&lt;br /&gt;&lt;br /&gt;This happens on an Acer Aspire One 9", where I guess they installed the  cheapest SSD out there.&lt;br /&gt;&lt;br /&gt;In fact things were getting really bad when I switched to an Xfce session, I received unbelievable long startup times. &lt;a href="http://git.moblin.org/cgit.cgi/uxlaunch/tree/"&gt;Uxlaunch&lt;/a&gt;, the new automatic login application on Moblin 2.1, is totally uncooperative. The Xfce session ends launching many tools and applications twice, two corewatcher-applets, two connman-applets, etc. Uxlaunch will run xfce4-session, but also executes the same desktop files — as it seems after a quick look in the code — from the autostart directory, which is a role taken by the Xfce session manager.&lt;br /&gt;&lt;br /&gt;So I have been looking around to finally throw away some junk.&lt;br /&gt;&lt;br /&gt;Now I have been looking close at the autostart applications since the "all-in-twice" fiasco to get this netbook fast again. Of course you have to know what you do, this kind of tasks isn't open to people without technical skills. First I changed the default "desktop" to Openbox, by downloading the RPM source package, compiling it and putting it inside the uxlaunch configuration file. Then I have been removing some base packages and manually hiding some desktop files to avoid them to autostart — I have been playing with the Hidden/NoDisplay key but it didn't have any effect on uxlaunch so it ended with a &lt;i&gt;chmod 000&lt;/i&gt; command.&lt;br /&gt;&lt;br /&gt;I dropped four packages, &lt;i&gt;kerneloops&lt;/i&gt;, &lt;i&gt;corewatcher&lt;/i&gt; and &lt;i&gt;obexd&lt;/i&gt;/&lt;i&gt;openobex&lt;/i&gt;. I really don't want them around anymore. And I "dropped" seven autostart files, &lt;i&gt;ofono&lt;/i&gt; which depends on a lot of applications, the &lt;i&gt;bkl-orbiter&lt;/i&gt;, and the rest are Moblin panel related applications, &lt;i&gt;bluetooth-panel&lt;/i&gt; which I don't even have on this netbook, &lt;i&gt;carrick-panel&lt;/i&gt; as I use connman-applet which works at least for an automatic connection, two dalson applications &lt;i&gt;dalson-power-applet&lt;/i&gt; and &lt;i&gt;dalston-volume-applet&lt;/i&gt;, and at last &lt;i&gt;moblin-panel-web&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;I kept the gnome-settings-daemon although I have the Xfce settings daemon installed which I do prefer at some extends. And after all this I changed the GTK+ and icon themes through the gconf keys. And what's the conclusion? Moblin is nice, but I managed to munch it and enforce my desktop.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: After running under OpenBox I feel that my remark toward RPM is wrong, I don't know maybe it is the mixed use of OpenGL  that makes the tasks taking ages to react. All in all, the default desktop environment is something where you must know about patience :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-9043600029557058533?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/9043600029557058533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/02/fed-up-with-moblin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/9043600029557058533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/9043600029557058533'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/02/fed-up-with-moblin.html' title='Fed up with Moblin'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2943451780248397917</id><published>2010-01-24T01:22:00.000+01:00</published><updated>2010-09-04T20:55:14.293+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='eatmonkey'/><title type='text'>The download manager is in the wild</title><content type='html'>So it's finally done, it took very long, but it's done. The download manager I once had in mind is taking off &lt;a href="http://goodies.xfce.org/projects/applications/eatmonkey"&gt;into&lt;/a&gt; &lt;a href="http://foo-projects.org/pipermail/xfce/2010-January/026605.html"&gt;the&lt;/a&gt; &lt;a href="http://twitter.com/xfceofficial/status/8126284089"&gt;wildness&lt;/a&gt; :-) Of course it took long because I never did something with it, writing a front-end to wget/curl isn't interesting -- who cares about downloading HTTP/FTP files when the web browser handles it for you anyway -- and reusing GVFS doesn't make sense cause really you don't want to download from your trash:// or whatever proto:// and again only HTTP/FTP is not interesting. Not at all. I have come across &lt;a href="http://urlget.sourceforge.net/"&gt;Uget&lt;/a&gt; and other very good projects but most of them are either writing the code to handle the protocol like HTTP and/or are looking forward to handle more interesting protocols like BitTorrent. I think it's a very tough job that demands too much for a one-maintainer project. Recently I saw the new release of &lt;a href="http://aria2.sourceforge.net/"&gt;aria2&lt;/a&gt; that comes with an XML-RPC interface and this took all my interest during 4 days. I believe this utility is very promising and I had really like to write the good and user-friendly XML-RPC GUI client that it seems to be missing!&lt;br /&gt;&lt;br /&gt;What is so exciting about aria2? In case you know the project you don't have to read, but it is worth mentionning the features of this small  utility. It supports HTTP(s)/FTP but also BitTorrent and Metalinks. It is widely customizable for each specific protocol. It can download one file by splitting it into several pieces and using multiple connections and even mix HTTP URIs with BitTorrent and by the same time upload to BitTorrent peers what has been downloaded through HTTP. So this has to be the perfect candidate to write a nice download manager, hasn't it?&lt;br /&gt;&lt;br /&gt;The client is a very first version that I intended to code name &lt;b&gt;draft&lt;/b&gt; although the release assistant on xfce.org doesn't allow this. Instead it will take the more neutral road of 0.1.0 to 0.1.1 etc until 0.2.0 followed by stable fix releases.&lt;br /&gt;&lt;br /&gt;Why draft? Simple. It's being written with a higher level language than C but not even Vala :-) High-level languages are a great deal when starting a new application, as you can type more and get more, instead of typing like a dog for a rocking hot, well lousy, window. Since I do like Ruby, it's being written in Ruby currently, and it depends on the ruby-gnome2 project for the bindings. To get a picture, a main file to open a window takes 3 lines. Of course the final version is meant to be written in Vala/C, but I still need to convince myself that Vala+libsoup isn't an option that is going to waste too much time. Also at first glance libsoup looks easy to use, it allows to build XML-RPC requests, to request the HTTP bodies and to send messages, but it is not an XML-RPC client and you never know how well the Vala bindings will play. This means extra attention for small things. Starting an application from scratch with such constraints are usually a big time-killer therefore using like in this case an existing XML-RPC client is very important. The GUI is done with Glade in GtkBuilder format and reusing it into a new language will be pretty easy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So what's next? I'll just wait for some feedback see what the audience thinks about it, if at all, and polish here and there. Keep tuned for the next update.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2943451780248397917?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2943451780248397917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2010/01/download-manager-is-in-wild.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2943451780248397917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2943451780248397917'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2010/01/download-manager-is-in-wild.html' title='The download manager is in the wild'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3242065630936337837</id><published>2009-12-23T22:40:00.000+01:00</published><updated>2010-03-27T21:51:35.114+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><title type='text'>Messing up with Vala (again)</title><content type='html'>First some good news. I didn't look close enough into the possibilities offered by Automake 1.11 when I first wrote the post about &lt;a href="http://mmassonnet.blogspot.com/2009/09/build-project-with-vala.html"&gt;building Vala projects&lt;/a&gt;. Automake 1.11 is all about making releases without the end-users having to compile Vala! Just like it is written in the &lt;a href="http://www.gnu.org/software/automake/manual/automake.html#Vala-Support"&gt;Automake documentation&lt;/a&gt;. From now on I will always apply this wherever it is possible.&lt;br /&gt;&lt;br /&gt;I updated the &lt;a href="http://git.xfce.org/bindings/xfce4-vala"&gt;Xfce4 Vala&lt;/a&gt; bindings with libraries from the 4.7 stack. In there I have updated the panel plugin example, and as you can see the &lt;a href="http://git.xfce.org/bindings/xfce4-vala/tree/examples/panel-plugin/Makefile.am"&gt;Automake&lt;/a&gt; file is extremely short. When there is a SOURCES defined with a Vala file, Automake will create targets for each compiled program or library with Vala compilation, and generate one vala.stamp file per target. This has its pros and cons. In the case of the Notes plugin, this disallowed me to have a mix of only C written software and Vala inside the same directory. In reality I used to have a single main file for the panel plugin to compile to C either for the 4.7 version or prior. Automake makes the Vala specific targets visible outside the scope of the "&lt;i&gt;if PANEL47 ... else ... end&lt;/i&gt;" block. I ended up with self-compiled Vala for each target in maintainer mode only, as previously, which is a &lt;a href="http://git.xfce.org/panel-plugins/xfce4-notes-plugin/tree/src/Makefile.am#n155"&gt;small overhead&lt;/a&gt; for the specific targets.&lt;br /&gt;&lt;br /&gt;Other nice thing about Vala is that bindings are just files. I compiled the Notes plugin for the Xfce 4.6 panel on my netbook just to verify everything is alright but unfortunately there were some problems. I bumped the required version of Vala to 0.7.8 which has GTK+ bindings for 2.18 already while I only have GTK+ 2.16 available. The simple thing to do was to download the GTK+ bindings from the version of Vala I used previously and copy them into a location of the project (or system wide).&amp;nbsp; As long as the Vala compiler knows where to pick them up (with "&lt;i&gt;--vapidir=&lt;/i&gt;") it will choose them and not the ones provided by default. This makes it awesomely easy to provide customized bindings for example.&lt;br /&gt;&lt;br /&gt;Vala can always be very time consuming, but I still like it! Just like git merge by the way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3242065630936337837?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3242065630936337837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/12/messing-up-with-vala-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3242065630936337837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3242065630936337837'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/12/messing-up-with-vala-again.html' title='Messing up with Vala (again)'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2853730821597651873</id><published>2009-10-22T17:29:00.004+02:00</published><updated>2009-11-17T18:34:33.688+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Console keyboard layout and beep</title><content type='html'>Two quite annoying bits to remember so lets blog 'hem. Under a tty the keyboard may have a bad layout, I know perfectly changing it under X with &lt;span style="font-weight: bold;"&gt;setxkbmap&lt;/span&gt; but I usually Google for the console. The answer is &lt;span style="font-weight: bold;"&gt;loadkeys&lt;/span&gt;. Running &lt;span style="font-weight: bold;"&gt;loadkeys -d&lt;/span&gt; will print the current map file that gives an idea where to find the maps. Switching the map works like &lt;span style="font-weight: bold;"&gt;loadkeys /lib/kbd/keymaps/.../fr-latin1.map.gz&lt;/span&gt;, in other words just pass the map file. Now to come to the other annoying command to remember is the ability to cut off the beep. It works with &lt;span style="font-weight: bold;"&gt;setterm -blength 0&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: passing the locale directly to loadkeys works (thanks Boris), neither the help output nor the man page mentions this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2853730821597651873?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2853730821597651873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/10/console-keyboard-layout-and-beep.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2853730821597651873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2853730821597651873'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/10/console-keyboard-layout-and-beep.html' title='Console keyboard layout and beep'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4888731218440506171</id><published>2009-10-13T13:07:00.004+02:00</published><updated>2009-10-22T17:40:59.155+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Fast Python debugging with Vim</title><content type='html'>So I just needed to test some lines of Gtk+ code and preferably with Python. I love the interpreter (just as well as irb) but debugging even small Gtk+ pieces is not very attractive in the end. Therefore I jumped into Vim, typed my small script, and then executed the command "&lt;span style="font-weight: bold;"&gt;:%!python -&lt;/span&gt;". Only &lt;span style="font-style: italic;"&gt;problem&lt;/span&gt; is that after the command exits it replaces the content of the Vim buffer with the console output that contains Python debugging messages as well, a quick press on "&lt;span style="font-weight: bold;"&gt;u&lt;/span&gt;" reverts this but maybe there is a cleaner way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4888731218440506171?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4888731218440506171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/10/fast-python-debugging-with-vim.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4888731218440506171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4888731218440506171'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/10/fast-python-debugging-with-vim.html' title='Fast Python debugging with Vim'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-8924632372101005146</id><published>2009-10-11T15:20:00.005+02:00</published><updated>2010-05-30T20:37:18.234+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><title type='text'>MP3 support on Moblin (part 2)</title><content type='html'>&lt;a href="http://mmassonnet.blogspot.com/2009/10/mp3-support-on-moblin-part-1.html"&gt;Part 1&lt;/a&gt; showed the easy way. Now the hard way to get MP3 support is to provide it yourself by building plugins for GStreamer. Having an RPM build environment is a prerequesite. The &lt;a href="http://mmassonnet.blogspot.com/2009/10/rpm-build-environment-on-moblin.html"&gt;earlier blog entry&lt;/a&gt; shows how to set it up and also has an example to build and install libmad which will be useful in this example and I won't repeat it here.&lt;br /&gt;&lt;br /&gt;Download the &lt;a href="http://download1.rpmfusion.org/free/fedora/releases/11/Everything/source/SRPMS/repoview/gstreamer-plugins-ugly.html"&gt;&lt;span style="font-weight: bold;"&gt;gstreamer-plugins-ugly&lt;/span&gt;&lt;/a&gt; source package. Put it inside the SRPMS directory and run the &lt;tt&gt;rpm -i&lt;/tt&gt; command on it to unarchive its content.&lt;br /&gt;&lt;br /&gt;Open a text editor and edit the spec file available under SPECS. The package names vary between Moblin, Fedora and RPM Fusion and this needs to be fixed in the header. And in this example only the plugin libmad will be build so that's why many lines will be commented. In fact the only build dependencies will be libmad, libid3tag and liboil. I have put the &lt;a href="http://snipt.org/noG"&gt;diff&lt;/a&gt; on Snipt. To apply it use the patch command like &lt;tt&gt;patch -p0 &amp;lt; gstreamer-plugins-ugly.spec.diff&lt;/tt&gt;. Don't miss the &lt;a href="http://linux.die.net/man/1/patch"&gt;patch(1)&lt;/a&gt; man page to know about the -p option.&lt;br /&gt;&lt;br /&gt;Now build binary packages with the command &lt;tt&gt;rpmbuild -bb SPECS/gstreamer-plugins-ugly.spec&lt;/tt&gt;. Wait a minute and you should have a ready to install gst-plugins-ugly package within the RPMS directory.&lt;br /&gt;&lt;br /&gt;You can more or less repeat this task for DivX and other video codecs support. For that you'll have to build the GStreamer FFmpeg plugin (gstreamer-ffmpeg source package). &lt;strike&gt;Of course FFmpeg depends on many many libraries and you'll have to build them at first&lt;/strike&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; Regarding FFmpeg, it can be build from the RPM source package without external requirements, in fact it doesn't have any hard dependencies. Or you can even compile the gstreamer-ffmpeg plugin only with the internal FFmpeg sources since it is optionaly linked to an external FFmpeg library. In both cases the provided SPEC files have to be modified.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-8924632372101005146?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/8924632372101005146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/10/mp3-support-on-moblin-part-2.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8924632372101005146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8924632372101005146'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/10/mp3-support-on-moblin-part-2.html' title='MP3 support on Moblin (part 2)'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5806882812997921293</id><published>2009-10-11T13:00:00.002+02:00</published><updated>2010-05-30T20:37:18.235+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><title type='text'>RPM build environment on Moblin</title><content type='html'>I once set up an RPM build environment on my netbook to build missing packages, often small tools. There are many docs to do that, for myself I browsed the &lt;a href="http://fedoraproject.org/wiki"&gt;Fedora project wiki&lt;/a&gt;. If you are looking for RPMish stuff you are in the right place there.&lt;br /&gt;&lt;h4&gt;Preparation&lt;br /&gt;&lt;/h4&gt;The package &lt;span style="font-weight: bold;"&gt;rpmdevtools&lt;/span&gt; provides scripts for the packager, one of them is &lt;tt&gt;rpmdev-setuptree&lt;/tt&gt;. This tool will set up automatically the build directory for keeping source packages, spec files, etc. You can run this command now. Within your home, it will create an &lt;span style="font-style: italic;"&gt;rpmbuild&lt;/span&gt; directory and a hidden &lt;span style="font-style: italic;"&gt;.rpmmacros&lt;/span&gt; file. You can move the rpmbuild directory where ever you want but you will have to fix the variable &lt;span style="font-weight: bold;"&gt;%_topdir&lt;/span&gt; in the hidden rpmmacros file.&lt;br /&gt;&lt;br /&gt;That's already about it.&lt;br /&gt;&lt;h4&gt;Build example&lt;/h4&gt;Lets take a small example to show the use of the RPM build environment. Download the &lt;a href="http://download1.rpmfusion.org/free/fedora/development/source/SRPMS/repoview/libmad.html"&gt;source package libmad&lt;/a&gt; from RPM Fusion. Copy it to the subdirectory SRPMS and then unarchive it with the command &lt;tt&gt;rpm -i SRPMS/libmad-[version].src.rpm&lt;/tt&gt;. And finally you can build the binary packages with the command &lt;tt&gt;rpmbuild -bb SPECS/libmad.spec&lt;/tt&gt;. The &lt;tt&gt;rpmbuild&lt;/tt&gt; command is provided by the &lt;span style="font-weight: bold;"&gt;rpm-build&lt;/span&gt; package.&lt;br /&gt;&lt;br /&gt;By now you can install the packages within the subdirectory RPMS, libmad-[version].rpm and the -devel package, if you wish to build the source package &lt;a href="http://download1.rpmfusion.org/free/fedora/development/source/SRPMS/repoview/madplay.html"&gt;madplay&lt;/a&gt; to play MP3s from command line :-)&lt;br /&gt;&lt;h4&gt;External sources&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://fedoraproject.org/wiki/Packaging:Guidelines"&gt;Packaging guidelines&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://fedoraproject.org/wiki/How_to_create_an_RPM_package"&gt;How to create an RPM package&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://koji.fedoraproject.org/"&gt;Fedora Koji&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://rpmfusion.org/"&gt;RPM Fusion&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5806882812997921293?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5806882812997921293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/10/rpm-build-environment-on-moblin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5806882812997921293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5806882812997921293'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/10/rpm-build-environment-on-moblin.html' title='RPM build environment on Moblin'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5133789407705390255</id><published>2009-10-11T10:45:00.006+02:00</published><updated>2010-05-30T20:37:18.235+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><title type='text'>MP3 support on Moblin (part 1)</title><content type='html'>The easiest way to add support for MP3 is by installing a pre-build RPM package. Fluendo has one available &lt;a href="http://www.fluendo.com/shop/product/fluendo-mp3-decoder/"&gt;for free&lt;/a&gt;. The reason Moblin isn't distributing a decoder is of legal issues, however one might get them by "legal" ways where that term will vary amongst different juridictions. It clearly is an annoying topic to raise up! If you buy a laptop you can expect to have MP3 support since the sellers have ways to collect royalties. At least that's what I learned from the Moblin mailing-list.&lt;br /&gt;&lt;br /&gt;Installing an RPM is done by running the simple command "&lt;tt&gt;rpm -i [package]&lt;/tt&gt;" with the super user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5133789407705390255?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5133789407705390255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/10/mp3-support-on-moblin-part-1.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5133789407705390255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5133789407705390255'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/10/mp3-support-on-moblin-part-1.html' title='MP3 support on Moblin (part 1)'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4971829881357033918</id><published>2009-09-03T01:21:00.016+02:00</published><updated>2009-09-11T18:06:14.795+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Build a project with Vala</title><content type='html'>This post is about using Vala in a project but in the end provide the C code for the releases. I think that this is very essential and that releasing source code to be build from Vala is wrong. Vala will always rewrite the code to GObjects in C, but has already proven that compiling the same code from two different versions of Vala will fail. So when you are doing releases with Vala you will break your releases sooner or later. Another good point is when the Vala code is compiled on top of patched vapi files, doing only C compilation with the releases will drop the requirement to apply them.&lt;br /&gt;&lt;br /&gt;I'll take as example the Autotools, if you are using a different tool-chain you can surely adapt it. The idea is simple, the Vala sources are only compiled in maintainer mode. When you compile the application from the development branch you will usually have a script called &lt;code&gt;autogen.sh&lt;/code&gt; to build the configure script that will automatically be executed with the parameter &lt;code&gt;--enable-maintainer-mode&lt;/code&gt;. When providing the distribution tarball that is created with &lt;code&gt;make distcheck&lt;/code&gt;, the configure script will not be run with that parameter (except if specified by hand) and the source files to build from will be filled in with the C filenames.&lt;br /&gt;&lt;br /&gt;The example below is very generic and can be copy/pasted but should be adapted.&lt;br /&gt;&lt;h4&gt;Autoconf script&lt;/h4&gt;&lt;strong&gt;1.&lt;/strong&gt; The initialization of Automake and the maintainer mode in the autoconf script. The Automake version is checked for 1.11 which is the first version that comes with Vala support. The extra dist-bzip2 argument is there to provide an extra bzipped distribution tarball as you guessed it.&lt;br /&gt;&lt;pre&gt;AM_INIT_AUTOMAKE([1.11 dist-bzip2])&lt;br /&gt;AM_MAINTAINER_MODE()&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;2.&lt;/strong&gt; The check for Vala only on maintainer mode. The AM_PROG_VALAC defines the variable VALAC that can be reused inside the Makefile.am files and accepts an optional version check.&lt;br /&gt;&lt;pre&gt;if test "x$USE_MAINTAINER_MODE" = "xyes" ; then&lt;br /&gt;  AM_PROG_VALAC([0.7.4])&lt;br /&gt;  if test "x$VALAC" = "x" ; then&lt;br /&gt;      AC_MSG_&lt;span style="color: rgb(51, 204, 0);"&gt;ERROR&lt;/span&gt;([Cannot find the "valac" compiler in your PATH])&lt;br /&gt;  fi&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;3.&lt;/strong&gt; It is possible to sum up the build configuration at the end of the autoconf script.&lt;br /&gt;&lt;pre&gt;echo&lt;br /&gt;echo "Build Configuration:"&lt;br /&gt;echo&lt;br /&gt;echo "* Maintainer Mode:        $USE_MAINTAINER_MODE"&lt;br /&gt;if test "x$USE_MAINTAINER_MODE" = "xyes" ; then&lt;br /&gt;echo&lt;br /&gt;echo "    * Vala:               $VALAC"&lt;br /&gt;echo&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;h4&gt;Automake script&lt;/h4&gt;&lt;strong&gt;1.&lt;/strong&gt; The declaration of the Vala sources and their respective compiled C sources.&lt;br /&gt;&lt;pre&gt;product_VALASOURCES = \&lt;br /&gt;  obj1.vala \&lt;br /&gt;  obj2.vala \&lt;br /&gt;  main.vala&lt;br /&gt;&lt;br /&gt;product_VALABUILTSOURCES = $(product_VALASOURCES:.vala=.c) &lt;span style="color: rgb(51, 204, 0);"&gt;product.h&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;2.&lt;/strong&gt; Use the special BUILT_SOURCES variable to build given targets before running a dist with e.g. make distcheck. This usually done in maintainer mode, as in this case to be sure the releases won't have anything to do with Vala.&lt;br /&gt;&lt;pre&gt;if MAINTAINER_MODE&lt;br /&gt;PACKAGES = --pkg=gtk+-2.0&lt;br /&gt;BUILT_SOURCES = vala.stamp&lt;br /&gt;vala.stamp: $(product_VALASOURCES)&lt;br /&gt;  $(VALAC) --vapidir=$(srcdir) $(PACKAGES) $^ -C -H product.h&lt;br /&gt;  touch $@&lt;br /&gt;endif&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;3.&lt;/strong&gt; The final sources for the product are filled in with the generated Vala sources. The Vala sources are not passed to any SOURCES which is why they are passed to the special EXTRA_DIST variable.&lt;br /&gt;&lt;pre&gt;product_SOURCES = \&lt;br /&gt;  random-source.c \&lt;br /&gt;  random-header.h \&lt;br /&gt;  $(product_VALABUILTSOURCES)&lt;br /&gt;&lt;br /&gt;EXTRA_DIST = $(product_VALASOURCES)&lt;br /&gt;if MAINTAINER_MODE&lt;br /&gt;CLEANFILES = \&lt;br /&gt;  $(BUILT_SOURCES) \&lt;br /&gt;  $(product_VALABUILTSOURCES)&lt;br /&gt;endif&lt;br /&gt;&lt;/pre&gt;&lt;h4&gt;That's it&lt;/h4&gt;There are many existent Vala projects nowadays from where you can pick up new ideas, and this post is just an example amongst many others. The &lt;a href="http://git.xfce.org/bindings/xfce4-vala/tree/examples/autotools"&gt;full example&lt;/a&gt; is available in the xfce4-vala bindings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; I corrected some mistakes seen in &lt;span style="color: rgb(51, 204, 0);"&gt;green&lt;/span&gt; in the script portions. If VALAC is unset the configure script must quit otherwise the resulting Makefiles will have empty commands instead of /usr/bin/valac. Also the generated header file must be passed to product_VALABUILTSOURCES otherwise it would have been left out from distributions as it wans't passed to any product_SOURCES nor EXTRA_DIST variables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4971829881357033918?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4971829881357033918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/09/build-project-with-vala.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4971829881357033918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4971829881357033918'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/09/build-project-with-vala.html' title='Build a project with Vala'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2726631724371980820</id><published>2009-07-28T12:09:00.008+02:00</published><updated>2009-07-29T10:14:30.968+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Slim dropped from the Debian archive</title><content type='html'>I can make it official now, the Debian package Slim is going to be removed from their archive, even though the bugs are fixed for both Debian stable and unstable, in the end the package has to be taken off where that part of that story is fuzzy.&lt;br /&gt;&lt;br /&gt;Now it is time to switch to qingy or gdm... or xdm.&lt;br /&gt;&lt;br /&gt;As of a last effort I updated the two packages and put them on &lt;a href="http://alioth.debian.org/~mmassonnet-guest/"&gt;Alioth&lt;/a&gt;. Check the changes files if you want more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2726631724371980820?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2726631724371980820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/07/slim-dropped-from-debian-archive.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2726631724371980820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2726631724371980820'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/07/slim-dropped-from-debian-archive.html' title='Slim dropped from the Debian archive'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2182337657993963085</id><published>2009-07-12T23:41:00.003+02:00</published><updated>2010-03-27T21:51:35.114+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Notes, notebook, tabs</title><content type='html'>The notes plugin features a notebook since the port to Xfce 4.4 and in the last release I hide the tabs and gave a try to a new navigation bar. Seems you like the tabs so no worries it will be back in the next release.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update&lt;/strong&gt;: &lt;a href="http://svn.xfce.org/index.cgi/goodies?view=revision&amp;revision=7717"&gt;Revision 7717&lt;/a&gt; has an option to show the tabs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2182337657993963085?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2182337657993963085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/07/notes-notebook-tabs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2182337657993963085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2182337657993963085'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/07/notes-notebook-tabs.html' title='Notes, notebook, tabs'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5298950152405200853</id><published>2009-06-15T14:18:00.004+02:00</published><updated>2009-06-15T14:25:53.882+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Run command, not alias</title><content type='html'>To execute a command and not its alias there are some ways. I just figured the nicest out there.&lt;br /&gt;&lt;br /&gt;Say grep is aliases to "&lt;code&gt;grep --color -Hn&lt;/code&gt;". This can be annoying in case the output must be send through a pipe to another command because it always prints the source and the line number.&lt;br /&gt;&lt;br /&gt;One way of avoiding the alias is to pass the full path, e.g. "&lt;tt&gt;/bin/grep&lt;/tt&gt;". Another way is to quote the command e.g. "&lt;tt&gt;'grep'&lt;/tt&gt;" and the quicker and nicest way is to put the two quotes before the command e.g. "&lt;tt&gt;''grep&lt;/tt&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5298950152405200853?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5298950152405200853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/06/run-command-not-alias.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5298950152405200853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5298950152405200853'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/06/run-command-not-alias.html' title='Run command, not alias'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2611424475159968976</id><published>2009-05-08T22:48:00.002+02:00</published><updated>2009-05-08T23:05:11.279+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Making use of loop devices on Linux</title><content type='html'>This post is about the loop devices on Linux.&lt;br /&gt;&lt;br /&gt;The loop devices are a possibility under Linux to mount regular files. It is often used to mount an iso image, but it can also be used to play with Raid, LVM, or a file system.&lt;br /&gt;&lt;br /&gt;To use the loop devices it is mandatory to load the loop module: ”&lt;code&gt;modprobe loop&lt;/code&gt;”. This will create the loop devices /dev/loop0, /dev/loop1, etc.&lt;br /&gt;&lt;br /&gt;Remark: work inside a tmpfs like /dev/shm to gain speed when running tests.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;File-System&lt;/b&gt;&lt;br /&gt;Creating a file-system out of a file, plus being able to mount it, works as follow:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a file of a hundred mega-bytes:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;dd bs=1M count=100 if=/dev/zero of=output&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Format the file:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mkfs.ext2 output&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mount the file with a loop device:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mkdir loop-mount&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;mount -o loop output loop-mount&lt;/code&gt;&lt;/li&gt;&lt;li&gt;When using the option ”&lt;code&gt;-o loop&lt;/code&gt;” the first available loop device is taken. It is possible to select the loop device to use by giving the option ”&lt;code&gt;-o loop=/dev/loop0&lt;/code&gt;”.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;To check that the device is perfectly mounted, run ”&lt;code&gt;mount&lt;/code&gt;”. It displays a line like that one:&lt;br /&gt;&lt;pre&gt;/dev/shm/output on /dev/shm/loop-mount type ext2 (rw,loop=/dev/loop0)&lt;/pre&gt;It is possible to create files and directories within loop-mount, then unmount the device and remount it back.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Raid&lt;/b&gt;&lt;br /&gt;Using loop devices is very convenient when training with Raid for instance. To create usable devices for a Raid, it works as for a file-system, except that instead of mounting the file as a loop device they must be setup with the tool ”&lt;code&gt;losetup&lt;/code&gt;” that is part of the Linux utilities. In fact, it is not possible to prepare devices for a Raid that are already mounted, and &lt;code&gt;losetup&lt;/code&gt; makes a loop device in /dev/ ready to be mounted in a way that it is possible to run ”&lt;code&gt;mount /dev/loop0 mount-point&lt;/code&gt;” instead of ”&lt;code&gt;mount -o loop file mount-point&lt;/code&gt;”.&lt;br /&gt;&lt;br /&gt;Preparing a Raid5 works as follow:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create 3 files:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;dd bs=1M count=100 if=/dev/zero of=0&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;dd bs=1M count=100 if=/dev/zero of=1&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;dd bs=1M count=100 if=/dev/zero of=2&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Format the files:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mkfs.ext2 0&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;mkfs.ext2 1&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;mkfs.ext2 2&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Setup loop devices:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;losetup /dev/loop0 0&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;losetup /dev/loop1 1&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;losetup /dev/loop2 2&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Prepare the Raid5 device:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/loop0 /dev/loop1 /dev/loop2&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mount the Raid5 device:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;mount /dev/md0 mount-point&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2611424475159968976?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2611424475159968976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/05/making-use-of-loop-devices-on-linux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2611424475159968976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2611424475159968976'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/05/making-use-of-loop-devices-on-linux.html' title='Making use of loop devices on Linux'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2544480318317256090</id><published>2009-04-17T11:48:00.007+02:00</published><updated>2010-05-30T20:37:18.236+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><title type='text'>Moblin Day 1+2</title><content type='html'>It's the second time I'm testing &lt;a href="http://www.moblin.org/"&gt;Moblin&lt;/a&gt;. The first time was with Alpha1, but now with Alpha2 I decided to install it. One main reason I kept Alpha2 was because of the availability of &lt;a href="http://www.xfce.org/"&gt;Xfce 4.6&lt;/a&gt; ;-) Apart from that the experience is really great and it does boot fast. I turn the netbook on and after 1-2 seconds I already see an image on top of the Xorg session. It feels like hibernation but it's not :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The first day&lt;/span&gt;&lt;br /&gt;I stumbled over the &lt;a href="https://bugzilla.moblin.org/show_bug.cgi?id=1088"&gt;bug #1088&lt;/a&gt; when I entered my key for the Wifi access. Of course I obviously had to type it wrong... One way to fix this was to clean up the configuration file of connman, within &lt;span style="font-style: italic;"&gt;/var/lib/connman/&lt;/span&gt;. Otherwise nothing alarming.&lt;br /&gt;&lt;br /&gt;After that I themed a little bit the desktop, like the awesome Nodoka-Midnight theme. Next I quickly figured the package manager, yum, and I headed toward a system upgrade. This step took a very long time, up to 3 hours. Alpha2 is as of today around 1 month old and there were over 300 packages to download. That took around 700 actions for yum like installing, updating and cleaning up.&lt;br /&gt;&lt;br /&gt;Once the upgrade was done I installed the necessary devel packages to compile &lt;span&gt;xfce4-gvfs-mount&lt;/span&gt; and &lt;span&gt;xfce4-clipman-plugin&lt;/span&gt; both respectively from git and subversion. The &lt;span style="font-style: italic;"&gt;Install/Remove Software&lt;/span&gt; GUI (gpk-application) is very nice, better than what I knew from Synaptic. Amongst the Moblin packages I found &lt;span style="font-style: italic;"&gt;xfce-software-development&lt;/span&gt; which eases a little bit the selection of packages to install.&lt;br /&gt;&lt;br /&gt;Well, one issue at the post upgrade was the default background disappearing, so I found out that it came from the package &lt;span style="font-style: italic;"&gt;xfce4-desktop-branding-moblin&lt;/span&gt;. I'm kinda attached to that background now, I like the electronic-circuit like board, so I managed to copy/paste it. It's called &lt;span style="font-style: italic;"&gt;&lt;a href="http://2.bp.blogspot.com/_wcTww_e0VUY/Sehx6j4NuQI/AAAAAAAAAKw/sZipyKEhXkg/s1600-h/moblin-energy-blue-1024x600.png"&gt;moblin-energy-blue-1024x600.png&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The second day&lt;/span&gt;&lt;br /&gt;A few issues:&lt;br /&gt;- Firefox crashes "a lot".&lt;br /&gt;- The gvfs-fuse-daemon is missing.&lt;br /&gt;- Impossible to play MP3 or Divx.&lt;br /&gt;&lt;br /&gt;I dunno how to fix Firefox and there are no appearing bug reports. I tried out the official binary provided by Mozilla and it crashes the same ways. GMail is crashing, Twitter is crashing when reloading the page after giving an up-to-date state, https on xfce.org, etc. So this is annoying. I will try to get a backtrace and install Midori since Moblin has a recent version of WebKit GTK+.&lt;br /&gt;&lt;br /&gt;Now about the Gvfs topic, I was first fighting with an old build of xfce4-gvfs-mount on my home partition to finally notice that the gvfs mount was useless as gvfs-fuse-daemon was missing by default on the system. This means I can only access the files the hard way by using the gvfs programs to copy, list or delete files. I had to install the package &lt;span style="font-style: italic;"&gt;gvfs-fuse&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;And finally, the Moblin repository doesn't provide decoders for MP3 or Divx. Those are provided with the set of ugly plugins for GStreamer and is not available.&lt;br /&gt;Hence I downloaded and installed the following packages from Fedora 10: &lt;i&gt;a52dec&lt;/i&gt;, &lt;i&gt;libmad&lt;/i&gt;, &lt;i&gt;libmpeg2&lt;/i&gt;, &lt;i&gt;lame-libs&lt;/i&gt;, &lt;i&gt;libmpeg3&lt;/i&gt; and of course &lt;i&gt;gstreamer-plugins-ugly&lt;/i&gt;. The gstreamer-plugins-ugly package depends on a little more libraries but I didn't find them and I am already covered with the libs I downloaded.&lt;br /&gt;&lt;br /&gt;Last but not least, I miss Wesnoth and the Xfce Power Manager :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: &lt;a href="http://picasaweb.google.com/mike.massonnet/Moblin"&gt;Screenshots&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: Actually to get Totem to read Divx I needed to install gstreamer-ffmpeg! I have a dozen of rpms in a directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2544480318317256090?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2544480318317256090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/04/moblin-day-12.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2544480318317256090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2544480318317256090'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/04/moblin-day-12.html' title='Moblin Day 1+2'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3543300772539414568</id><published>2009-04-16T09:22:00.002+02:00</published><updated>2009-04-21T14:21:52.151+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Xfce Clipman Plugin 1.0.0</title><content type='html'>This post is about the latest release of Xfce Clipman Plugin, a Clipboard Manager for the Xfce desktop. I turn it more technical than for end-users. I hope people interested into GTK+, GObjects or Xfce panel plugins will like to read it. The release is going to happen very soon now.&lt;br /&gt;&lt;br /&gt;The first major change concerns the plugin being entirely rewritten by using GObjects and Xfconf, this means cleaner, better understandable, maintainable code, etc. There is the "main function" (for sack of clarity) and four objects. A collector which listens to clipboard changes and put them in the history, the history is also an object, a menu (on top of GtkMenu) that displays the history and allows to clear it, and finally another object which is part of a new feature for the clipboard manager.&lt;br /&gt;&lt;br /&gt;Now having my objects it's just about instantiating them in the main function and binding them to Xfconf. If there is something missing in an object it is just about modifying a particular aspect of it.&lt;br /&gt;&lt;br /&gt;The goal of using Xfconf is to have a less cluttered code for settings, and to make good use of property bindings against the objects. For instance, the object History has a maximum count of items, and being bind against Xfconf, it is possible to run an external command with xfconf-query to change that setting, without having to call a public setter function. Binding a property is a one function call.&lt;br /&gt;&lt;br /&gt;Following this major change is the settings dialog. I have written it from scratch with Glade, a UI designer for GTK+, by which I can easily modify and beautify the dialog without having to fight with lines of code several hours a day. In fact it takes a few seconds to change a label and up to 5 minutes to design a goddamn dialog. Glade makes an increased use of memory however, but stop thinking of this when you know you have 1MB times 1000 installed on your system — I have currently 1GB on a netbook and 2GB on a quite-fanless Atom-based workstation but I use only around 300MB in general. If you still fear about having an application that uses only 2 but 5MB with Glade, well I can't help you! From what I have read, the built-in UI designer of GTK+, named GtkBuilder, needs less memory, but the Glade to GtkBuilder conversions are going to happen with Xfce 4.8.&lt;br /&gt;&lt;br /&gt;Now about the new feature introduced into this major release. It is called "Actions" which is the fourth object by the way. An action is a match between a text selection and regexes to let you execute specific commands. For example the action "Image" can match text with image filenames and let you choose commands between "View with Ristretto" and "Edit with Gimp". I wrote something simple in the settings dialog to add new actions that is inspired from the Thunar User Custom Actions interface.&lt;br /&gt;&lt;br /&gt;Finally, I made other changes that are more geeky than useful, like I made a bundle out of the plugin. The plugin is now installed under the binary directory instead of the common place holder for panel plugins but can still be added inside a panel with the "Add Item" menu action. As you might understand, it can be executed as well now, and if you do so it will run inside the notification area. An item is installed in the applications menu to be able to start it (under the category Utility), and as it is possible to run outside the panel, I added a autostart file.&lt;br /&gt;&lt;br /&gt;That's it already. If you have questions, don't mind. If you wanna discuss the Actions/regex feature go ahead. More importantly, I hope you'll take a glimpse at the code.&lt;br /&gt;&lt;br /&gt;If you are interested into panel plugins, have a look at the &lt;a href="http://wiki.xfce.org/#developing_goodies"&gt;wiki&lt;/a&gt;. The panel plugins amongst the goodies are a good way to get to know code and start with something.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: &lt;a href="http://foo-projects.org/pipermail/xfce/2009-April/025195.html"&gt;ANN: xfce4-clipman-plugin version 1.0.0 released&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3543300772539414568?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3543300772539414568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/04/xfce-clipman-plugin-100.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3543300772539414568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3543300772539414568'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/04/xfce-clipman-plugin-100.html' title='Xfce Clipman Plugin 1.0.0'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-8723682257253616548</id><published>2009-04-10T08:23:00.005+02:00</published><updated>2009-04-10T10:08:15.843+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>IMAP Client</title><content type='html'>Lately I got a very broken GMail in my mail client &lt;a href="http://www.claws-mail.org/"&gt;Claws&lt;/a&gt;. I didn't check my mails for a few days and I got about 300 mails waiting for me. When I did the checkout it stopped at about 150 mails, then at around 250, reporting an error about timeout. Finally I got all the mails, but all the on-coming times I downloaded the mails it always restarted at 125 of 128 mails instead of 0 of 8 mails... The mail notification applets were also kind-of broken. And all of this was by using POP.&lt;br /&gt;&lt;br /&gt;So I thought about un/rechecking that option, and actually I had the opportunity to switch that thing off and use IMAP instead. Which I did.&lt;br /&gt;&lt;br /&gt;First impression ever, it's awesome. All the actions done in any IMAP client is synchronised in the web client, would it be moving a mail to a directory, create a directory, or mark a mail as unread. However, to be working perfectly with the web interface GMail, the client has to be tweaked.&lt;br /&gt;&lt;br /&gt;When I started to use Claws as usual, I figured some problems, not that annoying, for instance that it creates its own Sent, Draft and Queued directories -- apparently I can't get rid of them. However more annoying, when composing a mail, as you compose, it saves a copy to Queued, and every time it saves a new copy the old one is archived in GMails "All messages". This means for long mails that you can have a thread of around 20 copies of your mail being more and more complete. I looked around in Claws, every little corner, but I didn't find anything. The only option left is to place the Sent, Draft and Queued messages in another directory. First I tried to put them in the predefined directories of GMail but it kept on putting them in the default place holders. Then I thought I had not really time to deal with these annoyances, I switched to another mail client. While writing this entry, I "debugged" and figured I can save the messages to a local directory, just like it works with the &lt;span style="font-style: italic;"&gt;other mail&lt;/span&gt; client. In the end, I have a working and good mail client with Claws.&lt;br /&gt;&lt;br /&gt;So today I retried &lt;a href="http://www.mozillamessaging.com/en-US/thunderbird/"&gt;Thunderbird&lt;/a&gt;, and with respect to IMAP, it does a real good job. It is possible to trash the mails permanently which means for GMail there is always a copy in "All messages". In fact I don't need yet another Trash directory in my mail client, as it is only a new and useless directory for the web client. More importantly, for Sent messages it can place it where I want and it works. And what I used in Claws to send messages with another email address -- creating an SMTP only account -- can be found in the "Identity Settings" of an account.&lt;br /&gt;&lt;br /&gt;Which one to choose now? Claws has a status icon for the notification area, and Thunderbird -- even if possible -- will either come with a built-in one or provided by an extension perhaps with bugs. I will try one and the other I guess, and keep the one I finally prefer. It's IMAP now anyway, all what I do in one client is seen in the other clients ;-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: Now this can sound surprising, Thunderbird is able to load a directory of 95000+ mails in a second (of course you have to wait to download them all the first time). Claws is lagging at this a lot, even with less like 40000+, it takes about a minute and more to display the mails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-8723682257253616548?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/8723682257253616548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/04/imap-client.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8723682257253616548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8723682257253616548'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/04/imap-client.html' title='IMAP Client'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7086349234070620715</id><published>2009-03-11T23:06:00.007+01:00</published><updated>2010-09-09T09:51:32.684+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Refresh the Xfce background</title><content type='html'>In Xfce 4.4 there was a little hack that worked to refresh the background. I managed to get the same result for Xfce 4.6 with the following "hack":&lt;br /&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ] ; then&lt;br /&gt;        . ${HOME}/.dbus/session-bus/`ls -rt ${HOME}/.dbus/session-bus/ | tail -1`&lt;br /&gt;        export DBUS_SESSION_BUS_ADDRESS&lt;br /&gt;fi&lt;br /&gt;PATH=/usr/local/bin:${PATH}&lt;br /&gt;&lt;/span&gt;MONITOR=${1:-0}&lt;br /&gt;PROPERTY="/backdrop/screen0/monitor${MONITOR}/image-path"&lt;br /&gt;IMAGE_PATH=`xfconf-query -c xfce4-desktop -p ${PROPERTY}`&lt;br /&gt;xfconf-query -c xfce4-desktop -p ${PROPERTY} -s ""&lt;br /&gt;xfconf-query -c xfce4-desktop -p ${PROPERTY} -s "${IMAGE_PATH}"&lt;br /&gt;&lt;/pre&gt;Now when will this be useful? Barely never. Still enjoy it :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: script snipped updated to run within a cronjob.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7086349234070620715?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7086349234070620715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/03/refresh-xfce-background.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7086349234070620715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7086349234070620715'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/03/refresh-xfce-background.html' title='Refresh the Xfce background'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3442993233657139968</id><published>2009-03-11T08:58:00.006+01:00</published><updated>2010-03-27T21:51:35.115+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='vala'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Vala Notes Plugin</title><content type='html'>Or better, there is &lt;a href="http://www.vala-project.org/"&gt;Vala&lt;/a&gt; in the &lt;a href="http://goodies.xfce.org/projects/panel-plugins/xfce4-notes-plugin"&gt;Notes plugin&lt;/a&gt;. It's been a long time I thought about a hypertext view widget for the notes plugin, so it can highlight links and open them on click, and doing this in pure C/GObject is quite a PITA because there is a lot to take care about (more lines of code), and then you didn't start thinking about the whole functions of the object. Now this is retro with the presence of Vala. I played with Vala some time ago, doing some very rudimentary hello worlds, and I never had a chance to really write something in Vala, untill two days ago. I started to write a very dummy object on top of GtkTextView that implements the simple undo/redo feature I wrote inside notes.c and it was very fast and easy to backport from the C code to Vala, and this gave me a very good start with Vala (now that was one Vala too much, wasn't it? anyway...). Yesterday I added skel functions to support hyperlinks which I finished today. Finally I &lt;a href="http://svn.xfce.org/index.cgi/goodies?view=revision&amp;amp;revision=6881"&gt;integrated&lt;/a&gt; the Vala object inside the notes plugin in a way that it compiles to C code when you are in MAINTAINER_MODE, which means for end-users they won't need Vala but only gcc.&lt;br /&gt;&lt;br /&gt;Now for those interested into Vala, here is the file I played with: &lt;a href="http://merlin.ugent.be/%7Emike/tmp/hypertextview.vala"&gt;&lt;code&gt;hypertext.vala&lt;/code&gt;&lt;/a&gt;. This source contains at the end of the HypertextView class, another class that contains a main function so it can be compiled to a binary. This proves how easy it is to test a class, and all you need to do is to run the following command: &lt;code&gt;valac --pkg=gtk+-2.0 hypertextview.vala &amp;amp;&amp;amp; ./hypertextview&lt;/code&gt;.&lt;br /&gt;There are many samples &lt;a href="http://git.gnome.org/cgit/vala-tests/tree/tests/examples"&gt;available&lt;/a&gt; with the source of Vala and on &lt;a href="http://live.gnome.org/Vala#head-9c728d151a2a0483d4f3b5837e5b545df9d8499d"&gt;Gnome Live&lt;/a&gt;. The &lt;a href="http://live.gnome.org/Vala/Tutorial"&gt;tutorial&lt;/a&gt; covers important points, the &lt;a href="http://live.gnome.org/Vala/FAQ"&gt;FAQ&lt;/a&gt; too, but the &lt;a href="http://www.vala-project.org/doc/vala-draft/"&gt;documentation&lt;/a&gt; is a little less interesting if you already know &lt;a href="http://library.gnome.org/devel/gobject/unstable/"&gt;GObject&lt;/a&gt; IMHO.&lt;br /&gt;One important thing I learned about Vala was the difference between the &lt;a href="http://live.gnome.org/Vala/Tutorial#head-64f47493a7181152df5d9db98a2f998ef6147163"&gt;out and ref arguments&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have a hard time at finding the right method definitions, look into &lt;code&gt;/usr/share/vala/vapi/gtk+-2.0.vapi&lt;/code&gt; for instance for GTK+. There you can quickly find any function name you now from the C API, for instance if you want to have a look at &lt;code&gt;gtk_text_view_get_iter_at_location&lt;/code&gt; search for &lt;code&gt;get_iter_at_location&lt;/code&gt;. By scrolling up you will see that you are in the class &lt;code&gt;Gtk.TextView&lt;/code&gt;. Vapis are very easy to read.&lt;br /&gt;&lt;br /&gt;I am very interested into porting the objects of the &lt;a href="http://goodies.xfce.org/projects/applications/xfmpc"&gt;Xfmpc&lt;/a&gt; project to Vala, and then start trying out the &lt;a href="http://live.gnome.org/Vala/TypeModules"&gt;plugin sample&lt;/a&gt; (loading modules during runtime)... I hope my fellow will like that idea :-)&lt;br /&gt;&lt;br /&gt;Now for the people interested to develop Vala classes with VIM I have some tips. First follow &lt;a href="http://live.gnome.org/Vala/Vim"&gt;these instructions&lt;/a&gt; in order to get Vala syntax. Then I suggest you install the &lt;a href="http://vim-taglist.sourceforge.net/installation.html"&gt;Tag List plugin&lt;/a&gt;, and to get it working with Vala you will need to add the following lines to your vimrc configuration:&lt;br /&gt;&lt;pre&gt;" Work-around Tag List&lt;br /&gt;let tlist_vala_settings='c#;d:macro;t:typedef;n:namespace;c:class;'.&lt;br /&gt;  \ 'E:event;g:enum;s:struct;i:interface;'.&lt;br /&gt;  \ 'p:properties;m:method'&lt;/pre&gt;If you don't know about folding then you miss a lot of VIM culture, in fact you can fold/unfold brackets by going over a bracket and typing &lt;code&gt;zf%&lt;/code&gt; in command mode. And that's all folk, thanks for reading til here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3442993233657139968?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3442993233657139968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/03/vala-notes-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3442993233657139968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3442993233657139968'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/03/vala-notes-plugin.html' title='Vala Notes Plugin'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7382279295016448978</id><published>2009-03-05T17:54:00.010+01:00</published><updated>2009-03-06T14:25:00.917+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>./shoutcast-radio</title><content type='html'>Just like my older post about a "./jamendo-player", this time I am definitely more interested into good online radio stations. And SHOUTcast is the best that comes to my mind! It's been there for years, Winamp is the best music experience ever, and both have been promoting each other even though I don't know/remember what their relation are.&lt;br /&gt;&lt;br /&gt;The good things about their widget is that it saves the recent radios and it also has a list of favorites &lt;span style="text-decoration:line-through;"&gt;but this one isn't working as-is with the code&lt;/span&gt;. It is possible to search for radios and to browse by genre. All of this stuff is saved under &lt;code&gt;~/.macromedia/Flash_Player/#SharedObjects/&amp;lt;random&amp;gt;/ct.yourminis.com/&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-25430ee2ce5b21ad" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v22.nonxt6.googlevideo.com/videoplayback?id%3D25430ee2ce5b21ad%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329933468%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D30F9A2A2EEDB723B19768460721A1EDAAF583002.108EDF7BBBFEC25E8A3C765212BC5E596484CE6F%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D25430ee2ce5b21ad%26offsetms%3D5000%26itag%3Dw160%26sigh%3DDQAKVym56kiLhMGnU0z8PtxZMGE&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v22.nonxt6.googlevideo.com/videoplayback?id%3D25430ee2ce5b21ad%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329933468%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D30F9A2A2EEDB723B19768460721A1EDAAF583002.108EDF7BBBFEC25E8A3C765212BC5E596484CE6F%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D25430ee2ce5b21ad%26offsetms%3D5000%26itag%3Dw160%26sigh%3DDQAKVym56kiLhMGnU0z8PtxZMGE&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So of course I couldn't resist but embed their available Flash widget inside a window :-) Again the code is very short, it's just about loading — well not a URL this time — an HTML string cause the Flash application all alone doesn't work out, it needs parameters passed outside. I didn't include the callbacks to handle "_blank" links, which means it is not possible to open any links, but this is useless as the widget is fully functionnal.&lt;br /&gt;&lt;br /&gt;You can download the source code &lt;a href="http://merlin.ugent.be/%7Emike/tmp/shoutcast-widget.tar.bz2"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are some installation instructions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Look into main.c&lt;/li&gt;&lt;li&gt;The first line of main.c is a comment with a command to compile&lt;/li&gt;&lt;li&gt;If you want a menu item in you desktop menu:&lt;ol&gt;&lt;li&gt;Edit the Exec keys in &lt;code&gt;shoutcast-radio.desktop&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Copy the desktop file to &lt;code&gt;${XDG_DATA_HOME:-~/.local/share}/applications&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;If you don't have a gnome-radio icon, copy gnome-radio.png to &lt;code&gt;~/.icons/&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;By the way, I'm linking on the Xfce blog. Why? Cause there might be Xfce users interested into a simple to compile radio application. At least I hope some of you will enjoy it, more than the jamendo thingy :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; The favorites actually do work, it just that the favorite button isn't always clickable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7382279295016448978?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=25430ee2ce5b21ad&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7382279295016448978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/03/shoutcast-radio.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7382279295016448978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7382279295016448978'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/03/shoutcast-radio.html' title='./shoutcast-radio'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4432014174756486313</id><published>2009-02-19T11:56:00.008+01:00</published><updated>2010-03-27T21:51:35.115+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Colored Notes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_wcTww_e0VUY/SZ0_DwTYJ6I/AAAAAAAAAJM/5TKqY0Bxuo4/s1600-h/notes-plugin-colored.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 201px;" src="http://3.bp.blogspot.com/_wcTww_e0VUY/SZ0_DwTYJ6I/AAAAAAAAAJM/5TKqY0Bxuo4/s320/notes-plugin-colored.png" alt="" id="BLOGGER_PHOTO_ID_5304465269850646434" border="0" /&gt;&lt;/a&gt;I passed the last night to hack on a gtkrc snippet for the Notes plugin, because I couldn't find my sleep well. So being borred I killed a little bit the time to have a colored notes window :-) I know it was possible since always, I just never carred to do it. Using colors showed one annoying problem which are the icons. They don't fit always once you go away from the default gtk theme colors. In consequence I switched them to bold text labels with minus, plus and times. One other thing I didn't succeed with was to theme the menu that is available on the top right corner or Ctrl+M.&lt;br /&gt;&lt;br /&gt;Finally the result is nice.&lt;br /&gt;&lt;br /&gt;The snippet is the following:&lt;br /&gt;&lt;pre&gt;gtk_color_scheme = "notes_fg_color:#E8E58C\nnotes_bg_color:#77741D\nnotes_base_color:#EBE88C\nnotes_text_color:#6B6A4A\nnotes_selected_bg_color:#ACA94E\nnotes_selected_fg_color:#E8E58C"&lt;br /&gt;&lt;br /&gt;style "notes-default"&lt;br /&gt;{&lt;br /&gt;xthickness = 2&lt;br /&gt;ythickness = 2&lt;br /&gt;&lt;br /&gt;fg[NORMAL]          =  @notes_fg_color&lt;br /&gt;fg[ACTIVE]          =  @notes_fg_color&lt;br /&gt;fg[PRELIGHT]        =  @notes_fg_color&lt;br /&gt;fg[SELECTED]        =  @notes_selected_fg_color&lt;br /&gt;fg[INSENSITIVE]     =  shade (3.0,@notes_fg_color)&lt;br /&gt;&lt;br /&gt;bg[NORMAL]          =  @notes_bg_color&lt;br /&gt;bg[ACTIVE]          =  shade (1.0233,@notes_bg_color)&lt;br /&gt;bg[PRELIGHT]        =  mix(0.90, shade (1.1,@notes_bg_color), @notes_selected_bg_color)&lt;br /&gt;bg[SELECTED]        =  @notes_selected_bg_color&lt;br /&gt;bg[INSENSITIVE]     =  shade (1.03,@notes_bg_color)&lt;br /&gt;&lt;br /&gt;base[NORMAL]        =  @notes_base_color&lt;br /&gt;base[ACTIVE]        =  shade (0.65,@notes_base_color)&lt;br /&gt;base[PRELIGHT]      =  @notes_base_color&lt;br /&gt;base[SELECTED]      =  @notes_selected_bg_color&lt;br /&gt;base[INSENSITIVE]   =  shade (1.025,@notes_bg_color)&lt;br /&gt;&lt;br /&gt;text[NORMAL]        =  @notes_text_color&lt;br /&gt;text[ACTIVE]        =  shade (0.95,@notes_base_color)&lt;br /&gt;text[PRELIGHT]      =  @notes_text_color&lt;br /&gt;text[SELECTED]      =  @notes_selected_fg_color&lt;br /&gt;text[INSENSITIVE]   =  mix (0.675,shade (0.95,@notes_bg_color),@notes_fg_color)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;widget "xfce4-notes-plugin*" style:highest "notes-default"&lt;br /&gt;widget "xfce4-notes-plugin*.*GtkMenu*" style:highest "notes-default"&lt;br /&gt;widget "xfce4-notes-plugin*.*GtkMenuItem*" style:highest "notes-default"&lt;br /&gt;# TODO Set the colors for the menu&lt;br /&gt;&lt;/pre&gt;The shade() and mix() functions are specific to either Clearlooks or Aurora. But this can be fixed. Actually I didn't include a default rc style inside the notes plugin, in fact this snippet can be saved for instance as notesrc inside your current theme and you add &lt;span style="font-weight: bold;"&gt;include "notesrc"&lt;/span&gt; in the gtkrc file.&lt;br /&gt;&lt;br /&gt;All for the sharing, please enjoy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; The shade() and mix() functions are a feature from GTK+ 2.10 just like gtk_color_scheme.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; I released a new version &lt;a href="http://foo-projects.org/pipermail/xfce/2009-February/024891.html"&gt;1.6.4&lt;/a&gt; that has a configurable background color setting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4432014174756486313?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4432014174756486313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/02/colored-notes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4432014174756486313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4432014174756486313'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/02/colored-notes.html' title='Colored Notes'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wcTww_e0VUY/SZ0_DwTYJ6I/AAAAAAAAAJM/5TKqY0Bxuo4/s72-c/notes-plugin-colored.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4578880586444888880</id><published>2009-01-19T17:28:00.002+01:00</published><updated>2009-01-19T17:34:15.427+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Fix bitmap^Whorrible fonts</title><content type='html'>You have horrible fonts in Firefox and don't know how to fix it?  It is fairy simple:&lt;br /&gt;&lt;pre&gt;cd /etc/fonts/conf.d&lt;br /&gt;cp ../conf.avail/70-no-bitmaps.conf .&lt;br /&gt;&lt;/pre&gt;And this is it.  Restart X.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4578880586444888880?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4578880586444888880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/01/fix-bitmapwhorrible-fonts.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4578880586444888880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4578880586444888880'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/01/fix-bitmapwhorrible-fonts.html' title='Fix bitmap^Whorrible fonts'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-6539653727392592969</id><published>2009-01-09T16:39:00.005+01:00</published><updated>2009-01-15T00:47:21.167+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>./jamendo-player</title><content type='html'>I was enough bored from my (small) music collection that I wanted to listen to something new, without actually caring what it is.  I know Jamendo has a big load of music with artists uploading music under creative commons licence.  So I went on their &lt;a href="http://www.jamendo.com/"&gt;website&lt;/a&gt; to have a look, and they have "widgets".  They are a small flash application not bigger than 200x300, but I actually didn't find any link to open such a widget inside an external window, except some lost links on some pages.  In conclusion it was enough annoying to get an external player that I fired up vim and wrote a 20 lines C program.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* gcc `pkg-config --cflags --libs webkit-1.0` main.c -o jamendo-player */&lt;br /&gt;&lt;br /&gt;#include &amp;lt;gtk/gtk.h&amp;gt;&lt;br /&gt;#include &amp;lt;webkit/webkit.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define URL_FORMAT "http://widgets.jamendo.com/fr/playlist/?playertype=2008&amp;playlist_id=%s"&lt;br /&gt;&lt;br /&gt;int main (int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;  GtkWidget *window;&lt;br /&gt;  GtkWidget *webview;&lt;br /&gt;  gchar *url;&lt;br /&gt;  gchar *playlist_id = argv[1];&lt;br /&gt;  if (argc &amp;lt; 2)&lt;br /&gt;    {&lt;br /&gt;      playlist_id = g_strdup ("65196");&lt;br /&gt;      g_message ("Loading the default playlist %s", playlist_id);&lt;br /&gt;    }&lt;br /&gt;  url = g_strdup_printf (URL_FORMAT, playlist_id);&lt;br /&gt;  gtk_init (&amp;argc, &amp;argv);&lt;br /&gt;  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);&lt;br /&gt;  g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL);&lt;br /&gt;  gtk_window_set_icon_name (GTK_WINDOW (window), "multimedia-player");&lt;br /&gt;  gtk_window_set_title (GTK_WINDOW (window), "Jamendo Player");&lt;br /&gt;  gtk_window_set_resizable (GTK_WINDOW (window), FALSE);&lt;br /&gt;  webview = webkit_web_view_new ();&lt;br /&gt;  gtk_widget_set_size_request (webview, 200, 300);&lt;br /&gt;  gtk_container_add (GTK_CONTAINER (window), webview);&lt;br /&gt;  webkit_web_view_open (WEBKIT_WEB_VIEW (webview), url);&lt;br /&gt;  gtk_widget_show_all (window);&lt;br /&gt;  gtk_main ();&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The result is pleasing, the flash application has nice colors, and is something I would never be able to do with GTK+ :-)&lt;br /&gt;&lt;br /&gt;If you like the code, feel free to extend it and send patches, I will enjoy any contribution.  For now I will just leave a desktop file inside my applications directory to open it when I am bored again of my music :-p&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; I hacked a little on the program to handle the links inside the Flash application. This means it is possible to change the playlist, which was one the thing that started to annoy me very much.&lt;br /&gt;&lt;br /&gt;However, this update requires WebKit 1.0.3 and GLib 2.16.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-53e8103982ece258" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v22.nonxt4.googlevideo.com/videoplayback?id%3D53e8103982ece258%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329933468%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D60617DDC87EFCCD5A4CA5914EDD92789A2488F35.5FD320DEE3070FA2ABC36C9A16153123AD03AEE%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D53e8103982ece258%26offsetms%3D5000%26itag%3Dw160%26sigh%3DnS0bS1uOyfG6dD6QMzFg34Rpxcc&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v22.nonxt4.googlevideo.com/videoplayback?id%3D53e8103982ece258%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329933468%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D60617DDC87EFCCD5A4CA5914EDD92789A2488F35.5FD320DEE3070FA2ABC36C9A16153123AD03AEE%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D53e8103982ece258%26offsetms%3D5000%26itag%3Dw160%26sigh%3DnS0bS1uOyfG6dD6QMzFg34Rpxcc&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This time I'm making the code available &lt;a href="http://merlin.ugent.be/%7Emike/tmp/jamendo-player.c"&gt;here&lt;/a&gt; instead of pasting it as it has grown up to 120 lines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-6539653727392592969?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=53e8103982ece258&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/6539653727392592969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2009/01/jamendo-player.html#comment-form' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6539653727392592969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6539653727392592969'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2009/01/jamendo-player.html' title='./jamendo-player'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2221557548502108935</id><published>2008-12-05T17:26:00.005+01:00</published><updated>2008-12-05T18:08:42.850+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><title type='text'>Network monitoring tools</title><content type='html'>Sometimes I am in the need to watch the network traffic and for these occasions I fit to console based tools.&lt;br /&gt;&lt;br /&gt;The first application I found &amp;ndash; years ago &amp;ndash; was &lt;a href="http://ex-parrot.com/~pdw/iftop/"&gt;&lt;tt&gt;iftop&lt;/tt&gt;&lt;/a&gt;.  It does a nice job, printing the average bandwidth upwards and downwards transferred for the past 2, 10 and 40 seconds for each connections.&lt;br /&gt;&lt;br /&gt;Recently I found out two other tools like iftop, and both of them have their intrinsic advantages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://nethogs.sourceforge.net/"&gt;&lt;tt&gt;nethogs&lt;/tt&gt;&lt;/a&gt; displays the bandwidth per process.  Very nice when you want to monitor applications that doesn't provide this information in their interface.  Quick note: press 'm' to switch between the display modes.&lt;/li&gt;&lt;li&gt;&lt;a href="http://iptraf.seul.org/"&gt;&lt;tt&gt;iptraf&lt;/tt&gt;&lt;/a&gt; is the most complete tool than the above mentioned ones.  It is also NCurses based however fully interactive with colors and menus.  The tool states itself as a "Statistics Utility", which it is, as it allows to visualize the network traffic based on a dozen possibilities.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I also found out a very complete &amp;ndash; for nowadays &amp;ndash; web-based application which is &lt;a href="http://www.ntop.org/"&gt;&lt;tt&gt;ntop&lt;/tt&gt;&lt;/a&gt;.  It can be run as a daemon and will gather all information inside databases.  You can connect to http://localhost:3000 to display graphics (rrdtool based) and zillion of information.  I'm giving a try to this tool with at least a per month review.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2221557548502108935?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2221557548502108935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/12/network-monitoring-tools.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2221557548502108935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2221557548502108935'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/12/network-monitoring-tools.html' title='Network monitoring tools'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7661165748151176325</id><published>2008-11-13T18:31:00.003+01:00</published><updated>2010-03-27T21:52:47.605+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Prospective work on Xfce</title><content type='html'>As Xfce 4.6 is coming it might be good to throw updates for the panel plugins I maintain at the same time.&lt;br /&gt;&lt;br /&gt;The panel plugins I maintain are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The notes plugin&lt;/li&gt;&lt;li&gt;The FS guard plugin&lt;/li&gt;&lt;li&gt;The clipman plugin (this one is prolly the most wanted)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For the notes plugin I got already most features I was thinking of in, except formatting (which I doubt that I will work on), so the release going on here will be minor.&lt;br /&gt;&lt;br /&gt;For the FS guard plugin I was asked to reverse the progress bar so that it shows the capacity remaining and not the free space... well something like that :-)  Now I'm confused and don't remember what it really displays.&lt;br /&gt;&lt;br /&gt;The clipman plugin needs a rewrite.  To my taste it features too many options, and I will split most none-obvious options to an "Advanced..." tab.  The first release will most probably be the rewrite, than will follow another release for a long asked feature that is action on pattern matching &amp;mdash; open a web page automatically, display a menu, and so forth.&lt;br /&gt;&lt;br /&gt;Other than plugins I maintain applications.&lt;br /&gt;&lt;br /&gt;The applications I maintain are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Xfmpc&lt;/li&gt;&lt;li&gt;Eatmonkey&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Sadly for Xfmpc &amp;mdash; a client for MPD &amp;mdash; I no longer run MPD to listen to my music, so this hacking is freezed at the moment.  My current favorite player is &lt;a href="http://www.audacious-media-player.org"&gt;Audacious&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Eatmonkey is a small application where I learn to use new frameworks.  There won't be an official release before very long.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hopefully I will get the clipman plugin out before end of December!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7661165748151176325?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7661165748151176325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/11/prospective-work-on-xfce.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7661165748151176325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7661165748151176325'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/11/prospective-work-on-xfce.html' title='Prospective work on Xfce'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7615800904042687542</id><published>2008-09-23T19:58:00.005+02:00</published><updated>2008-09-23T20:26:27.473+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>All my day from Sept. 22</title><content type='html'>Morning, 9 o'clock, I get up and turn on the computer, work starts.&lt;br /&gt;&lt;br /&gt;11 o'clock, I finish my work stuff from the morning to jump into another priority, getting at the office, which is 110+KM far away.  I was a bit doubtful if I had everything, looking and re-looking, my pants are on, my data is in my USB key which is in my carry-all.&lt;br /&gt;&lt;br /&gt;Still, that day I learned a lesson: never ever pretend to have your wallet in your usual pants! Never. Never.&lt;br /&gt;&lt;br /&gt;I drove around 50-60KM before it took my attention that I forget my wallet.  No credit card, no licence, no money, that means a lot of trouble at the toll… I had a coin of 1€ in my pants, which means I was missing 6€40!&lt;br /&gt;&lt;br /&gt;I stopped by at a filling station and asked random people for a coin and it took me 20 minutes :-)  I love you people out there.  You saved my day.&lt;br /&gt;&lt;br /&gt;2 o'clock in the afternoon, I was at the office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7615800904042687542?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7615800904042687542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/09/all-my-day-from-sept-22.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7615800904042687542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7615800904042687542'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/09/all-my-day-from-sept-22.html' title='All my day from Sept. 22'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-658047721826386231</id><published>2008-09-04T01:22:00.004+02:00</published><updated>2008-10-15T16:31:36.302+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Mount remote file systems (Tape #2)</title><content type='html'>I once wrote about sshfs.sh, a shell script to mount a remote file system with sshfs.  This is now deprecated!&lt;br /&gt;&lt;br /&gt;Now I'm giving a try to gvfs-mount.  Currently I can mount a volume and list it with gvfs-mount --list, but I cannot browse inside it because it isn't mounted.  I played with the --mountable argument, but it must be a joke.  I think I need a something fuse daemon from gvfs...  I'll keep this up to date.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update&lt;/strong&gt;: Everything is alright now.  The output of &lt;code&gt;ps ax | grep gvfs&lt;/code&gt; shows the following process: &lt;code&gt;/usr/lib/gvfs/gvfs-fuse-daemon&lt;/code&gt;.  All your mount operations will be available at $HOME/.gvfs.&lt;br /&gt;&lt;br /&gt;The recent GTK+2.14 release introduces a widget to ask a password thats called GtkMountOperation (have a look at the &lt;a href="http://blogs.gnome.org/gtk/"&gt;GTK+ blog&lt;/a&gt;).  It might be interesting to start a Thunar plugin, and release it officially with Xfce 4.8.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 2&lt;/strong&gt;: And on a fresh Debian install (or in general anyway) don't forget to install the fuse-utils package (&lt;code&gt;/usr/bin/fusermount&lt;/code&gt;)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-658047721826386231?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/658047721826386231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/09/mount-remote-file-systems-tape-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/658047721826386231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/658047721826386231'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/09/mount-remote-file-systems-tape-2.html' title='Mount remote file systems (Tape #2)'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-6148124999087366454</id><published>2008-09-03T00:26:00.002+02:00</published><updated>2008-09-09T03:28:56.933+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Google Chrome</title><content type='html'>Is O.K.. I just tried Google Chrome, and it kicks the ass! I can already dump it against I.E. Firefox or what else there is out there.&lt;br /&gt;&lt;br /&gt;Its design is &lt;i&gt;brilliant&lt;/i&gt; ;-)  I like using the browser as the GUI to do everything, having a simple toolbar and tabs, displaying the messages of the status bar by fading it in and out, and there is not even a heavy preferences dialog.  Everything is fine.&lt;br /&gt;&lt;br /&gt;You did a browser that is gonna rock, you three people on that comic ;-)  I guess there were more than just you, isn't it?&lt;br /&gt;&lt;br /&gt;And &lt;strong&gt;you&lt;/strong&gt;, you have to try it out.  I hate using Internet Explorer or Firefox when I'm on a friends machine, so now I can use Chrome that just takes a minute to be downloaded and installed and ... ready!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-6148124999087366454?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/6148124999087366454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/09/google-chrome.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6148124999087366454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/6148124999087366454'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2035754227747256813</id><published>2008-08-31T11:02:00.003+02:00</published><updated>2008-09-09T03:28:56.934+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>... and moving on</title><content type='html'>Hum, yeah well my server is crap. That I already knew. But with a storm hitting the power supply (+ I fired my UPS because of that) it is really crap.&lt;br /&gt;&lt;br /&gt;Massonnet.info is off, massonnet.org is sold, my laptop is no more (there is a post in my local git about my crappy laptop, and I guess it will take me a month or two to get it online)... And that was already too much about something related to crap.&lt;br /&gt;&lt;br /&gt;I don't know exactly what is wrong with my server but I already found a replacement of the motherboard+RAM+CPU for a total of 149€. I'm not yet sure I want this replacement!&lt;br /&gt;&lt;br /&gt;I still need to refer to crap. So I was looking into the Google apps a little more recently, and I tried &lt;a href="http://picasaweb.google.com/mike.massonnet/"&gt;Picasaweb&lt;/a&gt;. When I saw a completely unrelated album in it I dropped it... I was wrong doing that, it was the images from this blog. Sigh!&lt;br /&gt;&lt;br /&gt;So long for the last post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2035754227747256813?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2035754227747256813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/08/and-moving-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2035754227747256813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2035754227747256813'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/08/and-moving-on.html' title='... and moving on'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-7234055333632126910</id><published>2008-03-08T00:07:00.003+01:00</published><updated>2008-03-08T00:18:54.276+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Moving on</title><content type='html'>Things are moving on.  I'm dumping my homepage and this blog against a new personal website powered by &lt;a href="http://ikiwiki.info/"&gt;ikiwiki&lt;/a&gt;.  It is already online at &lt;a href="http://www.mmassonnet.info/"&gt;mmassonnet.info&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I really like the ikiwiki way, it is what I was used to do with my old &lt;a href="http://homepage.m8t.mine.nu/"&gt;homepage&lt;/a&gt;.  I wrote to files inside directories, tho they were PHP files which gave me full power to dynamic the different pages, and I was able to use common modules inside the pages (to not reinvent the weel).&lt;br /&gt;&lt;br /&gt;Now with ikiwiki I just wite text files with the &lt;a href="http://daringfireball.net/projects/markdown/syntax.php"&gt;Markdown syntax&lt;/a&gt; and it compiles them to HTML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-7234055333632126910?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/7234055333632126910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2008/03/moving-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7234055333632126910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/7234055333632126910'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2008/03/moving-on.html' title='Moving on'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-1196194606463378376</id><published>2007-11-26T20:31:00.000+01:00</published><updated>2007-11-26T20:55:02.069+01:00</updated><title type='text'>Quick, I need to burn on a headless system</title><content type='html'>I need to burn a DVD on a system without display.  OK there is ssh -X but I want to avoid the click-clickety-click.&lt;br /&gt;&lt;br /&gt;I did so, and blog about it in case I need those bits back in the next coming monthes/year.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create the iso&lt;ul&gt;&lt;li&gt;Copy your files in a root directory — make sure the final size is OK&lt;ul&gt;&lt;li&gt;DVD is fooling with you since 4,700,000,000 / 1,024 / 1,024 / 1,024 = 4.377GB and not 4.7GB&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;mkisofs -J -R -o isofile.iso ./directory&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Verify the iso: &lt;code&gt;mount -o loop -t iso9660 isofile.iso /tmp/iso&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Burn the iso&lt;ul&gt;&lt;li&gt;wodim isofile.iso&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Happy Burningeleven1!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-1196194606463378376?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/1196194606463378376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/11/quick-i-need-to-burn-on-headless-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/1196194606463378376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/1196194606463378376'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/11/quick-i-need-to-burn-on-headless-system.html' title='Quick, I need to burn on a headless system'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-1978735425647843192</id><published>2007-11-12T06:56:00.000+01:00</published><updated>2008-12-11T16:55:11.069+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Marihela update</title><content type='html'>Today I was working around Marihela, and I already had the idea of what to do.  It is &lt;strong&gt;incredibly&lt;/strong&gt; &lt;strong&gt;awe-some&lt;/strong&gt; to work with an external display.  There was enough space for a well sized xzoom, gimp, and full sized terminal (shade/unshade ^_~).  You can check out on my &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Marihela/"&gt;gallery&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wcTww_e0VUY/Rzf4-uqiHPI/AAAAAAAAACY/4qppNSRD3No/s1600-h/marihela.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_wcTww_e0VUY/Rzf4-uqiHPI/AAAAAAAAACY/4qppNSRD3No/s400/marihela.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5131844056973974770" /&gt;&lt;/a&gt;&lt;br /&gt;If you wonder what the GTK+ theme is, it is &lt;a href="http://www.gnome-look.org/content/show.php/Aurora+Gtk+Engine?content=56438"&gt;Aurora-Midnight&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://files.m8t.mine.nu/xfce/Marihela.tar.bz2"&gt;Marihela.tar.bz2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; The most recent version of Marihela can be snapshotted from my &lt;a href="http://git.m8t.mine.nu/cgi-bin/gitweb.cgi?p=themes/.git;a=history;f=Marihela;hb=HEAD"&gt;gitweb interface&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-1978735425647843192?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/1978735425647843192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/11/marihela-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/1978735425647843192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/1978735425647843192'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/11/marihela-update.html' title='Marihela update'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wcTww_e0VUY/Rzf4-uqiHPI/AAAAAAAAACY/4qppNSRD3No/s72-c/marihela.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3103289622766731521</id><published>2007-11-09T10:05:00.000+01:00</published><updated>2008-12-11T16:55:11.831+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Celestia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_wcTww_e0VUY/RzQlTuqiHLI/AAAAAAAAAB4/oZcLhcovcGw/s1600-h/saturn.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_wcTww_e0VUY/RzQlTuqiHLI/AAAAAAAAAB4/oZcLhcovcGw/s200/saturn.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5130766896356007090" /&gt;&lt;/a&gt;&lt;a href="http://www.shatters.net/celestia/"&gt;Celestia&lt;/a&gt; is a beautiful piece of free software.  You can across the space with a speed of thousand astronomical units per hour, discover the outbound of our galaxy, and take the most beautiful shots ever.  This is a game I will always like ^_^&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Dual/2007-11-11-051539_1280x1824_scrot.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_wcTww_e0VUY/RzddC-qiHOI/AAAAAAAAACQ/h8VlgJQdblo/s200/2007-11-11-051539_1280x1824_scrot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5131672606174485730" /&gt;&lt;/a&gt;Just today I took a trip around &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/saturn.png"&gt;Saturn&lt;/a&gt; and its nice ring.  Next I was looking for wallpapers for my dual head (1280x1824) and &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Dual/wallpapers/"&gt;captured images&lt;/a&gt; from Venus, Mars, the Moon with the Earth, and so on…&lt;br /&gt;&lt;br /&gt;You can check my &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Dual/2007-11-09-100215_1280x1824_scrot.png"&gt;desktop&lt;/a&gt; with Mars.  The quality and the number of details are really impressive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3103289622766731521?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3103289622766731521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/11/celestia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3103289622766731521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3103289622766731521'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/11/celestia.html' title='Celestia'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wcTww_e0VUY/RzQlTuqiHLI/AAAAAAAAAB4/oZcLhcovcGw/s72-c/saturn.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-4626526004505697329</id><published>2007-10-13T00:25:00.001+02:00</published><updated>2008-12-16T22:52:59.153+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Easy remote access with Thunar</title><content type='html'>&lt;strong&gt;Update:&lt;/strong&gt; This is deprecated in favor of &lt;a href="http://mmassonnet.blogspot.com/2008/09/mount-remote-file-systems-tape-2.html"&gt;gvfs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Networking support is a hot topic in &lt;a href="http://thunar.xfce.org/"&gt;Thunar&lt;/a&gt;, and the most probable answer to a user will be one of the many &lt;a href="http://fuse.sourceforge.net/"&gt;FUSE&lt;/a&gt; tools.  For Samba you can use &lt;a href="http://www.ricardis.tudelft.nl/%7Evincent/fusesmb/"&gt;fusesmb&lt;/a&gt;.  For fish protocol and the like you can use &lt;a href="http://fuse.sourceforge.net/sshfs.html"&gt;sshfs&lt;/a&gt;.  The benefit of a FUSE tool is that your remote data is accessible as it were on your file system.  This results in the fact that &lt;strong&gt;all&lt;/strong&gt; your applications can access the data, and not only the applications that implement a special API.  There is never a need for high privilege, so every user can mount remote data from machines where they already have access.  To unmount a fuse file system use the command “&lt;code&gt;fusermount -u /mount/point&lt;/code&gt;”.&lt;br /&gt;&lt;h4&gt;Fusesmb&lt;/h4&gt;Here is a little usage example for fusesmb to show how easy it works.&lt;br /&gt;&lt;pre&gt;% fusesmb samba&lt;br /&gt;% ls samba&lt;br /&gt;WORKGROUP  MASSONNET&lt;br /&gt;% ls samba/MASSONNET&lt;br /&gt;M8T&lt;br /&gt;% ls samba/MASSONNET/M8T&lt;br /&gt;share  music  movies  cdrom&lt;/pre&gt;And if the listed networks are empty or outdated run the fusesmb.cache command:&lt;br /&gt;&lt;pre&gt;% fusesmb.cache samba&lt;/pre&gt;&lt;h4&gt;Sshfs(.sh)&lt;/h4&gt;As a prerequisite use an authentication with keys — there are tons of HOWTOs for that and I just picked up &lt;a href="http://sial.org/howto/openssh/publickey-auth/#s2"&gt;that one&lt;/a&gt; — otherwise you will be prompted for your password and this is a no-go for a Thunar custom action, unless you set up ssh-askpass…&lt;br /&gt;&lt;br /&gt;Sshfs works as simple as “&lt;code&gt;sshfs user@host: /mount/point&lt;/code&gt;” to mount the &lt;em&gt;home directory&lt;/em&gt; from &lt;em&gt;user&lt;/em&gt; on &lt;em&gt;host&lt;/em&gt;.  I arranged me a tricky Shell script to ease the mount even more.  The &lt;a href="http://git.m8t.mine.nu/cgi-bin/gitweb.cgi?p=shell-scripts;a=blob;f=sshfs.sh;hb=HEAD"&gt;script&lt;/a&gt; takes the hostname — the SSH server — and no further arguments.  The hostname is also used as mount point, so you can basically have one directory with several sub-directories, each named after your remote hosts.  If the mount point doesn't exist it is created on the fly.&lt;br /&gt;&lt;pre&gt;% sshfs.sh /sshfs/m8t&lt;br /&gt;% sshfs.sh /sshfs/someuser@funkyhost&lt;br /&gt;% sshfs.sh myhost.mine.nu&lt;br /&gt;&lt;/pre&gt;&lt;h4&gt;Thunar's Custom Actions&lt;/h4&gt;Thanks to the &lt;a href="http://thunar.xfce.org/pwiki/documentation/custom_actions"&gt;custom actions&lt;/a&gt; in Thunar, you can implement a lot of features on your own.  I use the sshfs wrapper script to mount remote hosts.  See how easy it is to set the next custom action up:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_wcTww_e0VUY/RxFcUSZjZwI/AAAAAAAAABo/TRQ-Uk4gl2o/s1600-h/thunar-custom-actions-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_wcTww_e0VUY/RxFcUSZjZwI/AAAAAAAAABo/TRQ-Uk4gl2o/s400/thunar-custom-actions-1.png" alt="" id="BLOGGER_PHOTO_ID_5120975754903119618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The custom action simply calls “&lt;code&gt;sshfs.sh %n&lt;/code&gt;” with the name of the directory.  To unmount, you would create a custom action with the command “&lt;code&gt;fusermount -u %f&lt;/code&gt;”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-4626526004505697329?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/4626526004505697329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/10/easy-remote-access-with-thunar.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4626526004505697329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/4626526004505697329'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/10/easy-remote-access-with-thunar.html' title='Easy remote access with Thunar'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wcTww_e0VUY/RxFcUSZjZwI/AAAAAAAAABo/TRQ-Uk4gl2o/s72-c/thunar-custom-actions-1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5503587645654075293</id><published>2007-10-07T15:01:00.000+02:00</published><updated>2007-10-07T16:08:00.753+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Some environment decision on my server</title><content type='html'>It's been a while since I didn't use my server with a decent environment, in fact it was running for months inside a simple tty just to do the basic stuff.  A tty isn't that bad, you can control your MPD for example to stop the music or to set up the entire playlist.  It is also sufficient for configuration files, and browsing on the WWW for information…&lt;br /&gt;&lt;br /&gt;All was fine until my light bulb gave up.  Of course I changed it, but with one that had additional 20 watts, and I wasn't happy for the lamp getting warmed up too much.  So I choose to light up my hacking space with my server's display.  What I was looking for was something with animations… nonono!  not that one, plzkthx!  The best I can think of is E17 ;-)  It has the bling bling that no other environment has.&lt;br /&gt;&lt;br /&gt;So I was getting started with E17 again, which I didn't use for hardly two years.  The first day was mostly OK, I played with it and tried out different modules — the photo module is nice — and I also ran through bugs and crashes, but nothing blocking.  The next day, I tried out more modules and locked myself inside my environment because of the “First Run Wizard” module which states in its description “WARNING!! DO NOT USE!!” which I didn't see -_-&lt;br /&gt;&lt;br /&gt;So I talked a bit in &lt;tt&gt;#e&lt;/tt&gt; and raster showed me the &lt;tt&gt;enlightenment_remote&lt;/tt&gt; command to control parts of E17.  I just didn't get how to export the E_IPC_SOCKET variable but now I do!  So I finally decided that it was easier to delete the main configuration file which was actually a good thing because after that I had more options than before :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://galerie.m8t.mine.nu/apache-gallery/Captures/E17/Server/2007-10-07-155330_1280x1024_scrot.png"&gt;&lt;img style="margin:0 10px 10px 0; float:left;cursor:pointer; cursor:hand;width: 145px;" src="http://galerie.m8t.mine.nu/apache-gallery/Captures/E17/Server/.cache/145x116-2007-10-07-155330_1280x1024_scrot.png" border="0" alt="" /&gt;&lt;/a&gt;The desktop is now all simple and beautiful and shiny and lighty and blinky and decent.  I have my workspaces with different tasks like music player, IRC, a web browser (&lt;a href="http://software.twotoasts.de/?page=midori"&gt;Midori&lt;/a&gt;), and so on.  My last addition is a simple &lt;a href="http://git.m8t.mine.nu/cgi-bin/gitweb.cgi?p=shell-scripts;a=blob_plain;f=e17setbg.sh;hb=HEAD"&gt;script&lt;/a&gt; to put inside my cron table which switches the background.  I run it every 30 to 60 minutes, depends of my mood.  I really like the smooth background changes in E17 :-)&lt;br /&gt;&lt;br /&gt;Light is back, fun is in too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5503587645654075293?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5503587645654075293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/10/some-environment-decision-on-my-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5503587645654075293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5503587645654075293'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/10/some-environment-decision-on-my-server.html' title='Some environment decision on my server'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-786309487277514910</id><published>2007-07-26T00:25:00.000+02:00</published><updated>2008-12-11T16:55:12.324+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Use Epiphany to set your xfdesktop background</title><content type='html'>Hi ladies ang guys,&lt;br /&gt;&lt;br /&gt;As of my blog entry &lt;a href="http://mmassonnet.blogspot.com/2006/11/auto-update-background-list-for.html"&gt;auto-update-background-list-for-xfdesktop&lt;/a&gt; I used to tell how I update my background with a uniq file in the background list.  That worked with a shell script that 1) took as argument an image file 2) updated the background list 3) and reloaded xfdesktop.&lt;br /&gt;&lt;br /&gt;I updated that script and put it in my git (&lt;a href="http://git.m8t.mine.nu/cgi-bin/gitweb.cgi?p=shell-scripts;a=blob;f=set-xfdesktop-image.sh;hb=HEAD"&gt;git.m8t.mine.nu&lt;/a&gt;).  It can now take a remote file as argument. That combined with the web browser Epiphany, you can apply a background within the browser.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://git.m8t.mine.nu/cgi-bin/gitweb.cgi?p=shell-scripts;a=blob_plain;f=set-xfdesktop-image.sh;hb=HEAD"&gt;that script&lt;/a&gt; and make it executable inside your $PATH.&lt;br /&gt;&lt;br /&gt;Now run Epiphany with the extensions then:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;go to Tools &gt; Extension... and enable the Actions extension&lt;/li&gt;&lt;li&gt;After the Actions are enabled go to Edit &gt; Actions&lt;/li&gt;&lt;li&gt;Press Add and create an action called "&lt;em&gt;Update xfdesktop background&lt;/em&gt;"&lt;/li&gt;&lt;li&gt;And set the command to "&lt;em&gt;set-xfdesktop-image.sh&lt;/em&gt;"&lt;/li&gt;&lt;li&gt;Check Images in the Applies to&lt;/li&gt;&lt;li&gt;Click Add.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Now go to my &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Fonds/"&gt;wallpapers gallery&lt;/a&gt;, choose a wallpaper (click on it to get the fullsize), and right click it. You can apply it by choosing the item "&lt;em&gt;Update xfdesktop background&lt;/em&gt;" in the context menu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wcTww_e0VUY/Rwi6TougFHI/AAAAAAAAABg/pJJ8gjrI1MY/s1600-h/ephy-1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_wcTww_e0VUY/Rwi6TougFHI/AAAAAAAAABg/pJJ8gjrI1MY/s400/ephy-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5118545823019308146" /&gt;&lt;/a&gt;&lt;br /&gt;Have fun with my hack around xfdesktop,&lt;br /&gt;Mike&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-786309487277514910?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/786309487277514910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/07/use-epiphany-to-set-your-xfdesktop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/786309487277514910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/786309487277514910'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/07/use-epiphany-to-set-your-xfdesktop.html' title='Use Epiphany to set your xfdesktop background'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wcTww_e0VUY/Rwi6TougFHI/AAAAAAAAABg/pJJ8gjrI1MY/s72-c/ephy-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-1931808721926074519</id><published>2007-05-24T21:19:00.000+02:00</published><updated>2008-12-11T16:55:12.620+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Marihela Xfwm theme</title><content type='html'>I relooked a little bit the Moheli theme with some ideas that throwed my head.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wcTww_e0VUY/RlXnTFXuwtI/AAAAAAAAABM/FloBla56an0/s1600-h/Dwarf%2BMarihela-window-title.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_wcTww_e0VUY/RlXnTFXuwtI/AAAAAAAAABM/FloBla56an0/s400/Dwarf%2BMarihela-window-title.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5068211270720602834" /&gt;&lt;/a&gt;&lt;br /&gt;You can go to my &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Xfce-dwarf/"&gt;gallery&lt;/a&gt;, the last screenshots are the most recents.  Pick &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Xfce-dwarf/Dwarf%2BMarihela-2007-05-24-204743_1280x800_scrot.png"&gt;this one&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-1931808721926074519?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/1931808721926074519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/05/marihela-xfwm-theme.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/1931808721926074519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/1931808721926074519'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/05/marihela-xfwm-theme.html' title='Marihela Xfwm theme'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wcTww_e0VUY/RlXnTFXuwtI/AAAAAAAAABM/FloBla56an0/s72-c/Dwarf%2BMarihela-window-title.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-764120554017191300</id><published>2007-05-17T23:16:00.000+02:00</published><updated>2008-12-11T16:55:12.832+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Dwarf GTK+ theme for Xfce</title><content type='html'>I was using the Xfce-stellar theme for quite more than a week now.  Today I renewed that theme by using the most recent features from the Xfce GTK+ engine like gradients and borders for menu items.&lt;br /&gt;&lt;br /&gt;It was an easy hack since both the Xfce-stellar theme and the new default for Xfce are really clean.  I mostly changed colors and some other misty stuff.  I choosed the name Dwarf, coming from the White Dwarf, since it has a direct relation to Stellar.  If you like the next screenshot you can download the theme here: &lt;a href="http://files.m8t.mine.nu/xfce/Dwarf.tar.gz"&gt;Dwarf.tar.gz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wcTww_e0VUY/RlC6GVXuwsI/AAAAAAAAABE/Tr9kIXM7Mjc/s1600-h/2007-05-20-231038_1280x800_scrot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_wcTww_e0VUY/RlC6GVXuwsI/AAAAAAAAABE/Tr9kIXM7Mjc/s400/2007-05-20-231038_1280x800_scrot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5066754198770467522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Edit&lt;/strong&gt;: I have done some updates while I was travelling by train.  There is a &lt;a href="http://galerie.m8t.mine.nu/apache-gallery/Captures/Xfce-dwarf/"&gt;gallery&lt;/a&gt; with several screenshots and the tarball has been updated too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-764120554017191300?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/764120554017191300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/05/gtk-theme.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/764120554017191300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/764120554017191300'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/05/gtk-theme.html' title='Dwarf GTK+ theme for Xfce'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_wcTww_e0VUY/RlC6GVXuwsI/AAAAAAAAABE/Tr9kIXM7Mjc/s72-c/2007-05-20-231038_1280x800_scrot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5045567915584466771</id><published>2007-04-16T22:54:00.000+02:00</published><updated>2008-12-11T16:55:13.577+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>My Google</title><content type='html'>I try new features from Google's website as they come out.  So, I was looking for a little bit of ascii-art and I replaced my notes $google_module default's message with a nice ascii-art.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Here is my Google page&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_wcTww_e0VUY/RiPp8YOF6iI/AAAAAAAAAAs/6lTvNQTrc_w/s1600-h/my-google-closeup.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_wcTww_e0VUY/RiPp8YOF6iI/AAAAAAAAAAs/6lTvNQTrc_w/s400/my-google-closeup.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5054140430342810146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_wcTww_e0VUY/RiPla4OF6gI/AAAAAAAAAAc/gBRh20bQUzs/s1600-h/my-google.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_wcTww_e0VUY/RiPla4OF6gI/AAAAAAAAAAc/gBRh20bQUzs/s400/my-google.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5054135456770681346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The theme changes with the time of the day.  Guess what, it is night (time for the theme to cycle)!&lt;br /&gt;&lt;em&gt;Note: However I dislike the privacy issues with Google  like the search history, or the $dont_empty_your_mail text.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5045567915584466771?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5045567915584466771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/04/my-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5045567915584466771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5045567915584466771'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/04/my-google.html' title='My Google'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wcTww_e0VUY/RiPp8YOF6iI/AAAAAAAAAAs/6lTvNQTrc_w/s72-c/my-google-closeup.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3885754630016362027</id><published>2007-03-31T14:34:00.000+02:00</published><updated>2007-04-05T18:30:48.142+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Shell exercices</title><content type='html'>Wanna convert a pdf to images and create a gallery.  Well, I had some actions with that and I did my way through the GNU, and other, utilities.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. First&lt;/strong&gt;&lt;br /&gt;You need to convert the PDF document to images. Not so easy, there is &lt;tt&gt;pdftohtml&lt;/tt&gt; but it doesn't generate images, instead it extracts the text and images from the document. However there is ImageMagick, a great project, which provides convert. So I ran a &lt;tt&gt;convert file.pdf file.png&lt;/tt&gt; but I couldn't figure out how to preselect the size to get bigger resolutions. After that I have opened file.pdf with xpdf and I took screenshots with &lt;tt&gt;scrot&lt;/tt&gt; from the xpdf window.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Crop images&lt;/strong&gt;&lt;br /&gt;I cropped the images to remove the borders and toolbars with &lt;tt&gt;for image in *.png ; do convert $image -crop 150x150+30+20 ; done&lt;/tt&gt; where I selected the geometry of the crop size in GIMP within the dialog of the crop tool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Rename files&lt;/strong&gt;&lt;br /&gt;Next I figured out how to &lt;tt&gt;rename&lt;/tt&gt; files, and how to bulk rename (&lt;tt&gt;Thunar -B&lt;/tt&gt;) them better.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Finally&lt;/strong&gt;&lt;br /&gt;I have found &lt;tt&gt;photon --thumbsize=50x50 --sizelist=0 -o photon ../images&lt;/tt&gt; which creates nice web galleries. With javascript, you can view the presentation as in a pdf reader, by pressing space to switch pages.&lt;br /&gt;&lt;br /&gt;However there is a bug, fortunately this blog entry will remember me to file it upstream. My images are png files, and it creates jpeg files. The original files are copied verbatim without modifications, but the html files contains source images only with .jpg extensions. Bad, because I have png files...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. A last one before to go&lt;/strong&gt;&lt;br /&gt;&lt;tt&gt;for html in *.html ; do cat $html | sed -r 's,(original)/([0-9]+)-(projet-tuteure)\.jpg,\1/\2-\3.png,' &amp;gt; $html ; done&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;;-)&lt;br /&gt;&lt;br /&gt;You can see the &lt;a href="http://mykey57.free.fr/share/projects/school/projet-tuteure/"&gt;result&lt;/a&gt; of &lt;a href="http://www.saillard.org/programs_and_patches/photon/"&gt;photon&lt;/a&gt; if you are interested.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Edit&lt;/strong&gt;: Just in case I forget about it and would need it again... &lt;code&gt;photon --thumbsize=105x105 --display-lines=4 --sizelist=0 --resize-quality-low=95 --img-bgcolor=#ffffff --body-bgcolor=#2e3436 -k steel -o photon ../images &amp;&amp; cd photon &amp;&amp; for html in *.html ; do cat $html | sed -r 's,(original)/([0-9]+)-(projet-tuteure)\.jpg,\1/\2-\3.png,' &amp;gt; $html ; done &amp;&amp; cd ..&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3885754630016362027?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3885754630016362027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/03/shell-exercices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3885754630016362027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3885754630016362027'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/03/shell-exercices.html' title='Shell exercices'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-3338687652222862422</id><published>2007-03-14T23:30:00.000+01:00</published><updated>2007-09-26T01:30:03.466+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Wanna download a YouTube video?</title><content type='html'>If you want to download a YouTube video it is really easy with the shell.  All you have to do is to pick up the video_id in the URL and feed it to the script.  It will then fetch the valid URL to download the flv video.&lt;br /&gt;&lt;br /&gt;But that's not why I want to blog about it because there are already scripts to download YouTube videos.  The reason I'm blogging is because it is a one-liner.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;wget "http://www.youtube.com/get_video?`wget -q -O - "http://youtube.com/watch?v=$1" | egrep -m1 -o 'video_id=[^&amp;]+&amp;l=[0-9]+&amp;t=[^"&amp;]+'`" -O $1.flv&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Note: $1 is the video_id parameter sent to the script.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://git.m8t.mine.nu/cgi-bin/gitweb.cgi?p=shell-scripts;a=blob_plain;f=youtubewget.sh"&gt;Download&lt;/a&gt; the script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-3338687652222862422?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/3338687652222862422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/03/wanna-download-youtube-video.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3338687652222862422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/3338687652222862422'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/03/wanna-download-youtube-video.html' title='Wanna download a YouTube video?'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-245351433136858358</id><published>2007-03-13T01:04:00.000+01:00</published><updated>2007-03-13T01:06:41.710+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Random MAC address</title><content type='html'>I just thought I had need to blog about that, a script to generate a random MAC address.  It is based on $RANDOM from any shell and works reliably.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#! /bin/sh&lt;br /&gt;# Generates a random mac address&lt;br /&gt;echo $RANDOM | openssl md5 | sed 's/\(..\)/\1:/g' | cut -b0-17&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-245351433136858358?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/245351433136858358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/03/random-mac-address.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/245351433136858358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/245351433136858358'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/03/random-mac-address.html' title='Random MAC address'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2781098797220273720</id><published>2007-02-26T16:11:00.000+01:00</published><updated>2007-02-26T16:29:33.218+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Set the proxy for GNOME</title><content type='html'>I like surfing with Epiphany over the bloated Firefox but it doesn't provide a setting dialog for the proxy.  It is configured system wide with gconf.  A nice editor to have a quick look at the settings is &lt;tt&gt;gconf-editor&lt;/tt&gt; and once you know what to set you can use the command line tool &lt;tt&gt;gconftool-2&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Here is a script to switch the proxy on/off with an optional host and port.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#! /bin/sh&lt;br /&gt;# Switches the GNOME proxy on/off and &lt;br /&gt;# can take an optional proxy host+port &lt;br /&gt;&lt;br /&gt;usage ()&lt;br /&gt;{&lt;br /&gt;  cat &lt;&lt; CAT&lt;br /&gt;Usage: `basename $0` on|off [host [port]]&lt;br /&gt;CAT&lt;br /&gt;  exit 1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[ $# -lt 1 ] &amp;&amp; usage&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;  "on")&lt;br /&gt;    mode="manual"&lt;br /&gt;    ;;&lt;br /&gt;  "off")&lt;br /&gt;    mode="none"&lt;br /&gt;    ;;&lt;br /&gt;  *)&lt;br /&gt;    usage&lt;br /&gt;    ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;gconftool-2 -t string -s /system/proxy/mode "$mode"&lt;br /&gt;[ ! -z "$2" ] &amp;&amp; \&lt;br /&gt;gconftool-2 -t string -s /system/http_proxy/host "$2"&lt;br /&gt;[ ! -z "$3" ] &amp;&amp; \&lt;br /&gt;gconftool-2 -t int -s /system/http_proxy/port "$3"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As usual you can follow the changes at &lt;a href="http://mykey57.free.fr/pub/misc/bin/proxy.sh"&gt;mykey57.free.fr/pub/misc/bin/&lt;/a&gt;.&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2781098797220273720?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2781098797220273720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/02/set-proxy-for-gnome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2781098797220273720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2781098797220273720'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/02/set-proxy-for-gnome.html' title='Set the proxy for GNOME'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5184302961849334371</id><published>2007-02-24T00:12:00.000+01:00</published><updated>2007-02-24T00:36:06.179+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mpd'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>MPD repeat track</title><content type='html'>I have written a Shell script to repeat the current track of MPD.  The daemon doesn't provide this feature because it isn't seen as necessary, however I love (sometimes) to stick with the same song.  Most people will suggest you to run &lt;tt&gt;mpc crop &amp;&amp; mpc repeat on &amp;&amp; mpc play&lt;/tt&gt; ^_^, but that kills you playlist and I really want to avoid it.&lt;br /&gt;&lt;br /&gt;There are two scripts, one to repeat the track when &lt;em&gt;it has to be done&lt;/em&gt;, and a daemon which restarts the repeat process if the user changes the current track.  Note: the daemon doesn't take care if you seek in the track, so... if you had like to repeat the same track and seek into it just hack the script and why not leave a comment with your modifications.&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;strong&gt;The repeat script&lt;/strong&gt;&lt;/big&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Repeat the same track&lt;br /&gt;&lt;br /&gt;function repeat ()&lt;br /&gt;{&lt;br /&gt;  min=`mpc|head -2|tail -1|awk '{print $3}'|cut -d: -f1`&lt;br /&gt;  sec=`mpc|head -2|tail -1|awk '{print $3}'|cut -d: -f2`&lt;br /&gt;  tmin=`mpc --format %time%|head -1|cut -d: -f1`&lt;br /&gt;  tsec=`mpc --format %time%|head -1|cut -d: -f2`&lt;br /&gt;  sleep $(( ($tmin*60+$tsec) - ($min*60+$sec) )) &amp;&amp; mpc prev &amp;&amp; repeat&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;repeat&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;big&gt;The daemon&lt;/strong&gt;&lt;/big&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Daemon which takes care of restarting the repeat process &lt;br /&gt;# if the user changes the current track&lt;br /&gt;&lt;br /&gt;function restart ()&lt;br /&gt;{&lt;br /&gt;  killall mpd-repeat-track.sh&lt;br /&gt;  mpd-repeat-track.sh&amp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;restart&lt;br /&gt;&lt;br /&gt;while sleep 2&lt;br /&gt;  do&lt;br /&gt;  file=/tmp/mpd-repeat-track.sh&lt;br /&gt;  current=`mpc|head -1`&lt;br /&gt;  last=`cat $file`&lt;br /&gt;  echo $current &gt; $file&lt;br /&gt;  [ x"$current" != x"$last" ] &amp;&amp; restart&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now run &lt;tt&gt;mpd-repeat-trackd.sh&lt;/tt&gt; and it will just work&amp;lt;tm&amp;gt;.&lt;br /&gt;&lt;br /&gt;You can follow the changes here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mykey57.free.fr/pub/misc/bin/mpd-repeat-track.sh"&gt;http://mykey57.free.fr/pub/misc/bin/mpd-repeat-track.sh&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://mykey57.free.fr/pub/misc/bin/mpd-repeat-trackd.sh"&gt;http://mykey57.free.fr/pub/misc/bin/mpd-repeat-trackd.sh&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Old links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mykey57.free.fr/blog/index0d20.html?postid=18"&gt;Introduction to MPD&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://mykey57.free.fr/blog/index60e0.html?postid=22#221"&gt;Search lyrics with MPD&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://mykey57.free.fr/blog/indexf50e.html?postid=23"&gt;MPD OSD&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5184302961849334371?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5184302961849334371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/02/mpd-repeat-track.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5184302961849334371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5184302961849334371'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/02/mpd-repeat-track.html' title='MPD repeat track'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5779087973848574001</id><published>2007-02-07T12:55:00.000+01:00</published><updated>2008-12-11T16:55:13.780+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Deactivate PHP for a container</title><content type='html'>Since I have set up a &lt;a href="http://mykey57.free.fr/?q=/projects/file-center&amp;lang=en"&gt;File-center&lt;/a&gt; on my web server, I never thought about deactivating PHP for the public folder. Now it is done and it is a one line directive. Run &amp;quot;&lt;strong&gt;echo SetHandler send-as-is &amp;gt; /to/your/root/public/folder/.htaccess&lt;/strong&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_wcTww_e0VUY/Rcm_5ffyUCI/AAAAAAAAAAM/6FD2-Qq8aXE/s1600-h/httpd-sethandler-send-as-is.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_wcTww_e0VUY/Rcm_5ffyUCI/AAAAAAAAAAM/6FD2-Qq8aXE/s400/httpd-sethandler-send-as-is.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5028761453364138018" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5779087973848574001?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5779087973848574001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/02/deactivate-php-for-container.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5779087973848574001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5779087973848574001'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/02/deactivate-php-for-container.html' title='Deactivate PHP for a container'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wcTww_e0VUY/Rcm_5ffyUCI/AAAAAAAAAAM/6FD2-Qq8aXE/s72-c/httpd-sethandler-send-as-is.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-2731894727854294474</id><published>2007-01-02T20:05:00.000+01:00</published><updated>2007-01-03T12:04:55.452+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Comics</title><content type='html'>If you want to watch daily comics, but need to load the pathetic 206KB of content for the 37KB image, you can script the download of it with curl and egrep.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;# Download comics and put them in the users web directory&lt;br /&gt;&lt;br /&gt;if [ -z "$1" ]&lt;br /&gt;  then&lt;br /&gt;  DATE=`date +"%Y%m%d"`&lt;br /&gt;else&lt;br /&gt;  DATE=$1&lt;br /&gt;fi&lt;br /&gt;IMG=`curl -s http://www.comics.com/comics/pearls/archive/pearls-${DATE}.html \&lt;br /&gt;     | egrep -m 1 -o "/comics/pearls/archive/images/pearls[0-9]+.(gif|jpg)"`&lt;br /&gt;mkdir -p $HOME/public_html/comics/&lt;br /&gt;cd $HOME/public_html/comics/&lt;br /&gt;wget -q http://www.comics.com$IMG&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And there you go.  You will download the 53KB HTML page and fetch the 37KB image which makes you a ratio of 0.44:1.&lt;br /&gt;&lt;br /&gt;The script downloads the comics of the day by default, or you can pass it a date as first parameter.  A good place for this script is your cron table.&lt;br /&gt;&lt;br /&gt;I'm gonna improve this script each time I find a new comic now on.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Edit&lt;/strong&gt;: you can follow the changes &lt;a href="http://mykey57.free.fr/pub/misc/bin/comics.sh"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-2731894727854294474?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/2731894727854294474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2007/01/comics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2731894727854294474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/2731894727854294474'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2007/01/comics.html' title='Comics'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-642736734095516288</id><published>2006-12-23T15:58:00.000+01:00</published><updated>2006-12-23T16:42:37.764+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Random background</title><content type='html'>I've make up a script to set a random background onto the root window. You must initialize the variable DIR to your backgrounds path.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# This script helps to set a random background from $DIR onto the root window&lt;br /&gt;&lt;br /&gt;DIR="$HOME/picture/Fonds/"&lt;br /&gt;RES=$(xwininfo -root|grep geometry|cut -d' ' -f4|cut -d+ -f1)&lt;br /&gt;MAX=$(find $DIR -type f | wc -l)&lt;br /&gt;NUM=$((RANDOM%MAX+1))&lt;br /&gt;BACKGROUND=$(find $DIR -type f | head -n $NUM | tail -n 1)&lt;br /&gt;TEST=$(identify "$BACKGROUND" | grep "$RES " | awk '{print $1}')&lt;br /&gt;test ! -z "$TEST" &amp;&amp; xsetbg "$BACKGROUND"  || $0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can modify it as you want, for instance comment RES to take all the backgrounds, even smaller or larger than your screen resolution, or set options to xsetbg like -fullscreen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-642736734095516288?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/642736734095516288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/12/random-background.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/642736734095516288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/642736734095516288'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/12/random-background.html' title='Random background'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-8956344273965479042</id><published>2006-12-13T22:56:00.000+01:00</published><updated>2006-12-13T23:55:24.101+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>SSH through Apache Proxy</title><content type='html'>If you want to connect you to your beloved SSH server, but you are stick behind a proxy which has only ftp, http, and https open, then you can install &lt;a href="http://proxytunnel.sourceforge.net/"&gt;proxytunnel&lt;/a&gt;.  It is a super tool :)&lt;br /&gt;&lt;br /&gt;1) You will need apache on port 80 to "proxy" your SSH connection.  2) Create an "easy-to-run" ssh client.  I assume you know how to install Apache webserver... so go open/create your VirtualHost.&lt;br /&gt;&lt;br /&gt;For Apache you will need the modules mod_proxy (splitted into two files in the httpd tarball: mod_proxy.c and proxy_util.c) and mod_proxy_connect (to allow SSL connections).  I use the Apache2 Debian package, so all this stuff is really simple.&lt;br /&gt;&lt;br /&gt;Apache configuration example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;NameVirtualHost nameserver_or_ip:80&lt;br /&gt;&amp;lt;VirtualHost nameserver_or_ip:80&amp;gt;&lt;br /&gt;    &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxyrequests"&gt;ProxyRequests&lt;/a&gt; on&lt;br /&gt;    &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxyvia"&gt;ProxyVia&lt;/a&gt; on&lt;br /&gt;    &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#allowconnect"&gt;AllowCONNECT&lt;/a&gt; 22 5554 # by default SSH listens &lt;br /&gt;                         # on 22, but you can also &lt;br /&gt;                         # make it listen on a secret &lt;br /&gt;                         # port for example like 5554;&lt;br /&gt;    &amp;lt;Proxy *&amp;gt;&lt;br /&gt;        Order deny,allow&lt;br /&gt;        Deny from all # By default reject everyone&lt;br /&gt;        Allow from localhost&lt;br /&gt;        Allow from the_fixed_ip_of_your_university&lt;br /&gt;    &amp;lt;/Proxy&amp;gt;&lt;br /&gt;    &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass"&gt;ProxyPass&lt;/a&gt; /debian http://ftp.fr.debian.org/debian/ &lt;br /&gt;        # A useless example of ProxyPass to show how &lt;br /&gt;        # to be able to connect to the debian ftp since &lt;br /&gt;        # http://your_host/debian/&lt;br /&gt;&lt;br /&gt;    Redirect / http://www.somewhere.com/&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Restart your server.&lt;br /&gt;&lt;br /&gt;Now edit ~/.ssh/config and get inspired from the next lines:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Host proxy&lt;br /&gt;    DynamicForward 1080&lt;br /&gt;    ProxyCommand proxytunnel -v -p localhost:81 -r myhost:80 -d localhost:13375&lt;br /&gt;    ServerAliveInterval 30&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;-v is verbose, -p is the proxy to use (the one of your university for example), -r is the remote proxy (your Apache server), and -d is the SSH server to connect to.  Note that if your SSH server is on the same as Apache, you can connect to localhost.  However I prefer to put the DNS of my server so the message "Last login from" is less ambiguous.&lt;br /&gt;&lt;br /&gt;Save this file and exit.  Now you can type `ssh proxy' to connect through the hell of proxies.&lt;br /&gt;&lt;br /&gt;Screenshot of an SSH connection through a local Apache proxy through a remote Apache proxy:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;lapt0p[100]:~% ssh local&lt;br /&gt;localhost is 127.0.0.1&lt;br /&gt;Connected to localhost:81&lt;br /&gt;Tunneling to myhost:80 (remote proxy)&lt;br /&gt;Connect string sent to Proxy: 'CONNECT myhost:80 HTTP/1.0&lt;br /&gt;Proxy-Connection: Keep-Alive&lt;br /&gt;&lt;br /&gt;'&lt;br /&gt;DEBUG: recv: 'HTTP/1.0 200 Connection Established&lt;br /&gt;'DEBUG: recv: 'Proxy-agent: Apache/2.0.55 (Ubuntu)&lt;br /&gt;'DEBUG: recv: '&lt;br /&gt;'Tunneling to localhost:13375 (destination)&lt;br /&gt;DEBUG: Send: 'CONNECT localhost:13375 HTTP/1.0&lt;br /&gt;Proxy-Connection: Keep-Alive&lt;br /&gt;&lt;br /&gt;'&lt;br /&gt;DEBUG: recv: 'HTTP/1.0 200 Connection Established&lt;br /&gt;'DEBUG: recv: 'Proxy-agent: Apache/2.2.3 (Debian)&lt;br /&gt;'DEBUG: recv: '&lt;br /&gt;'Starting tunnel&lt;br /&gt;Linux myhost 2.6.15-1-amd64-generic #2 Mon Mar 20 10:43:41 UTC 2006 x86_64&lt;br /&gt;&lt;br /&gt;The programs included with the Debian GNU/Linux system are free software;&lt;br /&gt;the exact distribution terms for each program are described in the&lt;br /&gt;individual files in /usr/share/doc/*/copyright.&lt;br /&gt;&lt;br /&gt;Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent&lt;br /&gt;permitted by applicable law.&lt;br /&gt;Last login: Wed Dec 13 21:19:24 2006 from localhost&lt;br /&gt;myhost/ssh[45]:~% &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-8956344273965479042?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/8956344273965479042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/12/ssh-through-apache-proxy.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8956344273965479042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8956344273965479042'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/12/ssh-through-apache-proxy.html' title='SSH through Apache Proxy'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-8909220910014067120</id><published>2006-11-24T00:56:00.000+01:00</published><updated>2006-11-24T01:36:17.811+01:00</updated><title type='text'>How to write a screen presentation</title><content type='html'>If you are looking for a way to write a screen presentation you probably think about PowerPoint, or hopefully OpenOffice Impress.  But such an application is t' suck to load.  Actually all you need for a professional and beautiful presentation is a simple text editor.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://latex-beamer.sourceforge.net/"&gt;Beamer&lt;/a&gt; is a LaTeX package which helps to create a PDF presentation.  You will select a theme for the presentation, and type the titles, the sections and/or subsections, add some lists and the content.&lt;br /&gt;&lt;br /&gt;To install Beamer on a Debian system type &lt;code&gt;apt-get install latex-beamer&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Next try to "compile" this LaTeX example into PDF with the command &lt;code&gt;pdflatex&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% example.tex&lt;br /&gt;\documentclass{beamer}&lt;br /&gt;\usepackage[utf-8]{inputenc}&lt;br /&gt;\usetheme{Berlin}&lt;br /&gt;&lt;br /&gt;\title{Wireless Networks}&lt;br /&gt;\author{P. Pepin, M. Massonnet}\institute{IUT Nancy-Charlemagne}&lt;br /&gt;&lt;br /&gt;\begin{document}&lt;br /&gt;&lt;br /&gt;% A nice frontpage&lt;br /&gt;\frame{\titlepage}&lt;br /&gt;&lt;br /&gt;% Followed by the outline&lt;br /&gt;\section[Outline]{}&lt;br /&gt;\frame{\tableofcontents}&lt;br /&gt;&lt;br /&gt;\section{Panorama of technologies}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;        % This is an animation&lt;br /&gt;        \begin{itemize}&lt;br /&gt;        \item&lt;1-&gt; Bluetooth&lt;br /&gt;        \item&lt;2-&gt; UMTS&lt;br /&gt;        \item&lt;3-&gt; Wifi&lt;br /&gt;        \end{itemize}&lt;br /&gt;}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;    \frametitle{Bluetooth}&lt;br /&gt;    caca&lt;br /&gt;}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;    \frametitle{UMTS}&lt;br /&gt;    pipi&lt;br /&gt;}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;    \frametitle{Wifi}&lt;br /&gt;    cucul&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;\section{Local wireless networks}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;        \textsc{Beamer}, is really beautiful!&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;\section{Network protocols}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;        And it's easy.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;\section{Security}&lt;br /&gt;\frame&lt;br /&gt;{&lt;br /&gt;        \begin{itemize}&lt;br /&gt;        \item&lt;1-&gt; Easy&lt;br /&gt;        \item&lt;2-&gt; Fast&lt;br /&gt;        \item&lt;3-&gt; Simple&lt;br /&gt;        \end{itemize}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;\end{document}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Brilliant!  Isn't it?  ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-8909220910014067120?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/8909220910014067120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/11/how-to-write-screen-presentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8909220910014067120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/8909220910014067120'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/11/how-to-write-screen-presentation.html' title='How to write a screen presentation'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-5252158499075063042</id><published>2006-11-20T13:14:00.000+01:00</published><updated>2007-01-01T14:03:31.019+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Auto update the background list for Xfdestkop</title><content type='html'>I have written a quick script to update the list of the images for the background in Xfdesktop.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Update the background.list so the new downloaded wallpapers are available&lt;br /&gt;# to show up in Xfdesktop.&lt;br /&gt;LIST=$HOME/.config/xfce4/desktop/background.list&lt;br /&gt;echo "# xfce backdrop list" &gt; $LIST&lt;br /&gt;find $HOME/images/background/ -type f &gt;&gt; $LIST&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note: change in the last line the folder to the backgrounds.&lt;br /&gt;&lt;br /&gt;This script can be either putted in an .zshrc file.  Or better, if you use Xfce, save the script, under the name update-desktop-list.sh for example, to your personal bin folder (in my case $HOME/.local/bin) which is correctly set in the PATH, and run xfce4-autostart-editor.  You can add the command update-desktop-list.sh.&lt;br /&gt;&lt;br /&gt;Finally you have to set up Xfdesktop to use the list (located at $LIST) of backgrounds.  Go to Settings &gt; Desktop manager, and select the list as the file.  If it doesn't exist run the script a first time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-5252158499075063042?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/5252158499075063042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/11/auto-update-background-list-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5252158499075063042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/5252158499075063042'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/11/auto-update-background-list-for.html' title='Auto update the background list for Xfdestkop'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-116325680744499617</id><published>2006-11-11T14:48:00.000+01:00</published><updated>2007-01-10T18:48:20.393+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Real-transparent Terminal (yet again)</title><content type='html'>I have looked around the &lt;a href="http://bugzilla.gnome.org/attachment.cgi?id=67669&amp;action=view"&gt;patch for gnome-terminal&lt;/a&gt; from Kristian Høgsberg and also the &lt;a href="http://foo-projects.org/%7Ebenny/tmp/transparent-hack-Terminal.patch"&gt;one for Terminal&lt;/a&gt; from Benny, and I managed to do the same for Terminal again since the vte libs have been modified, and support for real-transparency has been added. It was really simple, just init the rgba colormap, and call vte_terminal_set_opacity :) It requires version 0.13.3 or higher of vte.&lt;br /&gt;&lt;br /&gt;Now someone could come with a good solution to integrate this nicely in Terminal. I think about a hidden option in ~/.config/Terminal/terminalrc, or even a slider.&lt;br /&gt;&lt;br /&gt;Here is a &lt;a href="http://mykey57.free.fr/pub/tmp/terminal-real-transparency.patch"&gt;first patch&lt;/a&gt;. It sets a hard-coded color for the alpha channel (0xDDDD).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Edit&lt;/strong&gt;: And here comes a &lt;a href="http://mykey57.free.fr/pub//tmp/terminal-real-transparency-with-hidden-option.patch"&gt;second patch&lt;/a&gt; which adds a hidden option for the opacity (ColorOpacity). It has to be in decimal, where 0xCCCC is 52428. Don't apply it over the first patch.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Edit 2&lt;/strong&gt;: Benny &lt;a href="http://svn.xfce.org/listing.php?repname=xfce4&amp;amp;path=%2Fterminal%2Ftrunk%2F&amp;rev=24157&amp;amp;sc=1"&gt;commited&lt;/a&gt; changes to the trunk with support for real transparency, and a check for the version of libvte.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mykey57.free.fr/pub/picture/w00t-terminal-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://mykey57.free.fr/pub/picture/w00t-terminal-2-tiny.png" alt="Screenshot Terminal" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-116325680744499617?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/116325680744499617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/11/real-traparent-terminal-yet-again.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116325680744499617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116325680744499617'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/11/real-traparent-terminal-yet-again.html' title='Real-transparent Terminal (yet again)'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-116237388926542299</id><published>2006-11-01T10:10:00.000+01:00</published><updated>2007-02-24T00:35:19.816+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>File-center</title><content type='html'>I have finally rewritten my File-center project.  It is a simple interface to download and upload files.  Now I use &lt;a href="http://smarty.php.net/"&gt;Smarty&lt;/a&gt; for this project and the default template is really nice.  The scripts for download and upload are simple too, and you never need to get to another interface.  You just upload a file, and next it appears in the current working directory.  If you want to download a file, the page will be reloaded and the download will start within 3 seconds.&lt;br /&gt;&lt;br /&gt;It is on &lt;a href="http://freshmeat.net/projects/filecenter/"&gt;Freshmeat.net/projects/filecenter/&lt;/a&gt; but the webpage of the project is hosted on my french &lt;a href="http://mykey57.free.fr/?rub=projects&amp;amp;page=file-center"&gt;homepage&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-116237388926542299?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://freshmeat.net/projects/filecenter/' title='File-center'/><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/116237388926542299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/11/file-center.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116237388926542299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116237388926542299'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/11/file-center.html' title='File-center'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-116237200942937672</id><published>2006-11-01T09:59:00.000+01:00</published><updated>2006-11-12T00:31:32.850+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>White &amp; Nerdy</title><content type='html'>&lt;table xmlns="http://purl.org/atom/ns#" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;embed flashvars="" id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docId=1384277706451157121&amp;amp;hl=fr" style="width:400px; height:326px;" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr/&gt;&lt;tr&gt;&lt;td&gt;"Weird Al" Yankovic's music video from his new album "Straight Outta Lynwood" (in stores Sept. 26)&lt;br /&gt;&lt;br /&gt;It is "yet another" great video from Yankovic :)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-116237200942937672?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/116237200942937672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/11/white-nerdy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116237200942937672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116237200942937672'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/11/white-nerdy.html' title='White &amp; Nerdy'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-116088200749599177</id><published>2006-10-15T03:27:00.000+02:00</published><updated>2007-02-24T00:36:15.864+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>DokuWiki</title><content type='html'>Hi, long time gone since my last post.  Well, I was not doing "nothing", it's just annoying to blog until it is worth ;-)&lt;br /&gt;&lt;br /&gt;I started to take my notes from school with &lt;a href="http://zoidberg.student.utwente.nl/zim/"&gt;Zim&lt;/a&gt;.  It's a nice desktop wiki, simple and fast, which writes text files that can be sorted in a tree.  It does a really nice job.  I'm getting used to &lt;a href="http://www.inkscape.org/"&gt;Inkscape&lt;/a&gt; also, because I use it to draw the schemes and so on.&lt;br /&gt;&lt;br /&gt;After awhile I wanted to provide my notes on my website, so I started looking for a Wiki, 1) which writes to text files, 2) which supports more or less the same wiki syntax, 3) which is easy to update when I make changes from Zim.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I figured out &lt;a href="http://wiki.splitbrain.org/wiki:dokuwiki"&gt;DokuWiki&lt;/a&gt;, already used by two Xfce projects (&lt;a href="http://goodies.xfce.org/"&gt;Goodies&lt;/a&gt; and &lt;a href="http://thunar.xfce.org/pwiki/"&gt;Thunar&lt;/a&gt;).  The installation is really easy: download the latest version (currently there are RCs) from &lt;a href="http://www.splitbrain.org/projects/dokuwiki"&gt;here&lt;/a&gt;, extract the tarball inside one of your web directory, and launch &lt;tt&gt;install.php&lt;/tt&gt;.  One click and you can start with the wiki :-)&lt;br /&gt;&lt;br /&gt;I tested some stuff around, and I have get really good help from Christopher on the ##dokuwiki channel at Freenode.  Thank you dude :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First I configured a bit more DokuWiki, these are some of the settings I am using:&lt;br /&gt;&lt;pre&gt;$conf['userewrite'] = '2';&lt;br /&gt;$conf['mailguard'] = 'visible';&lt;br /&gt;$conf['mediadir'] = 'data/pages';&lt;br /&gt;$conf['mediaweb'] = 'data/pages';&lt;/pre&gt;&lt;br /&gt;The configuration userewrite allows to use pretty URLs.  With its value set to 2 you can have URLs like http://host/wiki/dokuwiki.php/directory:file.  With 1 you can use URLs rewrites from Apache or Lighttpd which removes dokuwiki.php from the URLs.  With 0 the pretty URLs are not used.&lt;br /&gt;&lt;br /&gt;mailguard obfuscates the emails in the way to avoid spam.&lt;br /&gt;&lt;br /&gt;Finally, mediadir and mediaweb, are set to the same directory as the pages.  I did so to simplify synchronization between the Zim and the wiki. With this setting I just have to connect to FTP with lftp, cd into the pages directory and run &lt;tt&gt;mirror -R&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I needed to get a syntax working with the one written by Zim.  There is a plugin &lt;a href="http://wiki.splitbrain.org/plugin:creole"&gt;Creole&lt;/a&gt; available which has the same syntax for the lists, and does proper breaklines for each end of line, I just had to remove the heading tho.  You can download it &lt;a href="http://mykey57.free.fr/pub/misc/creole.tgz"&gt;here&lt;/a&gt;.  Note that I still need to have a look at it for some formatting.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally I integrated a sitemap into the default theme with some piece of code from &lt;a href="http://wiki.splitbrain.org/plugin:indexmenu"&gt;indexmenu&lt;/a&gt; plugin.  You can download the theme &lt;a href="http://mykey57.free.fr/pub/misc/default.tar.bz2"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can visit my DokuWiki at &lt;a href="http://mykey57.free.fr/asrall/"&gt;http://mykey57.free.fr/asrall/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-116088200749599177?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/116088200749599177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/10/dokuwiki.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116088200749599177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/116088200749599177'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/10/dokuwiki.html' title='DokuWiki'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-115740898046248465</id><published>2006-09-05T00:29:00.000+02:00</published><updated>2007-02-10T13:30:13.009+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='www'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Note to webmasters</title><content type='html'>I was watching the statistics of my website, from free.fr, when, *&lt;strong&gt;wohoo&lt;/strong&gt;*, I have seen there were over 10000 visits in the last month. What's happening there? My website? 10000 visits? Something _&lt;u&gt;is&lt;/u&gt;_ wrong!&lt;br /&gt;&lt;br /&gt;After I've check out the facts, a website was using an image directly from mine. That sucks, and this webmaster is just an idiot. I was looking around his website to get contact with him, but, WTF is his email?! Nothing here, nothing there. OK! I have a radical solution to get him to drop the image.&lt;br /&gt;&lt;br /&gt;At this point you could be shocked if the name &amp;quot;g0atse&amp;quot; is something you don't know. So please don't open the next links I will print. The &lt;a href="http://mykey57.free.fr/img/label/css3.png"&gt;icon in question&lt;/a&gt; was no more used in my website, so I had just to create a special image for replacement &amp;gt;:-) I did, and voilà the result: &lt;a href="http://mykey57.free.fr/pub/picture/comar.gry-online.pl.png"&gt;comar.gry-online.pl.png&lt;/a&gt;. It took less than 6 hours before he dropped the image, actually he uploaded the original image to imageshack.us. Still an idiot.&lt;br /&gt;&lt;br /&gt;So, webmasters, do NEVER use an image directly from another website, it could be dropped from a day to another, or even worse...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-115740898046248465?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/115740898046248465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/09/note-to-webmasters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115740898046248465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115740898046248465'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/09/note-to-webmasters.html' title='Note to webmasters'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-115375743718675662</id><published>2006-07-24T18:08:00.000+02:00</published><updated>2010-03-27T21:53:21.578+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><title type='text'>Xfce4 notes plugin</title><content type='html'>First release of the Xfce4 notes plugin for Xfce 4.4.  Homepage is here: &lt;br /&gt;&lt;a href="http://goodies.xfce.org/projects/panel-plugins/xfce4-notes-plugin"&gt;http://goodies.xfce.org/projects/panel-plugins/xfce4-notes-plugin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All the best,&lt;br /&gt;Mike&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-115375743718675662?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/115375743718675662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/07/xfce4-notes-plugin.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115375743718675662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115375743718675662'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/07/xfce4-notes-plugin.html' title='Xfce4 notes plugin'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-115343139361236517</id><published>2006-07-20T23:24:00.000+02:00</published><updated>2010-03-27T21:53:21.578+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>One month without any message</title><content type='html'>I was busy.  And I'm still busy.&lt;br /&gt;&lt;br /&gt;I'm coding a new xfce4-notes-plugin for the new panel (version 4.4).  It is fun :)  I already have access on the webpages and the svn (or I guess so, I'm working on a local subversion at the moment).  Should be released at end of the week, actually when I will add the on_delete_page callback.  It supports multiple notes and some options for the window aspect (always on top, stick, show in taskbar, show at startup).&lt;br /&gt;&lt;br /&gt;Also, I was at RMLL2006, and there was a wet man searching the reception... it was p0llux!  After one day I ran sick... because of the heat.  I was lug around Vandoeuvre to get in a Pharmacy (thanks guys).  I didn't assist any conference all the week :/&lt;br /&gt;&lt;br /&gt;See you in the next post about the first release of xfce4-notes-plugin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-115343139361236517?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/115343139361236517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/07/one-month-without-any-message.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115343139361236517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115343139361236517'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/07/one-month-without-any-message.html' title='One month without any message'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-115070890597648378</id><published>2006-06-19T11:17:00.000+02:00</published><updated>2006-11-12T00:31:31.640+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'></title><content type='html'>Back off, I have my new (and first) laptop, it is an &lt;a href="http://www.asus.com/products4.aspx?l1=5&amp;l2=26&amp;l3=270&amp;model=1068&amp;modelmenu=1"&gt;Asus A8F&lt;/a&gt;.  I'm very happy, therefore this post.&lt;br /&gt;&lt;br /&gt;See you sucker*.&lt;br /&gt;&lt;br /&gt;* You dreaming of such a laptop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-115070890597648378?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/115070890597648378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/06/back-off-i-have-my-new-and-first.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115070890597648378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115070890597648378'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/06/back-off-i-have-my-new-and-first.html' title=''/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-115030444262332477</id><published>2006-06-14T18:58:00.000+02:00</published><updated>2006-11-12T00:31:31.394+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>mmassonnet += 1 year</title><content type='html'>Today is my birthday and for this day I have get a nice cake, see here:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6952/2930/1600/cake-22years.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6952/2930/400/cake-22years.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-115030444262332477?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/115030444262332477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/06/mmassonnet-1-year.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115030444262332477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/115030444262332477'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/06/mmassonnet-1-year.html' title='mmassonnet += 1 year'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-114860194597408012</id><published>2006-05-25T23:30:00.000+02:00</published><updated>2006-11-12T00:31:31.210+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><title type='text'>Theming is my actual pleasure</title><content type='html'>&lt;h3&gt;Xfwm4&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6952/2930/1600/Default-mike2.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6952/2930/200/Default-mike2.png" border="0" alt="" /&gt;&lt;/a&gt;I did some theming around the original theme of Xfce 4.4.&lt;br /&gt;&lt;br /&gt;All I wanted was the title bar to be a bit smaller.  I managed to reduce it from 6 pixels.  Then I simplified the buttons.  The work was quite long with redundant actions, well it is what it is.  Now I have my theme :)&lt;br /&gt;&lt;br /&gt;I posted my modifications at &lt;a href="http://www.xfce-look.org/content/show.php?content=39773"&gt;Xfce-look.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;ajaxMP&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6952/2930/1600/ajaxmp-dawn.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6952/2930/400/ajaxmp-dawn.png" border="0" alt="" /&gt;&lt;/a&gt;I also did a theme for &lt;a href="http://mroyer31.hd.free.fr/dokuwiki/doku.php"&gt;ajaxMP&lt;/a&gt; a little time ago which is based on Xfce-dawn theme (which is my current theme moreover).  ajaxMP is a web interface for &lt;a href="http://musicpd.org/"&gt;Music Daemon Player&lt;/a&gt;.  I already mentionned it in the post "&lt;a href="http://mmassonnet.blogspot.com/2006/05/my-current-apps_17.html"&gt;My current apps&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;I am also working on a web design in black for a french rap production.  They have very good instrumentals and I am sure the CD they are producting will kick ass.  However I prefer good old Pink Floyd at this time.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-114860194597408012?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/114860194597408012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/05/theming-is-my-actual-pleasure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114860194597408012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114860194597408012'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/05/theming-is-my-actual-pleasure.html' title='Theming is my actual pleasure'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-114826988628116719</id><published>2006-05-22T05:17:00.000+02:00</published><updated>2006-11-12T00:31:30.915+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free-time'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Feed2rss filter in Python</title><content type='html'>Hello,&lt;br /&gt;&lt;br /&gt;As I am trying to get used to &lt;a href="http://kiza.kcore.de/software/snownews/"&gt;snownews&lt;/a&gt; I ran into the need to convert atoms(&lt;a href="http://www.atomenabled.org/"&gt;?&lt;/a&gt;) from Blogger.com in rss(&lt;a href="http://web.resource.org/rss/1.0/"&gt;?&lt;/a&gt;).  Why? because snownews only supports RSS.  I was telling to myself &lt;span style="font-style:italic;"&gt;"YZAH, I'm gonna try out Ruby"&lt;/span&gt; but after 2 minutes I (re)turned to Python :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://feedparser.org/"&gt;Feedparser&lt;/a&gt; is excellent and is available for Python as for Ruby.  It can handle any types of feeds and you will be able to output the information as you want.&lt;br /&gt;&lt;br /&gt;The script I wrote can be used by two ways.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can choose between giving it a URL:&lt;br /&gt;&lt;tt&gt;feed2rss.py http://mmassonnet.blogspot.com/atom.xml&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;or passing it the content of a feed through a pipe:&lt;br /&gt;&lt;tt&gt;curl -s http://mmassonnet.blogspot.com/atom.xml|feed2rss.py&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;#-*- coding: utf-8 -*-&lt;br /&gt;# Parses an atom file and generates an RSS1.0&lt;br /&gt;# Author: Mike Massonnet (mmassonnet) &amp;lt;mmassonnet at gmail dot com&amp;gt;&lt;br /&gt;# License: GNU General Public License 2 and above &lt;br /&gt;#          (cf. &lt;a href="http://www.gnu.org/licenses/gpl.html"&gt;http://www.gnu.org/licenses/gpl.html&lt;/a&gt;)&lt;br /&gt;from feedparser import parse&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;if not len (sys.argv) &amp;gt; 1 and sys.stdin.isatty ():&lt;br /&gt;    sys.stderr.write ('Usage: '+sys.argv[0]+' &amp;lt;url&amp;gt;\n')&lt;br /&gt;    sys.exit (-1)&lt;br /&gt;&lt;br /&gt;if sys.stdin.isatty ():&lt;br /&gt;    d = parse (sys.argv[1])&lt;br /&gt;else:&lt;br /&gt;    d = parse (sys.stdin)&lt;br /&gt;&lt;br /&gt;if d.bozo:&lt;br /&gt;    sys.stderr.write ('Bad URL\n')&lt;br /&gt;    sys.exit (-2)&lt;br /&gt;print    '&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;\n'    '&amp;lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n'    '         xmlns:dc="http://purl.org/dc/elements/1.1/"\n'    '         xmlns:admin="http://webns.net/mvcb/"\n'    '         xmlns:content="http://purl.org/rss/1.0/modules/content/"\n'    '         xmlns:cc="http://web.resource.org/cc/"\n'    '         xmlns="http://purl.org/rss/1.0/"&amp;gt;\n'    ' &amp;lt;channel rdf:about="'+d.feed.title_detail.base+'"&amp;gt;\n'    '  &amp;lt;title&amp;gt;'+d.feed.title+'&amp;lt;/title&amp;gt;\n'    '  &amp;lt;link&amp;gt;'+d.feed.link+'&amp;lt;/link&amp;gt;\n'    '  &amp;lt;description&amp;gt;'+d.feed.subtitle+'&amp;lt;/description&amp;gt;\n'    '  &amp;lt;dc:language&amp;gt;'+d.feed.title_detail.language+'&amp;lt;/dc:language&amp;gt;\n'    '  &amp;lt;dc:creator&amp;gt;'+d.entries[0].author+'&amp;lt;/dc:creator&amp;gt;\n'    '  &amp;lt;dc:date&amp;gt;'+d.feed.modified+'&amp;lt;/dc:date&amp;gt;\n'    '  &amp;lt;admin:generatorAgent rdf:resource="'+d.feed.generator_detail.href+'"/&amp;gt;\n'    '  &amp;lt;items&amp;gt;\n'    '   &amp;lt;rdf:Seq&amp;gt;\n'&lt;br /&gt;for entry in d.entries:&lt;br /&gt;    print '    &amp;lt;rdf:li rdf:resource="'+entry.link+'"/&amp;gt;\n'&lt;br /&gt;print    '   &amp;lt;/rdf:Seq&amp;gt;\n'    '  &amp;lt;/items&amp;gt;\n'    ' &amp;lt;/channel&amp;gt;\n'&lt;br /&gt;for entry in d.entries:&lt;br /&gt;    print    ' &amp;lt;item rdf:about="'+entry.link+'"&amp;gt;\n'    '  &amp;lt;title&amp;gt;'+entry.title+'&amp;lt;/title&amp;gt;\n'    '  &amp;lt;link&amp;gt;'+entry.link+'&amp;lt;/link&amp;gt;\n'    '  &amp;lt;description&amp;gt;&amp;lt;![CDATA['+entry.content[0].value+']]&amp;gt;&amp;lt;/description&amp;gt;\n'    '  &amp;lt;dc:date&amp;gt;'+entry.updated+'&amp;lt;/dc:date&amp;gt;\n'    ' &amp;lt;/item&amp;gt;\n'&lt;br /&gt;print    '&amp;lt;/rdf:RDF&amp;gt;\n'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now when I add an atom feed into snownews I apply this filter and that's all folks ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-114826988628116719?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/114826988628116719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/05/feed2rss-filter-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114826988628116719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114826988628116719'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/05/feed2rss-filter-in-python.html' title='Feed2rss filter in Python'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-114734070035080348</id><published>2006-05-17T03:14:00.000+02:00</published><updated>2007-02-26T16:24:55.578+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mpd'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>My current apps</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;I am gonna show you my more commons applications. This will include: desktop environment, email client, chat, music, browser, news aggregator, file manager and other thingies.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Desktop Environment&lt;/h3&gt;&lt;br /&gt;It is &lt;a href="http://www.xfce.org/"&gt;Xfce&lt;/a&gt;! No you didn't guess it? even with all my Xfce related links? :-) Well I like it. I am currently using the &lt;a href="http://subversion.tigris.org/"&gt;svn&lt;/a&gt; version which is gonna be the next stable release, version 4.4. This also means that the svn won't see new features which could broke the code before the release.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.xfce.org/index.php?page=documentation&amp;lang=en#install"&gt;here&lt;/a&gt; how to install from svn or &lt;a href="http://www.p0llux.be/xfce/xfce-4.3.90.1/installers/"&gt;get the 4.4Beta1&lt;/a&gt;. The Beta 1 will also be available in Debian/Sid as soon as some libs get out from the &lt;a href="http://ftp-master.debian.org/new.html"&gt;NEW&lt;/a&gt; state.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6952/2930/1600/my-desktop.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6952/2930/200/my-desktop.jpg" border="0" alt="" /&gt;&lt;/a&gt; I have a moveable panel with worspace margins. If I am missing a workspace I just type ALT+Insert. At the opposite I type ALT+Delete ;) There are nice plugins for the panel. I am using the window list plugin to not feed my display with a large panel and buttons of applications on it. I have a clipboard manager for the default and primary clipboard. There is a box execution which does autocompletion and history: verve. There is also a systray box and clock plugins. Furthermore there are monitoring plugins for network (netload), system (systemload and cpugraph) and sound (xfce4-mixer).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Email Client&lt;/h3&gt;&lt;br /&gt;I am completely amazed with &lt;a href="http://claws.sylpheed.org/"&gt;Sylpheed-Claws&lt;/a&gt; 2.2. It does the &lt;a href="http://www.gnupg.org/"&gt;GNUPG&lt;/a&gt; signatures and encryptions. It supports filtering and, something new I learned from it, treatments on folders when you enter them, for instance it is very useful to move old emails into archives. It has a systray icon and I have setup a &lt;tt&gt;`playsound &lt;a href="http://homepage.massonnet.org/pub/misc/new_mail.ogg"&gt;new_mail.ogg&lt;/a&gt;`&lt;/tt&gt; when I get new emails. You can read the different parts (mime types) of an email just by clicking on buttons on the side (useful for HTML docs or attached patches). I like it, actually it is ass-kicking!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Chat (IRC, Jabber)&lt;/h3&gt;&lt;br /&gt;&lt;a href="http://www.irssi.org/"&gt;irssi&lt;/a&gt; and &lt;a href="http://gajim.org/"&gt;Gajim&lt;/a&gt; are my all and one at the moment.&lt;br /&gt;&lt;br /&gt;irssi always fits into a &lt;a href="http://www.gnu.org/software/screen/"&gt;screen&lt;/a&gt;, and if it is not running, this is my command line: &lt;tt&gt;screen -S irssi irssi&lt;/tt&gt;, and next I will be able to detach, attach, reattach, multiple attach it in any Terminal I want. Recently I received a nice &lt;a href="http://homepage.massonnet.org/pub/misc/screenrc"&gt;screenrc&lt;/a&gt; from omp. With this configuration I am able to see the numbers with names of the windows at the bottom (this rocks!). In irssi you can easily add a server or a channel to auto join, an alias or set the layout. Just type /help for this commands, or better, just type &lt;tt&gt;/help&lt;/tt&gt; ;) My preferred theme is &lt;a href="http://www.irssi.org/themefiles/madcow.theme"&gt;madcow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Gajim is a very good client for &lt;a href="http://www.jabber.org/about/overview.shtml"&gt;Jabber&lt;/a&gt;. It supports avatars and tabbed window chat (you can detach them of course). The file transfer works fine. Its interface is fancy and simple. For creating or adding accounts it has a three steps wizard. Oh, and maybe the most interesting aspect, it uses dbus and has a gajim-remote python script so you can command it from your own scripts.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Web Browser&lt;/h3&gt;&lt;br /&gt;As a browser of today which supports CSS, HTML, Javascript, DOM, and all the latest stuff for the web, I use &lt;a href="http://www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt;. It has some very useful extensions: &lt;a href="http://www.customizegoogle.com/"&gt;CustomizeGoogle&lt;/a&gt;, &lt;a href="http://adblock.mozdev.org/"&gt;Adblock&lt;/a&gt;, &lt;a href="http://www.nexgenmedia.net/extensions/"&gt;Gmail Notifier&lt;/a&gt;, &lt;a href="http://www.noscript.net/whats"&gt;NoScript&lt;/a&gt;, &lt;a href="http://addneditcookies.mozdev.org/"&gt;Add N Edit Cookies&lt;/a&gt;, &lt;a href="http://chrispederick.com/work/webdeveloper/"&gt;Web Developer&lt;/a&gt;, &lt;a href="http://livehttpheaders.mozdev.org/"&gt;Live HTTP Headers&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/firefox/1532/"&gt;del.icio.us&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/firefox/1800/"&gt;Parent folder&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Another nice graphic browser is the one from Gnome: &lt;a href="http://www.gnome.org/projects/epiphany/"&gt;Epiphany&lt;/a&gt;. Its engine is also Gecko. However it is slow in rendering big documents (like 20 pages).&lt;br /&gt;&lt;br /&gt;Next comes &lt;a href="http://www.dillo.org/"&gt;Dillo&lt;/a&gt;. It is my first choice because it shows up very quickly and doesn't support CSS, so you just have to scroll to the text and read it black on white :) It supports bookmarks in a nice way.&lt;br /&gt;&lt;br /&gt;Then comes the text browsers: &lt;a href="http://links.sourceforge.net/"&gt;links&lt;/a&gt; (it has a graphic mode in X11 as in frame-buffer) and &lt;a href="http://lynx.isc.org/"&gt;lynx&lt;/a&gt;. links supports Javascript while lynx doesn't... that's a point enough for me to have both :o)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;News Aggregator&lt;/h3&gt;&lt;br /&gt;&lt;a href="http://liferea.sourceforge.net/"&gt;Liferea&lt;/a&gt; is a nice shot. You can add virtual folders to match strings on the whole news. It is very nifty to filter out topics you want to read ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kiza.kcore.de/software/snownews/about.en"&gt;snownews&lt;/a&gt; is an alternative for console-addicted.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;File Manager&lt;/h3&gt;&lt;br /&gt;I'm using &lt;a href="http://thunar.xfce.org/pwiki/"&gt;Thunar&lt;/a&gt; for a while now. It is really nice for managing images and launching videos. I have some &lt;a href="http://thunar.xfce.org/pwiki/documentation/custom_actions#examples"&gt;customized actions&lt;/a&gt; for file types and directories (i.e. for music folders, images, opening a Terminal or archives).&lt;br /&gt;&lt;br /&gt;It supports: mouse gesture, thumbnails, multiple views (Icon, Tree and Compact), &lt;a href="http://thunar.xfce.org/pwiki/documentation/bulk_renamer"&gt;bulk renamer&lt;/a&gt; for simply rename multiple files, file alteration monitor (&lt;a href="http://www.gnome.org/~veillard/gamin/"&gt;Gamin&lt;/a&gt; or FAM), plugins, ...&lt;br /&gt;&lt;br /&gt;And everything goes faster ;)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Music&lt;/h3&gt;&lt;br /&gt;The last month I tried &lt;a href="http://www.gnome.org/projects/rhythmbox/"&gt;Rhythmbox&lt;/a&gt; from Gnome and I didn't ended up with it. I just don't remember exactly why but I think it was because of its interface and it was the first time I saw a player without "Stop" (you will understand later ;).&lt;br /&gt;&lt;br /&gt;Next I tried &lt;a href="http://www.musicpd.org/"&gt;Musid Player Daemon&lt;/a&gt; (MPD in short). It is very attractive. It is launched as a service at boot time just after I mount my LVM devices, and starts playing. YAY, you don't need Xorg! There are many clients for MPD. For example &lt;a href="http://www.musicpd.org/mpc.shtml"&gt;mpc&lt;/a&gt; is a command line tool, fantastic for scripts. Then there is &lt;a href="http://hem.bredband.net/kaw/ncmpc/"&gt;ncmpc&lt;/a&gt; which is a ncurses interface to control your music. Next there is &lt;a href="http://cms.qballcow.nl/index.php?page=Gnome_Music_Player_Client"&gt;gmpc&lt;/a&gt;, it is a simple GTK+ interface with plugins like covers, lyrics or OSD. Finally you can have web based clients. I tried &lt;a href="http://mroyer31.hd.free.fr/dokuwiki/doku.php"&gt;ajaxmp&lt;/a&gt; for a better experience. It supports drag'n'drop and all possible MPD stuff. A must when you are not working on your usual desktop environment :)&lt;br /&gt;&lt;br /&gt;As of today, I'm using &lt;a href="http://www.sacredchao.net/quodlibet"&gt;Quod Libet&lt;/a&gt; for less than a week ago. I tried it and directly understood that this is the Multimedia Music Media Player For Lot Of Music player I want :) I didn't use all of its possibilities and features yet but it manages a collection, just like Rhythmbox and MPD, shows covers, fetches lyrics, make notations, looks pretty good, has no "Stop" button (I'm used to it now:), does cool things like playing random albums, has a lot of views and has a lot of plugins. It is promising :) Its OSD just rocks bottom. I can flood IRC with &lt;tt&gt;`quodlibet --print-playing`&lt;/tt&gt; . It is definitely the coolest music player I ever had.&lt;br /&gt;&lt;br /&gt;Id3 tags can be edited rather with &lt;a href="http://easytag.sourceforge.net/"&gt;EasyTAG&lt;/a&gt; (MP3, MP2, MP4/AAC, FLAC, Ogg Vorbis, MusePack and Monkey's Audio files), Quod Libet (Ex Falso) or a &lt;a href="http://thunar.xfce.org/pwiki/projects/thunar-media-tags-plugin"&gt;plugin&lt;/a&gt; for Thunar.&lt;br /&gt;&lt;br /&gt;For console-addicted I can list: &lt;a href="http://en.wikipedia.org/wiki/Mpg123"&gt;mpg123&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Ogg123"&gt;ogg123&lt;/a&gt; and &lt;a href="http://mp3blaster.sourceforge.net/"&gt;mp3blaster&lt;/a&gt; (OSS driver) which provides a nice id3 tag viewer tool: &lt;tt&gt;mp3tag&lt;/tt&gt;. &lt;tt&gt;playsound&lt;/tt&gt; from the libsdl-sound package is also fine.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Thingies (rather unclassed)&lt;/h3&gt;&lt;br /&gt;Here I am gonna list some useful tools very quickly just to name them and to conclude with a nice paragraph ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gnome.org/projects/evince/"&gt;Evince&lt;/a&gt; and &lt;a href="http://www.foolabs.com/xpdf/about.html"&gt;xpdf&lt;/a&gt; are cool pdf viewers. &lt;a href="http://stardict.sourceforge.net/"&gt;Stardict&lt;/a&gt; is a cool dictionnary. GNU people are cool, don't hit them with stupid questions, RTFM instead. A &lt;a href="http://xfce-diary.blogspot.com/2006/03/transparent-terminal-hack.html"&gt;hacked Terminal&lt;/a&gt; is worth a try, personnaly I changed the alpha color value from #aaa to #ccc because this way I can read something. &lt;a href="http://xmoto.sourceforge.net/"&gt;XMoto&lt;/a&gt; is a funny and simple game but &lt;a href="http://noiz2sa.sourceforge.net/"&gt;Noiz2sa&lt;/a&gt; is a must game. &lt;a href="http://lftp.yar.ru/"&gt;lftp&lt;/a&gt; is a good ftp client which looks like a shell. &lt;a href="http://gcolor2.sourceforge.net/"&gt;gcolor2&lt;/a&gt; is a cool color selector. &lt;a href="http://www.mplayerhq.hu/design7/info.html"&gt;mplayer&lt;/a&gt;, &lt;a href="http://www.videolan.org/vlc/"&gt;VLC&lt;/a&gt; and &lt;a href="http://www.gnome.org/projects/totem/"&gt;Totem&lt;/a&gt; are good video players. &lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt; is useful. &lt;a href="http://k3b.plainblack.com/about"&gt;K3B&lt;/a&gt;, &lt;a href="http://gnomebaker.sourceforge.net/"&gt;Gnomebaker&lt;/a&gt; and &lt;a href="http://svn.xfce.org/svn/xfce/xfburn/"&gt;Xfburn&lt;/a&gt; can all burn CDs and DVDs. &lt;a href="http://pan.rebelbase.com/"&gt;Pan&lt;/a&gt; and &lt;a href="http://www.tin.org/"&gt;tin&lt;/a&gt; are for USENET. &lt;a href="http://www.gimp.org/"&gt;The GIMP&lt;/a&gt; can do cool stuff while &lt;a href="http://gqview.sourceforge.net/"&gt;GQview&lt;/a&gt; is a nice image explorer. &lt;a href="http://wiki.foosel.net/linux/devilspie"&gt;Devil's Pie&lt;/a&gt; is a good window matching utility. &lt;a href="http://www.inkscape.org/"&gt;Inkscape&lt;/a&gt; can do some complete vector graphics. &lt;a href="http://moc.daper.net/"&gt;MOC&lt;/a&gt; is yet another good audio player for the console. &lt;a href="http://htop.sourceforge.net/"&gt;htop&lt;/a&gt; is a nice process explorer.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;In conclusion&lt;/h3&gt;&lt;br /&gt;As you can read I cover most of all my needs with Xfce4.4. I don't wan't a desktop dependant environment especially like GNOME or KDE. Both are making good stuff but I find them quite heavy.&lt;br /&gt;If you are looking for a more lightweight environment I suggest you &lt;a href="http://icculus.org/openbox/"&gt;Openbox&lt;/a&gt; ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-114734070035080348?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/114734070035080348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/05/my-current-apps_17.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114734070035080348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114734070035080348'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/05/my-current-apps_17.html' title='My current apps'/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27773648.post-114713730640121424</id><published>2006-05-09T02:57:00.000+02:00</published><updated>2006-11-12T00:31:30.071+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'></title><content type='html'>Be welcome on my blog.&lt;br /&gt;&lt;br /&gt;I am trying to get more and more involved in Information Technologies especially around Unix systems. I don't care about languages like C#, .NET, ASP or Basic (brrr) because they are not free and therefore it can't be good for information. I do care about Python, PHP, Shell scripts, a bit of Perl and a bit Java. I know some HTML, CSS, Javascript and SQL. I like very much programming in C where GTK+ is a fine toolkit.&lt;br /&gt;&lt;br /&gt;When I find something new and I enjoy it, I just open my blog and share it ;)&lt;br /&gt;&lt;br /&gt;You should also have a look at my &lt;a href="http://blog.massonnet.org/archives.php"&gt;old blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Mike.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27773648-114713730640121424?l=blog.mmassonnet.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.mmassonnet.info/feeds/114713730640121424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.mmassonnet.info/2006/05/be-welcome-on-my-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114713730640121424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27773648/posts/default/114713730640121424'/><link rel='alternate' type='text/html' href='http://blog.mmassonnet.info/2006/05/be-welcome-on-my-blog.html' title=''/><author><name>Mike Massonnet</name><uri>http://www.blogger.com/profile/00582966565407297350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_wcTww_e0VUY/S_qRwbRCvRI/AAAAAAAAATo/-E5CGEMO9qY/S220/P1000198.JPG'/></author><thr:total>0</thr:total></entry></feed>
