Por que meus arquivos application.desktop não estão aparecendo no menu de aplicativos Linux?

5

Escrevi vários programas de código aberto ao longo dos anos, mas não muito recentemente, e nunca tive esse problema antes. Os itens de menu para o meu novo projeto simplesmente se recusam a aparecer em menus no gnome ou no kde.

Eu originalmente instalei os arquivos .desktop em / usr / share / applications mas modifiquei-os posteriormente para usar utilitários de arquivo de desktop - tudo sem sucesso. Eu adicionei update-desktop-database ao meu script postinst ... nada

Eu validei as entradas, e no gerenciador de arquivos elas estão corretas, eu tentei dar a elas permissões de execução ... Não consigo encontrar nada errado, mas elas simplesmente não aparecem. Há algo novo que você precisa fazer para exibir os itens de menu do aplicativo nos próximos dias?

Os arquivos .desktop são:

silentcoder@ravenriley ~/SOURCE/ezdm $ cat ezdm.desktop 
[Desktop Entry]
Type=Application
Name=EZDM
GenericName=Easy Dungeon Master
Comment=A tookit for AD&D Dungeon Master
TryExec=/usr/games/ezdm
Exec=/usr/games/ezdm
Categories=Game;RolePlaying;
Icon=/usr/share/icons/hicolor/128x128/ezdm.png
Terminal=false

cat ezdmconsole.desktop

[Desktop Entry]
Type=Application
Name=EZDM-Console
GenericName=Easy Dungeon Master (Console version)
Comment=A tookit for AD&D Dungeon Master
TryExec=/usr/games/ezdm --console
Exec=/usr/games/ezdm --console
Categories=Game;RolePlaying;
Icon=/usr/share/icons/hicolor/128x128/ezdm-console.png
Terminal=1
X-Desktop-File-Install-Version=0.20

E se qualquer outro código puder ser útil, é tudo navegável no github: link

UPDATE: O mistério se aprofunda, se eu copiar os arquivos para / usr / share / applications / kde4 (o que obviamente não quero fazer no meu pacote - afinal, ele deve funcionar no gnome também) então de repente ezdm .desktop aparece no menu, mas o ezdm-console.desktop ainda se recusa.

ATUALIZAÇÃO: uma vez que pode ser relevante: Do Makefile:

install:
                $(PYTHON) setup.py install --prefix=/${PREFIX} --root $(DESTDIR) --install-scripts=/${PREFIX}/games/ --no-compile --force --record .install.record --install-layout=deb
                mkdir -p ${DESTDIR}/${PREFIX}/share/applications
                mkdir -p ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/
                desktop-file-install --dir=${DESTDIR}/${PREFIX}/share/applications/ ezdm.desktop 
                desktop-file-install --dir=${DESTDIR}/${PREFIX}/share/applications/ ezdm-console.desktop 
                install -g root -o root -m 0666 ezdm.png ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/ezdm.png
                install -g root -o root -m 0666 ezdm-console.png ${DESTDIR}/${PREFIX}/share/icons/hicolor/128x128/ezdm-console.png 
                update-desktop-database ${DESTDIR}/${PREFIX}/share/applications

E debian / postinst:

cat debian/postinst 
#!/bin/bash -x
ln -sf /usr/games/ezdm* /usr/bin
for I in /usr/lib/python2.7/dist-packages/ezdm_libs/*.py; do
        python -m compileall $I
done
update-desktop-database
#DEBHELPER#
    
por silentcoder 28.02.2013 / 23:57

4 respostas

2

Houve erros de formatação nos arquivos. Com base em comentadores, só posso supor que algumas versões do gnome sejam mais tolerantes. De qualquer forma eu encontrei uma maneira bacana de fazê-los funcionar: Abra o diretório no dolphin e edite-o até que ele possa ser iniciado a partir do dolphin - somente quando isso funcionar, adicione o campo categories e eles aparecerão nos menus. No KDE você pode ter que executar: kbuildsycoca4 --noincremental primeiro se você não relogar.

As versões finais dos arquivos são:

cat ezdm.desktop 
[Desktop Entry]
Categories=Game;RolePlaying;
Comment[en_US]=A tookit for ADnD Dungeon Master
Comment=A tookit for ADnD Dungeon Master
Exec=/usr/games/ezdm
GenericName[en_US]=Easy Dungeon Master
GenericName=Easy Dungeon Master
Icon=/usr/share/icons/hicolor/128x128/ezdm.png
MimeType=
Name[en_US]=EZDM
Name=EZDM
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
TryExec=/usr/games/ezdm
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

silentcoder@ravenriley ~/SOURCE/ezdm0/ezdm $ cat ezdm-console.desktop 
[Desktop Entry]
Categories=Game;RolePlaying;
Comment[en_US]=EZDM Console Version
Comment=EZDM Console Version
Exec=/usr/games/ezdm --console
GenericName[en_US]=EZDM Console Version
GenericName=EZDM Console Version
Icon=/usr/share/icons/hicolor/128x128/ezdm-console.png
MimeType=
Name[en_US]=EZDM-Console
Name=EZDM-Console
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

Caso isso ajude alguém mais. Acabei de lançar uma nova solicitação de compilação do PPA, portanto, os pacotes atualizados do ubuntu estarão disponíveis em breve.

    
por 02.03.2013 / 11:11
1

tente isto:

xdg-desktop-menu forceupdate [--mode mode]

fora de

man xdg-desktop-menu 
    
por 09.07.2014 / 08:48
0

O mais provável é que sua linha incorreta TryExec indique que ela não é mais válida.

TryExec=/usr/games/games/ezdm

Eu acho que esse arquivo não existe e, em particular, não é executável?

    
por 01.03.2013 / 00:09
0

Clique aqui para saber o que é um arquivo application.desktop .

Solução:

O arquivo deve existir em seu computador já se o programa estiver instalado, então não deve haver necessidade de escrever outro. O problema é que não está no diretório que você precisa ser para aparecer no seu gnome-shell. Execute o seguinte se desejar que nem todos os seus arquivos application.desktop sejam exibidos no gnome-shell. Se você não instalou o find , instale-o de acordo com as práticas recomendadas de sua distribuição. No meu caso: sudo apt-get install find .


  # change the value of LOOKHERE for any directory
  LOOKHERE=/etc  ;
  for p in 'sudo find * "${LOOKHERE}" | grep -E *\.desktop$'; do
      sudo cp  ${p}  $HOME/.local/share/applications/ ;
  done

find * "${LOOKHERE}" | grep -E *\.desktop$

O último deve colocar algo como se LOOKHERE fosse /share :

/usr/share/gnome/autostart/nautilus-autostart.desktop
/usr/share/gnome/autostart/gnome-user-share-obexpush.desktop
/usr/share/gnome/wm-properties/metacity-wm.desktop
                           .
                           .
                           .
/usr/share/tracker/miners/tracker-miner-applications.desktop
/usr/share/tracker/miners/tracker-miner-userguides.desktop


Aviso:

A variável LOOKHERE , quando definida como / sozinha, também procurará em qualquer mídia removível e esses arquivos poderão estar apontando para programas inexistentes em sua máquina local. Certifique-se de que todas as instruções exec sejam cruzadas com which application-name , que deve retornar sua instrução exec válida, como which bash returns /bin/bash . Se which não funcionar, verifique whereis para iniciar. Para mais alterações avançadas, use dconf ou gsettings .

    
por 16.06.2015 / 16:49

Tags