我正在编写一个程序,我需要实现在文本编辑器中打开特定文件。默认情况下,文件类型具有不同的关联(它与程序本身关联),因此调用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 实用程序包的一部分,负责运行默认终端(但由于某种原因未分发)。