[暂时搁置]自定义MIME类型的图标导致Gnome无法顺利启动
时间:2009-07-21
来源:互联网
[标题] 通过$XDG_CONFIG_HOME自定义MIME类型的图标导致Gnome无法顺利启动
帖子原本发在 Gentoo Bugzilla 上,原本以为会得到比较迅速地回复,但是一直没有人回复。我也没有时间翻译过来。最近稍微有时间了,翻译了,贴在linuxsir Gentoo版上。希望和大家一起讨论这个bug是否有普遍性。因为这两个文档我也是最近才看的,有些概念理解得不对,欢迎大家指教。
http://bugs.gentoo.org/show_bug.cgi?id=277661
其实我想做的事情很简单,就是想自定义Gnome下已知文件类型的图标。网上找了好些教程,但是都不管用。Gnome老早就开始使用 Free Desktop 的 XDG 规范来以规定的格式来表示应用程序入口(*.desktop)、注册文件类型(MIME)、建立文件类型和应用程序的关系。
默认情况下,Gentoo 给已注册的 MIME 文件类型分配的图标(general icon)可以通过查看
/usr/share/mime/packages/freedesktop.org.xml
文件获知。在freedesktop.org.xml文件中已经说明,MIME类型为doc和pdf的文件,使用的“general icon”都是"x-office-document"。所以*.doc文件和*.pdf文件的图标都是一个鸟样的,这搞得我很不爽。
阅读文献[1][2]后,我了解到,可以通过在 $XDG_CONFIG_HOME 添加自定义的MIME描述文件来对MIME做一些修改——通常只是修改某些属性,覆盖系统级的设置。
注意:下面这些操作步骤有可能导致Gnome不能顺利启动,你应当清楚自己在干什么。
我在 $XDG_CONFIG_HOME/mime/packages/ (~/.local/share/mime/packages/) 目录中添加了名为"user-type.xml"的文件,文件内容如下:
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/pdf">
<icon name="x-office-spreadsheet"/>
</mime-type>
</mime-info>
意思就是给pdf这个MIME类型定制了icon name属性,其值为x-office-spreadsheet,这个设置仅仅在我这个用户级的环境中生效。我选择x-office-spreadsheet是比较随意的,只要它在系统上就行。因为在此我只想做第一步尝试:希望 *.doc 和 *.pdf 文件具有不同的图标。然后,我运行
update-mime
在家目录中生成新的 XDG 数据库文件,比如说:generic-icons, globs2, icons, magic 等。这些文件位于$XDG_CONFIG_HOME/mime下(~/.local/share/mime)。在表示图标关联的文件icons的文件中有这么一行:
application/pdf:x-office-spreadsheet
说明pdf类型的文件图标已经正确设为到x-office-spreadsheet上。我接着便注销(重启Gnome),希望能看到*.pdf能换上“OO电子表格”的图标。可是从gdm重新登录后,机子中就卡在Gnome Splash,并且可以在 Gnome Splash 上看到,重复不停地启动了N多个nautilus文件管理器和gnome-panel——这个现象很奇特。机器就一直卡在这里,无法进入桌面。终端中显示:
localhost nautilus segfault at 0 ip xxxx
没办法了。我只好从终端登录,删掉user-define.xml,重新运行update-mime, Gnome又能顺利进入了。
我首选在 $XDG_CONFIG_HOME 中进行修改是不想对“系统级”(全局)配置做修改。另外,freedesktop.org.xml 没准哪天系统升级又会被覆盖,我不想在上面改。后来我也试着直接在 /usr/share/mime/packages/freedesktop.org.xml 上修改 general icon。 重启 Gnome 后能够进入桌面,但是图标一点变化都没有。
[参考文献]
[1] X Desktop Group, Shared MIME-info Database. http://standards.freedesktop.org/sha...ec-latest.html
[2] X Desktop Group, Icon Theme Specification. http://standards.freedesktop.org/ico...ec-latest.html
[3] MIME problem with icon spec. http://lists.freedesktop.org/archive...il/010366.html
[产生这个bug的步骤]
1. 在目录 $XDG_CONFIG_HOME/mime/packages/ (默认为 ~/.local/share/mime/packages)添加一个名为'user-define.xml'的文件,文件内容为:
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/pdf">
<icon name="x-office-spreadsheet"/>
</mime-type>
</mime-info>
2. 运行:
$ update-mime
3. 注销Gnome会话。重新登录。
[期望的结果]
*.pdf 文件的图标变成x-office-spreadsheet
[实际结果]
无法进入Gnome桌面,卡在Gnome Splash上。
[系统信息]
Gentoo Linux x86 kernel-2.6.30-gentoo-r2-i686
gnome-base/gnome-light-2.24.1
x11-misc/shared-mime-info-0.60
gnome-base/gnome-mime-data-2.18.0
[emerge --info]
Portage 2.1.6.13 (default/linux/x86/2008.0, gcc-4.3.2, glibc-2.9_p20081201-r2,
2.6.30-gentoo-r2 i686)
=================================================================
System uname:
Linux-2.6.30-gentoo-r2-i686-Intel-R-_Core-TM-2_Duo_CPU_E7400_@_2.80GHz-with-glibc2.0
Timestamp of tree: Mon, 13 Jul 2009 03:20:01 +0000
ccache version 2.4 [enabled]
app-shells/bash: 3.2_p39
dev-java/java-config: 2.1.8-r1
dev-lang/python: 2.5.4-r3
dev-util/ccache: 2.4-r7
dev-util/cmake: 2.6.2-r1
sys-apps/baselayout: 2.0.1
sys-apps/openrc: 0.4.3-r3
sys-apps/sandbox: 1.6-r2
sys-devel/autoconf: 2.13, 2.63
sys-devel/automake: 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2
sys-devel/binutils: 2.18-r3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool: 1.5.26
virtual/os-headers: 2.6.27-r2
ACCEPT_KEYWORDS="x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config
/usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/
/etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild
/etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d
/etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c
/etc/udev/rules.d"
CXXFLAGS="-O2 -march=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="ccache distlocks fixpackages parallel-fetch protect-owned sandbox
sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="ftp://202.38.97.230/gentoo ftp://ftp.sjtu.edu.cn/gentoo
http://61.135.158.199 http://mirror.averse.net/pub/gentoo
http://mirro.gentoo.gr.jp"
LANG="zh_CN.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="zh_CN zh zh_TW en_US en"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress
--force --whole-file --delete --stats --timeout=180 --exclude=/distfiles
--exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/gentoo-china"
SYNC="rsync://61.135.158.199/gentoo-portage"
USE="# (I 2D 3D ABL Audio CPU Compress Cosole Desktop Environment Features
Graphic Hardware Library Locale Management Media Other POSIX Player Power SSL
System System: Thread Window X \ a acl acpi alsa are bash-completion berkdb
branding bzip2 cdr cjk cleartype cli cracklib crypt dbus don't dri dvd emacs
en_US esd essential fat file fontconfig fortran gdbm gif gnome gnutls gpm gtk
hal have iconv ipv6 isdnlog jfs jpeg jpeg2k latex longer midi mmx mmx2 mplayer
mudflap ncurses nls no nptl nptlonly ntfs opengl openmp oss pam pcre pdf perl
png pppd printer) python readline reflection session smp spell spl sse sse2
sse3 ssl ssse3 support svga sysfs system tcpd threads tiff truetype udev
unicode usb x86 xfs xft xorg xscreensaver zh_CN zlib" ALSA_CARDS="hda-intel"
ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file
hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug
rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic
authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm
authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache
dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache
filter headers include info log_config logio mem_cache mime mime_magic
negotiation rewrite setenvif speling status unique_id userdir usertrack
vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux"
LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses
text"
LINGUAS="zh_CN zh zh_TW en_US en"
USERLAND="GNU"
VIDEO_CARDS="intel"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL,
PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
帖子原本发在 Gentoo Bugzilla 上,原本以为会得到比较迅速地回复,但是一直没有人回复。我也没有时间翻译过来。最近稍微有时间了,翻译了,贴在linuxsir Gentoo版上。希望和大家一起讨论这个bug是否有普遍性。因为这两个文档我也是最近才看的,有些概念理解得不对,欢迎大家指教。
http://bugs.gentoo.org/show_bug.cgi?id=277661
其实我想做的事情很简单,就是想自定义Gnome下已知文件类型的图标。网上找了好些教程,但是都不管用。Gnome老早就开始使用 Free Desktop 的 XDG 规范来以规定的格式来表示应用程序入口(*.desktop)、注册文件类型(MIME)、建立文件类型和应用程序的关系。
默认情况下,Gentoo 给已注册的 MIME 文件类型分配的图标(general icon)可以通过查看
/usr/share/mime/packages/freedesktop.org.xml
文件获知。在freedesktop.org.xml文件中已经说明,MIME类型为doc和pdf的文件,使用的“general icon”都是"x-office-document"。所以*.doc文件和*.pdf文件的图标都是一个鸟样的,这搞得我很不爽。
阅读文献[1][2]后,我了解到,可以通过在 $XDG_CONFIG_HOME 添加自定义的MIME描述文件来对MIME做一些修改——通常只是修改某些属性,覆盖系统级的设置。
注意:下面这些操作步骤有可能导致Gnome不能顺利启动,你应当清楚自己在干什么。
我在 $XDG_CONFIG_HOME/mime/packages/ (~/.local/share/mime/packages/) 目录中添加了名为"user-type.xml"的文件,文件内容如下:
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/pdf">
<icon name="x-office-spreadsheet"/>
</mime-type>
</mime-info>
意思就是给pdf这个MIME类型定制了icon name属性,其值为x-office-spreadsheet,这个设置仅仅在我这个用户级的环境中生效。我选择x-office-spreadsheet是比较随意的,只要它在系统上就行。因为在此我只想做第一步尝试:希望 *.doc 和 *.pdf 文件具有不同的图标。然后,我运行
update-mime
在家目录中生成新的 XDG 数据库文件,比如说:generic-icons, globs2, icons, magic 等。这些文件位于$XDG_CONFIG_HOME/mime下(~/.local/share/mime)。在表示图标关联的文件icons的文件中有这么一行:
application/pdf:x-office-spreadsheet
说明pdf类型的文件图标已经正确设为到x-office-spreadsheet上。我接着便注销(重启Gnome),希望能看到*.pdf能换上“OO电子表格”的图标。可是从gdm重新登录后,机子中就卡在Gnome Splash,并且可以在 Gnome Splash 上看到,重复不停地启动了N多个nautilus文件管理器和gnome-panel——这个现象很奇特。机器就一直卡在这里,无法进入桌面。终端中显示:
localhost nautilus segfault at 0 ip xxxx
没办法了。我只好从终端登录,删掉user-define.xml,重新运行update-mime, Gnome又能顺利进入了。
我首选在 $XDG_CONFIG_HOME 中进行修改是不想对“系统级”(全局)配置做修改。另外,freedesktop.org.xml 没准哪天系统升级又会被覆盖,我不想在上面改。后来我也试着直接在 /usr/share/mime/packages/freedesktop.org.xml 上修改 general icon。 重启 Gnome 后能够进入桌面,但是图标一点变化都没有。
[参考文献]
[1] X Desktop Group, Shared MIME-info Database. http://standards.freedesktop.org/sha...ec-latest.html
[2] X Desktop Group, Icon Theme Specification. http://standards.freedesktop.org/ico...ec-latest.html
[3] MIME problem with icon spec. http://lists.freedesktop.org/archive...il/010366.html
[产生这个bug的步骤]
1. 在目录 $XDG_CONFIG_HOME/mime/packages/ (默认为 ~/.local/share/mime/packages)添加一个名为'user-define.xml'的文件,文件内容为:
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/pdf">
<icon name="x-office-spreadsheet"/>
</mime-type>
</mime-info>
2. 运行:
$ update-mime
3. 注销Gnome会话。重新登录。
[期望的结果]
*.pdf 文件的图标变成x-office-spreadsheet
[实际结果]
无法进入Gnome桌面,卡在Gnome Splash上。
[系统信息]
Gentoo Linux x86 kernel-2.6.30-gentoo-r2-i686
gnome-base/gnome-light-2.24.1
x11-misc/shared-mime-info-0.60
gnome-base/gnome-mime-data-2.18.0
[emerge --info]
Portage 2.1.6.13 (default/linux/x86/2008.0, gcc-4.3.2, glibc-2.9_p20081201-r2,
2.6.30-gentoo-r2 i686)
=================================================================
System uname:
Linux-2.6.30-gentoo-r2-i686-Intel-R-_Core-TM-2_Duo_CPU_E7400_@_2.80GHz-with-glibc2.0
Timestamp of tree: Mon, 13 Jul 2009 03:20:01 +0000
ccache version 2.4 [enabled]
app-shells/bash: 3.2_p39
dev-java/java-config: 2.1.8-r1
dev-lang/python: 2.5.4-r3
dev-util/ccache: 2.4-r7
dev-util/cmake: 2.6.2-r1
sys-apps/baselayout: 2.0.1
sys-apps/openrc: 0.4.3-r3
sys-apps/sandbox: 1.6-r2
sys-devel/autoconf: 2.13, 2.63
sys-devel/automake: 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2
sys-devel/binutils: 2.18-r3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool: 1.5.26
virtual/os-headers: 2.6.27-r2
ACCEPT_KEYWORDS="x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config
/usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/
/etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild
/etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d
/etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c
/etc/udev/rules.d"
CXXFLAGS="-O2 -march=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="ccache distlocks fixpackages parallel-fetch protect-owned sandbox
sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="ftp://202.38.97.230/gentoo ftp://ftp.sjtu.edu.cn/gentoo
http://61.135.158.199 http://mirror.averse.net/pub/gentoo
http://mirro.gentoo.gr.jp"
LANG="zh_CN.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="zh_CN zh zh_TW en_US en"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress
--force --whole-file --delete --stats --timeout=180 --exclude=/distfiles
--exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/gentoo-china"
SYNC="rsync://61.135.158.199/gentoo-portage"
USE="# (I 2D 3D ABL Audio CPU Compress Cosole Desktop Environment Features
Graphic Hardware Library Locale Management Media Other POSIX Player Power SSL
System System: Thread Window X \ a acl acpi alsa are bash-completion berkdb
branding bzip2 cdr cjk cleartype cli cracklib crypt dbus don't dri dvd emacs
en_US esd essential fat file fontconfig fortran gdbm gif gnome gnutls gpm gtk
hal have iconv ipv6 isdnlog jfs jpeg jpeg2k latex longer midi mmx mmx2 mplayer
mudflap ncurses nls no nptl nptlonly ntfs opengl openmp oss pam pcre pdf perl
png pppd printer) python readline reflection session smp spell spl sse sse2
sse3 ssl ssse3 support svga sysfs system tcpd threads tiff truetype udev
unicode usb x86 xfs xft xorg xscreensaver zh_CN zlib" ALSA_CARDS="hda-intel"
ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file
hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug
rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic
authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm
authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache
dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache
filter headers include info log_config logio mem_cache mime mime_magic
negotiation rewrite setenvif speling status unique_id userdir usertrack
vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux"
LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses
text"
LINGUAS="zh_CN zh zh_TW en_US en"
USERLAND="GNU"
VIDEO_CARDS="intel"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL,
PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
作者: shinkansen 发布时间: 2009-07-21
这个。。。你没试过设置 gnome 的 theme ?
theme 分 wm theme, icon theme, mouse theme ..etc..你要的是换 icon theme ..
theme 分 wm theme, icon theme, mouse theme ..etc..你要的是换 icon theme ..
作者: wd_afei 发布时间: 2009-07-21
多谢楼上的热心回复。
不过 gnome theme 管的是“图标的表现形式”(我自己想的名字,很绕口)。总之,MIME 数据库管的是“什么类型的文件使用哪一个类型的图标”,譬如,MIME数据库指定了.pdf文件的图标为"x-office-document"; 而"x-oofice-document"对应哪个具体的图标文件,这是 theme 管的事情。每一个 theme icons 下都有一个 mimetypes 文件夹,就使得同一类型的文件在不同theme下有不同的外观。
抱歉,可能是我把问题搞复杂了。XDG给的几个文档的中心思想可能也理解错了。bugzilla 上放了几天也没有人回应。上面“重现这个bug的步骤”我在 Ubuntu 9.04 下也试过了,Ubuntu下能够进入gnome桌面,但是所有的图标都不见了,看来我的做法确实有问题。
这个问题先放一放,有进展了我会和大家分享。谢谢大家!
不过 gnome theme 管的是“图标的表现形式”(我自己想的名字,很绕口)。总之,MIME 数据库管的是“什么类型的文件使用哪一个类型的图标”,譬如,MIME数据库指定了.pdf文件的图标为"x-office-document"; 而"x-oofice-document"对应哪个具体的图标文件,这是 theme 管的事情。每一个 theme icons 下都有一个 mimetypes 文件夹,就使得同一类型的文件在不同theme下有不同的外观。
抱歉,可能是我把问题搞复杂了。XDG给的几个文档的中心思想可能也理解错了。bugzilla 上放了几天也没有人回应。上面“重现这个bug的步骤”我在 Ubuntu 9.04 下也试过了,Ubuntu下能够进入gnome桌面,但是所有的图标都不见了,看来我的做法确实有问题。
这个问题先放一放,有进展了我会和大家分享。谢谢大家!
作者: shinkansen 发布时间: 2009-07-25
文件类型定义XML 里没有
<icon name="x-office-spreadsheet"/> 这种属性吧,
试下 <generic-icon name="x-office-document"/>
以前发过一个
http://forum.ubuntu.org.cn/viewtopic.php?f=86&t=109298
近几天系统的MIME出问题了,没法试
<icon name="x-office-spreadsheet"/> 这种属性吧,
试下 <generic-icon name="x-office-document"/>
以前发过一个
http://forum.ubuntu.org.cn/viewtopic.php?f=86&t=109298
近几天系统的MIME出问题了,没法试
作者: windwiny 发布时间: 2009-10-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28