Desktop entries (Português) - ArchWiki

Jump to content

# Desktop entries (Português)

From ArchWiki

Este artigo ou esta seção precisa de tradução.

Notas: Este artigo está sendo traduzido. (Discuta em Talk:Desktop entries (Português)#)

A especificação XDG Desktop Entry define um padrão para aplicativos se integrarem em menus de aplicativos de ambientes de desktop que implementam a especificação XDG Desktop Menu.

## Básico

Cada entrada de destkop deve ter uma chave `Type` e `Name` e, opcionalmente, pode definir sua aparência no menu do aplicativo.

Os três tipos disponíveis são:

Application
  Define como iniciar um aplicativo e quais tipos MIME são suportados (usados por XDG MIME Applications). Com XDG Autostart, as entradas do aplicativo podem ser inicializadas automaticamente, colocando-as em diretórios específicos. As entradas do aplicativo usam a extensão de arquivo `.desktop`. Consulte #Entrada de aplicativos.

Link
  Define um atalho para uma `URL`. As entradas do link usam a extensão de arquivo `.desktop`.

Directory
  Define a aparência de um submenu no menu do aplicativo. As entradas do diretório usam a extensão de arquivo `.directory`.

As seções a seguir explicam aproximadamente como elas são criadas e validadas.

## Entrada de aplicativos

As entradas de desktop para aplicativos, ou arquivos `.desktop`, geralmente são uma combinação de recursos de meta informações e um atalho de um aplicativo. Esses arquivos geralmente residem em `/usr/share/applications/` ou `/usr/local/share/applications/` para aplicativos instalados em todo o sistema ou `~/.local/share/applications/` para aplicativos específicos do usuário. As entradas do usuário têm precedência sobre as entradas do sistema.

### Exemplo de arquivo

A seguir, é apresentado um exemplo de sua estrutura com comentários adicionais. O exemplo serve apenas para dar uma impressão rápida e não mostra como utilizar todas as chaves de entrada possíveis. A lista completa de chaves pode ser encontrada na especificação da freedesktop.

    [Desktop Entry]

    # O tipo como listado acima
    Type=Application

    # A versão da especificação de entrada de desktop com a qual este arquivo está em conformidade
    Version=1.0

    # O nome do aplicativo
    Name=jMemorize

    # Um comentário que pode/será usado como uma dica da ferramenta
    Comment=Flash card based learning tool

    # O caminho para a pasta na qual o executável é executado
    Path=/opt/jmemorise

    # O executável do aplicativo, possivelmente com argumentos
    Exec=jmemorize

    # O nome do ícone que será usado para exibir esta entrada
    Icon=jmemorize

    # Descreve se este aplicativo precisa ser executado em um terminal ou não
    Terminal=false

    # Descreve as categorias nas quais esta entrada deve ser mostrada
    Categories=Education;Languages;Java;

Nota: Apenas `Type` e `Name` são obrigatórios.

### Definição das chaves

Todas as entradas reconhecidas podem ser encontradas no site da freedesktop. Por exemplo, a tecla `Type` define três tipos de entradas de destkop: Application (tipo 1), Link (tipo 2) e Directory (tipo 3).

- A chave `Version` não representa a versão do aplicativo, mas a versão da especificação de entrada da área de desktop com a qual esse arquivo está em conformidade.

- `Name`, `GenericName` e `Comment` geralmente contêm valores redundantes na forma de combinações deles, como:

    Name=Pidgin Internet Messenger
    GenericName=Internet Messenger

ou

    Name=NoteCase notes manager
    Comment=Notes Manager

Isso deve ser evitado, pois pode causar confusão para os usuários. A chave `Name` deve conter apenas o nome, ou talvez uma abreviação/sigla, se disponível.

- `GenericName` deve indicar o que você geralmente chamaria de aplicativo que faz o que esse aplicativo específico oferece (por exemplo, o Firefox é um "Navegador da Web").
- `Comment` destina-se a conter qualquer informação adicional útil.

### Validação

Como algumas chaves foram descontinuadas com o tempo, convém validar as entradas de desktop usando o desktop-file-validate(1), que faz parte do pacote desktop-file-utils. Para validar, execute:

    $ desktop-file-validate <seu arquivo desktop>

Isso fornecerá avisos e mensagens de erro muito detalhados e úteis.

### Instalação

Use desktop-file-install(1) para instalar o arquivo desktop no diretório alvo. Por exemplo:

    $ desktop-file-install --dir=~/.local/share/applications ~/app.desktop

### Atualizar banco de dados de entradas desktop

Para que as entradas da área de trabalho definidas em `~/.local/share/applications` funcionem, execute o seguinte comando:

    $ update-desktop-database ~/.local/share/applications

## Ícones

Veja também a Icon Theme Specification.

### Formatos de imagens comuns

Here is a short overview of image formats commonly used for icons.

Support for image formats for icons as specified by the freedesktop.org standard.
Extension | Full Name and/or Description | Graphics Type | Container Format | Supported
--- | --- | --- | --- | ---
.png | Portable Network Graphics | Raster | Não | Sim
.svg(z) | Scalable Vector Graphics | Vector | Não | Yes (optional)
.xpm | X PixMap | Raster | Não | Yes (deprecated)
.gif | Graphics Interchange Format | Raster | Não | Não
.ico | MS Windows Icon Format | Raster | Sim | Não
.icns | Apple Icon Image | Raster | Sim | Não

### Convertendo ícones

This article or section is a candidate for merging with ImageMagick#Usage.

Notes: Belongs there. (Discuss in Talk:Desktop entries (Português))

If you stumble across an icon which is in a format that is not supported by the freedesktop.org standard (like `gif` or `ico`), you can use the convert tool (which is part of the imagemagick package) to convert it to a supported/recommended format, e.g.:

    $ convert <icon name>.gif <icon name>.png

If you convert from a container format like `ico`, you will get all images that were encapsulated in the `ico` file in the form `<icon name>-<number>.png`. If you want to know the size of the image, or the number of images in a container file like `ico` you can use the identify tool (also part of the imagemagick package):

    $ identify /usr/share/vlc/vlc48x48.ico

    /usr/share/vlc/vlc48x48.ico[0] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb
    /usr/share/vlc/vlc48x48.ico[1] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb
    /usr/share/vlc/vlc48x48.ico[2] ICO 128x128 128x128+0+0 8-bit DirectClass 84.3kb
    /usr/share/vlc/vlc48x48.ico[3] ICO 48x48 48x48+0+0 8-bit DirectClass 84.3kb
    /usr/share/vlc/vlc48x48.ico[4] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb
    /usr/share/vlc/vlc48x48.ico[5] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb

As you can see, the example ico file, although its name might suggest a single image of size 48x48, contains no less than 6 different sizes, of which one is even greater than 48x48, namely 128x128.

Alternatively, you can use icotool (from icoutils) to extract png images from ico container:

    $ icotool -x <icon name>.ico

For extracting images from .icns container, you can use icns2png (provided by libicns):

    $ icns2png -x <icon name>.icns

### Obtendo ícones

Although packages that already ship with a .desktop file most certainly contain an icon or a set of icons, there is sometimes the case when a developer has not created a .desktop file, but may ship icons, nonetheless. So a good start is to look for icons in the source package. You can i.e. first filter for the extension with find and then use grep to filter further for certain buzzwords like the package name, "icon", "logo", etc, if there are quite a lot of images in the source package.

    $ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"

If the developers of an application do not include icons in their source packages, the next step would be to search on their web sites. Some projects, like i.e. tvbrowser have an artwork/logo page where additional icons may be found. If a project is multi-platform, there may be the case that even if the linux/unix package does not come with an icon, the Windows package might provide one. If the project uses a Version control system like CVS/SVN/etc. and you have some experience with it, you also might consider browsing it for icons. If everything fails, the project might simply have no icon/logo yet.

### Caminho de ícones

The freedesktop.org standard specifies in which order and directories programs should look for icons:

1. `$HOME/.icons` (for backwards compatibility)
2. `$XDG_DATA_DIRS/icons`
3. `/usr/share/pixmaps`

## Ferramentas

### gendesk

gendesk started as an Arch Linux-specific tool for generating .desktop files by fetching the needed information directly from PKGBUILD files. Now it is a general tool that takes command-line arguments.

Icons can be automatically downloaded from openiconlibrary, if available. (The source for icons is configurable).

#### Como usar

- Add `gendesk` to makedepends

- Start the `prepare()` function with:

    gendesk --pkgname "$pkgname" --pkgdesc "$pkgdesc"

- Alternatively, if an icon is already provided ($pkgname.png, for instance). The `-n` flag is for not downloading an icon or using the default icon. Example:

    gendesk -n --pkgname "$pkgname" --pkgdesc "$pkgdesc"

- `$srcdir/$pkgname.desktop` will be created and can be installed in the `package()` function with:

    install -Dm644 "$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"

- The icon can be installed with:

    install -Dm644 "$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"

- Use `--name='Program Name'` for choosing a name for the menu entry.

- Use `--exec='/opt/some_app/elf --some-arg --other-arg'` for setting the exec field.

- See the gendesk project for more information.

### lsdesktopf

lsdesktopfAUR can list available .desktop files or search their contents.

    $ lsdesktopf
    $ lsdesktopf --list
    $ lsdesktopf --list gtk zh_TW,zh_CN,en_GB

It can also perform MIME-type-related searches. See XDG MIME Applications#lsdesktopf.

### fbrokendesktop

The fbrokendesktopAUR Bash script detects broken `Exec` values pointing to non-existent paths. Without any arguments it uses preset directories in the `DskPath` array. It shows only broken .desktop with full path and filename that is missing.

Examples

    $ fbrokendesktop
    $ fbrokendesktop /usr
    $ fbrokendesktop /usr/share/xsessions/icewm.desktop

## Dicas e truques

### Executar um arquivo desktop do terminal

Install the dex package and run `dex /path/to/application.desktop`.

### Ocultar entradas de desktop

Firstly, copy the desktop entry file in question to `~/.local/share/applications` to avoid your changes being overwritten.

Then, to hide the entry in all environments, open the desktop entry file in a text editor and add the following line: `NoDisplay=true`.

To hide the entry in a specific desktop, add the following line to the desktop entry file: `NotShowIn=desktop-name`

where desktop-name can be option such as GNOME, Xfce, KDE etc. A desktop entry can be hidden in more than desktop at once - simply separate the desktop names with a semi-colon.

### Modificar variáveis de ambiente

To set environment variables, copy the .desktop file from `/usr/share/applications/` to `$XDG_DATA_HOME/` (`~/.local/share/applications/`) and edit the `Exec=` command line by prepending env. For example:

    ~/.local/share/applications/abiword.desktop

    Exec=env LANG=he_IL.UTF-8 abiword %U

Dica: Instead of manually copying and editing the file, both actions can be done with sed. For example:

    $ sed 's|^Exec=|Exec=env LANG=he_IL.UTF-8 |g' /usr/share/applications/abiword.desktop > ~/.local/share/applications/abiword.desktop

## Veja também

- Wikipedia:.desktop
- Information for developers

Categories:

- Freedesktop.org (Português)
- Configuration files (Português)
- Package development (Português)

Hidden categories:

- Pages or sections flagged with Template:Translateme (Português)
- Pages or sections flagged with Template:Merge