dotfiles/home/dot_config/wofi/executable_wofi-current-workspace.sh
2026-03-22 20:46:20 +08:00

33 lines
1.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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