Programas extras para ter em um Tablet com Debian

Bom, você já segue meu blog, tem um Notebook conversível em Tablet, como o meu ThinkPad X200T, e seguiu algumas das minhas dicas de configuração aqui (“Finalmente Livre…”) e curtiu meu script aqui (“ThinkPad X200 T com todas as funções em GNU/Linux…”). Agradeço o reconhecimento, mas ainda tem mais coisas que talvez você se sinta perdido (como eu já me senti) e voltou ao meu blog pois está procurando alguns programas e não encontrou. Portanto decidi fazer minha lista de programas imperdíveis para um tablet e programas bem legais.

Bom, você já segue meu blog,  tem um Notebook conversível em Tablet, como o meu ThinkPad X200T, e seguiu algumas das minhas dicas de configuração aqui e curtiu meu script aqui. Agradeço o reconhecimento, mas ainda tem mais coisas que talvez você se sinta perdido (como eu já me senti) e voltou ao meu blog pois está procurando alguns programas e não encontrou. Portanto decidi fazer minha lista de programas imperdíveis para um tablet e programas bem legais.

Programas Imperdíveis

  • Xournal – Esse é um programa bem legal para fazer notas à mão (o caderno da faculdade). Não sei quanto à vocês, mas estudiosos já falaram que fazer as notas de estudo à mão aumenta exponencialmente a capacidade de memorização. No RWindows 7 existe algo parecido, chamado “Diário do Windows” (em inglês “Windows Journal”);
  • Avant Windows Navegator – Essa barra de tarefas com estilo MacOS é genial para criar um local para os lançadores de programas. Sua aparência e sua simplicidade no uso e configuração a colocam nessa lista de imperdíveis;
  • Stellarium – Um planetário de código aberto para o seu computador. Ele mostra um céu realista em três dimensões igual ao que se vê a olho nu, com binóculos ou telescópio. Ele também tem sido usado em projetores de planetários. Basta ajustar as coordenadas geográficas e começar a observar o céu!
  • CellWriter – Uma grade de painel de entrada natural de escrita (escrita à mão). Conforme você escrever caracteres para as células, a sua escrita é instantaneamente reconhecida. Quando você pressionar Enter no painel, a entrada que você inseriu é enviado para a aplicação como se tivesse digitado no teclado. Apesar de muito chato para “ensinar” sua escrita para ele, depois dessa aprendizagem funciona de maneira incrível.

Para diversão, sugiro:

  • Pingus – As pessoas com mais de 25 anos de idade e que tiveram uma infância informática como eu devem se lembrar do jogo dos Lemmings. Esse é um clone superdivertido, que utiliza pinguins no lugar dos famosos Lemmings.
  • Paciência AisleRiot – Diversos jogos de paciência (Solitaire) em um mesmo jogo. Freecel, Spider, MonteCarlo, entre outras tantas opções. Além disso, um visual super legal nas cartas.

Espero que gostem das minhas sugestões.



ThinkPad X200 T com todas as funções em GNU/Linux…

A um tempo atrás, postei uma reportagem de como deixar o ThinkPad X200 Tablet funcionando com GNU/Linux (no meu caso Debian), com a maioria das funções funcionando. Esse post pode ser lido aqui (“Finalmente livre…”). Mas não estava completo, porque ainda faltava fazer com que uma das funções mais legais (a transformação em tablet, girando a tela, e a rotação automática da tela conforme se gira o tablet), ainda não estava funcionando.

Ou quase isso!

A um tempo atrás, postei uma reportagem de como deixar o ThinkPad X200 Tablet funcionando com GNU/Linux (no meu caso Debian), com a maioria das funções funcionando. Esse post pode ser lido aqui. Mas não estava completo, porque ainda faltava fazer com que uma das funções mais legais (a transformação em tablet, girando a tela, e a rotação automática da tela conforme se gira o tablet), ainda não estava funcionando.

Passaram-se, então, 3 meses de pesquisa (tá certo, não foi uma pesquisa muito intensa, pois estava concentrado em minha nova empreitada profissional) e tentativasde aplicação de diversas sugestões de blogs, wikis, vídeos, usuários de Ubuntu, CentOS e outras tantas distribuições. Nenhuma efetiva, mas muito aprendizado foi possível.

Descobri que os módulos que esses dispositivos precisavam criavam diversos dispositivos no /sys/devices/platform, e comecei a colocar a cabeça para trabalhar. Percebi que seria necessário criar algo, que não seria trivial, mas que teria grandes chances de funcionar como eu queria. E mais, percebi que só conseguiria que funcionasse como eu queria se eu desenvolvesse algo para isso.

Como todos sabem, não sou programador, sou um mero administrador de sistemas GNU/Linux (com toda a modéstia que Deus me deu, posso dizer que sou pouco mais que bom no que faço). Portanto, de programação o que seu fazer é automatização de tarefas com Shell Scripts.

Nesta última semana espantei a preguiça e decidi fazer o script para automatizar essa tarefa. Já estava cansado de toda vez que transformava o note em tablet ou decidisse girar o tablet tivesse que apertar um botão. Ficou simples e de fácil compreensão, no entanto, consumia muito processamento, pois o encadeamento de condições que foi necessário estava sendo executado em tempo de processador. Um bug, resolvido facilmente com um sleep de meio segundo.

Vejam só que script interessante. Se quiserem desenvolver algo mais, a partir daqui, fiquem á vontade, só peço que se siga a GPL 3.

#!/bin/bash

## Created by: Luiz Guaraldo <guaraldo@universolivre.com.br>
## Created at: Tru Jan 24 22:15:35 BRST 2012
## Last Update: Tru Feb 8 09:30:15 BRST 2012

## Default screen mode for Swivel Down and Swivel Up [normal|right|inverted|left] and default VIDEO output
XRANDUP="normal"
XRANDDN="right"
VIDEO="LVDS1"

## Personal configuration can be put on home folder in .tablet.conf file.
if [ -f ~/.tablet.conf ]; then
 . ~/.tablet.conf
fi

## Get XSetWacom by XrandR rotation. Important to mantain toutch syncronization
case "$XRANDUP" in
 inverted)
 XSWUP="half"
 ;;
 normal)
 XSWUP="none"
 ;;
 left)
 XSWUP="ccw"
 ;;
 right)
 XSWUP="cw"
 ;;
 *)
 XRANDUP="normal"
 XSWUP="none"
 ;;
esac
case "$XRANDDN" in
 inverted)
 XSWDN="half"
 ;;
 normal)
 XSWDN="none"
 ;;
 left)
 XSWDN="ccw"
 ;;
 right)
 XSWDN="cw"
 ;;
 *)
 XRANDDN="right"
 XSWDN="cw"
 ;;
esac

## Starting position of Swivel (remember that this script just act when Swivel is DOWN)
last=0 # Tablet mode off
lastpos="$XRANDDN" #When on tablet mode this will be default screen rotation
position="$XRANDDN"

## Starting infinite loop
while :; do
 ## This file is 0 when Swivel UP and 1 when Swivel DOWN (tablet mode)
 now=`cat /sys/devices/platform/thinkpad_acpi/hotkey_tablet_mode`
 if [ $last != $now ]; then
 ## Turn on or off tablet mode
 if [ $now == 1 ]; then
 ## Turn on tablet mode
 /usr/bin/xrandr --output $VIDEO --rotate $XRANDDN
 xsetwacom set "stylus" Rotate $XSWDN
 xsetwacom set "cursor" Rotate $XSWDN
 xsetwacom set "eraser" Rotate $XSWDN
 else
 ## Turn off tablet mode
 /usr/bin/xrandr --output $VIDEO --rotate $XRANDUP
 xsetwacom set "stylus" Rotate $XSWUP
 xsetwacom set "cursor" Rotate $XSWUP
 xsetwacom set "eraser" Rotate $XSWUP
 fi
 ## Mark present mode
 last=$now
 fi

 ## Autorotation of screen when on tablet mode
 ## This file contain HDAPS position (indicates notebook rotation)
 position1=`cat /sys/devices/platform/hdaps/position | cut -d, -f1 | cut -d'(' -f2`
 position2=`cat /sys/devices/platform/hdaps/position | cut -d, -f2 | cut -d')' -f1`
 # This is a coordenate (rotation on X and Y axis)

 if [ $now == 1 ]; then ## On tablet mode?
 if [ $position1 -gt 350 ] && [ $position1 -lt 400 ] && [ $position2 -gt -525 ] && [ $position2 -lt -475 ]; then
 position="right"
 elif [ $position1 -gt 475 ] && [ $position1 -lt 525 ] && [ $position2 -gt -400 ] && [ $position2 -lt -350 ]; then
 position="inverted"
 elif [ $position1 -gt 625 ] && [ $position1 -lt 675 ] && [ $position2 -gt -525 ] && [ $position2 -lt -475 ]; then
 position="left"
 elif [ $position1 -gt 475 ] && [ $position1 -lt 525 ] && [ $position2 -gt -675 ] && [ $position2 -lt -625 ]; then
 position="normal"
 fi

 ## Just act when possition changed
 if [ "$position" != "$lastpos" ]; then
 ## Get XSetWacom syncronization
 case "$position" in
 inverted)
 wpos="half"
 ;;
 normal)
 wpos="none"
 ;;
 left)
 wpos="ccw"
 ;;
 right)
 wpos="cw"
 ;;
 esac
 xrandr --output $VIDEO --rotate $position
 xsetwacom set "stylus" Rotate $wpos
 xsetwacom set "cursor" Rotate $wpos
 xsetwacom set "eraser" Rotate $wpos

 ## Mark new position
 lastpos=$position
 fi
 fi

 ## Processor got hudge ocupation. 70% lass processor ocupation after sleep.
 sleep 0.5
done

Claro que criar o script foi só o primeiro passo. Agora precisava clocar para rodar automaticamente. Para isso, usei o início automático do GNOME (que é o gerenciador de janelas que eu uso), mas pode ser feito em qualquer gerenciador de janelas.

Para alterar o padrão de entrada e saída do tablet mode, basta criar um arquivo .tablet.conf no diretório home do usuário com duas linhas:

XRANDUP="normal"
XRANDDN="inverted"

Assim, ai iniciar uma nova sessão do gerenciador de janelas já estava tudo funcionando como eu queria… A rotação automática da tela só ocorre quando em Tablet Mode, ao entrar nesse modo a tela se vira da forma como eu queria (e não da forma padrão do script – que fiz seguindo o padrão que o software da Lenovo para RWindows tinha), enfim, cmo não existia o que eu queria, tratei de criar…

Espero que seja útil para todos. Postem comentários, por favor. Basta autenticarem com o Twitter.