
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://blog.tiagomadeira.com/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 = '\0'; 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] = '\0'; 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
- Colocar ‘ (aspas simples) no lado esquerdo do |fnord| faz com que a data discordiana não apareça.
- Requer util-linux-ng e faz uma chamada de sistema ao ddate uma vez por segundo.
- Não trabalha ainda com horas métricas.
- … me informe se achar mais algum!
Screenshots


