update
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 1. 取得目前 focused workspace 的名稱
|
||||
CURRENT_WS=$(swaymsg -t get_workspaces | jq -r '.[] | select(.focused).name')
|
||||
|
||||
# 如果沒抓到 workspace,直接退出
|
||||
if [ -z "$CURRENT_WS" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 2. 列出該 workspace 內的所有視窗 (con 與 floating_con)
|
||||
# 直接從 get_tree 找對應名稱的 workspace 節點並遞迴出視窗資訊
|
||||
entries=$(swaymsg -t get_tree | jq -r --arg WS "$CURRENT_WS" '
|
||||
.. |
|
||||
select(.type? == "workspace" and .name == $WS) |
|
||||
recurse(.nodes[]?, .floating_nodes[]?) |
|
||||
select(.type == "con" or .type == "floating_con") |
|
||||
select(.name != null) |
|
||||
(.id | tostring) + " [" + (.app_id // .window_properties.class // "Unknown") + "] " + .name')
|
||||
|
||||
# 如果沒有視窗,直接結束
|
||||
if [ -z "$entries" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 3. 透過 wofi 顯示選單,並取得選擇視窗的 id (第一個欄位)
|
||||
selected=$(echo "$entries" | wofi --width 600 --height 400 --dmenu --cache-file /dev/null | awk '{print $1}')
|
||||
|
||||
# 如果有選擇,則切換焦點到該視窗
|
||||
if [ -n "$selected" ]; then
|
||||
swaymsg "[con_id=$selected]" focus
|
||||
fi
|
||||
Reference in New Issue
Block a user