- declare local _p9k_worker_reset in _p9k_worker_receive. it can be set when replies from worker are eval'd. initial value 0. 1 means reset-prompt is needed. 2 for _p9k_set_prompt + reset-prompt. - battery: when state or icon change, update with _p9k_set_prompt. make sure icons can be sent with `typset -p` in zsh 5.1. - ram: reduce precision to 2 digits. check if it makes sense for all segments that use the same function. - to avoid resetting prompt too often (e.g., when battery remaining time changes by 1 minute), can do the following: send the current state from master to worker; worker sends new state if it's different but it only triggers prompt reset if it's sufficiently different. this requires disabling implicit reset on every eval in _p9k_worker_receive. - implement fake gitstatus api on top of vcs_info (or plain git?) + worker and use it if there is no gitstatus. zmodload zsh/system () { emulate -L zsh unsetopt monitor setopt monitor [[ -o monitor ]] && echo monitor on typeset -gi fd (( fd )) && exec {fd}>&- sysopen -r -o cloexec -u fd <( local pid=$sysparams[pid] ( echo $sysparams[pid] $sysparams[ppid] $pid >>/tmp/log echo $pid sleep 2 & : <(sleep 3) sleep 4 sleep 5 ) &) sleep 1 ps axjf local pid IFS= read -r -u $fd pid kill -- -$pid ps axjf exec {fd}>&- fd=0 } _p9k_worker_await <(...) callback callback gets access to REPLY and STATUS; no prev