I have noticed that after 13 times calling of "echo ..|nc localhost
6600" in get_mpd_status(), `ps aux|grep nc`  shows that "sh -c echo ..|nc 
localhost 6600"
sleeping forever, so I use "mpc" instead of "echo|nc" to get mpd info, it
seems work quite well

On Mon, Feb 11, 2008 at 08:10:09PM +0800, sunway wrote:
>i am using ion3 version 3-20080207, when having both statusd_netmon and
>statusd_mpd shown on the statusbar, the statusbar got frozen after a few 
>seconds,anything wrong?
>
>-- 
>_________________________________________
>sunway
>Broad Network Research Center
>Beijing University of Posts and Telecommunications

-- 
sunway
Broad Network Research Center
Beijing University of Posts and Telecommunications
--orignal author: [EMAIL PROTECTED]
--modified by: sunwayforever at gmail dot com
--mpc is required
local defaults={
   update_interval=1000,
   address="localhost",
   port=6600,
}

local settings=table.join(statusd.get_config("mpd"), defaults)
local function get_mpd_status()
   local mpd = io.popen("mpc 2>/dev/null", "r")
   local data1 = mpd:read('*line')
   local data2 = mpd:read('*line')
   mpd:close()
   if data1 == nil then 
      return "mpd not running"
   end
   local s,_= string.find(data1, "volume.*")
   if s == 1 then
      return "Stopped"
   end
   local _,_,state,perc= string.find(data2, "%[(.*)].*%((.*)%)")
   return state.." "..perc.." "..data1
end

local mpd_timer
local function update_mpd()
   local mpd_st = get_mpd_status()
   statusd.inform("mpd", mpd_st)
   mpd_timer:set(settings.update_interval, update_mpd)
end

mpd_timer=statusd.create_timer()
update_mpd()

Reply via email to