XDG 사양(mimeapps.list) 외에 파일 확장자로 파일 형식을 결정하는 방법

XDG 사양(mimeapps.list) 외에 파일 확장자로 파일 형식을 결정하는 방법

R noweb 파일에 대한 기본 애플리케이션을 설정하려고 하는데 이를 지정할 위치를 찾을 수 없습니다. 그 이유는 내 파일 관리자가 지정된 구성표 대신 또는 추가로 파일 확장자(.Rnw)로 파일 형식을 결정하는 것 같습니다.무료 데스크톱 웹사이트(예: mimeapps.list, mimeinfo.cache, defaults.list...)

pcmanfm과 thunar를 파일 관리자로 사용해 보았습니다. 파일 유형 결정에 대해서는 동의하지만 xdg-mime query filetype유틸리티에 대해서는 다릅니다. 아래의 최소 예제와 구성 파일을 참조하세요.

또한 xdg-mime유틸리티는 local 을 무시하는 것처럼 보이지만 mimeapps.list파일 관리자는 이를 존중합니다.

이것질문예: 파일 형식이 이러한 파일 관리자의 이름 확장명에 의해 결정된다는 내 가정이 맞습니까? 관련 구성을 어디에서 찾을 수 있습니까?

나는 창 관리자와 pcmanfm데스크톱 관리자로 Awesome WM을 사용합니다.

고쳐 쓰다:내가 찾은이 튜토리얼에서는 pcmanfm의 파일 확장자를 설명합니다., 하지만 내 문제는 여전히 MIME 유형과 유추된 유형이 pcmanfm일치하지 않는다는 것입니다( rnoweb.RnwMIME 유형입니다 text/plain. rnoweb0.Rnwinode/x-empty, 하지만 pcmanfm둘 다 나열됩니다 R Sweave file).

업데이트 2 [해결됨]: @mji는 xml 파일을 에 넣을 것을 제안했습니다 . ~/.local/share/mime/packages이 파일은 이미 /usr/share/mime/text/x-r-sweave.Rnw. <comment>또한 x-r-sweave파일에 MIME 유형을 할당합니다. 내 질문에서 이미 이것을 찾았지만 무시했습니다. (검색했습니다 x-r-noweb)


최소한의 예:

빈 디렉터리에 4개의 파일을 만들었습니다. 두 개는 비어 있고 두 개는 샘플 내용입니다.

touch plain0 rnoweb0.Rnw

cat > plain <<EOF
text
EOF

cat > rnoweb.Rnw <<EOF
<<>>=
1+1
@
EOF

이 파일에 대해 실행 xdg-mime query filetype하고 xdg-mime query default다음 결과를 얻습니다 .

filename      MIME type           Default app
-------------------------------------------------
plain         text/plain          medit.desktop
plain0        inode/x-empty
rnoweb0.Rnw   inode/x-empty
rnoweb.Rnw    text/plain          medit.desktop

그러나 파일 형식은 "R Sweave File"로 나열되고 thunar파일 은 일반 텍스트 문서(독일어로 "Einfaches Textdokument")로 나열됩니다. 파일 관리자에 나열된 기본 응용 프로그램은 .GVim용 입니다 .pcmanfm*.Rnwplain*RStudio*.Rnwplain*

xdg-mime일반 텍스트 파일은 해당 유틸리티와 다르지만 내 로컬 설정과 일치하는 GVim을 사용하여 열립니다..local/share/applications/mimeapps.list

내 시스템에서 유일하게 일치하는 파일은 다음과 locate mimeinfo같습니다.locate mimeapps

/etc/xdg/mimeapps.list
/usr/share/applications/mimeinfo.cache
~/.local/share/applications/mimeapps.list
~/.local/share/applications/mimeinfo.cache

greprstudio이러한 파일(rstudio.desktop)이 발생하면 ping이 생성됩니다(유사한 결과는 에 요약되어 있음 {...}).

/usr/share/applications/mimeinfo.cache 
    application/x-r-data=rstudio.desktop;
    application/x-r-project=rstudio.desktop;
    text/css=rstudio.desktop;
    text/html=firefox.desktop;abiword.desktop;calibre-ebook-edit.desktop;rstudio.desktop;elinks.desktop;
    text/javascript=rstudio.desktop;
    text/x-R=rstudio.desktop;
    text/x-markdown=rstudio.desktop;
    text/x-r=rstudio.desktop;
    text/x-r-{doc,markdown,history,html,presentation,profile,source,sweave}\
    =rstudio.desktop;
    text/x-tex=texstudio.desktop;gvim.desktop;rstudio.desktop;

XDG 사양에 언급된 다른 파일에는 rstudio.

greptext/plainMIME 유형을 핑하면 다음과 같은 결과를 얻습니다.

/etc/xdg/mimeapps.list : text/plain=medit.desktop;
/usr/share/applications/mimeinfo.cache : text/plain=medit.desktop;libreoffice-writer.desktop;gvim.desktop;abiword.desktop;
~/.local/share/applications/mimeapps.list : text/plain=gvim.desktop
~/.local/share/applications/mimeapps.list : text/plain=gvim.desktop;

답변1

MIME 정보 파일 만들기

$ vi ~/.local/share/mime/packages/x-r-noweb.xml

$ cat ~/.local/share/mime/packages/x-r-noweb.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="text/x-r-noweb">
        <comment>R noweb</comment>
        <glob pattern="*.Rnw"/>
    </mime-type>
</mime-info>

MIME 데이터베이스 업데이트

$ update-mime-database ~/.local/share/mime/

$ xdg-mime query filetype rnoweb0.Rnw 
text/x-r-noweb
$ mimetype -d rnoweb0.Rnw
rnoweb0.Rnw: R noweb
$ mimetype rnoweb0.Rnw
rnoweb0.Rnw: text/x-r-noweb

이제 기본 애플리케이션을 설정할 수 있습니다

$ xdg-mime default nice-app.desktop text/x-r-noweb
# (or edit ~/.local/share/applications/mimeapps.list)

$ xdg-mime query default text/x-r-noweb
nice-app.desktop

관련 정보