linux打开文件程序,linux – 获取打开特定文件的应用程序列表

GNOME最有可能做的是解析所有.desktop文件并查找声明支持所请求的MIME类型的文件.这是解决问题的唯一方法.使用适当的解析库和低级语言,这应该是相对快速的操作.此外,他们可能会放置一些缓存文件以进一步加快速度.

但是如果不需要“确定”并且“可能”对您来说足够好,那么与它们相关联的所有MIME类型和.desktop文件都存储在mimeinfo.cache文件中.我不确定该文件的实际保证是什么,也许我使用错误的方式,但是以下功能似乎工作得很好

#!/bin/bash

xdg-all-apps() {

LOCAL="${XDG_DATA_HOME:-$HOME/.local/share}/applications/mimeinfo.cache"

GLOBAL="/usr/share/applications/mimeinfo.cache"

MATCHING="$(grep -h "$1" "$LOCAL" "$GLOBAL")"

if [ -z "$MATCHING" ]; then

echo "There are no application associated with $1"

return

fi

echo "$MATCHING" |cut -d = -f 2 |\

sed -z -e 's:\n::;s:;:\n:g' |\

sort |uniq

}

xdg-all-apps text/plain

xdg-all-apps audio/mpeg

xdg-all-apps image/svg+xml

xdg-all-apps application/json

在我的系统上,运行该代码会生成以下输出:

gvim.desktop

kde4-kate.desktop

kde4-kwrite.desktop

kde4-okularApplication_txt.desktop

kwrite-usercreated.desktop

libreoffice-writer.desktop

vim.desktop

easytag.desktop

smplayer.desktop

smplayer_enqueue.desktop

vlc.desktop

gimp.desktop

inkscape.desktop

kde4-kolourpaint.desktop

midori.desktop

There are no application associated with application/json

如您所见,某些应用程序提供了多个桌面文件(smplayer.desktop和smplayer_enqueue.desktop).可以删除这些功能重复,但这不是微不足道的.

但请注意,有些桌面完全忽略了XDG.如果你想要真正的跨桌面方式,你应该把mailcap文件放在混合的某个地方.我坚信GNOME实际上忽略了它.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值