terça-feira, 12 de junho de 2007

fvwm-crystal calendar files

Dois arquivos de um script para adicionar um calendário translúcido no fvwm-crystal.

Screenshot com o calendário:















Calendar:
#
# This file have some lines that must be included on your recipes-script ( that you use - TopDown for me )
# located on /usr/share/fvwm-crystal/fvwm/recipes/ so that it can load the adaptation of the Calendar-Script
# that you can download from the same place where you get this one.
# Or send a message to jarbasaraujojr at yahoo dot com dot br
#

# Calendar {{{1
All (FvwmButtons-Calendar) Close
DestroyModuleConfig FvwmButtons-Calendar: *
*FvwmButtons-Calendar: Geometry -1+1
*FvwmButtons-Calendar: BoxSize smart
*FvwmButtons-Calendar: ActiveColorset $[cs-panel-active]
*FvwmButtons-Calendar: Colorset $[cs-panel-inactive]
*FvwmButtons-Calendar: Columns 2
*FvwmButtons-Calendar: Padding 2 2
*FvwmButtons-Calendar: Frame 0

*FvwmButtons-Calendar: (2x1, Size 150 200, Swallow (Close, Respawn, FvwmModule) "Calendar-Script")

Module FvwmButtons FvwmButtons-Calendar
Script components/scripts/Calendar-Script

Calendar-Script:

#
# This file was adapted by Jarbas Araujo ( jarbasaraujojr at yahoo dot com dot br )
# to act like a nice translucent calendar to fvwm-crystal
# It was made to be ok on a 1280 x 1024 desktop. May need some adjusts on other resolutions
#

WindowTitle {Calendar}
WindowSize 150 200
Colorset 1
Font "shadow=0 se:xft:Courier:Bold:size=12"


Init
Begin
Set $PROG = "/usr/bin/cal"

Set $text1 = (GetOutput $PROG 1 -1)
ChangeTitle 1 $text1

Set $text2 = (GetOutput $PROG 2 -1)
ChangeTitle 2 $text2

Set $text3 = (GetOutput $PROG 3 -1)
ChangeTitle 3 $text3

Set $text4 = (GetOutput $PROG 4 -1)
ChangeTitle 4 $text4

Set $text5 = (GetOutput $PROG 5 -1)
ChangeTitle 5 $text5

Set $text6 = (GetOutput $PROG 6 -1)
ChangeTitle 6 $text6

Set $text7 = (GetOutput $PROG 7 -1)
ChangeTitle 7 $text7

Set $text8 = (GetOutput $PROG 8 -1)
ChangeTitle 8 $text8

End

PeriodicTasks
Begin
If (RemainderOfDiv (GetTime) 60)==0 Then
Begin
End
End

Widget 1
Property
Type ItemDraw
Size 150 35
Position 0 0
Font "shadow=0 se:xft:Sans serif:Bold:size=14:color=d5dee7"
Flags NoFocus NoReliefString Center
ForeColor {white}
Colorset 1

Main
Case message of
SingleClic:
Begin
End
End

Widget 2
Property
Type ItemDraw
Size 150 35
Position 0 25
Flags NoFocus NoReliefString Center
ForeColor {white}
Colorset 1

Main
Case message of
SingleClic:
Begin
End
End

Widget 3
Property
Type ItemDraw
Size 150 35
Position 0 50
Flags NoFocus NoReliefString Center
ForeColor {white}
Colorset 1

Main
Case message of
SingleClic:
Begin
End
End

Widget 4
Property
Type ItemDraw
Size 150 35
Position 0 75
Flags NoFocus NoReliefString Center
ForeColor {white}
Colorset 1

Main
Case message of
SingleClic:
Begin
End
End

Widget 5
Property
Type ItemDraw
Size 150 35
Position 0 100
Flags NoFocus NoReliefString Center
BackColor {#C2D2EB}
ForeColor {white}
Colorset 1
Main
Case message of
SingleClic:
Begin
End
End

Widget 6
Property
Type ItemDraw
Size 150 35
Position 0 125
Flags NoFocus NoReliefString Center
BackColor {#C2D2EB}
ForeColor {white}
Colorset 1
Main
Case message of
SingleClic:
Begin
End
End

Widget 7
Property
Type ItemDraw
Size 150 35
Position 0 150
Flags NoFocus NoReliefString Center
BackColor {#C2D2EB}
ForeColor {white}
Colorset 1
Main
Case message of
SingleClic:
Begin
End
End

Widget 8
Property
Type ItemDraw
Size 150 35
Position 4 175
Flags NoFocus NoReliefString Left
BackColor {#C2D2EB}
ForeColor {white}
Colorset 1

Desktop + Enlightenment 0.17

Atualmente estou usando como WM o Enlightenment 0.17
Extremamente agradável embora, e compreensivelmente, com alguns problemas já que ainda não é uma versão estável.
















Neste screenshot estão rodando celestia e iceweasel, tema simple-white com 4 shelves (3 delas em transparência)

As falhas que pude identificar até agora são:
  1. Ao travar a tela vez por outra ele não reconhece a senha do usuário e o X tem que ser restartado
  2. Adicionei um keybinding usando "WIN + x" onde 'x' é qualquer tecla alfa, e ocorre que usar o atalho, a letra 'x' aparece no centro do fundo de tela, e não some até reiniciar o e17. Reportei esse bug (http://bugs.enlightenment.org/view_bug.php?bug_id=18) mas não foi obtido sucesso na simulação, e o mesmo foi fechado
  3. Mesmo indicando na shelf de topo que as janelas não podem intercalar a área utilizada por ela, elas acabam se escondendo atrás da mesma, e eu tenho que arrastá-las para ter acesso aos menus, etc.
  4. Alguns crash's vez por outra

Repositórios:

deb http://edevelop.org/pkg-e/ubuntu/ dapper e17
deb http://edevelop.org/debian/ etch main contrib

Recomendo, inclusive com a utilização do entrance que faz o papel de gerenciador de logon visual, o mesmo que o gdm, e é bastante agradável aos olhos, ou como no e17: eye-candy.

txt2srt: Texto -> Legenda

Este script PHP converte arquivos txt para o formato de legenda srt.
Cada linha no arquivo txt será uma nova legenda.
É possível selecionar o tempo da 1a legenda, a duração de cada uma, e o intervalo entre elas.

Script:


/*
**
** txt2srt.php
**
*/

if ($argc < 2)
{
$erro = "
+-----------------------------------------------------------------------------+
| txt2srt.php |
| # php txt2srt.php [inicio] [duracao] [espacamento] |
| |
| arquivo a ser formatado para legenda |
| [inicio] legenda inicia em (minutos) (auto=0) |
| [duracao] duracao de cada legenda (segundos) (auto=5) |
| [espacamento] distancia entre as legendas (segundos) (auto=5) |
+-----------------------------------------------------------------------------+
\n";
}

$origem = $argv[1];
$destino = $origem.".srt";

$inicio = $argv[2]; //
$duracao = $argv[3]; //
$espaco = $argv[4]; //

// ajusta início
if (!$inicio) { $inicio = 0; }
if (!is_numeric($inicio)) {
$erro = " deve ser um numero em (minutos)\n";
} else {
$s0 = $inicio*60;
}

if (!$duracao) { $duracao = 5; } else { $duracao = round($duracao); }

if (!$espaco) { $espaco = 5; } else { $espaco = round($espaco); }

// inicia os arquivos
if (!file_exists($origem))
{
echo "Arquivo $origem nao existe\n";
exit;
} else {
$conteudo = file($origem);
}

if (is_writable($destino))
{
// echo "arquivo $destino existe\n";
if (!$arquivo = fopen($destino,'w')) {
echo "Erro abrindo o arquivo $destino\n";
exit;
}
} else {
echo "Criando o arquivo '$destino'... ";
if (!$arquivo = fopen($destino,'w')) {
echo "(falhou)\n";
exit;
} else {
echo "(ok)\n";
}
}

if ($erro) {
echo $erro;
} else {
echo "Formatando as legendas:";
foreach ($conteudo as $numero => $linha)
{
echo ".";
// echo "so= $s0\n";
$tempo0 = date("H:i:s", mktime(0,0,$s0)); /*echo "tempo0 = $tempo0\n";*/
$s0 += $duracao; // atualiza s0

$tempo1 = date("H:i:s", mktime(0,0,$s0)); /*echo "tempo1 = $tempo1\n";*/
$s0 += $espaco; // atualiza s0

$novalinha =
"$numero\n".
"$tempo0,000 --> $tempo1,999\n".
"$linha\n";

// echo $novalinha;
fwrite($arquivo, $novalinha);
}
echo "\n";
echo "$numero legendas foram adicionadas ao arquivo '$destino' com sucesso.\n";
echo "Obrigado por Utilizar o script 'txt2srt'\n";
echo "Desenvolvido por Jarbas Araujo \n";
}
fclose($arquivo);

?>


Como usá-lo ?
você precisa do php instalado.
Digite o comando:

#php txt2str arquivotxt

Instalando Prolink Pixelview PV-BT878P+














Minha intenção nesta mensagem é repassar alguns dias de pesquisa e suor para fazer minha placa de captura de vídeo funcionar, e acreditem, ela funciona, incluindo o controle remoto.

Preparando o Ambiente

Minha placa é uma Prolink Pixelview PV-BT (este é o nome fantasia dela), que foi corretamente identificada pelo sistema através do comando:

# lspci
Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)

Brooktree é uma marca que foi adquirida pela Conexant e Bt878 é o CHIPSET.

No Linux existe um driver construído para gerenciar placas de vídeo que utilizem chipsets deste modelo (Bt8xx), o driver é o bttv.

O driver bttv pode ser encontrado em:
Este driver é compatível com a API de vídeo v4l2 (video for linux 2), que gerenciará o dispositivo de vídeo.

A instalação não será problemática se você tiver compiladores instalados e existe documentação junto com o pacote (em inglês é claro). Tente apenas:

Desempacote o arquivo, entre na pasta e compile o driver:

# tar -zxvf bttv-0.9.15.tar.gz
# cd bttv-0.9.15
# make
# make install


Após isto, caso seus compiladores estejam instalados, terá sido gerado o módulo do driver (os arquivos abaixo, mas não necessariamente com o mesmo caminho, já que aqui, 2.6.8-2-k7 é a versão do kernel que - eu - utilizo, e não a sua. para saber qual é sua versão de kernel digite o comando 'uname -r' no prompt):

/lib/modules/2.6.8-2-k7/kernel/drivers/media/video/bttv.ko
/lib/modules/2.6.8-2-k7/v4l2/bttv.ko

Uma vez que o driver está instalado, reinicie eu computador (isto não é realmente necessário, mas acho que é interessante).

Configurando a Placa

Após a inicialização, digite o execute:

# dmesg | grep bttv

bttv0: detected: Prolink Pixelview PV-BT [card=72], PCI subsystem ID is 1554:4011
bttv0: using: Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM) [card=72,autodetected]
bttv0: using tuner=5

Este é um resultado aproximado ao que você deve ter depois de ter instalado o driver bttv. Ele automaticamente configura a inicialização do módulo responsável pelo gerenciamento da placa de vídeo.

No entanto, pelo menos para o meu modelo de placa, a detecção automática da placa pelo driver não é correta (e na pesquisa que fiz, parece que nenhuma pixelview é muito corretamente detectada). Tive então de alterar os parâmetros da inicialização do módulo. Isto é feito alterando o arquivo:

/etc/modutils/bttv

Verificando como o módulo está sendo chamado na inicialização:

# cat /etc/modules.conf |grep bttv
post-install bttv insmod tuner
post-remove bttv rmmod tuner
alias char-major-81 bttv

Bom, se apareceu algo parecido, estamos no caminho, com alguma batalha pela frente..

Agora no meu caso eu tenho que fazer com que o módulo carregue a placa correta (card=70) e com o modelo de sintonizador adequado (tuner=43).

*** vejam que ambos são completamente diferentes daqueles que foram detectados corretamente (card=72 & tuner=5) ***

Para isto basta editar o arquivo /etc/modutils/bttv: (use o editor que preferir) ==> veja o arquivo depois da edição:

# cat /etc/modutils/bttv

alias char-major-81 videodev
alias char-major-81-0 bttv
options bttv card=70 radio=1 tuner=43
options snd-card-ens snd_index=0
options msp3400 mixer=1

Bom, eu descobri que a minha placa é o modelo 70 e o meu tuner é o modelo 43 fazendo testes.

Para fazer estes testes eu tive de instalar um visualizador de vídeo. Eu instalei alguns, mas o que eu achei realmente BOM foi o tvtime.
Depois de instalá-lo eu fazia o seguinte, carregava o módulo manualmente com os valores de placa e tuner possíveis.

Lista com possíveis placas:
Lista de tuners:
Testando a Placa

Para testar a placa XX com o tuner YY faça o seguinte:

1. descarregue o módulo atual:

# modprobe -r bttv

Se houver mensagem de erro falando que outro módulo ( o bt878 por exemplo ) está usando o bttv remova antes este que o está utilizando 'modprobe -r bt878', depois remova o bttv 'modprobe -r bttv'.

2. carregue o módulo com os novos parâmetros:

# modprobe bttv card=XX tuner=YY

e aí, faça o teste.. como? --> execute o tvtime

# tvtime

O tvtime tem várias ferramentas de configuração, você deve selecionar a entrada (tv, composite, etc) o sistema de tv (PAL-M se for Brasil) e mandar ele buscar os canais ( isto tudo é feito via menu do tvtime.

Bom, faça testes até achar um par de placa e tuner que servem para você (isto pode ser demorado mas se a sua placa for exatamente igual a minha, já sabe quais usar).

Após editar o arquivo, ainda temos de instruir o sistema a atualizar o verdadeiro arquivo de inicialização dos módulos do sistema /etc/modules.conf. Fazemos isto com:

# update-modules

Depois que achou os que te servem, edite o arquivo /etc/modutils/bttv e deixe-o como o que eu indiquei logo acima (só que com seus valores).

Mesmo após isto, eu vi que os módulos não carregavam diferente do automático (não sei explicar porque), mas achei uma dica de como burlar isto, é só colocar um bash na inicialização, da seguinte forma:

1. Crie o arquivo /etc/rcS.d/S90placatv com o conteúdo seguinte: (claro, troque os valores pelos adequados - seus -)

modprobe -r bt878
modprobe -r bttv
modprobe -r tuner
modprobe bttv card=70 tuner=43
sleep 3
chmod ugo+rwx /dev/video0

Dê permissão de execução para este arquivo:

# chmod +x /etc/rcS.d/S90placatv

Reinicie o sistema e tudo vai funcionar (assim seja!).

Espero que sirva. Depois vou colocar mais ou menos o processo de instalação do Controle Remoto. Agora já está meio tarde.