Archive for the ‘Software Livre’ Category

fluxbox-ddate no Gentoo

Sunday, August 29th, 2010

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 http://blog.tiagomadeira.com/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

Sunday, August 29th, 2010

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

  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

Parceria USP-Microsoft?

Saturday, May 1st, 2010

A notícia da visita de Steve Ballmer à USP me preocupou, em especial seu último parágrafo:

Para Massambani, a Microsoft pode acelerar os processos e alavancar os projetos já existentes no desenvolvimento de processos de criatividade na área digital, laboratório de criatividade e inovação. “A Microsoft pode ajudar a USP em projetos relacionados com infraestrutura, suporte, educação, sociocultural, servindo como popularização da ciência, inclusão social e digital. As duas podem cooperar para o desenvolvimento de pesquisas, capital intelectual e responsabilidade social”, considera.

A Microsoft tem esse costume (que o Sérgio Amadeu chama de “prática de traficante”) de oferecer a governos, universidades e mesmo a professores individualmente dinheiro, laboratórios, computadores e licenças do seu sistema operacional com esse discurso de inclusão digital e educação; criar dependentes.

Inclusão digital e social com um software que custa mais que o salário mínimo não é inclusão. Educação sem acesso ao código não é educação; é como ensinar a fórmula da soma de progressão aritmética sem permitir que o estudante saiba de onde ela vem ou criar cozinheiros ensinando a colocar lasanha da Sadia no micro-ondas. Popularização da ciência? Que ciência? A única popularização que vejo é da marca de uma empresa internacionalmente conhecida por sua política imperialista e por monopólio.

Desenvolvimento de pesquisa pra terceiros é capital intelectual desperdiçado. Por isso, essa parceria é o que eu chamo de irresponsabilidade social. É um erro uma universidade pública abrir as portas pra esse tipo de negócio que deseduca, desvirtua e vicia a sociedade.

Se a Microsoft quer tanto assim um mundo melhor e leva a sério seu próprio discurso de querer ver a população de São Paulo incluída digitalmente, sugiro que doe dinheiro aos telecentros paulistas sem esperar nada em troca.

Já tinha escrito um resumo disso no Twitter, mas achei conveniente repetir aqui.