31 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // ChangeProperty/GetProperty / PropertyChange event example
 | |
| 
 | |
| var x11 = require('../../lib');
 | |
| var PropertyChange = x11.eventMask.PropertyChange;
 | |
| 
 | |
| x11.createClient(function(err, display) {
 | |
|     var X = display.client;
 | |
|     var root = display.screen[0].root;
 | |
|     var wid = X.AllocID();
 | |
|     X.CreateWindow(wid, root, 0, 0, 400, 300, 0, 0, 0, 0, { eventMask: PropertyChange });
 | |
|     X.MapWindow(wid);
 | |
| 
 | |
|     // mode: 0 replace, 1 prepend, 2 append
 | |
|     // mode, wid, name, type, format, data
 | |
|     X.ChangeProperty(0, wid, X.atoms.WM_NAME, X.atoms.STRING, 8, 'Hello, NodeJS');
 | |
|     var interval = setInterval(function() {
 | |
|            X.ChangeProperty(0, wid, X.atoms.WM_NAME, X.atoms.STRING, 8, 'Hello, NodeJS ' + new Date());
 | |
|     }, 1000);
 | |
| 
 | |
|     X.on('event', function(ev) {
 | |
|         X.GetProperty(0, wid, X.atoms.WM_NAME, X.atoms.STRING, 0, 10000000, function(err, prop) {
 | |
|             if (prop.type == X.atoms.STRING)
 | |
|                prop.data = prop.data.toString();
 | |
|             console.log(prop.data);
 | |
|         }); 
 | |
|     });
 | |
|     X.on('end', function() {
 | |
|         clearInterval(interval);
 | |
|     });
 | |
| });
 |