使用gnome-extension获取整个桌面/屏幕?

时间:2015-03-11 07:59:40

标签: screen desktop clutter gnome-shell gnome-shell-extensions

我正在研究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()

1 个答案:

答案 0 :(得分: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是保存屏幕截图时调用的函数。