使用 gnome-extension 获取整个 desktop/screen?

fetch the whole desktop/screen using gnome-extension?

我正在研究 gnome 扩展 (javascript),我想知道是否可以 fetch/capture 一个 desktop/screen 对象对其应用修改。

例如获取 window 我使用此代码:

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

有类似抢桌面的吗?

system.get_desktop().

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

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

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

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

其中filename是您要保存的文件的路径; includePointer 是一个布尔值,控制指针是否应该进入屏幕截图; onScreenshotComplete 是保存截图时调用的函数。