gpt4 book ai didi

webkit - 是否可以使用 WebKit 在清晰的背景上呈现网页内容?

转载 作者:行者123 更新时间:2023-12-03 08:41:31 30 4
gpt4 key购买 nike

我正在尝试评估 WebKit 补丁的可能性,该补丁将允许所有渲染的图形渲染到完全透明的背景上。

想要的效果是呈现完全没有任何背景的 Web 内容,它应该看起来漂浮在桌面上(或浏览器窗口后面显示的任何内容)。

有人见过这样的应用吗? (我能想到一些可以的终端仿真器。)如果有人在 WebKit 内部工作过(或者可能是 Gecko?)你认为有可能做到这一点吗?

更新:我开始意识到 Mac OSX 仪表板小部件使用这种精确的技术。所以,这一定是可能的。

更新 2:我在 linux 上编译了 WebKit 并注意到配置选项包括:

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

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

更新 3:我继续在各种相关邮件列表的帖子中找到对此的引用。
  • https://lists.webkit.org/pipermail/webkit-dev/2008-September/005019.html
  • https://lists.webkit.org/pipermail/webkit-dev/2009-June/008182.html
  • 最佳答案

    解决了!

    通过持续的研究、搜索论坛和源代码存储库,我拼凑了必要的步骤,仅使用 libwebkit 和标准的 compiz 桌面(任何具有合成功能的 Xorg 桌面都应该这样做)来完成此任务。

    对于当前的 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 .

    当然,您运行它的系统应该有一个功能强大的显卡(intel、radeon 或 nvidia)并运行一个合成窗口管理器(如 Compiz)。

    最后,要真正看到透明度,您正在查看的内容必须使用 CSS3 设置透明背景,否则它仍然是完全不透明的。

    它很简单:
    BODY { background-color: rgba(0,0,0,0); }

    这是最简单的 webkit 浏览器应用程序的完整示例,具有透明度支持:
    #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!

    关于webkit - 是否可以使用 WebKit 在清晰的背景上呈现网页内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324923/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com