首页 > 代码库 > 修改与文件类型关联的默认程序

修改与文件类型关联的默认程序

<style></style>

131227 安装了Planner项目管理软件后,发现.planner文件的默认打开程序为gedit。想要将其修改过来,在open with的程序列表里也没有planner这一项,而且也无法人工指定命令行,似乎这一功能被Nautilus关掉了。通过网上搜索,Gnome系统中文件类型的描述,即mimetype,存放于/usr/share/mime~/.local/share/mime目录下。而用于描述应用程序所能打开的文件类型则主要放在其中的application子目录中。可以看到,其中已经有了关于.planner文件类型的描述了x-planner.xml

<?xml version="1.0" encoding="utf-8"?> <mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="application/x-planner">   <!--Created automatically by update-mime-database. DO NOT EDIT!-->   <sub-class-of type="application/xml"/>   <comment>Planner project plan</comment>   <comment xml:lang="ar">??? ????? ?????????</comment>   <comment xml:lang="as">??????? ???????? ?????</comment>   <comment xml:lang="ast">Plan de proyeutos Planner</comment>   <comment xml:lang="bg">План на проект</comment>   <comment xml:lang="bn_IN">Planner ???????? ????????? ????????</comment>   <comment xml:lang="ca">Gestor de plans del Planner</comment>   <comment xml:lang="ca@valencia">Gestor de plans del Planner</comment>   <comment xml:lang="cs">Plán projektu Planner</comment>   <comment xml:lang="da">Planner-projektplan</comment>   <comment xml:lang="de">Planner Projektplan</comment>   <comment xml:lang="dz">???????????????????????</comment>   <comment xml:lang="el">Σχεδιασμ?ς ?ργου Planner</comment>   <comment xml:lang="en_CA">Planner project plan</comment>   <comment xml:lang="en_GB">Planner project plan</comment>   <comment xml:lang="es">Plan de proyectos Planner</comment>   <comment xml:lang="et">Plaanija projektiplaan</comment>   <comment xml:lang="eu">Planner proiektu-plana</comment>   <comment xml:lang="fa">‌??????‌? ?????‌? ??????‌???</comment>   <comment xml:lang="fi">Plannerin projektisuunnitelma</comment>   <comment xml:lang="fr">Planification de projets Planner</comment>   <comment xml:lang="gl">Planificación de proxectos Planner</comment>   <comment xml:lang="gu">Planner ????????? ?????</comment>   <comment xml:lang="hu">Planner projektterv</comment>   <comment xml:lang="is">Planner verkefna áætlun</comment>   <comment xml:lang="it">Piano di progetto Planner</comment>   <comment xml:lang="ja">Planner プロジェクト計画</comment>   <comment xml:lang="lt">Planner projekt? planas</comment>   <comment xml:lang="lv">Plānotaja projekta plāns</comment>   <comment xml:lang="mr">Planner ??????? ?????</comment>   <comment xml:lang="nb">Planner prosjektplan</comment>   <comment xml:lang="nds">Planner Projektplan</comment>   <comment xml:lang="ne">?????????? ???????? ?????</comment>   <comment xml:lang="nl">Planner project plan</comment>   <comment xml:lang="or">????? ??????? ?????</comment>   <comment xml:lang="pl">Plan projektu programu Planner</comment>   <comment xml:lang="pt_BR">Plano de projeto do planner</comment>   <comment xml:lang="ro">Plan de proiect Planner</comment>   <comment xml:lang="ru">Planner план проекта</comment>   <comment xml:lang="sk">Plán projektu Planner</comment>   <comment xml:lang="sl">Planer: plan projekta</comment>   <comment xml:lang="sr">Планеров план про?ека</comment>   <comment xml:lang="sr@Latn">Planerov plan projeka</comment>   <comment xml:lang="sv">Planner-projektplan</comment>   <comment xml:lang="ta">???????????????? ?????????????? </comment>   <comment xml:lang="tr">Planner proje plan?</comment>   <comment xml:lang="uk">План проекту Planner</comment>   <comment xml:lang="vi">K? ho?ch d? án Planner</comment>   <comment xml:lang="zh_CN">Planner 项目管理</comment>   <comment xml:lang="zh_HK">Planner 專案管理計劃</comment>   <comment xml:lang="zh_TW">Planner 專案管理計劃</comment>   <glob pattern="*.planner"/>   <glob pattern="*.mrproject"/> </mime-type>

 

 

同时,也可以看到pdf文件的类型说明pdf.xml,并可以看到它还有几个别名:

<?xml version="1.0" encoding="utf-8"?> <mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="application/pdf">   <!--Created automatically by update-mime-database. DO NOT EDIT!-->   <comment>PDF document</comment>   <comment xml:lang="ar">????? PDF</comment>   <comment xml:lang="be@latin">Dakument PDF</comment>   <comment xml:lang="bg">Документ — PDF</comment>   <comment xml:lang="ca">document PDF</comment>   <comment xml:lang="cs">Dokument PDF</comment>   <comment xml:lang="cy">Dogfen PDF</comment>   <comment xml:lang="da">PDF-dokument</comment>   <comment xml:lang="de">PDF-Dokument</comment>   <comment xml:lang="el">?γγραφο PDF</comment>   <comment xml:lang="en_GB">PDF document</comment>   <comment xml:lang="eo">PDF-dokumento</comment>   <comment xml:lang="es">documento PDF</comment>   <comment xml:lang="eu">PDF dokumentua</comment>   <comment xml:lang="fi">PDF-asiakirja</comment>   <comment xml:lang="fo">PDF skjal</comment>   <comment xml:lang="fr">document PDF</comment>   <comment xml:lang="ga">cáipéis PDF</comment>   <comment xml:lang="gl">documento PDF</comment>   <comment xml:lang="he">???? PDF</comment>   <comment xml:lang="hu">PDF-dokumentum</comment>   <comment xml:lang="id">Dokumen PDF</comment>   <comment xml:lang="it">Documento PDF</comment>   <comment xml:lang="ja">PDF ドキュメント</comment>   <comment xml:lang="kk">PDF ??жаты</comment>   <comment xml:lang="ko">PDF ??</comment>   <comment xml:lang="lt">PDF dokumentas</comment>   <comment xml:lang="lv">PDF dokuments</comment>   <comment xml:lang="ms">Dokumen PDF</comment>   <comment xml:lang="nb">PDF-dokument</comment>   <comment xml:lang="nl">PDF-document</comment>   <comment xml:lang="nn">PDF-dokument</comment>   <comment xml:lang="pl">Dokument PDF</comment>   <comment xml:lang="pt">documento PDF</comment>   <comment xml:lang="pt_BR">Documento PDF</comment>   <comment xml:lang="ro">Document PDF</comment>   <comment xml:lang="ru">документ PDF</comment>   <comment xml:lang="sk">Dokument PDF</comment>   <comment xml:lang="sl">Dokument PDF</comment>   <comment xml:lang="sq">Dokument PDF</comment>   <comment xml:lang="sr">PDF документ</comment>   <comment xml:lang="sv">PDF-dokument</comment>   <comment xml:lang="uk">документ PDF</comment>   <comment xml:lang="vi">Tài li?u PDF</comment>   <comment xml:lang="zh_CN">PDF 文档</comment>   <comment xml:lang="zh_TW">PDF 文件</comment>   <acronym>PDF</acronym>   <expanded-acronym>Portable Document Format</expanded-acronym>   <generic-icon name="x-office-document"/>   <glob pattern="*.pdf"/>   <alias type="application/x-pdf"/>   <alias type="image/pdf"/>   <alias type="application/acrobat"/> </mime-type>

 

 

有了文件类型的描述后,还需要知道由哪些对应的程序来打开。在/usr/share/applications目录下,存放了一堆.desktop文件,每一个文件描述了一个应用程序的说明、执行命令、图标名称、mimetype等信息。同时,该目录下的defaults.list文件(或者是~/.local/share/applications/defaults.list文件)描述了mimetype.desktop文件的关联。原本在该目录下是不存在与planner相关的desktop文件的。为此将xpdf.desktop拷贝为x-planner.desktop再作修改后如下:

[Desktop Entry] Name=Planner GenericName=Planner Project Management Comment=Planner Project Management Exec=planner Icon=planner Terminal=false Type=Application MimeType=application/x-planner; Categories=Viewer;Office; 

 

 

同时,在defaults.list文件中加入如下的一条:

[Default Applications] x-scheme-handler/http=google-chrome.desktop x-scheme-handler/https=google-chrome.desktop x-scheme-handler/ftp=google-chrome.desktop application/x-planner=x-planner.desktop text/html=google-chrome.desktop text/xml=google-chrome.desktop application/xhtml_xml=google-chrome.desktop image/webp=google-chrome.desktop

 

 

至此,在Nautilus中双击.planner文件,就可以用planner程序打开了。

此外,Linux还提供了一些命令行命令用于查询与修改minetype和与之关联的程序。

  • xdg-open:使用默认的程序打开文件。该命令与苹果系统下的open命令作用是一致的。同时,可以想到只要将mimetype与相应的desktop程序设置好关联,就可以始终使用xdg-open这一个程序打开所有的文件了。这样,在Emacs dired模式中的设置就比较方便。

  • xdg-mime:查询文件的mimetype,修改默认的文件关联。