使用 [app_id="something"] 摇摆杀死窗口

使用 [app_id="something"] 摇摆杀死窗口

我正在寻找以下内容:$mod+n-> 在浮动客户端中打开 cli(ikhal特别是)-> $mod+n-> 在浮动客户端中关闭 cli。

我可以使用以下脚本为 nmtui 执行此操作:

#!/bin/bash
if pkill -0 nmtui; then
    pkill nmtui
else
    swaymsg exec 'foot -a floating_shell --window-size-pixel=1200x900 nmtui'
fi

现在我想对ikhal任何基本上任何事情做同样的事情。我的想法是,分配一个特定的app_id,即swaymsg 'exec footclient -a ikhal ikhal'。在按键时,我的脚本检查是否存在任何 app_id="ikhal" 窗口。如果是这样,那就杀了他们。否则它会开始一个新的。但是,条件的唯一触发器似乎是 for_window 和 allocate,这在这种情况下没有帮助吗?

无论如何,有什么办法可以做到这一点吗?还有其他方法可以实现这种行为吗?

你能帮助我吗?

答案1

对于我尝试做的具体事情,解决方案如下:

swaymsg \[app_id="something"\] kill

说明:swaymsg本身可以取条件。然而,我们需要转义括号。这样我们就可以在 sway 中的特定容器上运行命令。

然而,当我想用​​它来切换日历(或其他应用程序)时,我找到了一个更好的解决方案:摇摆便签本。所以我最终使用了以下脚本:

#!/bin/bash
swaymsg \[app_id=$1\] scratchpad show || swaymsg \[app_id=$1\] move scratchpad
if [ $? = 2 ]; then
  exec footclient -a $1 $1
fi

如果您调用这个非常简单的脚本,sh toggle.sh ikhal它会尝试从暂存器获取 app_id“ikahl”的窗口,如果失败,它会尝试将此窗口移动到暂存器,如果两者都失败,它会尝试打开应用程序“ikhal”在新的足部会话中并分配 app_id“ikhal”。

我将它与我的任何 tuis 一起使用,例如neomuttikhalnmtui

相关内容