i3 针对每个工作区以不同模式运行 dmenu

i3 针对每个工作区以不同模式运行 dmenu

假设我将打开一个新的工作区,例如在下一个未使用的工作区中运行终端。

i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1)) && /usr/bin/x-terminal-emulator

此外,我还想为此工作区指定,如果我抚摸,$mod+D程序dmenu将使用自定义的应用程序列表运行,例如dmenu -i "app1\napp2\napp3".

如果我切换到其他工作区,并且描边$mod+Ddmenu 应该在默认模式下运行,除非我定义了特定的应用程序列表。

答案1

您可以绑定到$mod+D脚本来检测当前工作区并dmenu使用不同的参数启动。例如:

〜/.config/i3/config:

...
bindsym $mod+d exec /tmp/dm.sh
...

/tmp/dm.sh

#!/usr/bin/env sh

ws="$(i3-msg -t get_workspaces | jq -r '.[] | select(.focused==true).name')"

if [ "$ws" -eq "3" ]; then
  echo "app1\napp2\napp3" | dmenu
else
  dmenu_run
fi

在这里,您将获得工作区 #3 上的自定义应用程序列表以及其他工作区上的默认应用程序列表。

相关内容