Estou desde as 10h da manhã, faz agora 17:21 horas sentado à frente do computador a resolver merdelhices de um programa que vou ter que entregar na 2ª feira a um cliente.
A última merdelhice – e uma das primeiras que comecei a tentar resolver – foi eliminar o screen saver + blank screen + energy star settings + o … (não há equivalente em hexa)… do X Windows no Linux.
Eu estou a fazer um quiosque e o ecrã tem que estar sempre acesso. Mas de cada vez que testo tenho que esperar 10 min, que é o tempo que demora até o ecrã se apagar… Portanto façam as contas ao número de testes que eu já fiz, com uma dúzia de reboots pelo meio.
Penso que já dei com a coisa. Testei tudo, desde o ACPI na BIOS até aos screensavers no KDE. O problema aparentava ter origem no X (o gestor de janelas) mas não conseguia encontrar os parâmetros de configuração, nem os ficheiros, nem em que utilizador devia fazer a configuração, por isso testei dezenas de situações.
Aparentemente, a coisa resolve-se colocando as seguintes linhas no ficheiro .xinitrc do utilizador que está a correr o X:
setterm -blank 0 -powersave off -powerdown 0
xset s off
xset s noblank
xset -dpms
Mas eu colquei-as também no utilizador root, porque é o root que lança o X, apesar de, no quiosque, o X arrancar automaticamente para um utilizador sem privilégios (mas isso foi lançado pelo root). Há também um ficheiro .xsession, que por vezes é usado como ficheiro de arranque do X e, pelo sim pelo não, coloquei lá também essas linhas.
As outras merdelhices que andei a fazer foram:
Um troço de programa em Flash que lesse os dados que vêm de um leitor de cartões ligado à motherboard de um ecrã da Elotouch a funcionar como emulador de teclado. Aqui o problema foi que eu queria ler os dados do cartão de forma silenciosa, mas o Flash só deixa ler o teclado (ou emuladores) para caixas de texto visíveis (TextInput ou TextArea). E além disso têm que ter o foco. Ora eu não queria uma coisa nem outra: não queria mostrar a caixa, nem queria que o utilizador tivesse que a seleccionar antes de passar o cartão. Foram horas a contornar o problema.
Redimensionar uma partição ReiserFS no Linux que estava num computador Elo TouchScreen para poder colocar o Windows numa partição pequena e correr um programa que a Elo só fornece em Windows, para mudar o modo de emulação do leitor de cartões de HID para KBE (emulação de teclado) pois o Flash não tem grande flexibilidade na interface com o exterior. O tal programa só está disponível para Windows mas felizmente, grava a configuração do leitor de cartões numa E2Prom do leitor! Assim, a configuração fica disponível no Linux. Alternativamente, podia desenvolver um driver em Linux para aceder ao leitor e no próximo fim de semana ainda aqui estava (até porque não sei comandos nem protocolo de comunicação com o leitor).
Agora falta terminar a aplicação principal em Flash, reestruturar a BD para incorporar mais 2 requisitos de última hora (coisa pouca) et voilà.
Deixe um comentário