From 1f1a8dd5d43c7f9c36a58a221ff3cce178259c2f Mon Sep 17 00:00:00 2001 From: Harri Lahtinen Date: Tue, 7 Apr 2020 15:43:05 +0300 Subject: [PATCH] polybar-scripts --- .config/polybar/scripts/backlight.sh | 3 + .config/polybar/scripts/expressvpn-status.sh | 19 ++ .config/polybar/scripts/openweather.sh | 39 ++++ .config/polybar/scripts/pavolume.sh | 194 +++++++++++++++++++ .config/polybar/scripts/popup-calendar.sh | 41 ++++ .config/polybar/scripts/wttr.sh | 7 + 6 files changed, 303 insertions(+) create mode 100755 .config/polybar/scripts/backlight.sh create mode 100755 .config/polybar/scripts/expressvpn-status.sh create mode 100755 .config/polybar/scripts/openweather.sh create mode 100755 .config/polybar/scripts/pavolume.sh create mode 100755 .config/polybar/scripts/popup-calendar.sh create mode 100755 .config/polybar/scripts/wttr.sh diff --git a/.config/polybar/scripts/backlight.sh b/.config/polybar/scripts/backlight.sh new file mode 100755 index 0000000..7875362 --- /dev/null +++ b/.config/polybar/scripts/backlight.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "$(light | cut -d. -f1)" diff --git a/.config/polybar/scripts/expressvpn-status.sh b/.config/polybar/scripts/expressvpn-status.sh new file mode 100755 index 0000000..d412c9b --- /dev/null +++ b/.config/polybar/scripts/expressvpn-status.sh @@ -0,0 +1,19 @@ + +#!/bin/sh + +STATUS=$(expressvpn status | cut -d " " -f 1) +IP=$(ip route get 8.8.8.8 | head -1 | awk '{print $7}') +SSID=$(nmcli -f SSID | head -1 | cut -d " " -f 4) + +if [ "$STATUS" != "Not" ]; then + echo " ${IP} " + +elif [ "$SSID" = "ASUS_5G" ] || [ "$SSID" = "ASUS" ]; then + echo " ${IP} " + +elif [ "$SSID" = "OP3T" ] || [ "$SSID" = "Samsung" ]; then + echo " ${IP} " + +elif [ "$SSID" != "ASUS_5G" ] || [ "$SSID" != "ASUS" ] || [ "$SSID" != "OP3T" ] || [ "$SSID" != "Samsung" ] ; then + echo " ${IP} " +fi diff --git a/.config/polybar/scripts/openweather.sh b/.config/polybar/scripts/openweather.sh new file mode 100755 index 0000000..ed9f5a0 --- /dev/null +++ b/.config/polybar/scripts/openweather.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +command -v jq >/dev/null 2>&1 || { echo >&2 "Program 'jq' required but it is not installed. Aborting."; exit 1; } +command -v wget >/dev/null 2>&1 || { echo >&2 "Program 'wget' required but is not installed. Aborting."; exit 1; } + +APIKEY="99e2d54517287c6de1e9db99db2fdc84" +CITY_ID="659181" # customise this for your city +URL="http://api.openweathermap.org/data/2.5/weather?id=${CITY_ID}&units=metric&APPID=${APIKEY}" + +WEATHER_RESPONSE=$(wget -qO- "${URL}") + +WEATHER_CONDITION=$(echo $WEATHER_RESPONSE | jq '.weather[0].main' | sed 's/"//g') +WEATHER_TEMP=$(echo $WEATHER_RESPONSE | jq '.main.temp') +WIND_DIR=$( echo "$WEATHER_RESPONSE" | jq '.wind.deg') +WIND_SPEED=$( echo "$WEATHER_RESPONSE" | jq '.wind.speed') + +#WIND_SPEED=$(awk "BEGIN {print 60*60*$WIND_SPEED/1000}") +WIND_SPEED=$(awk "BEGIN {print $WIND_SPEED}") +WIND_DIR=$(awk "BEGIN {print int(($WIND_DIR % 360)/22.5)}") +DIR_ARRAY=( N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW N ) +WIND_DIR=${DIR_ARRAY[WIND_DIR]} + +case $WEATHER_CONDITION in + 'Clouds') + WEATHER_ICON="" + ;; + 'Rain') + WEATHER_ICON="" + ;; + 'Snow') + WEATHER_ICON="" + ;; + *) + WEATHER_ICON="" + ;; +esac + +echo " ${WEATHER_ICON} ${WEATHER_CONDITION} ${WEATHER_TEMP}°C ${WIND_SPEED} m/s " +#echo "${WEATHER_ICON} ${WEATHER_CONDITION}: ${WEATHER_TEMP}°C: ${WIND_SPEED} m/s ${WIND_DIR} " diff --git a/.config/polybar/scripts/pavolume.sh b/.config/polybar/scripts/pavolume.sh new file mode 100755 index 0000000..0abbec8 --- /dev/null +++ b/.config/polybar/scripts/pavolume.sh @@ -0,0 +1,194 @@ +#!/usr/bin/env bash + +# finds the active sink for pulse audio and increments the volume. useful when you have multiple audio outputs and have a key bound to vol-up and down + +osd='no' +inc='2' +capvol='no' +maxvol='150' +autosync='yes' + +# Muted status +# yes: muted +# no : not muted +curStatus="no" +active_sink="" +limit=$((100 - inc)) +maxlimit=$((maxvol - inc)) + +reloadSink() { + active_sink=$(pacmd list-sinks | awk '/* index:/{print $3}') +} + +function volUp { + + getCurVol + + if [ "$capvol" = 'yes' ] + then + if [ "$curVol" -le 100 ] && [ "$curVol" -ge "$limit" ] + then + pactl set-sink-volume "$active_sink" -- 100% + elif [ "$curVol" -lt "$limit" ] + then + pactl set-sink-volume "$active_sink" -- "+$inc%" + fi + elif [ "$curVol" -le "$maxvol" ] && [ "$curVol" -ge "$maxlimit" ] + then + pactl set-sink-volume "$active_sink" "$maxvol%" + elif [ "$curVol" -lt "$maxlimit" ] + then + pactl set-sink-volume "$active_sink" "+$inc%" + fi + + getCurVol + + if [ ${osd} = 'yes' ] + then + qdbus org.kde.kded /modules/kosd showVolume "$curVol" 0 + fi + + if [ ${autosync} = 'yes' ] + then + volSync + fi +} + +function volDown { + + pactl set-sink-volume "$active_sink" "-$inc%" + getCurVol + + if [ ${osd} = 'yes' ] + then + qdbus org.kde.kded /modules/kosd showVolume "$curVol" 0 + fi + + if [ ${autosync} = 'yes' ] + then + volSync + fi + +} + +function getSinkInputs { + input_array=$(pacmd list-sink-inputs | grep -B 4 "sink: $1 " | awk '/index:/{print $2}') +} + +function volSync { + getSinkInputs "$active_sink" + getCurVol + + for each in $input_array + do + pactl set-sink-input-volume "$each" "$curVol%" + done +} + +function getCurVol { + curVol=$(pacmd list-sinks | grep -A 15 "index: $active_sink$" | grep 'volume:' | grep -E -v 'base volume:' | awk -F : '{print $3}' | grep -o -P '.{0,3}%'| sed s/.$// | tr -d ' ') +} + +function volMute { + case "$1" in + mute) + pactl set-sink-mute "$active_sink" 1 + curVol=0 + status=1 + ;; + unmute) + pactl set-sink-mute "$active_sink" 0 + getCurVol + status=0 + ;; + esac + + if [ ${osd} = 'yes' ] + then + qdbus org.kde.kded /modules/kosd showVolume ${curVol} ${status} + fi + +} + +function volMuteStatus { + curStatus=$(pacmd list-sinks | grep -A 15 "index: $active_sink$" | awk '/muted/{ print $2}') +} + +# Prints output for bar +# Listens for events for fast update speed +function listen { + firstrun=0 + + pactl subscribe 2>/dev/null | { + while true; do + { + # If this is the first time just continue + # and print the current state + # Otherwise wait for events + # This is to prevent the module being empty until + # an event occurs + if [ $firstrun -eq 0 ] + then + firstrun=1 + else + read -r event || break + if ! echo "$event" | grep -e "on card" -e "on sink" + then + # Avoid double events + continue + fi + fi + } &>/dev/null + output + done + } +} + +function output() { + reloadSink + getCurVol + volMuteStatus + if [ "${curStatus}" = 'yes' ] + then + echo " $curVol%" + else + echo " $curVol%" + fi +} #}}} + +reloadSink +case "$1" in + --up) + volUp + ;; + --down) + volDown + ;; + --togmute) + volMuteStatus + if [ "$curStatus" = 'yes' ] + then + volMute unmute + else + volMute mute + fi + ;; + --mute) + volMute mute + ;; + --unmute) + volMute unmute + ;; + --sync) + volSync + ;; + --listen) + # Listen for changes and immediately create new output for the bar + # This is faster than having the script on an interval + listen + ;; + *) + # By default print output for bar + output + ;; +esac diff --git a/.config/polybar/scripts/popup-calendar.sh b/.config/polybar/scripts/popup-calendar.sh new file mode 100755 index 0000000..65c8f0f --- /dev/null +++ b/.config/polybar/scripts/popup-calendar.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +BAR_HEIGHT=30 # polybar height +BORDER_SIZE=1 # border size from your wm settings +YAD_WIDTH=222 # 222 is minimum possible value +YAD_HEIGHT=193 # 193 is minimum possible value +DATE="$(date +"%d-%m-%y %H:%M")" + +case "$1" in +--popup) + if [ "$(xdotool getwindowfocus getwindowname)" = "yad-calendar" ]; then + exit 0 + fi + + eval "$(xdotool getmouselocation --shell)" + eval "$(xdotool getdisplaygeometry --shell)" + + # X + if [ "$((X + YAD_WIDTH / 2 + BORDER_SIZE))" -gt "$WIDTH" ]; then #Right side + : $((pos_x = WIDTH - YAD_WIDTH - BORDER_SIZE)) + elif [ "$((X - YAD_WIDTH / 2 - BORDER_SIZE))" -lt 0 ]; then #Left side + : $((pos_x = BORDER_SIZE)) + else #Center + : $((pos_x = X - YAD_WIDTH / 2)) + fi + + # Y + if [ "$Y" -gt "$((HEIGHT / 2))" ]; then #Bottom + : $((pos_y = HEIGHT - YAD_HEIGHT - BAR_HEIGHT - BORDER_SIZE)) + else #Top + : $((pos_y = BAR_HEIGHT + BORDER_SIZE)) + fi + + yad --calendar --undecorated --fixed --close-on-unfocus --no-buttons \ + --width=$YAD_WIDTH --height=$YAD_HEIGHT --posx=$pos_x --posy=$pos_y \ + --title="yad-calendar" --borders=0 >/dev/null & + ;; +*) + echo "$DATE" + ;; +esac diff --git a/.config/polybar/scripts/wttr.sh b/.config/polybar/scripts/wttr.sh new file mode 100755 index 0000000..728100f --- /dev/null +++ b/.config/polybar/scripts/wttr.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +rm ~/Hameenlinna_0qp.png +wget wttr.in/Hameenlinna_0qp.png && feh Hameenlinna_0qp.png + + +