내 이해에 따르면파일명 부분XDG 데스크톱 항목 사양에서는 .desktop
역방향 DNS 표기법에 따라 파일 이름을 지정해야 합니다.
데스크톱 항목의 이름은 "역방향 DNS" 규칙을 따라야 합니다. 즉, 응용 프로그램 작성자가 제어하는 역방향 DNS 도메인 이름으로 시작해야 합니다(소문자). 도메인 이름 다음에는 애플리케이션 이름이 와야 하며, 일반적으로 첫 글자를 대문자로 한 연결된 단어(CamelCase)입니다. 예를 들어, example.org의 소유자가 "Foo Viewer"를 작성하면 org.example.FooViewer라는 이름을 선택하여 org.example.FooViewer.desktop이라는 파일이 생성될 수 있습니다.
이런 방식으로 데스크톱 파일의 이름을 지정하고 파일을 넣은 XDG_DATA_HOME/applications
다음 실행 xdg-desktop-menu forceupdate
하면 내 응용 프로그램이 gnome을 제외한 모든 일반적인 위치에 표시됩니다. 어떤 이유로 내 앱이 다른 파일 관리자/데스크톱 환경의 "다음 프로그램으로 열기..."에 해당하는 "추천 앱"에 표시되지 않습니다.
데스크탑은 에 따라 유효합니다 desktop-file-validate
.
많은 조사 끝에 xdg-desktop-menu install
다른 프로그램을 사용하여 파일을 확인하라는 제안을 찾았습니다. 이렇게 하면 다음 오류가 발생합니다.
xdg-desktop-menu: 파일 이름 'org.example.FooViewer.desktop'에 올바른 공급업체 접두사가 없습니다. 공급업체 접두사는 알파벳 문자([a-zA-Z])로 구성되고 대시("-")로 끝납니다. . 예제 파일의 이름은 "example-org.example.FooViewer.desktop"입니다. --novendor를 사용하여 재정의하거나 추가 정보를 보려면 "xdg-desktop-menu --manual"을 사용하세요.
역방향 DNS 기호를 제거하고 파일 이름만 지정하면 example-FooViewer.desktop
gnome에 표시됩니다.
이제 나는 혼란스러워졌습니다. 규칙에 따라 파일 이름을 지정하면 gnome이 충돌하는 이유는 무엇입니까? xdg-desktop-menu
사양을 준수했는데 파일 처리가 거부된 이유는 무엇입니까? gnome이 유사한 이름의 다른 데스크톱 항목 파일을 중단하지 않는 이유 - 데스크톱 항목의 이름이 역방향 DNS 표기법으로 지정되고 대부분 공급업체 접두사 또는 단일 대시가 포함되어 있지 않더라도 모든 Flatpak은 gnome의 다음으로 열기 메뉴에 표시됩니다!
여기서 무슨 일이 일어나고 있는 걸까요? 독립적인 타사 패키저로서 이 충돌을 어떻게 처리해야 합니까? 내가 뭐 놓친 거 없니?
답변1
xdg-desktop-menu가 사양을 준수함에도 불구하고 이 파일 처리를 거부하는 이유는 무엇입니까?
공급업체 접두사에 대한 xdg-desktop-menu의 확인은 OP에서 인용한 사양에 지정된 조건을 정확하게 구현하지 않기 때문입니다.
우리가 읽을 수 있듯이함수 코드 check_vendor_prefix()
(521행에서 시작), 성공적인 통과 조건은 다음 테스트에 의해 트리거됩니다.
case "$file" in
[a-zA-Z]*-*)
명령 인수로 제공된 파일 이름이 알파벳 문자로 시작하는 경우 대소문자가 일치합니다.대시를 하나 이상 포함해야 합니다.
그리고 거기에는 대시가 없습니다 org.example.FooViewer.desktop
.
따라서 .desktop 파일을 설치하려면 xdg-desktop-menu
오류 메시지에 제공된 조언을 따르십시오.
update-desktop-database를 재정의하려면 --novendor를 사용하세요.
gnome이 유사한 이름의 다른 데스크톱 항목 파일을 중단하지 않는 이유 - 모든 Flatpaks는 gnome의 "다음으로 열기" 메뉴에 표시됩니다.
다른 데스크톱 항목에 대해서는 알 수 없지만 flatpack 설치로 인해 실행이 시작됩니다.