1

我正在研究 gnome-extensions (javascript),我想知道是否可以获取/捕获桌面/屏幕对象以对其进行修改。

例如获取一个窗口,我使用以下代码:

let app= app_system.get_running();
for(i = 0; i < app.length; i++) {
    let window = app[i].get_windows();

有没有类似抢桌面的东西?

比如system.get_desktop()

4

1 回答 1

1

您不能真正为此使用 Clutter API;需要在合成器的帮助下在正确的时间截取屏幕截图,并且必须异步完成将数据保存到文件中,以避免阻塞合成器循环。

GNOME Shell 公开了一个用于截屏和截屏的 DBus API,这对外部服务很有用(例如,gnome-screenshot使用该 API,如果存在,而不是使用 X11 API)。由于您正在编写扩展程序,因此您可以使用相同的内部 API 通过导入Shell模块并使用其Shell.Screenshot类来截取屏幕截图:

const Shell = imports.gi.Shell;
const Lang = imports.lang;

let shooter = new Shell.Screenshot();
shooter.screenshot (filename, includePointer, onScreenshotComplete);

filename您要保存的文件的路径在哪里;includePointer是一个布尔值,控制是否应将指针放入屏幕截图中;并且onScreenshotComplete是在保存屏幕截图时调用的函数。

于 2015-03-12T23:07:41.560 回答