Olá, a todos!
Nesta rápida dica, mostrarei como solucionar um bug do
Openbox na versão 3.5.0: ele é encerrado quando uma aplicação
GTK+ 3 é utilizada.
Assim que migrei para o
Slackware Current (64 bits), instalei o Openbox 3.5.0 através do seu
SlackBuild. O problema era que, de vez em quando (e do nada), o Xorg/Openbox era encerrado, e voltava para a tela de login.
Isso ocorreu inúmeras vezes, até que eu pude encontrar um padrão: isso só acontecia quando eu estava utilizando programas que utilizam GTK+ 3, como o
Evince ou o
Audacious. Desse modo, eu pude identificar o seguinte:
- O bug afeta aplicações que utilizam o GTK+ 3 e o Openbox 3.5.0;
- Ele só é disparado quando é ativado algum componente na barra de ferramentas (seletor de zoom e numeração de páginas, no caso do Evince, por exemplo);
- Ele só ocorre quando utiliza-se um tema GTK+ 3 junto com os programas. Ou seja, se você não utiliza nenhum tema GTK+ 3 e os seus programas possuem a aparência "crua", ele não se manifesta.
O bug afeta a versão 3.5.0 do Openbox e já foi solucionado em algumas distribuições:
Como solucionar
Há um patch disponibilizado nos links acima, que soluciona este problema. Basta aplicá-lo, recompilar o Openbox e reinstalá-lo. Para quem utiliza o Slackware, isso pode ser feito no próprio SlackBuild.
Vamos ao passo a passo:
1. Baixe o SlackBuild do Openbox:
wget http://slackbuilds.org/slackbuilds/14.1/desktop/openbox.tar.gz
2. Descompacte-o:
tar xvf openbox.tar.gz
3. Entre na pasta descompactada:
cd openbox
4. Baixe o source do
Openbox 3.5.0:
wget http://openbox.org/dist/openbox/openbox-3.5.0.tar.gz
5. Crie o arquivo
openbox-patch.patch:
vim openbox-patch.patch
Com o seguinte conteúdo:
--- openbox-3.5.0/openbox/moveresize.c.orig 2011-08-01 21:14:58.000000000 +0100
+++ openbox-3.5.0/openbox/moveresize.c 2012-03-28 20:04:36.100459920 +0100
@@ -326,6 +326,16 @@ void moveresize_end(gboolean cancel)
#endif
}
+ if (!moveresize_client) {
+ ob_debug("moveresize_end: moveresize_client is NULL!");
+ return;
+ }
+
+ if (!moveresize_in_progress) {
+ ob_debug("moveresize_end: moveresize_in_progress is FALSE!");
+ return;
+ }
+
/* don't use client_move() here, use the same width/height as
we've been using during the move, otherwise we get different results
when moving maximized windows between monitors of different sizes !
Salve e saia.
6. Edite o arquivo
openbox.SlackBuild para que ele possa "patchear" o arquivo fonte:
vim openbox.SlackBuild
Após estas linhas (82 e 83):
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
Adicione:
patch -p1 < $CWD/openbox-patch.patch
Salve e feche.
Este trecho, vai ficar assim:
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
patch -p1 < $CWD/openbox-patch.patch
chown -R root:root
7. Dê permissão de execução ao script:
chmod +x openbox.SlackBuild
8. Execute:
# ./openbox.SlackBuild
9. Reinstale o Openbox:
# upgradepkg --reinstall /tmp/openbox-3.5.0-*_SBo.tgz
10. Reinicie e teste.
Dica também publicada no
Mundo GNU.
Até a próxima!