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+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のカスタムアプリケーションのリストと他のワークスペースのデフォルトのアプリケーションのリストを取得します。

関連情報