
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

Posts relacionados
- fluxbox-ddate no Gentoo Criei um ebuild para o Fluxbox com uma USE flag...


[...] This post was mentioned on Twitter by Tiago Madeira, Tiago Madeira. Tiago Madeira said: Calendário santo-discordiano no Fluxbox: http://bit.ly/bF6sRw [...]
GENIAL!!!!!
Mas cara, sendo santo-discordiano, assumo que funcione também com o horário… Ou só com datas?
[Ainda] não funciona com horários! Vou registrar nos “known bugs” pra colocar na próxima versão! :)
FOOODA!
Agora, rodar make install vai substituir o Fluxbox antigo?
Depende do --prefix que você colocar no ./configure.
Seu Fluxbox provavelmente está instalado em /usr, então colocar --prefix=/usr/local deve instalar num lugar diferente, por exemplo.
Aqui eu usei --prefix=/tmp/fluxbox/build e iniciei com startx /tmp/fluxbox/build/bin/fluxbox -- :1 (vou instalar de verdade depois que escrever um ebuild pra não sujar o Gentoo :))
Tiago, seria realmente interessante se o pacote se chamasse fluxbox-ddate ao invés de simplesmente fluxbox. Como faz isso?
Não acho que o pacote precise mudar de nome. É um patch muito pequeno no Fluxbox (algumas linhas), não acho que se qualifique como fork (por isso a decisão de só adicionar um patch no ebuild do Gentoo :))
É verdade! Não tinha pensado nisso.
Vou mudar, gerar um novo tar e editar esse post.
Sensacional.
[...] Blog do Tiago Just another WordPress weblog « Calendário santo-discordiano no Fluxbox [...]
Muito massa! Vou usar! :)
Se ainda não tiver compilado, aproveita pra testar o ebuild! :)
Cara, muito, muito foda. Você vai mandar o patch pro upstream? =D
Se não for muito complicado vou ver se crio um .deb hoje à noite pro Ubuntu
Quando eu corrigir o bug 2 vou tentar mandar pro Fluxbox :) (porque aí não dependeremos mais de ddate/util-linux-ng, o negócio ficará mais eficiente e o código mais bonito. E o item 1 será consertado junto)
Quando criar o .deb, manda pra eu publicar aqui! :)
Ah, um detalhe que, bem, pode ser um bug: haverá, no futuro, possibilidade de outras línguas (pra poder aparecer burocracia, consequências, etc?)
Hmmm, vou ver como o Fluxbox faz (se usa gettext) e quem sabe faço também quando resolver o bug 2 :)
Repito novamente: sensacional!!!!!