使用 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
是保存截图时调用的函数。
我正在研究 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
是保存截图时调用的函数。