如何在Linux中更改窗口的位置时收到通知?

时间:2014-11-26 02:33:10

标签: linux x11

在Linux中,可以使用xwininfo来获取窗口的位置。当窗口的位置改变时,可以再次运行该命令。但是,将命令放在循环中并且始终运行它并不是非常有效。是否可以在更改位置时收到通知,以便更少地运行命令?

1 个答案:

答案 0 :(得分:2)

您需要侦听该窗口的ConfigureNotify事件。要订阅,请使用xlib XSelectInput(或低级别 - StructureNotify X11请求)设置ConfigureWindow

使用JavaScript / node-x11的示例(在窗口的位置或几何图形更改后立即退出)

var x11 = require('x11');

var wid = Number(process.argv[2]);

x11.createClient(function(err, display) {
  var X = display.client;
  X.ChangeWindowAttributes(wid, { eventMask: x11.eventMask.StructureNotify });
  X.on('event', function(ev) {
    if (ev.name === 'ConfigureNotify') {
      console.log(ev.x, ev.y, ev.width, ev.height);
      X.close();
    }
  });
});