KDE Konsole 快捷方式使用不同的配置文件启动新选项卡

KDE Konsole 快捷方式使用不同的配置文件启动新选项卡

我一直在尝试弄清楚如何设置快捷方式以使用特定配置文件启动新选项卡,但似乎找不到选项。实际上,我想模拟下面突出显示的菜单选项: 在此处输入图片描述

我可以在“管理配置文件”窗格中设置配置文件的快捷方式,但是,这会改变积极的选项卡的配置文件;不是我想要的(在这种情况下不会将环境更改为 Powershell)。我可以使用快捷方式启动新选项卡,但这会使用默认配置文件。

配置快捷方式屏幕中没有任何内容表明它将执行此操作,并且搜索Konsole 使用配置文件快捷方式打开新选项卡让我想到了以下问题按 在 Konsole 中打开一个新标签页是否有键盘快捷键可以打开新的 Konsole 选项卡?从命令行在 Konsole 中切换配置文件?;这些都没有解决我想要实现的目标。

你能设置一个快捷方式来启动新的Konsole 中特定配置文件的选项卡?

答案1

结论

  • "Run all Konsole windows in a single process"在控制台设置中禁用
  • 安装xdotool
  • 使用以下命令创建全局快捷方式,替换[profile_name]为您的个人资料的名称:
qdbus org.kde.konsole-$(xdotool getwindowpid $(xdotool search --class "konsole" | tail -1)) /Windows/1 newSession "[profile_name]"; xdotool windowactivate $(xdotool search --class "konsole" | tail -1)

似乎没有专门的快捷方式,因为这个帖子这表明,默认行为在最近的版本中似乎已经发生了改变。

不过,有一个解决方法。正如解释的那样这里,您可以通过发送命令来打开新会话 (=tab) qdbus。 这样做的问题是您需要在 konsole 窗口内的 shell 中运行该命令,否则将不会设置环境变量。 现在,您可以使用将以下命令绑定到 bash 中的键盘快捷键bind

qdbus $KONSOLE_DBUS_SERVICE $KONSOLE_DBUS_WINDOW newSession "[profile_name]"

...但使用bind并不真正方便用户,尤其是不独立于 shell。或者,如果可以接受,您可以指定别名。

如果您想要一个独立于当前使用的 shell 的键盘快捷键,您将需要使用全局快捷键并不可避免地会丢失环境变量。

使用全局键盘快捷键

该过程取决于"Run all Konsole windows in a single process"中的设置"Settings -> Configure Konsole"

所有窗口都在一个进程中

如果启用该功能,将会调用一个 qdbus 服务org.kde.konsole,每个窗口将是一个对象Windows/1Windows/2等等。因此,如果您只使用一个 konsole 窗口,则以下命令对于全局键盘快捷键就足够了:

qdbus org.kde.konsole Windows/1 newSession "[profile_name]"

每个窗口一个进程

如果将 konsole 配置为为每个窗口生成一个新进程,您将有一些其他选项。在这种情况下,每个窗口将有一个名为 的 qdbus 服务org.kde.konsole-[process_id],每个服务只有一个对象Windows/1

要检索拥有 konsole 窗口的进程的 id,我们可以使用xdotool。在以下每个示例中,将其替换[profile_name]为您的配置文件的名称:

在活动控制台窗口中打开新选项卡

qdbus org.kde.konsole-$(xdotool getactivewindow getwindowpid) /Windows/1 newSession "[profile_name]"

在最近使用的(或活动的)控制台窗口中打开新选项卡

qdbus org.kde.konsole-$(xdotool getwindowpid $(xdotool search --class "konsole" | tail -1)) /Windows/1 newSession "[profile_name]"

在最近使用的(或活动的)控制台窗口中打开新选项卡并将其置于最前面

qdbus org.kde.konsole-$(xdotool getwindowpid $(xdotool search --class "konsole" | tail -1)) /Windows/1 newSession "[profile_name]"; xdotool windowactivate $(xdotool search --class "konsole" | tail -1)

相关内容