view modules/dwmbar.nix @ 3:84d6074a5566

Fix: forgot to hg add
author Yasuri <yasuri@charliesmp.net>
date Sat, 03 Oct 2026 19:15:32 -0500
parents
children
line wrap: on
line source

{ writeShellApplication, coreutils, gawk, xsetroot, wireplumber, playerctl }:

writeShellApplication {
  name = "dwmbar";
  runtimeInputs = [ coreutils gawk xsetroot wireplumber playerctl ];
  text = ''
    while true; do
      # volume
      vol_raw=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
      vol=$(echo "$vol_raw" | awk '{print int($2*100)}')
      if [[ "$vol_raw" == *MUTED* ]]; then
        vol_icon=$'\uf026'
      else
        vol_icon=$'\uf028'
      fi

      music_icon=$'\uf001'
      cal_icon=$'\uf073'

      # mpris
      music=""
      if [ "$(playerctl status 2>/dev/null)" = "Playing" ]; then
        track=$(playerctl metadata --format '{{artist}} - {{title}}' 2>/dev/null)
        music="$music_icon ''${track:0:50}  "
      fi

      # battery
      cap=$(cat /sys/class/power_supply/BAT0/capacity)
      status=$(cat /sys/class/power_supply/BAT0/status)
      if [ "$status" = "Charging" ]; then
        bat_icon=$'\uf0e7'
      elif [ "$cap" -ge 88 ]; then
        bat_icon=$'\uf240'
      elif [ "$cap" -ge 63 ]; then
        bat_icon=$'\uf241'
      elif [ "$cap" -ge 38 ]; then
        bat_icon=$'\uf242'
      elif [ "$cap" -ge 13 ]; then
        bat_icon=$'\uf243'
      else
        bat_icon=$'\uf244'
      fi

      # date
      now=$(date '+%m/%d/%Y %I:%M %p')

            xsetroot -name " $music$vol_icon $vol%  $bat_icon $cap%  $cal_icon $now "
      sleep 2
    done
  '';
}