如何在 i3 中通过一个键绑定启动两个应用程序?

如何在 i3 中通过一个键绑定启动两个应用程序?

我正在尝试想出一个将cmus在终端及其projectM-pulseaudio旁边启动的命令(我正在使用 i3 窗口管理器)。

当我尝试时

projectM-pulseaudio && cmus

cmus直到我关闭 ProjectM 后才开始。当我尝试时

cmus && projectM-pulseaudio

然后 ProjectM 不会启动,直到我退出cmus

据我所知,这cmus是一个基于命令行的工具,而 ProjectM 不是。我想知道这是否就是它不起作用的原因,或者是否还有其他原因。有什么想法吗?

答案1

当您输入时

utility1 && utility2

这意味着直到以零退出状态终止(但不是其他情况)utility2才会开始。utility1

同样地,

utility1 || utility2

意味着如果以非零退出状态终止utility2则将运行(但否则不会)。utility1

utility1 & utility2 &

这与以下相同

utility1 &
utility2 &

您将这两个实用程序作为后台进程启动(两者将彼此独立启动),并使用

utility1 & utility2

这与以下相同

utility1 &
utility2

您首先utility1作为后台进程,然后utility2作为前台进程。

巧合的是,这意味着您的问题标题是正确的:

cmus & projectM-pulseaudio

或者可能

projectM-pulseaudio & cmus

(但我不知道这些程序的作用,所以我不确定将其中一个或两个程序作为后台进程运行是否有意义)。

答案2

我正在尝试想出一个命令将在终端中启动 cmus 并在其旁边启动 projectM-pulseaudio (我使用的是 i3 窗口管理器)。

不是这样i3的。我想你想要的是这样的,

bindsym $mod+v exec projectM-pulseaudio, exec kitty cmus

请注意,您必须了解终端的工作原理。虽然我建议你使用kitty,因为它很容易成为功能最差的终端,具有连字和图形支持 - 它会在帧缓冲区上使用 Ranger 渲染图片。

如果除了 cmus 之外您还想要一个 shell(这样当您完成后它不会退出)

bindsym $mod+v exec projectM-pulseaudio, exec kitty bash -c'cmus'

相关内容