以编程方式在默认文本编辑器中打开文件

以编程方式在默认文本编辑器中打开文件

我正在编写一个程序,我需要实现在文本编辑器中打开特定文件。默认情况下,文件类型具有不同的关联(它与程序本身关联),因此调用xdg-open $file不起作用。使用$EDITOR是次优的,因为它通常包含终端文本编辑器,如果这是第一选择,我想打开 GUI 文本编辑器。目前还不清楚如何找到默认的终端模拟器来打开终端$EDITOR

我可以使用 查询(可能是 GUI)编辑器xdg-mime query default text/plain,它给了我一个.desktop文件,但我不确定如何实际运行它,特别是因为它可能包含它,Terminal=true然后再次引发了弄清楚默认终端是什么的问题。

澄清一下,该程序不是脚本或其他东西已经在终端中运行。它是一个 GUI 应用程序,因此启动终端编辑器需要弄清楚默认终端是什么。

那么,在默认(可能是 GUI)文本编辑器中以编程方式打开文件的最佳方法是什么?

答案1

*.desktop您通过调用获得的文件位于xdg-mime query default text/plain以下两个位置之一:

$HOME/.local/share/applications/
/usr/share/applications/

因此,您需要在那里查找它,然后解析该Exec=行并传递所有参数运行它,例如:

$(grep Exec /usr/share/applications/seahorse.desktop | cut -d= -f2) "$@"

要确定类似 debian 的发行版上的默认终端模拟器,您可以运行以下命令并类似地解析输出以获取路径:

update-alternatives --query x-terminal-emulator

或者尝试直接运行您需要的命令:

x-terminal-emulator -e "your command here"

如果您需要使其与发行版无关,则需要实现桌面环境猜测,因为它似乎取决于每个 DE 存储其配置的方式。您可能想看一下xdg 终端代码是 xdg 实用程序包的一部分,负责运行默认终端(但由于某种原因未分发)。

相关内容