【问题标题】:fetch the whole desktop/screen using gnome-extension?使用 gnome-extension 获取整个桌面/屏幕?
【发布时间】:2015-03-11 07:59:39
【问题描述】:

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

【问题讨论】:

  • 检查这个:roojs.org/seed/gir-1.2-gtk-3.0/seed/Gdk.Screen.html#expand 看起来与硬件有关!?我去看看
  • 不要使用那个网站:它已经完全过时了。它也指 Seed,一种基于 JavaScriptCore 的 JS 内省绑定。 GNOME Shell 是使用 GJS(基于 MozJs 的绑定)编写的,这意味着存在一些差异。另外,正如我所说,bot Seed 和那个网站不再维护,而且已经过时了。
  • 这已经过时了。但有些选项仍然有用。无论如何,Gdk.Screen 是否仍处于稳定版本中?它符合我的需要吗?

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


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 好的,所以没有办法让它活起来?我的意思是,我不能在我的桌面上使用屏幕截图来应用着色器。
  • 您现在实际上是在问不同的事情;当您提出问题时,您应该更明确地说明您想要实现的目标。如果要将着色器应用于窗口,则需要遍历场景图并找到所需的窗口 actor,并使用 ShaderEffect。如果您想将 ShaderEffect 应用到屏幕上的某个区域,您需要将着色器应用到舞台,并将区域坐标作为统一上传到着色器。
  • 感谢您回答帖子问题以及我在上面评论中的问题。
猜你喜欢
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2015-02-04
  • 2011-04-27
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多