74 lines
1.6 KiB
Bash
Executable File
74 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
get_ws_name () {
|
|
local entry=$1
|
|
echo ${entry#?}
|
|
}
|
|
|
|
get_class_name () {
|
|
local entry=$1
|
|
echo ${entry} | sed 's/[0-9].*//g'
|
|
}
|
|
|
|
get_shape_by_class () {
|
|
local class=$1
|
|
local sfocused=$2
|
|
local sinactive=$3
|
|
local soccupied=$4
|
|
local afocused=$5
|
|
local ainactive=$6
|
|
local aoccupied=$7
|
|
|
|
# check focused
|
|
for info in $afocused; do
|
|
if [[ "$info" == "$class" ]]; then
|
|
echo $sfocused
|
|
fi
|
|
done
|
|
|
|
# check inactive
|
|
for info in $ainactive; do
|
|
if [[ "$info" == "$class" ]]; then
|
|
echo $sinactive
|
|
fi
|
|
done
|
|
|
|
# check occupied
|
|
for info in $aoccupied; do
|
|
if [[ "$info" == "$class" ]]; then
|
|
echo $soccupied
|
|
fi
|
|
done
|
|
}
|
|
|
|
workspaces () {
|
|
local info=$(echo $1 | sed 's/:/ /g')
|
|
local workspaces="(box :class \"ws\" :spacing \"-1\" :orientation \"h\" :halign \"center\" :space-evenly \"false\""
|
|
|
|
# define shapes
|
|
local sfocused=""
|
|
local sinactive=""
|
|
local soccupied=""
|
|
|
|
# define shapes associations
|
|
local afocused="A I" # focused and focused without childs
|
|
local ainactive="i" # unoccupied / inactive
|
|
local aoccupied="a" # occupied
|
|
|
|
# create buttons
|
|
for entry in $info; do
|
|
local name=$(get_ws_name $entry)
|
|
local class=$(get_class_name $entry)
|
|
local shape=$(get_shape_by_class "$class" "$sfocused" "$sinactive" "$soccupied" "$afocused" "$ainactive" "$aoccupied")
|
|
|
|
workspaces="${workspaces}(button :onclick \"dkcmd ws ${name}\" :class \"$class btn\" \"${shape}\")"
|
|
done
|
|
|
|
workspaces="$workspaces)"
|
|
echo $workspaces
|
|
}
|
|
|
|
dkcmd status type=ws | while read -r line; do
|
|
workspaces "$line"
|
|
done
|