[FUG-BR] Beryl no FreeBSD

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Domingo Julho 29 04:42:13 BRT 2007


Rafael Albuquerque wrote:
> Olá!
> 
> Alguem que conseguiu rodar o beryl 0.2.0 rc3 (do ports) pode dar um help?
> 
> Atualizei o ports ontem, instalei o beryl pelo
> /usr/ports/x11-wm/beryl. O processo foi beeem mais rapido do que eu
> imagina, em 10 minutos ja tava tudo pronto.
> Apos isso rodei o beryl dentro do KDE ele nao startava.. carregava,
> mas a unica coisa q acontecia era sumir minha barra inferior do kde (
> o panel).
> Entao editei o /root/.xinitrc pra carregar o beryl. Ele mostra a
> splash screen toda estilosa e depois fica parado na tela com fundo
> azul (nao carrega menu, icones, nada).
> 
> Pelo google achei as seguintes opcoes para colocar no xorg.conf em
> seus respectivos lugares:
> 
> Option "AllowGLXWithComposite" "True"
> Option  "RenderAccel" "True"
> Option "AddARGBGLXVisuals" "Ttrue"
> 
> E, obviamente, ativei a extensao "composite" porque qnd rodei o beryl
> pela primeira vez ele ja reclamou disso.
> 
> Minha maquina é um notebook HP DV6230br, com 512 mb de ram DDR2 667
> (ta chegando 2 gb pra fazer dual channel terça feira), 80 gb sata hd
> (soh pra citar), placa de video Nvidia Go Force 6150 utilizando o
> nvidia-driver-9631 (tentei atualizar pra o mais novo 97algumacoisa mas
> ficou beem instavel, entao voltei pra essa versao q funciona
> perfeitamente no KDE (inclusive as protecoes de tela em OpenGL)
> 
> Quando roda o startx com o beryl no xinitrc, que ele fica parado, como
> ja dito, quando fecho ele a unica msg que tenho é algo sobre nao poder
> criar o SHM, e diz que o dbus_bus_get failed to autolanche D-bus
> session.
> 
> Alguma luz? :)

Primeira coisa, voce tem o dbus ativo?

dbus_enable="YES" no rc.conf e inicie o daemon

Depois, lembre-se, a partir desse momento qualquer oisa que voce iniciar 
via .xinitrc, faca-o com dbus-launch antes, para garantir que a 
aplicacao va conhecer as variaveis de ambiente necessarias pra usar uma 
sessao dbus, e principalmente que alguma sessao dbus seja iniciada.

Por exemplo

echo "dbus-launch startkde" > ~/.xinitrc

Eu pessoalmente nao uso KDE, mas acho que voce esta no caminho certo se 
deseja usa-lo. Se voce inicou o beryl dentro do KDE e apareceu o splash, 
meio caminho andado. Dente dar um CONTROL+ALT+SETA e veja se entra no 
modo cubo, independente de qualquer outra coisa q pareca um bug, nesse 
momento. Voce arruma isso depois.

Segunda coisa, tem que tunar o sistema ate acabar os erros de shm. Senao 
é entropia continuar. Felizmente é simples. Sao poucas variaveis. No meu 
ambiente, no /etc/sysctl.conf eu tenho:

kern.ipc.shmall=522144
kern.ipc.shmmax=2073741824

É mais do que o beryl/nvidia precisam, mas acaba que eu uso shared 
memory com muitas outras coisas tbm, menos comuns (tipo, interfaces de 
autoracao de dvd e uns devices da upek q tbm precisam, por isso tao 
alto). Logo, voce pode tentar com valores mais baixos ateh a mensagem de 
  falta de SHM parar de acontecer.

Sobre a tela azul, é isso mesmo. Use

dbus-launch beryl

no .xinitrc

Ao iniciar com startx vc vera uma tela azul. Se CTRL+ALT+SETA rodar um 
cubo todo azul muito rapido, eh isso que deve acontecer. Mas voce nao 
tera um ambiente deskto, tera apenas o WM beryl. Ou seja nao tera nada, 
nem condicoes de abrir um terminal. Tao pouco programas... isso porque o 
beryl eh WM e nao um ambiente de trabalaho grafico completo. E como WM o 
beryl eh completissimo. Porem, nao faz nada alem de ser um WM. Nao eh 
como o Enlightenment por exemplo, que eh um WM e tem recursos de 
desktop, inclusive file manager (ainda q limitadissimo).

Bom, voltando ao foco, voce tera que escolher um Desktop modular pra 
rodar com o Beryl. Os mais comuns sao

- Gnome
- KDE (parece q eh sua escolha ja)

Outra muito comum (parece q muita gente prefere ele, do que os acima 
mencionados):

- XFCE4

Minha escolha pessoal nao eh nenhum desses. O que dificulta um pouco o uso:

- Nautilus com Desktop

Os tres acima sao a melhor escolha. Nautilus sequer eh uma opcao 
ofcialmente existente, sem o gnome. Entao escolha um dos tres acima, ao 
menos pra comecar.

Todos eles tem sistemas de startup. E todos eles sao frameworks completo 
(http://www.freedesktop.org/wiki/Desktops) entao voce pode usar um deles 
com outro WindowManager, que nao os feitos especialmente pra eles. Ai 
que entra outra coisa:

Sempre inicie o beryl-manager, e nunca o beryl diretamente. Pelo 
beryl-manager escokha o windows manager (beryl), e pronto.

Pelo beryl-manager voce pode iniciar o beryl-settings (e tambem em um 
terminal). Inicie o ambiente assim, entao via .xinitrc inicie apenas o 
kde mesmo (no seu caso) e depois em um terminal ou via STARTUP do kde, 
inicie o beryl-manager, e por sua vez por ele, defina o beryl como WM 
padrao.

Configure o ambiente e custimize-o.

Voce provavelmente pode ter um monte de comportamento estranho q vc vai 
pensar q sao bugs. Pelo beryl-manager va em "opcoes avancadas do beryl" 
e modifique as configuracoes ate seu ambiente estabilizar. Evite os 
"automaticos".

Porem, como sua placa é nVidia Go, tem um detalhe que pode fazer 
diferença. Um pequeno patch (2 linhas) no beryl. Eu não lembro quem fez 
esse patch nem qual a URL original, mas esta em algum lugar nos foruns 
nvnews (http://www.nvnews.net/vbulletin/), porem, pra facilitar coloquei 
num servidor agora.

Pra aplicar, basta recompilar/compilar o beryl-core, via ports mesmo. 
Faca assim:

cd /usr/ports/x11-wm/beryl-core/
make extract
cd work/beryl-core-0.2.0/
fetch 
http://www6.freebsdbrasil.com.br/~eksffa/l/v/beryl-0.2.0_rc3-damage-display.c.patch
patch -p0 < beryl-0.2.0_rc3-damage-display.c.patch
cd -
make install clean

(se ja estiver instalado, force registro ou desinstale antes).

Sinceramente, indico que voce aplique o patch por ultimo. Pra mim ele é 
imprecindivel (GeForce Go 7400). Porem, nao sei se isso se aplica a 
TODAS GeForce Go. Me parece que sim, pois no wiki do beryl-project esse 
patch ja fez diferenca pra outros usuarios, de Go 7200 e Go 7300.

Meu card/chip pra referencia, seguem:

nvidia0 em pci1:0:0:       class=0x030000 card=0x81e6104d chip=0x01d810de 
rev=0xa1 hdr=0x00
     vendor     = 'NVIDIA Corporation'

Pra referencia, o xorg.conf que eu uso no momento:

Section "Files"
     RgbPath         "/usr/local/share/X11/rgb"
     ModulePath      "/usr/local/lib/xorg/modules"
     FontPath        "/usr/local/lib/X11/fonts/misc/"
     FontPath        "/usr/local/lib/X11/fonts/TTF/"
     FontPath        "/usr/local/lib/X11/fonts/OTF"
     FontPath        "/usr/local/lib/X11/fonts/Type1/"
     FontPath        "/usr/local/lib/X11/fonts/100dpi/"
     FontPath        "/usr/local/lib/X11/fonts/75dpi/"
EndSection

Section "Module"
     Load           "extmod"
     Load           "record"
     Load           "dbe"
     Load           "xtrap"
     Load           "glx"
     Load           "freetype"
     Load           "type1"
EndSection

Section "ServerFlags"
     Option         "Xinerama" "0"
EndSection

Section "InputDevice"
     Identifier     "Keyboard0"
     Driver         "kbd"
EndSection

Section "InputDevice"
     Identifier     "Mouse0"
     Driver         "mouse"
     Option         "Protocol" "auto"
     Option         "Device" "/dev/sysmouse"
     Option         "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
     Identifier     "Monitor1"
     VendorName     "Unknown"
     ModelName      "Tubo CRT"
     HorizSync       30.0 - 83.0
     VertRefresh     56.0 - 75.0
         Mode    "1024x768"      # vfreq 84.997Hz, hfreq 116.955kHz
                 DotClock        94.500000
                 HTimings        1024 1072 1168 1376
                 VTimings        768 769 772 808
                 Flags   "+HSync" "+VSync"
         EndMode
EndSection

Section "Monitor"
     Identifier     "Monitor0"
     VendorName     "Unknown"
     ModelName      "Nvidia Default Flat Panel"
     HorizSync       29.0 - 50.0
     VertRefresh     0.0 - 60.0
EndSection


Section "Device"
     Identifier     "Card0"
     Driver         "nvidia"
     VendorName     "nVidia Corporation"
     BoardName      "GeForce Go 7400"
     Option         "AllowGLXWithComposite" "True"
     Option         "RenderAccel" "True"
     Option         "AddARGBGLXVisuals" "True"
     Option         "DisableGLXRootClipping" "True"
     Option         "XAANoOffscreenPixmaps"
     Option         "backingstore" "True"
     Option         "TripleBuffer" "True"
EndSection

Section "Device"
     Identifier     "Card1"
     Driver         "nvidia"
     VendorName     "NVIDIA Corporation"
     BoardName      "GeForce Go 7400"
EndSection

Section "Screen"
     Identifier     "Screen0"
     Device         "Card0"
     Monitor        "Monitor0"
     DefaultDepth    24
     Option         "AddARGBGLXVisuals" "True"
     Option         "DisableGLXRootClipping" "True"
#    Option         "TwinViewOrientation" "Clone"
     Option         "ExactModeTimingsDVI" "True"
#    Option         "TwinView" "1"
#    Option         "NoTwinViewXineramaInfo" "True"
     Option         "metamodes" "1280x800 +0+0"
     SubSection     "Display"
         Depth       24
         Modes      "1600x1200" "1280x1024" "1024x768"
     EndSubSection
EndSection

Section "Screen"
         Identifier      "Screen1"
         Device          "Card1"
         Monitor         "Monitor1"
         DefaultDepth    24
         SubSection "Display"
                 Depth   24
                 Modes   "1024x768" "800x600" "640x480"
         EndSubSection
EndSection

Section "ServerLayout"
         Identifier      "Default Layout"
#        Screen          "Screen0"
        Screen          "Screen0" Clone "Screen1"

     InputDevice    "Mouse0" "CorePointer"
     InputDevice    "Keyboard0" "CoreKeyboard"
EndSection


Section "Extensions"
     Option         "Composite" "Enable"
EndSection

Porem, o xorg.conf acima esta configurado pra usar os 2 canais da placa 
de video, o Flat (lcd do laptop) e a saida, configurada pra CRT ou 
datashow, e com resolucoes distintas, o que pode significar que pra vc, 
sao informacoes dispensaveis e que podem so gerar confusao.

Entao segue um outro xorg.conf simplificado, q eu usava com apenas a 
tela Flat:

Section "ServerLayout"

#    Option         "AIGLX" "false"
     Identifier     "X.org Configured"
     Screen      0  "Screen0" 0 0
     InputDevice    "Mouse0" "CorePointer"
     InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
     RgbPath         "/usr/local/share/X11/rgb"
     ModulePath      "/usr/local/lib/xorg/modules"
     FontPath        "/usr/local/lib/X11/fonts/misc/"
     FontPath        "/usr/local/lib/X11/fonts/TTF/"
     FontPath        "/usr/local/lib/X11/fonts/OTF"
     FontPath        "/usr/local/lib/X11/fonts/Type1/"
     FontPath        "/usr/local/lib/X11/fonts/100dpi/"
     FontPath        "/usr/local/lib/X11/fonts/75dpi/"
EndSection

Section "Module"
     Load           "extmod"
     Load           "record"
     Load           "dbe"
     Load           "xtrap"
     Load           "glx"
     Load           "freetype"
     Load           "type1"
EndSection

Section "ServerFlags"
     Option         "Xinerama" "0"
EndSection

Section "InputDevice"
     Identifier     "Keyboard0"
     Driver         "kbd"
EndSection

Section "InputDevice"
     Identifier     "Mouse0"
     Driver         "mouse"
     Option         "Protocol" "auto"
     Option         "Device" "/dev/sysmouse"
     Option         "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
     Identifier     "Monitor0"
     VendorName     "Unknown"
     ModelName      "Nvidia Default Flat Panel"
     HorizSync       29.0 - 50.0
     VertRefresh     0.0 - 60.0
EndSection

Section "Device"

         ### Available Driver options are:-
         ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
         ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
         ### [arg]: arg optional
         #Option     "SWcursor"                  # [<bool>]
         #Option     "HWcursor"                  # [<bool>]
         #Option     "NoAccel"                   # [<bool>]
         #Option     "ShadowFB"                  # [<bool>]
         #Option     "UseFBDev"                  # [<bool>]
         #Option     "Rotate"                    # [<str>]
         #Option     "VideoKey"                  # <i>
         #Option     "FlatPanel"                 # [<bool>]
         #Option     "FPDither"                  # [<bool>]
         #Option     "CrtcNumber"                # <i>
         #Option     "FPScale"                   # [<bool>]
         #Option     "FPTweak"                   # <i>
     Identifier     "Card0"
     Driver         "nvidia"
     VendorName     "nVidia Corporation"
     BoardName      "GeForce Go 7400"
     Option         "AllowGLXWithComposite" "True"
     Option         "RenderAccel" "True"
     Option         "AddARGBGLXVisuals" "True"
     Option         "DisableGLXRootClipping" "True"
     Option         "XAANoOffscreenPixmaps"
     Option         "backingstore" "True"
     Option         "TripleBuffer" "True"
EndSection

Section "Device"
     Identifier     "Videocard0"
     Driver         "nvidia"
     VendorName     "NVIDIA Corporation"
     BoardName      "GeForce Go 7400"
EndSection

Section "Screen"

Option "TwinView" "True"
Option "MetaModes" "nvidia-auto-select, nvidia-auto-select"
Option "metamodes" "nvidia-auto-select +0+0"
     Identifier     "Screen0"
     Device         "Videocard0"
     Monitor        "Monitor0"
     DefaultDepth    24
     Option         "TwinView" "0"
     Option         "metamodes" "1280x800 +0+0"
     Option         "AddARGBGLXVisuals" "True"
     Option         "DisableGLXRootClipping" "True"
     SubSection     "Display"
         Depth       24
         Modes      "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
     EndSubSection
EndSection

Section "Extensions"
     Option         "Composite" "Enable"
EndSection

Resumindo, o que realmente interessa:

Deve existir em qq parte do xorg.conf

Section "Extensions"
     Option         "Composite" "Enable"
EndSection

Na secao Screen, garanta que exista:

Option         "AddARGBGLXVisuals" "True"
Option         "DisableGLXRootClipping" "True"

Na secao Device, garanta:

     Option         "AllowGLXWithComposite" "True"
     Option         "RenderAccel" "True"
     Option         "AddARGBGLXVisuals" "True"
     Option         "DisableGLXRootClipping" "True"
     Option         "XAANoOffscreenPixmaps"

E teste tambem (so funciona em algumas nVidia, porem, nao eh necessario 
pro AIGLX. Apenas melhora um pouco a performance, se a sua placa suportar):

     Option         "backingstore" "True"
     Option         "TripleBuffer" "True"

Na secao Module, garanta:

     Load           "glx"

E lembre-se que com nVidia, voce nao usa DRI. Entao na mesma secao se vc 
tiver dri carregado, remova/comente:

#    Load           "dri"

Por ultimo, na secao ServerLayout gatanta a existencia de:

Option         "AIGLX" "true"

Divirta-se. E pra completar o ambiente, instale o kiba-dock quando ja 
estiver com se beryl funcionando =P

Espero ter ajudado. Boa sorte.

-- 
Patrick Tracanelli

FreeBSD Brasil LTDA.
(31) 3281-9633 / 3281-3547
316601 em sip.freebsdbrasil.com.br
http://www.freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"



Mais detalhes sobre a lista de discussão freebsd