xdg-mime의 텍스트 형식을 수정하는 방법

xdg-mime의 텍스트 형식을 수정하는 방법

내 것도 xdg-mime실수를 한다. Java 코드가 포함된 .html 파일을 C++ 파일로 인식합니다.

나는 xdg의 내부 구조(예: 파일 유형을 결정하는 방법)를 잘 이해하지 못합니다. 먼저 파일 확장자로 판단하여 이 문제를 해결하는 방법을 알고 싶습니다.

물론 다른 솔루션도 환영합니다. xdg-* 메커니즘에 대한 설명을 환영합니다.

답변1

xdg-mime은 "데스크톱 환경(DE)에 대한 공통 인터페이스 세트"인 xdg-utils라는 스크립트 모음의 일부입니다. 귀하의 구체적인 경우에는 인용하겠습니다.거장댓글여기:

데스크탑 환경이 없다면 xdg-mime을 사용하면 안 됩니다. (또는 다른 xdg 도구). xdg는 상호 운용성을 제공하는 것을 목표로 합니다. 서로 다른 데스크탑 환경 사이에서(하나 없이는 가능하지 않음) xdg를 데스크탑에 구애받지 않는 것으로 간주하지만 "데스크탑 무신론자"는 아닙니다.

xdg-utils의 내부에 관해서는... DE의 쉘 스크립트를 확인하고 발견되면 특정 DE의 파일 유틸리티를 호출하여 특정 작업을 수행합니다. 그놈에서xdg-열기수신 전화gvfs-open그리고xdg 무언극수신 전화gvfs 정보(두 gvfs-* 도구 모두 파일 확장자로 판단하는 데 우선순위를 둡니다). 귀하의 경우에는 DE를 찾을 수 없습니다.xdg 무언극다시 돌아가다file[1] 파일 콘텐츠 유형에 대한 정보를 가져옵니다. 다음은 xdg-mime의 "일반" DE(또는 다소 알려지지 않은)의 코드 부분입니다:

info_generic() {
DEBUG 1 "Running file -i \"$1\""
/usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "//

if [ $? -eq 0 ]; then
    exit_success
else
    exit_failure_operation_failed
fi }

결과가 항상 100% 정확하지는 않다는 것이 사실이지만 file[1] 그에 대해 할 수 있는 일은 많지 않습니다(제 생각에는 여전히 작업에 가장 적합한 도구입니다). 그러나 파일 확장자(예: Windows)만을 기준으로 MIME 유형을 결정하려는 경우 고유한 스크립트를 작성할 수 있습니다. 다음은 간단한 Python 예제입니다.

#!/usr/bin/python2

import os
import sys
import mimetypes

if len(sys.argv) != 2:
    print ("Usage: ./pymime filename")
    raise SystemExit

testfile = os.path.abspath(sys.argv[1])
mt = mimetypes.guess_type(testfile, strict=True)[0]
print ("%s" % mt)
sys.exit(0)

이름을 붙이다피미임그리고 다음을 실행하세요:

./pymime yourfile

관련 정보