Con questo trick riuscirete a scrillare le pagine usando il trackpad del vostro Thinkpad tenendo premuto il tasto centrale.
Create il nuovo file /usr/lib/X11/xorg.conf.d/20-thinkpad.conf e incollateci il seguente:
Section "InputClass"
Identifier "Trackpoint Wheel Emulation"
MatchProduct "TrackPoint"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "Emulate3Buttons" "false"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Ora riavviate X.
Se invece stai usando Ubuntu 10.10 sposta il file in /usr/share/X11
sudo mv /usr/lib/X11/xorg.conf.d/20-thinkpad.conf /usr/share/X11/xorg.conf.d/20-thinkpad.conf
Ahime` come si sa` le Gtk::Label non supportano il wrapping dinamico su resize.
Vabbe`, estendiamo Gtk::Label e iimplementiamo il wrap dinamico.
Ecco la classe in Ruby:
require 'gtk2'
class WrapLabel < Gtk::Label
def initialize(s = '')
super()
self.wrap = true
self.wrap_mode = Pango::WRAP_WORD_CHAR
self.set_alignment(0.0, 0.0)
self.text = s
self.signal_connect_after('size-allocate') do |w, a|
lw_old, lh_old = self.layout.size
if lw_old / Pango::SCALE != a.width
self.layout.set_width(a.width * Pango::SCALE)
lw, lh = self.layout.size
self.set_size_request(-1, lh / Pango::SCALE) if lh_old != lh
end
end
end
end
end

Bello vero?? Magari un giorno spieghero` come creare un widget GTK personalizzato manipolando la renderizzazione con Cairo…
Allora se usate MacOSX e avete installato XCode avrete anche Ruby 1.8. Ora vediamo come installare anche Ruby 1.9 e switchare tra le due versioni.
Per prima cosa usando Macports installiamo Ruby 1.9
sudo port install ruby19
Adesso possiamo questo semplice script in bash per switchare tra le due versioni
#!/usr/bin/env bash
rbv=$(ruby -v)
rv=${rbv:5:3}
function r18 () {
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/erb /usr/bin/erb
ln -s /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem /usr/bin/gem
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/irb /usr/bin/irb
ln -s /usr/bin/rake.1.8 /usr/bin/rake
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/rdoc /usr/bin/rdoc
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ri /usr/bin/ri
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby /usr/bin/ruby
ln -s /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/testrb /usr/bin/testrb
}
function r19 () {
ln -s /opt/local/bin/erb1.9 /usr/bin/erb
ln -s /opt/local/bin/gem1.9 /usr/bin/gem
ln -s /opt/local/bin/irb1.9 /usr/bin/irb
ln -s /opt/local/bin/rake1.9 /usr/bin/rake
ln -s /opt/local/bin/rdoc1.9 /usr/bin/rdoc
ln -s /opt/local/bin/ri1.9 /usr/bin/ri
ln -s /opt/local/bin/ruby1.9 /usr/bin/ruby
ln -s /opt/local/bin/testrb1.9 /usr/bin/testrb
}
function cleanruby () {
rm /usr/bin/erb
rm /usr/bin/gem
rm /usr/bin/irb
rm /usr/bin/rake
rm /usr/bin/rdoc
rm /usr/bin/ri
rm /usr/bin/ruby
rm /usr/bin/testrb
}
if [ ${rv} = 1.8 ]; then
echo "Current version is 1.8 swaping to 1.9"
cleanruby
r19
elif [ ${rv} = 1.9 ]; then
echo "Current version is 1.9 swapping to 1.8"
cleanruby
r18
fi
exit
Ecco, ora per switchare tra le 2 versioni lanciamo quello script.
Ricordo che dovrete reinstallare tutte le gemme per Ruby 1.9.
Vediamo oggi come creare un’applicazione GTK in ruby utilizzando la potenza di Glade, il disegnatore di interfacce.
Per prima cosa installiamo glade e le librerie necessarie per il tutto:
sudo apt-get install glade
sudo apt-get install libgnome2-ruby
sudo apt-get install libglade2-ruby
Bene ora apriamo Glade e disegnamo la nostra interfaccia.

Salviamola e generaimo il template con:
ruby-glade-create-template interface.glade > interface.rb
Bene vediamo che diavolo abbiamo creato, apriamo il file interface.rb
#!/usr/bin/env ruby
#
# This file is gererated by ruby-glade-create-template 1.1.4.
#
require 'libglade2'
class ProvaGlade
include GetText
attr :glade
def initialize(path_or_data, root = nil, domain = nil, localedir = nil, flag = GladeXML::FILE)
bindtextdomain(domain, localedir, nil, "UTF-8")
@glade = GladeXML.new(path_or_data, root, domain, localedir, flag) {|handler| method(handler)}
end
end
# Main program
if __FILE__ == $0
# Set values as your own application.
PROG_PATH = "interface.glade"
PROG_NAME = "YOUR_APPLICATION_NAME"
ProvaGlade.new(PROG_PATH, nil, PROG_NAME)
Gtk.main
end
Dobbiamo fare una piccola modifica per vedere la finestra: alla fine della funzione initialize aggiungiamo @glade.get_widget('window1').show_all. Ovvero otteniamo la finestra principale, di default glade la chiama window1 e invochiamo show_all.
Lanciamo la miniapp con ruby interface.rb