blob: 5e5e8541e1c435c06d4dd617744c1e49f78c5ced (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/bin/bash
set -e
[ -n "$DEBUG" ] && set -x
export MENU_PROMPT=' swdo'
ico=/usr/share/icons/mdi/scalable/developer-board.svg
bail() {
notify-send -i "$ico" -c error "swdo: bailing" "$@"
exit 1
}
declare -A ACTIONS
register_action() {
id="${1}"
action="${2}"
if [ -z "$action" ]; then
while read -r a; do
action="$action$a
"
done
fi
ACTIONS["$id"]="$action"
echo "* register \"$id\""
}
run_action() {
id="${1}"
[[ -z $id ]] && return
action="${ACTIONS[$id]}"
[[ -z $action ]] && return
bash -c "set -ex; ${action}"
}
select_action() {
for a in "${!ACTIONS[@]}"; do echo "$a"; done | menu -l10
}
# ===== ACTIONS ===== #
register_action "sway: move container to workspace" <<-EOF
ws=\$(swq list workspace | jq -r '.[].name' | grep -Ev '^_' | menu)
swaymsg move container to workspace \$ws
EOF
# register_action "[sway] move parent container to workspace" <<-EOF
# options=$(swaymsg -t get_tree | jq -r ".. | select(.type? == \"workspace\") | .name")
# o=$(for o in "${options[@]}"; do echo "$o"; done | menu)
# [[ -z $o ]] && return
# [[ $o =~ ^[0-9]+$ ]] && o="\$ws$o"
# sway focus parent
# sway move container to workspace "${o}"
# sway workspace "${o}"
# sway focus child
# EOF
# register_action "[sway] swap workspaces between 2 outputs" <<-EOF
# outputs=$(swaymsg -t get_tree | jq ".. | select(.type? == \"output\" and .name? != \"__i3\")")
# number_of_outputs=$(echo $outputs | jq \".name\" | wc -l)
# if [[ $number_of_outputs -ne 2 ]]; then
# bail "need exactly 2 outputs for this to work, sorry..."
# fi
# WORKSPACES=/run/user/$(id -u)/automation.workspaces_per_output
# touch $WORKSPACES
# workspaces_per_output=
# for output in $(echo $outputs | jq -r ".. | select(.type? == \"output\") | .name"); do
# for workspace in $(echo $outputs | jq -r ".. | select(.type? == \"output\" and .name? == \"${output}\") | .nodes | .. | select(.type? == \"workspace\") | .name"); do
# workspaces_per_output="$workspaces_per_output $workspace"
# done
# echo ${workspaces_per_output} >> ${WORKSPACES}
# workspaces_per_output=
# done
# cat ${WORKSPACES} | while read output; do
# echo $output | while read -d " " workspace; do
# sway [workspace="${workspace}"] focus
# sway move workspace to output "${output}"
# done
# done
# rm ${WORKSPACES}
# EOF
# ===== main ===== #
run_action "$(select_action)"
|