我正在研究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()
。
答案 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
是保存屏幕截图时调用的函数。