fluxbox-ddate no Gentoo

Criei um ebuild para o Fluxbox com uma USE flag “ddate” baseado no fluxbox-1.1.1-r2 (que é o último ebuild no Portage neste exato momento). Usando ele, é possível ter o calendário santo-discordiano no Fluxbox do Gentoo.

Siga os passos abaixo para ter Fluxbox com suporte a ddate no seu Gentoo.

Baixando o ebuild e colocando ele num overlay

% wget https://tiagomadeira.com/wp-content/uploads/2010/08/portage-fluxbox-1.1.1-0.tar.bz2
% su
% mkdir -p /usr/local/portage/x11-wm
% tar xjvf portage-fluxbox-1.1.1-0.tar.bz2 -C /usr/local/portage/x11-wm

Modificando o /etc/make.conf pra adicionar suporte ao overlay

Abra com seu editor preferido (e obviamente como root) o /etc/make.conf e adicione ao final dele:

PORTDIR_OVERLAY="/usr/local/portage"

Depois disso é necessário rodar um emerge --sync (ou eix-sync se você usa o eix :))

% emerge --sync

ACCEPT_KEYWORDS e USE flag

Marquei o pacote como instável. Para usar, se seu /etc/make.conf não tem ACCEPT\_KEYWORDS=”~amd64″ (ou ~suaarquitetura se você não usa amd64), edite (criando, caso não exista) o arquivo /etc/portage/package.keywords adicionando:

=x11-wm/fluxbox-1.1.1-r10 ~amd64

(substitua ~amd64 por ~suaarquitetura)

Se você também não tem uma USE flag “ddate” no /etc/make.conf, é necessário editar o arquivo /etc/portage/package.use (também crie se não existir), adicionando:

x11-wm/fluxbox ddate

E agora?

Basta instalar o Fluxbox usando o emerge, como você faria com qualquer pacote normal:

% emerge -av fluxbox
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   U   ] x11-wm/fluxbox-1.1.1-r10  USE="ddate imlib nls slit toolbar truetype vim-syntax -gnome -newmousefocus -xinerama" 0 kB [1]

(note que a versão é 1.1.1-r10 e tem a USE flag ddate)

Ele não baixa o pacote inteiro do ddate, mas apenas aplica, além dos patches do Gentoo, um pequeno patch (de umas 40 linhas) que altera o ClockTool.cc.

Screenshot do emerge

Divirta-se!

Calendário santo-discordiano no Fluxbox

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 https://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 1

Screenshot 2

Screenshot 3

Teoria da conspiração (ou: Hail Eris!)

Conheci o discordianismo semana retrasada, quando vi uma comunidade no orkut chamada 23 e perguntei ao Schneider do que se tratava. Para me responder, ele sugeriu que eu escrevesse ddate no meu Slackware… E não é que eu tinha mesmo esse aplicativo discordiano?

tiago@laptop:~$ ddate
Today is Sweetmorn, the 49th day of The Aftermath in the YOLD 3172

Depois daquele dia, em todo lugar que eu passo eu vejo uma referência discordiana escondida! Parece que temos muito discordianos entre nós e eles parecem estar tomando conta de tudo, para em breve tomar o poder. Será que eu fui o único a perceber a conspiração? Se era secreto, não duvido que este post suma em algum tempo, porque a Dreamhost também deve ter discordianos!

Mas vejam só… Hoje eu descobri que o Rafael e o Cardoso lêem o 1001 gatos! O Patrick (do Slackware) também deve estar envolvido (pô, o foco da distribuição é simplicidade e ele coloca um aplicativo discordiano nela?). Agora pessoas próximas também começam a se envolver. Acho que vou ler o Principia Discordia pra entrar nessa nova religião agora no início e não ser eliminado depois como o resto do mundo.

© 2005–2020 Tiago Madeira