Quem foi que disse que quando se refere à recursos gráficos no Linux, estamos falando necessariamente do X? Nesta dica, mostrarei algumas coisas legais a se fazer com um recurso não muito explorado pelos usuários do Linux: O framebuffer. Ele é usado num terminal em modo texto (tty1,tty2,tty3,...,ttyN). Não, não se trata de ASCII Art (aa) nem caca (Colour ASCII Art). São imagens mesmo, pixel a pixel, e animações e vídeos frame a frame. Incrível!
Primeiramente, tenha certeza de estar com o kernel compilado com suporte a este recurso, além de o lilo (ou grub) estar configurado para tal situação. Se você usa o bootsplash, certamente está. Não vou entrar no mérito de explicar como fazer isso, mas há ótimos artigos e dicas aqui no VOL e na internet explicando como proceder.
Neste breve momento, mostrarei algumas coisas legais que podemos fazer usando o framebuffer (fb, para os íntimos).
Nota: Todos os comandos que vou citar devem ser executados num terminal em modo texto - estou usando o tty1 (Ctrl+Alt+F1).
1 - Assistir filmes:
Para isso, você deve estar com o programa MPlayer corretamente instalado e funcional. Além de ter sido compilado com suporte a framebuffer, é claro.
$ mplayer video.mpg # tela-cheia
Isto mesmo, não é preciso usar nenhum parâmetro extra na execução do MPlayer, pois o driver de vídeo é automaticamente escolhido. Caso este comando não funcione, tente este abaixo, que executará o vídeo em tamanho normal.
$ mplayer video.mpg -vo fbdev # ou fbdev2
Onde video.mpg é o arquivo do vídeo, e "-vo fbdev" é o parâmetro que define o driver de vídeo a ser usado.
Logicamente que você pode usar outros parâmetros, na execução do MPlayer, mas a escolha do driver é realmente necessária.
Você pode também usar o Xine-Player. Basta ter o pacote xine-ui corretamente instalado. Para assistir em tela cheia, use o comando:
$ fbxine -V fb video.mpg
Onde a opção "-V fb" seleciona o driver de vídeo.
Nota: Todos os parâmetros válidos para o comando xine funcionam também para o fbxine, inclusive para assistir dvds, etc.
Legenda: "Vídeo com qualidade sem o X"
2 - Ficar escrevendo coisas inúteis, com aquelas fontes legais que baixamos da internet:
Para isso, você deve estar com o bootsplash corretamente instalado e funcionando. Deve ser executado como root:
O que o comando acima diz?
Escreva no terminal com framebuffer, usando o arquivo de fonte aladdin.ttf (-f aladdin.ttf), com as letras no tamanho 200 (-s 200), começando nas coordenadas 100 em x (-x 100) e 500 em y (-y 500) com a cor "ddaadd" - em RGB - (-t ddaadd) e opacidade 100% (-a 100), com o texto sendo `uname` (que gera a palavra Linux). Mais informações, use o parâmetro --help.
Legenda: "Parece montagem, mas não é."
3 - Brincar com essas animações idiotas - também precisa do boosplash:
Primeiro, crie uma animação no formato .mng - pronuncia-se "ming". O GIMP é ótimo para isso. Não sabe como criar? Nessa dica você encontra um exemplo de criação de animação. A diferença é que você deve salvar a animação com o formato .mng.
No GIMP, acesse: Script-Fu >> Animadores. Abrirá um submenu com várias opções de animação. "Abra e sirva-se" ;)
Os parâmetros têm o mesmo significado que no exemplo anterior. Para mais informações, use o parâmetro --help.
Para finalizar uma animação, simplesmente dê ^C (Ctrl+C).
Nota: Veja o processo de finalização da animação. Muito bom!!
Legenda: "Animação no framebuffer"
4 - Visualizar imagens
Para isso, tenha instalado o programa Fbi:
$ fbi imagem.png *.jpg imagem.gif # Você pode abrir muitas imagens
Simples e eficiente. Use as setas direcionais do teclado para "navegar" nas imagens maiores que a tela, e PgUp para ir para a próxima imagem e PgDown para ir para a anterior. "+" para aumentar o zoom e "-" para diminuir.
5 - Visualizar arquivos PostScript (.ps) e PDF.
Para isso, é necessário estar com o pacote fbi (citado acima) corretamente instalado:
$ fbgs arquivo.ps
Ou $ fbgs arquivo.pdf
As teclas aqui funcionam da mesma forma que no item 4.
Legenda: "PDF no framebuffer - um antialiasing cairia bem ;)"
6 - Outra coisa legal a se fazer é navegar na internet, usando o navegador Links:
$ links -g -driver fb
Ou, para abrir uma página local:
$ links -g -driver fb arquivo.htm
Onde a opção -g serve para ativar o navegador em modo gráfico e a opção "-driver fb" serve para escolhermos o driver de vídeo a ser usado.
Se você usa o GPM (general purpose mouse server), que é um programa que permite usar o mouse nos terminais em modo texto, poderá navegar na internet com o ele desta forma, como se estivesse no X.
Notas:
No Slackware, para ativar o GPM:
1 - dê permissão de execução no arquivo /etc/rc.d/rc.gpm
2 - execute, como root: /etc/rc.d/rc.gpm start
No Links, o ponteiro do mouse é uma cópia quase perfeita do ponteiro do X. Só tem um movimento meio estranho. :)
Na navegação, use o botão do meio do mouse para rolar a tela.
É possível usar o links como um visualizador de imagens simples.
Há também um navegador chamado Zen, que também usa o framebuffer. Mas não funcionou muito bem nos meus testes, pois quando executado, travou minha máquina de vez.
Se alguém aí teve sucesso com este programa, parabéns :)
Legenda: "Acredite: Essa é uma "foto" do links num terminal em modo texto. Destaque para o ponteiro do mouse."
7 - Tirar screenshots de janelas do terminal:
Sim, isto é possível!! Afinal, de onde você acha que eu tirei as imagens desta dica?
Para isso, é necessário estar com o programa fbshot instalado:
# fbshot -c 1 imagem.png # Deve ser usado como root!
Onde a opção "-c 1" diz que a screenshot deve ser do primeiro terminal (tty1) (/dev/vc/1), e "imagem.png" é a imagem final.
Mas se você quiser tirar uma screenshot com um delay, use o parâmetro "-s segundos", como em:
# fbshot -c 4 imagem.png -s 5 #
Isso significa que a screenshot deve ser tirada 5 segundos após a execução deste comando, no quarto terminal virtual.
Para mais opções, tente:
# fbshot --help
Eu, quando vi todos estes recursos, fiquei impressionado com o framebuffer. Se você realmente quiser abandonar o servidor X (não me pergunte o por quê), sem abrir mão de comodidade, estas dicas lhe serão muito úteis.
[9] Comentário enviado por albertguedes em 20/12/2007 - 16:18h
Olha, nem vou te dizer o quanto é sensacional este artigo, como eu sou um amante inveterado do uso de terminais, este recurso de framebufer é um tempero a mais.
Realmente fantástico Leandro. Meus parabéns.
[12] Comentário enviado por spish em 23/06/2010 - 18:04h
Muito bom o seu artigo Leandro, está de parabéns. Agora se for possível gostaria de uma ajuda sua e da comunidade.
Quando uso o links ou links2 gráfico(fb) como usuário normal o mouse não funciona, já logado como root o mouse funciona perfeitamente. Meu mouse é a ps/2 2 botões laser. Inclusive quando fecho o Links logado como usuário root algumas informações que não vejo quando tento utilizá-lo como usuário normal:
[13] Comentário enviado por spish em 10/07/2010 - 18:51h
Olá a todos resolvi o problema do mouse que não estava funcionando no Debian Lenny com kernel 2.6.34. Realmente quando tentava executar o links2 gráfico (links2 -g) como usuario normal em modo texto apareciam aquelas mensagens de erro citadas acima que não consegui descobrir.
Então fica a dica se por acaso alguém estiver com mesmo problema:
Obs: os "$" significam que podem ser executados como usuario normal e os "#" devem ser executados como usuário root.
2º)Instalei o GPM.
Possuo o DVD1 do debian lenny, então utilizei ele como repositório.
# aptitude install gmp
Criei o links simbólico de /dev/psaux para /dev/mouse pois possuo mouse ps/2.
# ln -s /dev/psaux /dev/mouse
Caso exista algum link para /dev/mouse apague-o com # rm /dev/mouse e refaça o link sitado acima.
Feito isso basta somente reiniciar o GMP
# invoke-rc.d gpm restart
No meu caso tive que reiniciar o Debian creio que exista um comando para atualizar sem precisar reinciar o S.O, se você sabe alguma forma de fazer isso ótimo, caso contrário de um reboot.
# reboot
Para minha surpresa agora quando estou logado como usuario normal basta chamar no shell (links2 -g) que o mouse funciona. Aliás o mouse tem um formato um pouco estranho nada que atrapalhe a diversão.
Espero ter ajudado. Caso alguém tenha uma sugestão melhor poste no VOL, e caso tenha dito algo duvidoso por favor me perdõem.
Vlw mais uma vez Leandro Santiago por este post sobre DirectFB.
[14] Comentário enviado por removido em 23/08/2017 - 11:06h
No RetrorangePI, uma distro baseada no Armbian, o Kodi, EmulationStation e Retroarch rodam no framebuffer, sem o X! É muito interessante, pois esses apps fazem muito mais do que os apps apresentados no artigo, o Kodi é uma central multimídia, o EmulationStation é uma central de emuladores e o Retroarch é um emulador de muitas plataformas.