#!/usr/bin/env bash # Based on https://gist.github.com/lbonn/89d064cde963cfbacabd77e0d3801398 prompt="Switch to" [ "$1" = "-s" ] && prompt="Swap with" row=$(swaymsg -t get_tree | jq -r ' .. | objects | select(.type == "workspace") as $ws | .. | objects | select(has("app_id")) | (if .focused == true then "*" else " " end) as $asterisk | "[\($ws.name)] \($asterisk) \(.app_id) - \(.name) \u0000icon\u001f\(.app_id)"' \ | sed 's/&/&/g' \ | rofi -i -dmenu -show-icons -markup-rows -p "$prompt") if [ ! -z "$row" ]; then winid=$(echo "$row" | sed 's/.*.*/\1/') if [ "$1" = "-s" ]; then swaymsg "swap container with con_id $winid" else swaymsg "[con_id=$winid] focus" fi fi