Skip to content
jtg-gg edited this page Aug 13, 2014 · 13 revisions

Screen API requires node-webkit >= v0.10.2

Screen is an instance of EventEmitter object, and you're able to use Screen.on(...) to respond to native screen's events.

Screen is a singleton object, need to be initiated once by calling gui.Screen.Init()

screen has following structure:

screen {
  id : int,
  bounds : { 
    x : int,
    y : int,
    width : int,
    height : int
  },
  work_area : { 
    x : int,
    y : int,
    width : int,
    height : int
  },
  scaleFactor : float,
  isBuiltIn : bool
}

How to use it?

function ScreenToString(screen) {
  var string = "";
  string += "screen " + screen.id + " ";
  var rect = screen.bounds;
  string += "bound{" + rect.x + ", " + rect.y + ", " + rect.width + ", " + rect.height + "} ";
  rect = screen.work_area;
  string += "work_area{" + rect.x + ", " + rect.y + ", " + rect.width + ", " + rect.height + "} ";
  string += " scaleFactor: " + screen.scaleFactor;
  string += " isBuiltIn: " + screen.isBuiltIn;
  string += "<br>";
  return string;
}

//init must be called once during startup, before any function to gui.Screen can be called
gui.Screen.Init();
var string = "";
var screens = gui.Screen.screens;
// store all the screen information into string
for(var i=0; i<screens.length; i++) {
  string += ScreenToString(screens[i]);
}

var screenCB = {
  onDisplayBoundsChanged : function(screen) {
    var out = "OnDisplayBoundsChanged " + ScreenToString(screen);
  },

  onDisplayAdded : function(screen) {
    var out = "OnDisplayAdded " + ScreenToString(screen);
  },

  onDisplayRemoved : function(screen) {
    var out = "OnDisplayRemoved " + ScreenToString(screen);
  }
};

// listen to screen events
gui.Screen.on('displayBoundsChanged', screenCB.onDisplayBoundsChanged);
gui.Screen.on('displayAdded', screenCB.onDisplayAdded);
gui.Screen.on('displayRemoved', screenCB.onDisplayRemoved);
Clone this wiki locally