我正在研究 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()
。
我正在研究 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()
。
您不能真正为此使用 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
是在保存屏幕截图时调用的函数。