Evie Litherland-Smith
be1d5fa798
Save reference for later Enable upower daemon and add simple bar with the essentials for now, TODO more later
67 lines
2.9 KiB
Bash
Executable file
67 lines
2.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
monitor=$1
|
|
active_monitor="$(hyprctl monitors -j | jq ".[] | select(.id == $monitor)")"
|
|
active_workspace="$(echo $active_monitor | jq '.activeWorkspace.id')"
|
|
occupied_workspace=("$(hyprctl clients -j | jq -S "[ .[] | select(.monitor == $monitor) | .workspace.id ] | unique | .[]")")
|
|
if [[ ! "${occupied_workspace[*]}" =~ ${active_workspace} ]]; then
|
|
occupied_workspace+=("$active_workspace")
|
|
IFS=$'\n' occupied_workspace=($(sort <<<"${occupied_workspace[*]}"))
|
|
unset IFS
|
|
fi
|
|
workspaces() {
|
|
if [[ ${1:0:9} == "workspace" ]]; then
|
|
active_monitor="$(hyprctl monitors -j | jq ".[] | select(.id == $monitor)")"
|
|
active_workspace="$(echo $active_monitor | jq '.activeWorkspace.id')"
|
|
occupied_workspace=("$(hyprctl clients -j | jq -S "[ .[] | select(.monitor == $monitor) | .workspace.id ] | unique | .[]")")
|
|
if [[ ! "${occupied_workspace[*]}" =~ ${active_workspace} ]]; then
|
|
occupied_workspace+=("$active_workspace")
|
|
IFS=$'\n' occupied_workspace=($(sort <<<"${occupied_workspace[*]}"))
|
|
unset IFS
|
|
fi
|
|
elif [[ ${1:0:15} == "createworkspace" ]]; then
|
|
active_monitor="$(hyprctl monitors -j | jq ".[] | select(.id == $monitor)")"
|
|
active_workspace="$(echo $active_monitor | jq '.activeWorkspace.id')"
|
|
occupied_workspace=("$(hyprctl clients -j | jq -S "[ .[] | select(.monitor == $monitor) | .workspace.id ] | unique | .[]")")
|
|
if [[ ! "${occupied_workspace[*]}" =~ ${active_workspace} ]]; then
|
|
occupied_workspace+=("$active_workspace")
|
|
IFS=$'\n' occupied_workspace=($(sort <<<"${occupied_workspace[*]}"))
|
|
unset IFS
|
|
fi
|
|
elif [[ ${1:0:16} == "destroyworkspace" ]]; then
|
|
active_monitor="$(hyprctl monitors -j | jq ".[] | select(.id == $monitor)")"
|
|
active_workspace="$(echo $active_monitor | jq '.activeWorkspace.id')"
|
|
occupied_workspace=("$(hyprctl clients -j | jq -S "[ .[] | select(.monitor == $monitor) | .workspace.id ] | unique | .[]")")
|
|
if [[ ! "${occupied_workspace[*]}" =~ ${active_workspace} ]]; then
|
|
occupied_workspace+=("$active_workspace")
|
|
IFS=$'\n' occupied_workspace=($(sort <<<"${occupied_workspace[*]}"))
|
|
unset IFS
|
|
fi
|
|
fi
|
|
}
|
|
module() {
|
|
if [[ ${1:0:9} == "workspace" ]]; then
|
|
echo -n "(eventbox :onscroll \"echo {} | sed -e 's/up/-1/g' -e 's/down/+1/g' | xargs hyprctl dispatch workspace\""
|
|
echo -n " (box :class \"works\" :orientation \"h\" :spacing 2 :space-evenly \"false\""
|
|
for i in ${occupied_workspace[@]}; do
|
|
if [ $i = $active_workspace ]; then
|
|
echo -n " (button :onclick \"hyprctl dispatch workspace $i\" :class \"0act\" \"$i\") "
|
|
else
|
|
echo -n " (button :onclick \"hyprctl dispatch workspace $i\" :class \"0norm\" \"$i\") "
|
|
fi
|
|
done
|
|
echo -n " )"
|
|
echo ")"
|
|
fi
|
|
}
|
|
|
|
# initial start
|
|
workspaces "$event"
|
|
module "workspace"
|
|
|
|
# loop start
|
|
socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r event; do
|
|
workspaces "$event"
|
|
module "$event"
|
|
done
|