如何更改执行 .desktop 文件的默认终端?

如何更改执行 .desktop 文件的默认终端?

我一直尝试使用 alacritty 作为默认终端仿真器来执行 vim。我已经将 alacritty 设置为我的默认终端仿真器,并且在我的 vim.desktop 中我将其更改为exec=vim %Fexec=alacritty -e vim %F问题是,当我打开文件时,它首先在 gnome 终端中执行命令,然后在 alacritty 中启动 vim,问题是 gnome 终端保持打开状态。我还尝试创建一个脚本:

#!/bin/bash
alacritty -e vim & disown | exit

这根本不起作用。我不知道还能做什么,而且我在网上找不到任何东西。提前谢谢!

是否可以更改运行该命令的默认终端Exec=?这样只需写入Exec=vim %F即可在 alacritty 中运行它

答案1

muru 帮我弄清楚了到底发生了什么,谢谢!问题是我的 .desktop 文件:

[Desktop Entry]
Name=Vim
GenericName=Text Editor
Comment=Edit text files
Comment[es]=Edita archivos de texto
TryExec=vim
Exec=alacritty -e vim %F
Terminal=true
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

有参数Terminal=true。它的作用是它Exec=在终端中执行命令,并打开终端来执行此操作。如果您设置了Terminal=false它,将阻止任何终端打开,它只会执行命令而不打开终端。

答案2

我已经发过一个答案对 U&L 上的类似问题

TL;DR -最prepend_terminal_to_vector()喜欢。创建一个包装器脚本,根据收到的内容调用实际的终端仿真器。gnome-terminal/usr/local/bin/gnome-terminal$# $@

答案3

编辑:这有时不起作用,我不知道是什么控制着打开 vim 时使用哪个终端仿真器。

我刚刚找到了另一种解决方法:创建一个名为“xterm你的”的符号链接$PATH,指向你自己的终端模拟器。但我不能保证这种方法对每个人都有效。

此解决方法的优点是您不需要更改任何桌面条目文件。所有 .desktop 都Terminal=true将使用新的终端仿真器。


当尝试使用exo-open(类似于xdg-openxfce 中的)执行桌面条目时,会出现一条警告消息

sh: line 0: exec: xterm: not found

所以我猜想xterm这是程序中硬编码的,用于打开 .desktop 文件。然后我尝试创建这个符号链接

ln -s /usr/bin/st ~/.local/bin/xterm

并且运行完美。

但是实际生成的命令可能基于xterm的参数,因此只有使用相同参数指定启动命令的终端仿真器才有效。一个相反的例子是termite,因为它要求在选项中引用整个命令-e

相关内容