Files
2023-04-24 15:41:27 +05:45

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