Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict'
- process.title = 'adom'
- const { spawn } = require('child_process')
- const { assign: merge } = Object
- const shell = spawn('bash')
- let pendingRequest = m => m
- shell.stderr.pipe(process.stderr)
- shell.on('close', m => console.log(`BASH CLOSED OK BYE`))
- shell.stdout.on('data', buf => pendingRequest(buf.toString()))
- const tmux = cmd => {
- const req = new Promise(done => pendingRequest = done)
- shell.stdin.write(`tmux ${cmd}\n`)
- return req
- }
- const word = m => {
- const [ first, second ] = m.split('_')
- return first + second[0].toUpperCase() + second.slice(1)
- }
- const fmtVars = a => `'${a.map(m => `#{${m}}`).join(',')}'`
- const getVars = (...a) => tmux('display -p ' + fmtVars(a)).then(m => {
- const vars = m.replace(/\n/g, '').split(',')
- return a.reduce((obj, arg, ix) => merge(obj, { [ word(arg) ]: vars[ix] }), {})
- })
- //setInterval(m => {
- //shell.stdin.write('ls -l\n')
- //}, 2000)
- const main = async m => {
- console.time('vars')
- const res = await getVars(
- 'cursor_x',
- 'cursor_y',
- 'pane_index',
- 'pane_pid',
- 'pane_current_command',
- 'pane_height',
- 'pane_width',
- 'pane_top',
- 'pane_left',
- 'pane_bottom',
- 'pane_right'
- )
- console.timeEnd('vars')
- console.time('title')
- const paneTitle = await getVars('pane_title')
- console.timeEnd('title')
- console.log(res)
- }
- setInterval(m => {
- main().catch(e => console.log(e))
- }, 1000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement