新しいワークスペースを開くと仮定します。次の未使用のワークスペースでターミナルを実行します。
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を実行すると、特定のアプリケーションリストを定義しない限り、デフォルトモードで実行されます。
現在のワークスペースを検出する$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のアプリケーションのカスタムリストを取得し、他のアプリケーションのデフォルトリストを取得します。