Como eu crio um menu de aplicativo Xfce contendo apenas o conteúdo de uma categoria?

2

Eu quero criar um menu de aplicativos no Xfce que não contenha submenus, e que apenas contenha lançadores de aplicativos para todos os arquivos .desktop na categoria virtualization . Se você não tiver certeza do que estou me referindo, por favor, consulte a imagem abaixo.

Nestatela,seeutivesseomeucaminho,nãohaverianenhumsubmenudevirtualização,esim"Arch Linux", "CentOS 7-1511", "Debian 8.2", etc. e todos os outros arquivos .desktop para essas VMs seriam colocados diretamente no menu do aplicativo Virtualization. Eu escrevi .menu arquivos personalizados antes e tentei:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

<Menu>
  <Name>Virtualization</Name>
  <Directory>xfce-virtualization.directory</Directory>
  <!-- Read standard .directory and .desktop file locations -->
  <DefaultAppDirs/>
  <DefaultDirectoryDirs/>

  <!-- Read in overrides and child menus from applications-merged/ -->
  <DefaultMergeDirs/>
  <!-- Virtualization Software-->
  <Include>
    <And>
      <Category>Virtualization</Category>
    </And>
  </Include>

  <Layout>
    <Merge type="menus"/>
  </Layout>

</Menu>

mas isso me deu um menu vazio de aplicativos de virtualização.

    
por Brenton Horne 07.01.2016 / 03:43

1 resposta

2

Para que os atalhos dos aplicativos sejam encontrados, os arquivos .desktop devem estar localizados em um dos diretórios padrão, como ~/.local/share/applications para o usuário atual ou /usr/share/applications para todos os usuários.

Se você não tem certeza do que deu errado no seu caso, veja o meu exemplo de trabalho testado no Xubuntu 14.04 (Xfce 4.10) como abaixo.

Exemplo de configuração

A configuração a seguir pressupõe que:

  • os atalhos ( .desktop files) foram criados e incluem pelo menos uma categoria, que pode estar presente (ou seja, "System") ou inexistente (por exemplo, "Custom", "Virtual");
  • os atalhos foram movidos para o diretório compartilhado ou local, por exemplo, ~/.local/share/applications ;
  • o menu ( .menu file) foi criado de modo que os atalhos da categoria específica definida sejam incluídos (por exemplo, "Virtual");
  • o menu é colocado em algum lugar apropriado, por exemplo, ~/.config/menus directory

O arquivo .menu contém o seguinte.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Menu
  PUBLIC '-//freedesktop//DTD Menu 1.0//EN'
  'http://standards.freedesktop.org/menu-spec/menu-1.0.dtd'>
<Menu>
    <Name>Parent</Name>
    <!--This defines where to find .desktop files-->
    <DefaultAppDirs />
    <!--This affects what entries will appear under "Parent"-->
    <Include>
        <Category>Virtual</Category>
        <Category>X-Xfce-Toplevel</Category>
    </Include>
    <!--This includes what entries will appear under "Child" -->
    <Menu>
        <Name>Child</Name>
        <Include>
        <Filename>exo-terminal-emulator.desktop</Filename>
        </Include>
    </Menu>
    <!--This affects how will the entries appear under "Parent"-->
    <Layout>
        <Menuname>Child</Menuname>
        <Filename>xfce4-about.desktop</Filename>
        <Filename>exo-file-manager.desktop</Filename>
        <Filename>exo-terminal-emulator.desktop</Filename>
        <Filename>vm-test.desktop</Filename>
    </Layout>
</Menu>

Neste exemplo, criei apenas um atalho personalizado chamado vm-test.desktop que aparecerá no menu "Pai". Os outros arquivos .desktop já existem nos diretórios ~/.local/share/applications e /usr/share/applications . Eu os incluí de propósito, para mostrar que funciona nos dois sentidos.

Exemplo de capturas de tela

Adicione o applet "Application Menu" ao painel do Xfce, e selecione "Use custom menu file" e carregue o arquivo .menu do diretório share ou local. Finalmente, clique no applet de menu para ver os atalhos.

Comodescobriratalhos

Osatalhosqueforamadicionadosaodiretório~/.local/share/applicationstambémserãoencontradosautomaticamentepelomenudoWhiskeroupeloappletdomenuAplicativos(usandooarquivo.menupadrão).

Osarquivos.desktop,queespecificamcategorianãoexistenteounãoespecificamnenhumacategoria,aparecerãonacategoria"Outros". Se tiver várias ou mais categorias, aparecerá na categoria existente, ou seja, "Sistema" e não aparecerá em "Outro".

Para entender isso, veja o conteúdo do arquivo .desktop que usei no exemplo acima.

[Desktop Entry]
Version=1.0
Type=Application
Name=VirtualBox VM test
Comment=Run "test" VM in VirtualBox
Exec=virtualbox --startvm "test"
Icon=virtualbox
Terminal=false
StartupNotify=false
Categories=Custom;System;Virtual;
Name[en_US]=VirtualBox VM test
GenericName=VM test

Assim, o atalho personalizado será exibido na categoria "Sistema" no menu de aplicativos com base nas categorias especificadas. Além disso, como ele especificou a categoria "Virtual", o arquivo .menu personalizado pode incluir facilmente qualquer arquivo .desktop com categoria "Virtual".

Notas adicionais

No Debian, não havia arquivos .desktop por padrão no diretório ~/.local/share/applications e ~/.config/menus não existe (precisa criar isso manualmente).

Testado trabalhando nos sistemas de 32 bits Xubuntu 14.04 (Xfce 4.10) e Debian 8.3 Xfce (Xfce 4.10).

Referências

por 31.01.2016 / 12:09