#!/usr/bin/env node var fs=require('fs'); var os=require('os'); var i3 = require('i3').createClient(); //var i3 = require('/usr/lib/node_modules/i3/index').createClient(); var cons=[]; var event = function() { let msg=arguments[0]; if (msg.change === 'focus') { if(cons[cons.length-1] !== msg.container.id) { let index=cons.indexOf(msg.container.id); if (index > -1) { cons.splice(index,1); } cons.push(msg.container.id); } } else if (msg.change === 'close') { cons.splice(cons.indexOf(msg.container.id),1); } else if (msg.change === 'new') { cons.push(msg.container.id); } }; var focus_last = function() { if (cons.length>1) { let command='[con_id="'+cons[cons.length-2].toString()+'"] focus'; //console.log(command); i3.command(command); } } process.on('SIGUSR2', focus_last); i3.on('window', event); fs.writeFile(os.tmpdir+"/focus_last.pid", process.pid, function(err) { if (err) { return console.log(err); } });