Atualizando o Listen

19/10/06

Há tempos uso o Listen como player, mas uma muito chata que ele tinha era não manter a ordem das faixas quando você arrastava um álbum para a playslit. Ia mandar um e-mail para o desenvolvedor, mas entrei no site antes. Uma nova versão foi lançada e, felizmente, este erro foi corrigido.

Existe um repositório com a versão 0.5 beta, que embora esteja descrita como "instável", não deu nenhum erro até agora! Tem uma série de melhorias na interface e algumas novas funcionalidades. Se quiser atualizar para a nova versão, siga os passos abaixo:

Edite seu arquivo "sources.list":

$sudo gedit /etc/apt/sources.list

Cole o repositório abaixo e salve o arquivo.

deb http://theli.free.fr/packages/ dapper listen listen-unstable

Atualize a lista de pacotes e faça um dist-upgrade:

$sudo aptitude update
$sudo aptitude dist-upgrade

Pronto!

Ubuntu e wxPython

18/10/06

Há uns 3 anos eu organizo meus arquivos MP3 com o Music Brainz, mas por relaxo deixei acumular uma grande quantidade. Se você é como eu, sabe como é horrível ouvir um álbum sem as faixas estarem na ordem que foram lançadas. E esse software facilita muito na hora de deixar tudo organizado.

Estrutura: MP3

Instalei o Picard, cliente para Linux, mas toda vez que eu ia rodar, parava em um erro.

error while loading shared libraries: libwx_gtk2u_xrc-2.6.so.0: cannot open shared

Foi quando eu lembrei que eu também não conseguia usar o poEdit por causa deste mesmo erro. A solução foi (re)instalar os pacotes wxPython. Primeiro, certifique-se que os pacotes não estão instalados.

$sudo apt-get remove --purge python-wxgtk2.6 libwxgtk2.6-0

Depois, edite o arquivo "sources.list", adicionando o repositório com os pacotes necessários.

$sudo gedit /etc/apt/sources.list

Cole as linhas abaixo:

#wxPython
deb http://starship.python.net/crew/robind/wxPython/apt/ binary/
deb-src http://starship.python.net/crew/robind/wxPython/apt/ source/

Agora, basta atualizar a lista de pacotes e instalar.

$sudo aptitude update
$sudo aptitude install python-wxgtk2.6 python-wxversion python-wxtools

Pronto! É só mandar bala!

Detectando o screensaver com D-BUS

14/10/06

Imagine que você precise detectar se o screensaver está ativo ou não. Utilizando o D-BUS, é muito simples!

Tudo o que você precisa fazer é acessar a interface "org.gnome.ScreenSaver", presente no Gnome.

bus = dbus.SessionBus()
obj = bus.get_object('org.gnome.ScreenSaver', '/org/gnome/ScreenSaver')
screensaver = dbus.Interface(obj, 'org.gnome.ScreenSaver')
screensaver.connect_to_signal('ActiveChanged', detect_screensaver)

Abaixo, você tem um exemplo completo.

#! /usr/bin/env python
 
import dbus
import dbus.glib
import commands
import gtk
 
def detect_screensaver(enabled):
    print "Screensaver enabled? %s" % enabled
 
def enable_screensaver(widget):
    commands.getoutput(' gnome-screensaver-command --activate')
 
bus = dbus.SessionBus()
obj = bus.get_object('org.gnome.ScreenSaver', '/org/gnome/ScreenSaver')
screensaver = dbus.Interface(obj, 'org.gnome.ScreenSaver')
screensaver.connect_to_signal('ActiveChanged', detect_screensaver)
 
win = gtk.Window()
button = gtk.Button('Activate screensaver')
 
win.connect('destroy', gtk.main_quit)
button.connect('pressed', enable_screensaver)
 
win.add(button)
win.show_all()
 
gtk.main()