Linux关联文件扩展名和打开程序
手动为Linux关联文件扩展名与打开程序。
当Linux不认识某种扩展名的时候,需要为此扩展名创建一个MIME类型。Linux是依据MIME类型而不是扩展名来决定打开程序的。
再将此种MIME类型与某程序菜单项关联。
手动关联步骤
-
为扩展名建造一个MIME类型
如果你的Linux已经认得这种扩展名,不需要做这一步。在你的文件管理器中,看看这种扩展名的文件有没有被正确识别。或使用
file
命令查看。创建
application-x-扩展名.xml
内容:<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/x-扩展名"> <comment>此种文件类型的描述</comment> <icon name="application-x-扩展名"/> <glob-deleteall/> <glob pattern="*.扩展名"/> </mime-type> </mime-info> 放
application-x-扩展名.xml
到~/.local/share/mime/packages/
。
刷新系统MIME数据库$ update-mime-database ~/.local/share/mime -
为程序建造一个菜单项
如果此程序已经有菜单项,略过这一步。
创建
程序.desktop
, 内容:[Desktop Entry] Version=1.0 Type=Application Name=显示的程序名 Icon="/path-to/图标文件" Exec="/path-to/执行程序" %f Path="/path-to/" (可选) NoDisplay=false (true则不会在系统菜单中出现) Categories=Utility; StartupNotify=false Terminal=false 其关键在于
Exec=
行中的%f
将文件路径传递给执行程序。
Exec=
也可以没有绝对路径直接使用命令,Icon=
也可以不用路径而直接写系统认可的图标名称。
放程序.desktop
文件到~/.local/share/applications/
-
设置用某程序打开MIME类型文件
修改~/.config/mimeapps.list
或~/.local/share/applications/mimeapps.list
(废弃)[Added Associations] application/x-扩展名=程序.desktop;其他程序.desktop;其他程序2.desktop; 其中
application/x-扩展名
是你刚刚所创建的MIME类型。如果MIME类型是原有的不是刚刚创建的,替换为原有的MIME类型名称。
参考
https://wiki.archlinux.org/index.php/Default_applications#MIME_database
关注一下
📺 Bilibili 收集有趣科技 和发布原创视频 | 🖥️ Github 有用的和没用的开源项目代码
玩而后赏
子曰,玩而予赏,善莫大焉?
又曰,玩而不赏,良心安焉?
写作不易,感谢支持!
![打赏链接](https://gitlab.com/garywill/receiving/raw/master/receivingcode.png)
虽然,小小玩意,不足挂齿;
亦是,卅年老刀,献丑于此。
其实,多赏非求,少许亦可。
进者,参观主页,玩物更多。
未联系作者获得同意前,不可转载
转载必须附上源地址,并连我博客上的宣传内容一并转载
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf