Hi Anatoly--
I came over to node-webkit from AppJS which had the properties you mention. I wrote a generic windowing script for node-webkit to mimic most of its features from the window.frame object in AppJS. For window focus, in order to catch all events, I had to watch two different places.
1 - The node-webkit window object
2 - The global javascript window object
--------------
//Window Controls
window.frame = gui.Window.get();
//Additional properties for the window frame to match AppJS' window.frame.state
window.frame.state = 'normal';
<snip>
//Manage window active state for styling...
window.frame.on('blur', function(e){window.frame.active = false; jQuery(document.body).addClass('inactive');});
window.frame.on('focus', function(e){window.frame.active = true; jQuery(document.body).removeClass('inactive');});
window.addEventListener('blur', function(e){window.frame.active = false; jQuery(document.body).addClass('inactive');});
window.addEventListener('focus', function(e){window.frame.active = true; jQuery(document.body).removeClass('inactive');});
-------------
With this, I can check window.frame.active to see if the window is focused or not. I have not done extensive testing with it, but checking as I write this post on a frameless app, the window chrome I've created with HTML/CSS is being styled appropriately for what the active/inactive state should be when switching between both system windows and windows in my app.