Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. 'use strict'
  2.  
  3. process.title = 'adom'
  4.  
  5. const { spawn } = require('child_process')
  6. const { assign: merge } = Object
  7. const shell = spawn('bash')
  8. let pendingRequest = m => m
  9. shell.stderr.pipe(process.stderr)
  10. shell.on('close', m => console.log(`BASH CLOSED OK BYE`))
  11. shell.stdout.on('data', buf => pendingRequest(buf.toString()))
  12.  
  13. const tmux = cmd => {
  14. const req = new Promise(done => pendingRequest = done)
  15. shell.stdin.write(`tmux ${cmd}\n`)
  16. return req
  17. }
  18.  
  19. const word = m => {
  20. const [ first, second ] = m.split('_')
  21. return first + second[0].toUpperCase() + second.slice(1)
  22. }
  23.  
  24. const fmtVars = a => `'${a.map(m => `#{${m}}`).join(',')}'`
  25.  
  26. const getVars = (...a) => tmux('display -p ' + fmtVars(a)).then(m => {
  27. const vars = m.replace(/\n/g, '').split(',')
  28. return a.reduce((obj, arg, ix) => merge(obj, { [ word(arg) ]: vars[ix] }), {})
  29. })
  30.  
  31.  
  32. //setInterval(m => {
  33. //shell.stdin.write('ls -l\n')
  34. //}, 2000)
  35.  
  36. const main = async m => {
  37. console.time('vars')
  38. const res = await getVars(
  39. 'cursor_x',
  40. 'cursor_y',
  41. 'pane_index',
  42. 'pane_pid',
  43. 'pane_current_command',
  44. 'pane_height',
  45. 'pane_width',
  46. 'pane_top',
  47. 'pane_left',
  48. 'pane_bottom',
  49. 'pane_right'
  50. )
  51. console.timeEnd('vars')
  52.  
  53. console.time('title')
  54. const paneTitle = await getVars('pane_title')
  55. console.timeEnd('title')
  56.  
  57. console.log(res)
  58. }
  59.  
  60. setInterval(m => {
  61. main().catch(e => console.log(e))
  62. }, 1000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement