我试图表的可能性的一个补给。这将使所有呈现的图形呈现到完全透明的背景。

期望的效果是使网页内容没有任何背景在所有,它应该出现浮动在桌面(或无论是显示在后面的浏览器窗口)。

有人看到一个应用程序这样做?(我可以想到一些终端模拟器,可。) 如果任何人有工作了内部的(或者可能只壁虎?) 你认为这是可能做到这一点?


更新: 我已经认识到,Mac OS x仪表板的部件使用这种技术。因此,这必须是可能的。


更新2: 我已经编制了其在linux和注意的配置的选择包括:

--enable-dashboard-support
enable Dashboard support default=yes

我越来越近。任何人都可以帮忙吗?


更新3: 我继续找到参考这个员额在各种相关邮件列表。

有帮助吗?

解决方案

解决了!

通过正在进行的研究,淘论坛和源码存储库,我peiced在一起的必要步骤来完成这一使用仅libwebkit和标准,它桌面(任何你的桌面上的合成应该做)。

对于当前libwebkit(1.1.10-SVN)中,有一个Ubuntu PPA:

deb http://ppa.launchpad.net/webkit-team/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/webkit-team/ppa/ubuntu jaunty main

尽代码的推移,关键是呼叫 webkit_web_view_set_transparent.

当然系统在运行,它就应该有一个能够显卡(英特尔,能的,或者选)和运行的一个合成窗口管理(喜欢它).

最后,实际上看到的透明度,内容是视必须设置一个透明的背景,使用CSS3,否则它仍然是完全不透明的。

它是那么简单:

BODY { background-color: rgba(0,0,0,0); }

这里是全部抽样的简单的可能。浏览器应用程序,有透明度的支持:

#include <gtk/gtk.h>
#include <webkit/webkit.h>

static void destroy_cb(GtkWidget* widget, gpointer data) {
  gtk_main_quit();
}

int main(int argc, char* argv[]) {
  gtk_init(&argc, &argv);

  if(!g_thread_supported())
    g_thread_init(NULL);

  // Create a Window, set colormap to RGBA
  GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  GdkScreen *screen = gtk_widget_get_screen(window);
  GdkColormap *rgba = gdk_screen_get_rgba_colormap (screen);

  if (rgba && gdk_screen_is_composited (screen)) {
    gtk_widget_set_default_colormap(rgba);
    gtk_widget_set_colormap(GTK_WIDGET(window), rgba);
  }

  gtk_window_set_default_size(GTK_WINDOW(window), 800, 800);
  g_signal_connect(window, "destroy", G_CALLBACK(destroy_cb), NULL);

  // Optional: for dashboard style borderless windows
  gtk_window_set_decorated(GTK_WINDOW(window), FALSE);


  // Create a WebView, set it transparent, add it to the window
  WebKitWebView* web_view = web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
  webkit_web_view_set_transparent(web_view, TRUE);
  gtk_container_add (GTK_CONTAINER(window), GTK_WIDGET(web_view));

  // Load a default page
  webkit_web_view_load_uri(web_view, "http://stackoverflow.com/");

  // Show it and continue running until the window closes
  gtk_widget_grab_focus(GTK_WIDGET(web_view));
  gtk_widget_show_all(window);
  gtk_main();
  return 0;
}

Screenshot!

其他提示

回在Safari1.3和2,有一个隐藏的调试的菜单(援引通过终端: defaults write com.apple.Safari IncludeDebugMenu 1),其中包括"使用的透明窗口"选项。

不知道,如果这是一个其事或野生动物园的事情。

(在Safari3、调试菜单似乎已经取代"发展"的菜单(启用偏好>高级)不具有透明窗口选择。)

基本上你想要设置将斜角色的空间以发送到窗口的管理。显然唯一窗口的管理人员,支持成将能够利用这一优势。

你可能想谈谈的screenlet和它开发人员,他们应该能够帮助更多。

这一要点对我的作品,作为2013年,测试只有ubuntu:

https://gist.github.com/pouria-mellati/7771779

我有一个新的解决方案,这是真的很容易做到的,对于一个单一的截图。它的使用node.js 与phantom.js 图书馆。

  1. 安装node.js
  2. 运行'npm install-g phantomjs'在控制台/终端
  3. 保存如下script.js 并运行它从控制台'phantomjs script.js'

    var page = require('webpage').create();
    page.viewportSize = { width: 1920, height: 1500 };
    page.open("http://www.theWebYouWantToRender");
    page.onLoadFinished = function(status) {
        page.evaluate(function() {
            document.body.style.background = 'transparent';
        });
    
        page.render('render.png');
        phantom.exit();
    };
    
  4. 利润?:)享受
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top