mirror of
https://github.com/mrfluffy-dev/dotfiles.git
synced 2026-01-17 05:40:34 +00:00
123 lines
5.7 KiB
Bash
Executable File
123 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# CONFIGURATION
|
|
LOCATION=0
|
|
YOFFSET=0
|
|
XOFFSET=0
|
|
WIDTH=12
|
|
WIDTH_WIDE=24
|
|
THEME='/home/mrfluffy/.config/rofi/colors-rofi-dark.rasi'
|
|
|
|
# Color Settings of Icon shown in Polybar
|
|
COLOR_DISCONNECTED='#000' # Device Disconnected
|
|
COLOR_NEWDEVICE='#ff0' # New Device
|
|
COLOR_BATTERY_90='#fff' # Battery >= 90
|
|
COLOR_BATTERY_80='#ccc' # Battery >= 80
|
|
COLOR_BATTERY_70='#aaa' # Battery >= 70
|
|
COLOR_BATTERY_60='#888' # Battery >= 60
|
|
COLOR_BATTERY_50='#666' # Battery >= 50
|
|
COLOR_BATTERY_LOW='#f00' # Battery < 50
|
|
|
|
# Icons shown in Polybar
|
|
ICON_SMARTPHONE=''
|
|
ICON_TABLET=''
|
|
SEPERATOR='|'
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
show_devices (){
|
|
IFS=$','
|
|
devices=""
|
|
for device in $(qdbus --literal org.kde.kdeconnect /modules/kdeconnect org.kde.kdeconnect.daemon.devices); do
|
|
deviceid=$(echo "$device" | awk -F'["|"]' '{print $2}')
|
|
devicename=$(qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$deviceid" org.kde.kdeconnect.device.name)
|
|
devicetype=$(qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$deviceid" org.kde.kdeconnect.device.type)
|
|
isreach="$(qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$deviceid" org.kde.kdeconnect.device.isReachable)"
|
|
istrust="$(qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$deviceid" org.kde.kdeconnect.device.isTrusted)"
|
|
if [ "$isreach" = "true" ] && [ "$istrust" = "true" ]
|
|
then
|
|
battery="$(qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$deviceid/battery" org.kde.kdeconnect.device.battery.charge)"
|
|
icon=$(get_icon "$battery" "$devicetype")
|
|
devices+="%{A1:$DIR/polybar-kdeconnect.sh -n '$devicename' -i $deviceid -b $battery -m:}$icon%{A}$SEPERATOR"
|
|
elif [ "$isreach" = "false" ] && [ "$istrust" = "true" ]
|
|
then
|
|
devices+="$(get_icon -1 "$devicetype")$SEPERATOR"
|
|
else
|
|
haspairing="$(qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$deviceid" org.kde.kdeconnect.device.hasPairingRequests)"
|
|
if [ "$haspairing" = "true" ]
|
|
then
|
|
show_pmenu2 "$devicename" "$deviceid"
|
|
fi
|
|
icon=$(get_icon -2 "$devicetype")
|
|
devices+="%{A1:$DIR/polybar-kdeconnect.sh -n $devicename -i $deviceid -p:}$icon%{A}$SEPERATOR"
|
|
|
|
fi
|
|
done
|
|
echo "${devices::-1}"
|
|
}
|
|
|
|
show_menu () {
|
|
menu="$(rofi -sep "|" -dmenu -i -p "$DEV_NAME" -location $LOCATION -yoffset $YOFFSET -xoffset $XOFFSET -theme $THEME -width $WIDTH -hide-scrollbar -line-padding 4 -padding 20 -lines 5 <<< "Battery: $DEV_BATTERY%|Ping|Find Device|Send File|Browse Files|Unpair")"
|
|
case "$menu" in
|
|
*Ping) qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID/ping" org.kde.kdeconnect.device.ping.sendPing ;;
|
|
*'Find Device') qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID/findmyphone" org.kde.kdeconnect.device.findmyphone.ring ;;
|
|
*'Send File') qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID/share" org.kde.kdeconnect.device.share.shareUrl "file://$(zenity --file-selection)" ;;
|
|
*'Browse Files')
|
|
if "$(qdbus --literal org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID/sftp" org.kde.kdeconnect.device.sftp.isMounted)" == "false"; then
|
|
qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID/sftp" org.kde.kdeconnect.device.sftp.mount
|
|
fi
|
|
qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID/sftp" org.kde.kdeconnect.device.sftp.startBrowsing
|
|
;;
|
|
*'Unpair' ) qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID" org.kde.kdeconnect.device.unpair
|
|
esac
|
|
}
|
|
|
|
show_pmenu () {
|
|
menu="$(rofi -sep "|" -dmenu -i -p "$DEV_NAME" -location $LOCATION -yoffset $YOFFSET -xoffset $XOFFSET -theme $THEME -width $WIDTH -hide-scrollbar -line-padding 1 -padding 20 -lines 1<<<"Pair Device")"
|
|
case "$menu" in
|
|
*'Pair Device') qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$DEV_ID" org.kde.kdeconnect.device.requestPair
|
|
esac
|
|
}
|
|
|
|
show_pmenu2 () {
|
|
menu="$(rofi -sep "|" -dmenu -i -p "$1 has sent a pairing request" -location $LOCATION -yoffset $YOFFSET -xoffset $XOFFSET -theme $THEME -width $WIDTH_WIDE -hide-scrollbar -line-padding 4 -padding 20 -lines 2 <<< "Accept|Reject")"
|
|
case "$menu" in
|
|
*'Accept') qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$2" org.kde.kdeconnect.device.acceptPairing ;;
|
|
*) qdbus org.kde.kdeconnect "/modules/kdeconnect/devices/$2" org.kde.kdeconnect.device.rejectPairing
|
|
esac
|
|
|
|
}
|
|
get_icon () {
|
|
if [ "$2" = "tablet" ]
|
|
then
|
|
icon=$ICON_TABLET
|
|
else
|
|
icon=$ICON_SMARTPHONE
|
|
fi
|
|
case $1 in
|
|
"-1") ICON="%{F$COLOR_DISCONNECTED}$icon%{F-}" ;;
|
|
"-2") ICON="%{F$COLOR_NEWDEVICE}$icon%{F-}" ;;
|
|
5*) ICON="%{F$COLOR_BATTERY_50}$icon%{F-}" ;;
|
|
6*) ICON="%{F$COLOR_BATTERY_60}$icon%{F-}" ;;
|
|
7*) ICON="%{F$COLOR_BATTERY_70}$icon%{F-}" ;;
|
|
8*) ICON="%{F$COLOR_BATTERY_80}$icon%{F-}" ;;
|
|
9*|100) ICON="%{F$COLOR_BATTERY_90}$icon%{F-}" ;;
|
|
*) ICON="%{F$COLOR_BATTERY_LOW}$icon%{F-}" ;;
|
|
esac
|
|
echo $ICON
|
|
}
|
|
|
|
unset DEV_ID DEV_NAME DEV_BATTERY
|
|
while getopts 'di:n:b:mp' c
|
|
do
|
|
# shellcheck disable=SC2220
|
|
case $c in
|
|
d) show_devices ;;
|
|
i) DEV_ID=$OPTARG ;;
|
|
n) DEV_NAME=$OPTARG ;;
|
|
b) DEV_BATTERY=$OPTARG ;;
|
|
m) show_menu ;;
|
|
p) show_pmenu ;;
|
|
esac
|
|
done
|