Saturday, December 27, 2008

Adding new Keybinding in gnome-keybinding-properties

So I was playing with compiz after quite some time not using it due to frequent i855gm driver failures (yep I'm using an old box with old card). While enhancing simple-ccsm a bit here and there to add some more config widget to my liking, I discovered that new gconf keybinding can be added into the configuration tool pretty easily.

Just create an XML file in /usr/share/gnome-control-center/keybindings/ with the keys. Done.

Here's an example of a little mapping I did for Compiz's Scale and Expo plugin.


<?xml version="1.0" encoding="UTF-8"?>
<KeyListEntries wm_name="compiz" package="compiz" name="Extra">

<KeyListEntry
name="/apps/compiz/plugins/scale/allscreens/options/initiate_key"/>

<KeyListEntry
name="/apps/compiz/plugins/expo/allscreens/options/expo_key"/>

</KeyListEntries>


The result?

Friday, December 26, 2008

CompizFusion DesktopEffects Dialog

A little something I wrote last night.



So, what it do?. Simply a little workaround of the problem Fedora users had for quite a long time - getting Compiz Fusion to run on login properly using ccp (libcompizconfig) plugin. The "Advanced" button will launch Simple-CCSM, and the "Expert" button will launch CCSM ( the buttons are disabled if the command doesn't exist).

Why not I create this long ago??. The infrastructure to drop in a window manager without patching gnome-wm was not available before. The recent change in GNOME to use a .desktop file to launch the window manager and "/desktop/gnome/session/required_components/windowmanager" gconf key to store window manager selection made this now possible - bit more elegantly.

Git Repository
RPM Packages

I wonder if this can be accepted in the repo.

Thursday, December 25, 2008

Hack: A bit better yum-fastestmirror patch

Those who use Fedora might be familiar with yum-fastestmirror plugin. Its a plugin for yum which polls yum mirrors for the one which responds the fastest. However, sometimes, the polling result might not be one might expected.

For example, with the current fastestmirror, I usually get the singaporean mirror as the fastest. But, the singaporean mirror, in fact, only gives me around 2-4KBps download speed, which of course, pissed me off. The taiwanese and the australian mirrors give faster speed than that. So, I went looking at the fastestmirror code.

Seems like fastestmirror does not sort mirrors by its download speed, but rather, by it connect() respond speed. That basically explains why it sometimes pick a mirror with slow download speed as fastest. As fast respond to connect(), doesn't necessarily means the mirror have higher upload speed bandwidth.

So, I changed a bit of that behavior. Altered the code to download the repomd.xml, , see how fast the download went, and sort the mirrors according to that. For those who interested, my patch is here: fastestmirror-repomd-download-speed-timing.patch.

(Yup2, I know repomd.xml is too small for evaluating bandwidth download speed accurately, but at least thats better than simply connect(), and other files might be too large resulting in the polling process slower)

If anybody want to improve on that patch, as usual, feel free to do so :D .