假设我将打开一个新的工作区,例如在下一个未使用的工作区中运行终端。
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+D
dmenu 应该在默认模式下运行,除非我定义了特定的应用程序列表。
答案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 上的自定义应用程序列表以及其他工作区上的默认应用程序列表。