Arquivo da tag: x

Calendário santo-discordiano no Fluxbox

ATENÇÃO: Este conteúdo foi publicado há 7 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Acabei de implementar o calendário santo-discordiano no Fluxbox 1.1.1 (última versão).

Link para download do código: fluxbox-ddate-1.1.1-0.tar.bz2

Se você usa Arch Linux, não precisa baixar e compilar manualmente. Basta usar o pkgbuild que o Rev. Beraldo fez para o AUR: aur.archlinux.org/packages.php?ID=40364.

Se você usa Gentoo, não precisa baixar e compilar manualmente. Basta colocar o ebuild que eu fiz num overlay: fluxbox-ddate no Gentoo.

Versões compiladas .deb, .rpm, .tgz etc. e ebuilds, pkgbuilds etc. são bem vindos! Me passem que eu coloco um link aqui!

Como baixar e descompactar

Como você faria com qualquer outro pacote .tar.bz2…

$ wget http://tiagomadeira.com/wp-content/uploads/2010/08/fluxbox-ddate-1.1.1-0.tar.bz2
$ tar xjvf fluxbox-ddate-1.1.1-0.tar.bz2
$ cd fluxbox-ddate-1.1.1-0

Como compilar

Versão simples:

$ ./configure
$ make
$ make install

Versão complicada:

$ export CFLAGS=-O2 -march=native -msse4.1
$ export CXXFLAGS=$CFLAGS
$ ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --enable-nls --disable-xinerama --enable-xft --disable-gnome --enable-imlib2 --enable-slit --enable-toolbar --sysconfdir=/etc/X11/fluxbox
$ make -j3
$ make install

Encontre seu meio termo (ou use a simples) e divirta-se!

Como iniciar um Fluxbox

Inicie o X e peça pra ele abrir a versão que você compilou do Fluxbox da seguinte maneira:

$ startx /usr/local/bin/fluxbox -- :1

(Lembre-se de mudar /usr/local para o --prefix que usou no ./configure)

Esta linha funciona dentro de uma sessão do X (abre outra), por causa do -- :1.

Como usar a data discordiana

Clique com a tecla direita no relógio do seu Fluxbox e Edit clock format. Se você usar um formato de data convencional, do falso calendário (como deve estar usando no momento), nada de especial acontecerá. O segredo está no |fnord|.

Quando você coloca um |fnord| no formato, o Fluxbox interpretará tudo que veio antes como formato de data discordiano.

(Para escolher o formato de data ideal, você pode digitar man ddate num terminal.)

Exemplos de uso:

  • Formato: %c → Saída: Sat 28 Aug 2010 11:50:26 PM BRT
  • Formato: %e of %B of %Y|fnord| → Saída: 21st of Bureaucracy of 3176
  • Formato: %d %b %Y|fnord|, %H:%M:%S → Saída: 21 Bcy 3176, 23:50:26
  • Formato: %.|fnord| → Saída: All Hail Discordia!

Dúvidas, sugestões?

Contate a glândula pineal.

Como funciona o código?

O Fluxbox usa a função strftime para formatar a data do relógio. Isso acontece na linha 274 do arquivo src/ClockTool.cc. Modifiquei este trecho do código adicionando cerca de 23 linhas que separam a string do formato de data no |fnord| e passam o que vem antes dele como parâmetro para uma chamada de sistema pro ddate (sim, de fato pra próxima versão é melhor copiar o código do ddate ou reimplementar pra não ter este overhead) e o que vem depois continua indo pro strftime.

Ficou assim:

char s[255], u[255];
strcpy(s, m_timeformat->c_str());
char *t = strstr(s, "|fnord|");
time_string_len = 0;
if (t != NULL) {
	*t = '�';
	sprintf(u, "ddate +'%s'", s);
	FILE *ddate = popen(u, "r");
	if (fgets(time_string, 255, ddate)) {
		time_string_len = strlen(time_string);
		time_string[--time_string_len] = '�';
		fclose(ddate);
	}
	t+= 7;
} else {
	t = s;
}
time_string_len+= strftime(&time_string[time_string_len], 255 - time_string_len, t, time_type);

Known bugs

  1. Colocar ‘ (aspas simples) no lado esquerdo do |fnord| faz com que a data discordiana não apareça.
  2. Requer util-linux-ng e faz uma chamada de sistema ao ddate uma vez por segundo.
  3. Não trabalha ainda com horas métricas.
  4. … me informe se achar mais algum!

Screenshots

Screenshot 0

Screenshot 1

Screenshot 2

Hoje é o dia!

ATENÇÃO: Este conteúdo foi publicado há 11 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Hoje a noite eu espero poder postar um artigo feliz aqui dizendo que estou no meu laptop a 1280×780! Depois de varrer a internet e de dias tentando, acho que encontrei a solução para o fglrx funcionar com a ATI Radeon Xpress 1100 do meu Acer Aspire 5050-3205.

A solução baseou-se, entre outros sites, em dois casos de caras com Ubuntu que tiveram problemas semelhantes: esse e esse. Depois de um tempão tentando fazer outras coisas, parece que o problema que estava me impedindo de tudo funcionar corretamente era a versão do Xorg (!). Estou com o xorg.conf do Elvish Legion, do primeiro fórum, e agora emergindo o meu Xorg para a 7.1 como fez o Berin do segundo!

O problema que eu estou tendo é exatamente igual o dele:

(WW) ****INVALID IO ALLOCATION**** b: 0x9000 e: 0x90ff correcting
(...)
Requesting insufficient memory window!: start: 0x9000 end: 0x90ff size 0xc0120100
Requesting insufficient memory window!: start: 0x9400 end: 0x94ff size 0xc0120100
Requesting insufficient memory window!: start: 0x9800 end: 0x98ff size 0xc0120100
Requesting insufficient memory window!: start: 0x9c00 end: 0x9cff size 0xc0120100
(EE) Cannot find a replacement memory range
(...)
(EE) fglrx(0): RegisterResources failed
SetVBEMode failed
(EE) fglrx(0): PreInit failed

Em breve novidades… ;-)

Posts relacionados

Quando eu tiver um Linux totalmente configurado pro Acer Aspire 5050-3205, eu vou encher uma página de informações sobre como configurá-lo pras próximas vítimas serem mais felizes na estréia do laptop novo…

Ahhhh! Esse laptop está me rendendo um monte de paraquedistas! Parece um modelo novo que todo mundo tem pesquisado… e meu site tá bem localizado lá no Google, tanto que eu sou o primeiro resultado em várias buscas de pessoas procurando por como fazer a ATI Radeon Xpress 1100 funcionar!

Olha… Se você chegou aqui procurando por esse laptop e sua compatibilidade com Linux, além de ler os posts relacionados, saiba que ele é difícil de ser configurado, mas que na teoria tudo vai funcionar!

Linux: XDirectFB e Wine

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.


Flash e transparencias XDirectFB

Por dica do Paulo Matias (um amigo que conheci no Curso de Programação da OBI deste ano), instalei um CVS do XDirectFB no meu Linux (patchando o Xorg) e estou curtindo bastante! É um sistema bem rápido (mais rápido que o X normal) e que tem transparências nativas muito legais (e instantâneas). O site é directfb.org e para instalar só precisa do DirectFB e do XDirectFB (tem vários outros pacotes lá, mas que não servem para isso). Coloquei alguns screenshots no Flickr. :) O único ponto fraco do XDirectFB (talvez só a versão CVS) é que eu não consegui configurar o teclado (habilitando Xkb e fazendo tudo “direitinho”, o layout do meu teclado US internacional até funciona, mas aí as teclas direcionais param de funcionar!) e tem um bug um pouco esquisito… (aliás, não sei se é um bug ou eles fazem isso por querer): Quando iniciamos uma seção (startx/xinit) ele continua no console 1 e precisamos dar um CTRL+ALT+F7 para ir para o modo gráfico que ele está abrindo… :blink:

E por falar em fotos no Flickr e em evolução no Linux, eu aproveitei o final de semana também para instalar Wine no laptop e já estou conseguindo rodar programas que antes não funcionavam. Eu consegui rodar o Flash MX tranquilamente (mas antes já tinha conseguido) e ficou mais rápido que antes. Também rodei Twinsen’s Odissey (um jogo bem antigo que não roda no WinXP! Hehehe) sem problema algum e Age of Kings (o segundo da série Age of Empires da Microsoft) por alguns momentos. Com a Radeon configurada direitinho e o Wine também, gostei bastante das emulações.

Eu fiz mais coisas ultimamente, mas foram tantas que resolvi separar em dois posts. Portanto, continuo no próximo… ;)