나는 수년에 걸쳐 많은 오픈 소스 프로그램을 작성했지만 최근에는 그렇지 않았으며 이전에는 이런 문제가 발생한 적이 없습니다. 내 새 프로젝트의 메뉴 항목이 gnome이나 kde 메뉴에 전혀 표시되지 않습니다.
원래는 .desktop 파일을 /usr/share/applications에 설치했지만 나중에 Desktop-file-utils를 사용하도록 수정했습니다. 모두 소용이 없었습니다. postinst 스크립트에 update-desktop-database를 추가했습니다...아무 것도 없습니다.
항목을 확인했고 파일 관리자에서 항목이 정확했으며 실행 권한을 부여해 보았습니다. 오류는 찾을 수 없지만 표시되지 않습니다. 최근에 앱의 메뉴 항목을 표시하기 위해 새로운 작업이 필요했나요?
.desktop 파일은 다음과 같습니다.
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
catezdmconsole.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
다른 코드가 유용할 경우 github에서 찾아볼 수 있습니다.https://github.com/ajventer/ezdm
업데이트: 파일을 /usr/share/applications/kde4에 복사하면(분명히 내 패키지에서는 복사하고 싶지 않습니다. 결국 gnome에서도 작동해야 함) ezdm.desktop이 갑자기 표시되면 수수께끼가 깊어집니다. 메뉴가 나타나지만 ezdm-console.desktop은 여전히 거부합니다.
업데이트: 관련이 있는 경우: 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
그리고 데비안/포스트:
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#
답변1
이 시도:
xdg-desktop-menu forceupdate [--mode mode]
밖의
man xdg-desktop-menu
답변2
매우 교활한 데스크톱 파일 키가 있습니다. - TryExec
.에 따르면문서:
실행을 시도하다
프로그램이 실제로 설치되었는지 여부를 확인하는 데 사용되는 디스크의 실행 파일 경로입니다. 경로가 절대 경로가 아닌 경우 $PATH 환경 변수에서 파일을 찾습니다. 파일이 존재하지 않거나 실행 가능하지 않은 경우 항목이 무시될 수 있습니다(예: 메뉴에서 사용되지 않음).
따라서, 잘못 입력할 경우 메뉴 항목이 손실될 수 있습니다. "적절하다"는 말은언제나반드시 가리켜야 한다실제 실행 파일.
놀랍게도 변경된 환경에서 런처를 사용하려고 하면 env
작동이 중지됩니다. 다음은 내 배포 패키지에 있는 잘못된 데스크톱 파일의 예입니다.
TryExec=env FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate
Exec=env FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate -- %u
실행 파일을 찾는 DE는 전체 문자열(공백 포함)을 파일 경로로 취급하기 때문에 작동하지 않습니다 env FONTCONFIG_FILE=/usr/share/fonts/fonts.conf telegram -noupdate
. 물론 이 경로는 손실됩니다.
해결책도 간단합니다. 실제 실행 파일의 경로를 지정하기만 하면 됩니다(상대 경로도 가능).
TryExec=telegram
답변3
파일에 형식 오류가 있습니다. 댓글 작성자에 따르면 일부 버전의 그놈이 더 관대하다고 가정할 수 있습니다. 어쨌든, 나는 그것들이 작동하도록 하는 좋은 방법을 찾았습니다. 돌핀에서 디렉토리를 열고 돌핀에서 시작할 수 있을 때까지 편집하십시오. 일단 작동하면 카테고리 필드를 추가하면 메뉴에 표시됩니다. KDE에서 다시 로그인하지 않으면 먼저 kbuildsycoca4 --noincremental을 실행해야 할 수도 있습니다.
파일의 최종 버전은 다음과 같습니다.
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=
다른 사람에게 도움이 되는 경우. 방금 새로운 PPA 빌드 요청을 시작했으므로 업데이트된 우분투 패키지가 곧 제공될 예정입니다.
답변4
TryExec
오류 줄이 더 이상 유효하지 않음을 나타내기 때문일 가능성이 높습니다 .
TryExec=/usr/games/games/ezdm
이 파일이 존재하지 않고 구체적으로 실행 가능하지 않은 것 같아요?