用Ubuntu server+openbox搭建的系统遇到一个很奇怪的问题,在firefox或其他程序中使用右键中“打开所在文件夹”时并非采用thunar来打开文件夹,而是实用audacious来扫描文件夹中得音乐。
显然,这是和文件关联有关,经过一番搜索,找到两个相关的程序,xdg-open
和gnome-open
,而文件夹对应的mime type
是inode/directory
。貌似xdg-open
和具体桌面无关,而gnome-open
使用在gnome桌面环境下。对于一个文件,他们可以根据文件类型结合系统中已关联的程序列表来寻找可以打开此文件。于是一个小技巧是,对于任何文件都可以使用gnome-open
来打开,这对我这种常记不得打开文件的程序名的人来说是个好消息。
话归正传,linux得默认程序管理貌似很混乱,有很多文件来控制,估计主要是有针对不同用户可设置性更强的需求。既然搞不懂各个配置文件的优先级,对于我这种个人用户来说,干脆把看到的都改过来好了。
配置文件主要存在于以下位置:
全局配置
/etc/gnome/defaults.list
/usr/share/applications/defaults.list -> /etc/gnome/defaults.list
/usr/share/applications/mimeapps.list
/usr/share/applications/mimeinfo.cache
个人配置
~/.local/share/applications/mimeapps.list
~/.local/share/applications/mimeinfo.cache
文件内基本格式为mime-type=program1.desktop;program2.desktop;...
,等号左边为文件得mimt type,右边为打开该文件需要的desktop文件。这些desktop文件是打开该文件需要的命令得一个包装,主要位于~/.local/share/applications
或/usr/share/applicaitons
目录下,其基本格式可以参考官方文档,一个简单的办法就是复制一个自己改。可以按顺序指定多个desktop,当前面的程序并不存在时,将自动使用后面的来打开。
于是,我将各个文件里inode/directory
这一项后面的audacious.desktop
和Thunar-folder-handler.desktop
交换位置,问题就解决了。
开始得时候,我并没找到mimeinfo.cache这个文件,其实这个缓存文件具有最大的优先级,所以改了后总不对。
注意,未识别出mime类型时xdg-open
将默认使用application/octet-stream
类型,更改后使用update-mime-database /usr/share/mime
重新载入一下。