web-dev-qa-db-ja.com

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をストロークすると、プログラムdmenudmenu -i "app1\napp2\napp3"のようなアプリケーションのカスタムリストで実行されるように指定したいと思います。

また、他のワークスペースに切り替えてストローク$mod+D dmenuを実行すると、特定のアプリケーションリストを定義しない限り、デフォルトモードで実行されます。

3
Hölderlin

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

1
anlar