如何指定 gtk-launch 使用哪个终端

如何指定 gtk-launch 使用哪个终端

正如所讨论的这里,gtk-launch 可以直接启动应用程序,也可以在终端窗口中启动应用程序,具体取决于文件是否.desktop指定应用程序在终端中运行。在我看来,这个终端不是x-terminal-emulator来自替代系统的(当我更新替代系统时它不会改变)。

有没有办法指定gtk-launch应使用哪个终端模拟器?

答案1

如果没有解决方法似乎不可能。

https://askubuntu.com/a/294430

Gtk-launch(gtk的一部分)x-terminal-emulator完全不相关。在我的例子中,glib2 2.68.0(在 gtk-launch 之后)的终端选择逻辑硬编码在prepend_terminal_to_vector()在 gio/gdesktopappinfo.c 中。

# Most preferred
gnome-terminal -- APP ARG1 ARG2 ...

# Then
mate-terminal  -x APP ARG1 ARG2 ...
xfce4-terminal -x APP ARG1 ARG2 ...

# After that
tilix       -e APP ARG1 ARG2 ...
konsole     -e APP ARG1 ARG2 ...
nxterm      -e APP ARG1 ARG2 ...
color-xterm -e APP ARG1 ARG2 ...
rxvt        -e APP ARG1 ARG2 ...
dtterm      -e APP ARG1 ARG2 ...

# Last resort
xterm -e APP ARG1 ARG2 ...

我的机器上的一个肮脏的解决方法

我想调用alacritty -e ...

1. 创建一个虚拟的 gnome 终端 (α)

sudo install -vDm755 /dev/null /usr/local/bin/gnome-terminal

2a.如果你还没有gnome-terminal安装,请将以下内容放入α

#!/bin/bash

[ x"$1" = x"--" ] || { exec /usr/bin/gnome-terminal "$@"; exit 0; }

shift

TITLE="$(basename "$1")"
if [ -n "$TITLE" ]; then
  /usr/bin/alacritty -t "$TITLE" -e "$@"
else
  /usr/bin/alacritty             -e "$@"
fi

2b.如果已经gnome-terminal安装,则将以下内容放入α中

#!/bin/bash

[ x"$1" = x"--" ] || exit 1

shift

TITLE="$(basename "$1")"
if [ -n "$TITLE" ]; then
  /usr/bin/alacritty -t "$TITLE" -e "$@"
else
  /usr/bin/alacritty             -e "$@"
fi

阿斯库本图 x-post

答案2

从 GLib 2.75.0 开始,不再需要 gnome-terminal 解决方法。这犯罪使得可以使用xdg-terminal-exec包装器选择您选择的终端。

xdg 终端执行

有一个提议了解 freedesktop.org 如何指定启动终端的接口。以及拟议的实施方案xdg 终端执行

但是,由于目前这只是一个提案,因此编写自定义xdg-terminal-exec包装器应该是安全的。

例子

脚终端
ln -sf /usr/bin/foot $HOME/.local/bin/xdg-terminal-exec
活泼

xdg-terminal-exec

#!/usr/bin/env bash
exec alacritty -e "$@"

相关内容