summaryrefslogblamecommitdiff
path: root/notes.txt
blob: 820543c7b1c3953600d9763ce0e0289caaa846cd (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                                                    

                                                                                                    
































                                                           
- 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