Pular para o conteúdo

Portfólio Desk

Projeto

Desk é uma suíte de escritório livre para o Linux, com três aplicativos que compartilham o mesmo modelo de documento: o Desk Writer, de processamento de texto e layout de página, o Desk Tables, de planilhas, e o Desk Slides, de apresentações. É escrito em Rust, com GTK 4 e Libadwaita, segue as diretrizes de interface do GNOME e busca paridade de funções e compatibilidade de documentos com o iWork '09 da Apple (Pages, Numbers e Keynote 9.3).

Por que existe

Logo do Desk: uma bandeja com um documento de cada aplicativo e a palavra Desk com letras feitas de gráficos de barras, de pizza, papel milimetrado e planilha.
O logo, com os três aplicativos na bandeja.

Na faculdade eu usava Linux. Mas a vida insistia em me mandar arquivos do Microsoft Office e pedir coisas no Photoshop, e por volta de 2008 eu fui para o Mac. Lá conheci o iWork, que vinha com o computador, e em pouco tempo tinha abandonado o Microsoft Office. Depois a Apple reescreveu o iWork para 64 bits, e a versão nova chegou sem várias funções que nunca voltaram.

Agora o Linux voltou a ser o meu sistema principal, e eu resolvi fazer para ele o equivalente ao iWork que eu queria ter. O LibreOffice é um projeto admirável, mas tem muita coisa que eu não uso e não conversa visualmente com o GNOME. O Desk junta as duas coisas: a simplicidade do iWork '09 e a cara de um aplicativo GNOME de verdade.

O que faz

O projeto começou pelo Desk Writer, porque o motor de texto é a parte mais difícil e os outros dois aplicativos dependem dele. Hoje:

  • Abre os documentos do Pages '09: lê o texto, monta as páginas como o Pages monta e lista o que o documento tem e o Desk ainda não mostra.
  • Edita e salva: o Desk Writer abre, edita e formata o texto, com desfazer e área de transferência, e salva em OpenDocument (ODT), com extensões documentadas para o que o ODF padrão não guarda.
  • Formata como o Pages: barra de formatação, Inspetor, estilos e listas, tabulações e réguas, hifenização, ortografia, localizar e substituir, seções, colunas, cabeçalhos e rodapés, notas, sumário e links.
  • Funciona com leitor de tela: os testes de interface usam o Desk Writer pela árvore de acessibilidade, como um leitor de tela faz.
  • Converte sem interface: o desk-convert gera PDF pela linha de comando, sem GTK.
  • Fala português: a interface está em inglês e em português do Brasil.

O Desk Tables e o Desk Slides começam quando o motor de objetos e o de tabelas estiverem prontos. As bibliotecas de formato de arquivo ficam separadas da interface e têm licença MPL-2.0, para que outros programas possam ler e gravar os mesmos formatos.

Como foi feito

Estou fazendo o Desk junto com o Claude, a IA da Anthropic, com o mesmo rigor que se espera de uma equipe. Cada função do Pages, do Numbers e do Keynote '09 virou uma linha de uma matriz de paridade, 585 ao todo, e o que o Desk gera é comparado com PDFs feitos pelo próprio iWork 9.3, numa máquina virtual. O CI confere formatação, lint, testes, documentação, licenças das dependências e a conformidade com o REUSE.

A primeira decisão foi como montar o motor de texto. Um experimento montou o mesmo parágrafo justificado e hifenizado em volta de um círculo de três jeitos: com a biblioteca Parley e a quebra de linha dela, com a Parley e a nossa quebra de linha, e com um motor próprio. Ficou a Parley, com o Desk decidindo onde cada linha termina.

O mesmo parágrafo justificado e hifenizado, contornando um círculo azul no meio da coluna, montado três vezes lado a lado: com a Parley e a quebra dela, com a Parley e a quebra do Desk, e com um motor próprio.
O experimento que escolheu o motor de texto.

O primeiro commit é de 30 de outubro de 2026. Desde 1º de novembro, o Desk Writer sai todo dia como Flatpak noturno, compilado da main, para testes. Ainda não há versão estável.

Os aplicativos estão sob a licença GPL-3.0-or-later. O Desk não tem vínculo com a Apple; iWork, Pages, Numbers e Keynote são marcas da Apple Inc.

Ficha

Situação

Em desenvolvimento, começando pelo Desk Writer, que tem uma versão de testes noturna em Flatpak. Ainda sem versão estável.

Ano

2026

Tecnologias

Rust, GTK 4, Libadwaita, OpenDocument (ODF)

Links

Outros projetos

Anterior