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!
Favoritado.
CurtirCurtir
Thanks!
CurtirCurtir
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.
CurtirCurtir
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.
CurtirCurtir
ok, valeu!
CurtirCurtir