From 6e0504898ee6194ef489bac757a663fd78d89b5f Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Mon, 4 Jul 2016 01:15:38 +0200 Subject: Made hlwm config more portable --- .../.config/herbstluftwm/panel_indicators.sh | 163 ++++++++------------- .../.config/herbstluftwm/populate_panel.sh | 10 +- .../.config/herbstluftwm/system_utils/all.sh | 9 ++ .../.config/herbstluftwm/system_utils/battery.sh | 12 ++ .../.config/herbstluftwm/system_utils/clock.sh | 6 + .../.config/herbstluftwm/system_utils/music.sh | 29 ++++ .../.config/herbstluftwm/system_utils/network.sh | 34 +++++ .../.config/herbstluftwm/system_utils/volume.sh | 8 + 8 files changed, 165 insertions(+), 106 deletions(-) create mode 100644 herbstluftwm/.config/herbstluftwm/system_utils/all.sh create mode 100644 herbstluftwm/.config/herbstluftwm/system_utils/battery.sh create mode 100644 herbstluftwm/.config/herbstluftwm/system_utils/clock.sh create mode 100644 herbstluftwm/.config/herbstluftwm/system_utils/music.sh create mode 100644 herbstluftwm/.config/herbstluftwm/system_utils/network.sh create mode 100644 herbstluftwm/.config/herbstluftwm/system_utils/volume.sh diff --git a/herbstluftwm/.config/herbstluftwm/panel_indicators.sh b/herbstluftwm/.config/herbstluftwm/panel_indicators.sh index 2a3d2e6..a65be74 100755 --- a/herbstluftwm/.config/herbstluftwm/panel_indicators.sh +++ b/herbstluftwm/.config/herbstluftwm/panel_indicators.sh @@ -1,36 +1,17 @@ #!/usr/bin/env bash -icon_font="FontAwesome-10" +source "$HLWM_CONF_DIR/system_utils/all.sh" + +export icon_font="FontAwesome-10" battery_icon=("\uf244" "\uf243" "\uf242" "\uf241" "\uf240" "\uf1e6") network_icon=("\uf1eb" "\uf109") music_icon="\uf001" volume_icon=("\uf026" "\uf027" "\uf028") -music() +hlwm_indicator_music() { - # Music - mpd_status=$(mpc | sed -nr "s/^\[(.*)\].*$/\1/p") - if [ $mpd_status = "playing" ]; then - player_artist=$(mpc -f "%artist%" current) - player_title=$(mpc -f "%title%" current) - if [ -n "$player_artist" ]; then - playing="$player_artist - $player_title" - else - playing="$player_title" - fi - elif [ $(playerctl status) = "Playing" ]; then - player_artist=$(playerctl metadata artist) - player_title=$(playerctl metadata title) - if [ -n "$player_artist" ] && [ -n "$player_title" ]; then - playing="$player_artist - $player_title" - else - now_playing=$(playerctl metadata vlc:nowplaying) - playing="$now_playing" - fi - else - playing="" - fi + playing=$(hlwm_utils_music_playing) if [ -n "$playing" ]; then if [ "$current" != "$playing" ] ; then @@ -48,70 +29,39 @@ music() fi } -volume() +hlwm_indicator_volume() { # Volume if pgrep pulseaudio >> /dev/null ; then - volumes=$(\ - amixer get Master | \ - grep "Front Right: Playback"\ - ) - vol=$(\ - echo $volumes | \ - sed "s/.*\[\([0-9]*\)%\].*/\1/"\ - ) - if [ -z $vol ] ; then - vol_status="off" - elif [ $vol -eq 0 ]; then - vol_status="%{F$HLWM_FG_ACOLOR}${volume_icon[0]} $vol%%{F-}" - elif [ $vol -lt 33 ]; then - vol_status="%{F$HLWM_FG_ACOLOR}${volume_icon[1]} $vol%%{F-}" + volume=$(hlwm_utils_volume) + if [ -z "$volume" ] ; then + volume_status="off" + elif [ "$volume" -eq 0 ]; then + volume_status="%{F$HLWM_FG_ACOLOR}${volume_icon[0]} $volume%%{F-}" + elif [ "$volume" -lt 33 ]; then + volume_status="%{F$HLWM_FG_ACOLOR}${volume_icon[1]} $volume%%{F-}" else - vol_status="%{F$HLWM_FG_ACOLOR}${volume_icon[2]} $vol%%{F-}" + volume_status="%{F$HLWM_FG_ACOLOR}${volume_icon[2]} $volume%%{F-}" fi - echo -e "volume\t$vol_status" + echo -e "volume\t$volume_status" else echo -e "volume\toff" fi } -network() +hlwm_indicator_network() { # Network - read lo int1 int2 <<< `ip link | sed -n 's/^[0-9]: \(.*\):.*$/\1/p'` - if iwconfig $int1 >/dev/null 2>&1; then - wifi=$int1 - eth=$int2 - else - wifi=$int2 - eth=$int1 - fi - - ip link show $eth | grep 'state UP' >/dev/null && int=$eth || int=$wifi - - if [ $int == $wifi ] ; then - iwconfig=$(iwconfig $int) - ssid=$( - echo $iwconfig | \ - sed "s/.*ESSID:\(\".*\"\).*/\1/" | \ - sed "s/.*\(off\/any\).*/\"\1\"/" | \ - sed "s/.*\"\(.*\)\".*/\1/" - ) - - quality=$( \ - echo $iwconfig | \ - sed "s/^.*Link Quality=\([0-9]*\)\/\([0-9]*\) .*$/(\1*100)\/\2/" | \ - bc - ) - - if [ $ssid == "off/any" ] ; then - net_status="off" - else - net_status="${network_icon[0]} $ssid $quality%" - fi - - elif [ $int == $eth ] ; then - net_status="${network_icon[1]} Ethernet" + conn=$(hlwm_utils_active_network) + conn_type=$(echo "$conn" | cut -d: -f1) + + if [ "$conn_type" = "wifi" ] ; then + ssid=$(echo "$conn" | cut -d: -f2) + quality=$(echo "$conn" | cut -d: -f3) + net_status="${network_icon[0]} $ssid $quality%" + elif [ "$conn_type" = "eth" ] ; then + name=$(echo "$conn" | cut -d: -f2) + net_status="${network_icon[1]} $name" else net_status="off" fi @@ -119,39 +69,50 @@ network() echo -e "net\t$net_status" } -battery() +hlwm_indicator_battery() { # Batteries - bat_info="off" - for bat in $(find /sys/class/power_supply | grep BAT); do - nr="${bat: -1}" - bat_info="" - - bat_lvl=$(cat /sys/class/power_supply/BAT$nr/capacity) - bat_state=$(cat /sys/class/power_supply/BAT$nr/status) - - if [ $bat_state == "Charging" ] ; then - bat_status="${battery_icon[5]}" - elif [ $bat_lvl -lt 10 ] ; then - bat_status="%{F$HLWM_ACCENT_ACOLOR}${battery_icon[0]}%{F-}" - elif [ $bat_lvl -lt 25 ] ; then - bat_status="${battery_icon[1]}" - elif [ $bat_lvl -lt 50 ] ; then - bat_status="${battery_icon[2]}" - elif [ $bat_lvl -lt 75 ] ; then - bat_status="${battery_icon[3]}" + battery_info="" + while read -r battery; do + + battery=($battery) + battery_nr=${battery[0]} + battery_status=${battery[1]} + battery_level=${battery[2]} + + if [ "$battery_status" = "Charging" ] ; then + battery_status="${battery_icon[5]}" + elif [ "$battery_level" -lt 10 ] ; then + battery_status="%{F$HLWM_ACCENT_ACOLOR}${battery_icon[0]}%{F-}" + elif [ "$battery_level" -lt 25 ] ; then + battery_status="${battery_icon[1]}" + elif [ "$battery_level" -lt 50 ] ; then + battery_status="${battery_icon[2]}" + elif [ "$battery_level" -lt 75 ] ; then + battery_status="${battery_icon[3]}" else - bat_status="${battery_icon[4]}" + battery_status="${battery_icon[4]}" fi - bat_info+="$nr: $bat_status $bat_lvl%%{F-}" - done - echo -e "battery\t$bat_info" + battery_info+="$battery_nr: $battery_status $battery_level%%{F-}" + done < <(hlwm_utils_battery) + + if [ -z "$battery_info" ] ; then + echo -e "battery\toff" + else + echo -e "battery\t$battery_info" + fi } -clock() +hlwm_indicator_clock() { - echo -e $(date +$"date\t%{F$HLWM_FG_ACOLOR}%H:%M:%S %{F$HLWM_FG_ACOLOR}(%d-%m-%Y)%{F-}") + datetime=$(hlwm_utils_datetime) + datetime=($datetime) + + date=${datetime[0]} + time=${datetime[1]} + + echo -e "date\t%{F$HLWM_FG_ACOLOR}$time %{F$HLWM_FG_ACOLOR}($date)%{F-}" } # vim: set ts=4 sw=4 tw=0 et : diff --git a/herbstluftwm/.config/herbstluftwm/populate_panel.sh b/herbstluftwm/.config/herbstluftwm/populate_panel.sh index bdb27b4..15a40c4 100755 --- a/herbstluftwm/.config/herbstluftwm/populate_panel.sh +++ b/herbstluftwm/.config/herbstluftwm/populate_panel.sh @@ -24,11 +24,11 @@ fi # date ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29 while true ; do - music - volume & - network & - battery & - clock & + hlwm_indicator_music + hlwm_indicator_volume & + hlwm_indicator_network & + hlwm_indicator_battery & + hlwm_indicator_clock & sleep 1 || break done > >(uniq_linebuffered) & diff --git a/herbstluftwm/.config/herbstluftwm/system_utils/all.sh b/herbstluftwm/.config/herbstluftwm/system_utils/all.sh new file mode 100644 index 0000000..d5a61ac --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/system_utils/all.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +utils=$(find "$HLWM_CONF_DIR/system_utils/" -name "*.sh" | grep -v ".*all.sh") + +for util in $utils; do + echo "source $util" + source $util +done + +# vim: set ts=8 sw=4 tw=0 et : diff --git a/herbstluftwm/.config/herbstluftwm/system_utils/battery.sh b/herbstluftwm/.config/herbstluftwm/system_utils/battery.sh new file mode 100644 index 0000000..68c06ab --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/system_utils/battery.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +hlwm_utils_battery() { + for bat in $(find /sys/class/power_supply | grep BAT); do + bat_nr="${bat: -1}" + bat_lvl=$(cat "/sys/class/power_supply/BAT$bat_nr/capacity") + bat_state=$(cat "/sys/class/power_supply/BAT$bat_nr/status") + + echo "$bat_nr $bat_state $bat_lvl" + done +} +# vim: set ts=8 sw=4 tw=0 et : diff --git a/herbstluftwm/.config/herbstluftwm/system_utils/clock.sh b/herbstluftwm/.config/herbstluftwm/system_utils/clock.sh new file mode 100644 index 0000000..644f311 --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/system_utils/clock.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +hlwm_utils_datetime() { + date +$"%d-%m-%Y %H:%M:%S " +} +# vim: set ts=8 sw=4 tw=0 et : diff --git a/herbstluftwm/.config/herbstluftwm/system_utils/music.sh b/herbstluftwm/.config/herbstluftwm/system_utils/music.sh new file mode 100644 index 0000000..da7b74d --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/system_utils/music.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +hlwm_utils_music_playing() { + + playing="" + + mpd_status=$(mpc | sed -nr "s/^\[(.*)\].*$/\1/p") + if [ "$mpd_status" = "playing" ]; then + player_artist=$(mpc -f "%artist%" current) + player_title=$(mpc -f "%title%" current) + if [ -n "$player_artist" ]; then + playing="$player_artist - $player_title" + else + playing="$player_title" + fi + elif [ "$(playerctl status)" = "Playing" ]; then + player_artist=$(playerctl metadata artist) + player_title=$(playerctl metadata title) + if [ -n "$player_artist" ] && [ -n "$player_title" ]; then + playing="$player_artist - $player_title" + else + now_playing=$(playerctl metadata vlc:nowplaying) + playing="$now_playing" + fi + fi + + echo "$playing" +} +# vim: set ts=8 sw=4 tw=0 et : diff --git a/herbstluftwm/.config/herbstluftwm/system_utils/network.sh b/herbstluftwm/.config/herbstluftwm/system_utils/network.sh new file mode 100644 index 0000000..4cbc1fb --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/system_utils/network.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +hlwm_utils_active_network() { + network="" + + wifi="" + eth="" + + devices="$(nmcli -t -f type,state,device d)" + for device in $devices; do + type=$(echo "$device" | cut -d: -f1) + state=$(echo "$device" | cut -d: -f2) + hwdevice=$(echo "$device" | cut -d: -f3) + + if [ "$state" != "connected" ]; then + continue + elif [ "$type" = "wifi" ]; then + wifi="$hwdevice" + elif [ "$type" = "ethernet" ]; then + eth="$hwdevice" + fi + done + + if [ -n "$wifi" ]; then + wifi_list=$(nmcli -t -f in-use,ssid,signal d wifi list ifname "$wifi") + network="wifi:$(echo "$wifi_list" | sed -n 's/^\*:\(.*\)$/\1/p')" + elif [ -n "$eth" ]; then + network_info=$(nmcli -t d show "$eth") + network="eth:$(echo "$network_info" | sed -n 's/^GENERAL.CONNECTION:\(.*\)$/\1/p')" + fi + + echo "$network" +} +# vim: set ts=8 sw=4 tw=0 et : diff --git a/herbstluftwm/.config/herbstluftwm/system_utils/volume.sh b/herbstluftwm/.config/herbstluftwm/system_utils/volume.sh new file mode 100644 index 0000000..fcd4b88 --- /dev/null +++ b/herbstluftwm/.config/herbstluftwm/system_utils/volume.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hlwm_utils_volume() { + amixer get Master | + grep "Front Right: Playback" | + sed "s/.*\[\([0-9]*\)%\].*/\1/" +} +# vim: set ts=8 sw=4 tw=0 et : -- cgit v1.2.3