Arquivos desktop: colocando seu aplicativo nos menus do GNOME

Para executar aplicativos no GNOME, os usuários clicam em ícones em suas áreas de trabalho ou selecionam os aplicativos desejados a partir de um menu. Portanto, o primeiro passo para integrar um programa preexistente ao GNOME é registrá-lo no conjunto de aplicativos executáveis pelo usuário.

Ao contrário do Windows do Mac OS, no GNOME os menus são construídos automaticamente a partir de uma lista de aplicativos registrados. Cada aplicativo especifica um conjunto de categorias ao qual pertence, e o GNOME ordena e organiza os aplicativos. Esse mecanismo segue os padrões de menu e de entrada desktop do freedesktop.org.

Apesar disso ser comum em outros ambientes, criar um submenu específico para seu aplicativo é desencorajado. Em vez disso, forneça somente um item de menu para cada aplicativo distribuído. Itens extra, como arquivos de ajuda, LEIAMEs ou links para seu website devem ser embutidos no próprio aplicativo.

No GNOME e outros ambientes em conformidade com o freedesktop.org, um aplicativo é registrado no menu do ambiente através de uma entrada desktop, ou seja, um arquivo de texto com a extensão .desktop. Esse arquivo contém uma lista de informações sobre seu aplicativo. O ambiente usa as informações do arquivo .desktop para:

  • coloque o aplicativo no Menu principal. Para encontrar uma lista de categorias válidas, dê uma olhada em Especificações de menu para ambientes do FreeDesktop.org.
  • Listar o aplicativo no diálogo Executar aplicativo.
  • Criar lançadores apropriados no menu ou na área de trabalho.
  • Associar o nome e a descrição do aplicativo.
  • Usar o ícone apropriado.
  • Reconhecer os tipos MIME dos arquivos que o aplicativo pode abrir.

Para adicionar uma entrada de menu para seu aplicativo, crie um arquivo .desktop. Ele deve ter um nome de arquivo único, e não existe limite de comprimento, então evite abreviaturas e fique à vontade para incluir nomes de marca. No entanto, não coloque espaços ou caracteres internacionais no nome de arquivo. Por exemplo, "foocorp-painter-pro.desktop" seria uma boa escolha para nome de arquivo, mas "fcpp.desktop" seria um nome ruim, assim como seria "FooCorp Painter Pro.desktop". O arquivo deve ser codificado com UTF-8, e deve seguir esse modelo:

	[Desktop Entry]
	Name=FooCorp Painter Pro
	Exec=foocorp-painter-pro
	Icon=foocorp-painter-pro
	Type=Application
	Categories=GTK;GNOME;Utility;
	

Os arquivos desktop contêm metadados sobre seu aplicativo, e desempenham um papel central na integração do programa com o GNOME e outros ambientes em conformidade com os padrões. O modelo apresentado aqui é o mais básico possível. O arquivo pode ser traduzido, de forma que o nome de seu aplicativo possa aparecer no idioma nativo do usuário.

Coloque esse arquivo no diretório /usr/share/applications para que ele seja acessível a todos, ou em ~/.local/share/applications se você quiser torná-lo acessível a apenas um usuário. O diretório a ser usado depende se seu aplicativo está instalado para todo o sistema ou dentro do diretório pessoal de um usuário. O GNOME monitora esses diretórios, de forma que simplesmente copiar o arquivo para a localização correta é o suficiente para registrá-lo no ambiente.

Cada arquivo desktop deve seguir o mesmo formato. Um exemplo mínimo de um arquivo desktop pode ser conferido no Example 1-1. O arquivo está dividido em seções, cada uma começando com o descritor da seção entre colchetes. Nesse exemplo, apenas uma seção foi mostrada, que é a seção essencial na integração de seu aplicativo com o ambiente. Dentro de cada seção, a parte da linha antes do sinal de igual é a chave, e a outra parte é o valor. Uma explicação de cada linha está disponível na Table 1-1.

Fora a primeira linha, que identifica o arquivo desktop, a ordem das linhas não é importante. No Example 1-1, a linha Type=Application poderia ter sido a segunda linha, a quinta ou a última, e o resultado teria sido o mesmo.

No entanto, as chaves fazem diferença entre maiúsculas e minúsculas. Type=Application não é o mesmo que type=Application ou TYPE=Application.

Example 1-1Arquivo desktop de exemplo
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Nome do aplicativo de exemplo
Comment=Um aplicativo de exemplo
Exec=aplicativo
Icon=aplicativo.png
Terminal=false
Table 1-1Explicação linha a linha
Linha Descrição
[Desktop Entry] A primeira linha de cada arquivo desktop, e o cabeçalho da seção que identifica o bloco de pares chave-valor associado ao ambiente. Necessária para que o ambiente reconheça o arquivo corretamente.
Type=Application Diz ao ambiente que esse arquivo de área de trabalho pertence a um aplicativo. Outros valores válidos para essa chave são Link e Directory.
Encoding=UTF-8 Descreve a codificação das entradas nesse arquivo desktop.
Name=Nome do aplicativo de exemplo Nomes de seu aplicativo para o menu principal e quaisquer lançadores.
Comment=Um aplicativo de exemplo Descreve a aplicação. Usado como dica de ferramenta ("tooltip").
Exec=aplicativo O comando que inicia esse aplicativo a partir de um shell. Pode ter argumentos.
Icon=application.png O nome do ícone associado ao aplicativo.
Terminal=false Descreve se o aplicativo deve ser executado em um terminal.

1.1.1. Iniciando seu aplicativo

Se seu aplicativo pode receber argumentos de linha de comando, você pode representá-los usando os campos mostrados na Table 1-2.

Table 1-2Variáveis da entrada Exec
Adicione... Para aceitar...
%f um único arquivo.
%F múltiplos arquivos.
%u um único URL.
%U múltiplos URLs.
%d um único diretório. Usada em conjunto com %f para localizar um arquivo.
%D múltiplos diretórios. Usada em conjunto com %F para localizar arquivos.
%n um único nome de arquivo sem caminho.
%N múltiplos nomes de arquivo sem caminho.
%k um URI ou nome de arquivo com a localização do arquivo desktop.
%v o nome da entrada Device.

1.1.2. Idiomas estrangeiros

Para criar nomes e comentários localizados, são necessárias linhas adicionais para cada localidade. Por exemplo, para adicionar uma versão sueca do comentário, adicione a seguinte linha:

Comment[sv]=Exempelprogramnamn

Não existe limite para o número de traduções em um arquivo.

Manter uma longa lista de traduções em um único arquivo pode ser um incômodo. Existe um jeito melhor de criar essas traduções, com o pacote intltool. Leia as páginas do manual para intltool-extract e intltool-merge para mais informações.

1.1.3. Referências

Desktop Entry Specification — Especificações para a criação de um arquivo desktop.