Openbox encerrando ao executar programas GTK+ 3


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.

Autor: Leandro Nkz

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 se ativa 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 se utiliza 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.

Até a próxima!

Anúncios
Openbox encerrando ao executar programas GTK+ 3

5 comentários sobre “Openbox encerrando ao executar programas GTK+ 3

  1. edps disse:

    No momento estou sem o OpenBox no Slack Current, mas vou testar sua dica, valeu!

    Isso só afeta o Slackware? porque nunca tive problema parecido nem no Debian ou no Arch Linux.

    Um abraço.

    Curtir

    1. Leandro Nkz disse:

      Aparentemente sim.

      No Debian isso já foi resolvido na versão 3.5.0-4, sendo que atualmente ele está na 3.5.0-7 (no Wheezy, já que o Squeeze ainda usa a versão 3.4.11).

      Mas até mesmo no Slackware isso já pode ser resolvido logo: o Openbox já está na versão 3.5.2.

      Abraço e obrigado.

      Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s