
싶은 앱을 만들고 있어요아이콘을 설치하다Ubuntu .crystalopen
/GNOME뿐만 아니라다른 데스크탑 환경으로 이식 가능KDE처럼.
앱은 ~/.local/bin
(이 아닌 /usr/bin
)에 자체적으로 설치되므로 루트 권한이 필요하지 않습니다. 그러므로 나는 아이콘을 원한다내에 설치~/.local/
가능하다면.
내가 시도한 것
나MIME 유형 등록( application/vnd.crystal-opener
) 다음과 같은 .crystalopen
확장 프로그램을 생성합니다 .application-vnd.crystal-opener.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/vnd.crystal-opener">
<comment>Crystal Opener</comment>
<glob pattern="*.crystalopen"/>
</mime-type>
</mime-info>
다음을 사용하여 설치합니다.
$ xdg-mime install --mode user application-vnd.crystal-opener.xml
내부적으로는:
~/.local/share/mime/packages
필요에 따라 중간 디렉토리를 생성하여 에 복사합니다 . 그리고update-mime-database ~/.local/share/mime/
업데이트를 위해 실행됩니다~/.local/share/mime/mime.cache
.
나MIME 유형이 등록되었는지 확인파일 확장자를 사용하여 비어 있지 않은 1 파일을 생성하고 MIME 유형을 쿼리하여:
$ echo OPEN > OPEN.crystalopen
$ xdg-mime query filetype OPEN.crystalopen
application/vnd.crystal-opener
또는 동등하게 (GNOME에서):
$ gio info OPEN.crystalopen | grep standard::content-type
standard::content-type: application/vnd.crystal-opener
나아이콘 이미지 만들기MIME 유형에 대한 올바른 파일 이름 application-vnd.crystal-opener.svg
:
<svg height="128" width="128">
<ellipse cx="43" cy="32" rx="32" ry="32" style="fill:red" />
<ellipse cx="84" cy="32" rx="32" ry="32" style="fill:green" />
</svg>
그만큼아이콘 테마 사양다른 모든 테마에서 상속되는 "hicolor" 테마에 이러한 이미지를 설치할 수 있어야 한다고 말합니다. 그러나 그것은 작동하지 않는 것 같습니다. 특히 다음을 수행하는 경우:
$ sudo cp application-vnd.crystal-opener.svg /usr/share/icons/hicolor/scalable/mimetypes
$ sudo update-icon-caches /usr/share/icons/*
OPEN.crystalopen
그러면 파일 앱의 파일 아이콘이 새 이미지로 변경되지 않습니다.
파일 앱이 테마 상속을 올바르게 구현하지 않는 것 같습니다. 2
대신 어떤 특정 테마가 시스템의 기본 테마인지 확인하고 거기에 아이콘을 설치했는데, 이는 그다지 안정적이거나 이식성이 좋지 않습니다.
- 나시스템 기본 테마에 대한 후보 식별다음과 같은 일반적인 MIME 유형의 아이콘을 찾으세요
text/html
.
$ find /usr/share/icons -name 'text-html.*'
/usr/share/icons/Yaru/... (10 lines)
/usr/share/icons/HighContrast/... (1 line)
/usr/share/icons/Humanity/... (7 lines)
궁극적으로
Humanity
이 시스템(Ubuntu 23)의 시스템 기본 테마로 밝혀졌습니다.먼저 컴퓨터 전체 테마 디렉터리에 아이콘을 설치하려고 합니다.
$ sudo cp application-vnd.crystal-opener.svg /usr/share/icons/Humanity/mimes/256
$ sudo update-icon-caches /usr/share/icons/*
- 그러면
OPEN.crystalopen
파일 앱의 파일 아이콘이 새 이미지로 성공적으로 업데이트되었습니다. - 그러나 나는 원한다사용자의 테마 디렉토리에 설치컴퓨터 전체 테마 디렉터리 대신 다음을 수행합니다.
$ mkdir -p ~/.local/share/icons/Humanity/mimes/256
$ cp application-vnd.crystal-opener.svg ~/.local/share/icons/Humanity/mimes/256
$ sudo update-icon-caches /usr/share/icons/* # not sufficient to update: ~/.local/share/icons/*
- 또한 작동하며
OPEN.crystalopen
파일 앱의 파일 아이콘이 새 이미지로 성공적으로 업데이트됩니다. (불행히도sudo
다음 로그아웃 및 로그인 전에 아이콘이 즉시 표시되도록 하려면 컴퓨터 전체 아이콘 캐시를 업데이트해야 합니다.)
큰 질문
파일 앱의 관련 파일에 대한 아이콘이 새 이미지로 업데이트되도록 안정적이고 이식 가능한 방식으로 사용자 테마 디렉터리에 아이콘을 설치하려면 어떻게 해야 합니까?GNOME뿐만 아니라 KDE 및 기타 데스크탑 환경에서도 작동합니까?
특히 ~/.local/share/icons/hicolor
,아이콘 테마 사양항상 이용 가능하다고요?
1application/x-zerosize
빈 파일은 등록된 새로운 사용자 정의 MIME 유형이 아닌 MIME 유형으로 인식되는 경우가 많습니다 .
2 "노틸러스는 [테마] 상속 규칙을 따르지 않습니다."https://askubuntu.com/a/752316/1724736
답변1
테마 간 아이콘 상속이 제대로 작동하지 않는 것 같아서 앱 아이콘을 설치하는 스크립트를 작성했습니다.모두시스템의 테마. 지저분하지만 효과적입니다.
참조하세요124줄의 사용자 정의 설치 코드나는 이것을 달성하곤했습니다.