为什么我设置xlib窗口背景透明失败?

2024-03-05

我使用以下代码获得透明窗口,但它返回黑色。我出了什么问题?并且,任何人都可以给我一个简单的例子来创建具有透明背景的窗口吗?谢谢!

#include <X11/Xlib.h>
#include <X11/Xutil.h>

int main(int argc, char* argv[])
{
    Display* display = XOpenDisplay(NULL);

    XVisualInfo vinfo;
    XMatchVisualInfo(display, DefaultScreen(display), 32, TrueColor, &vinfo);

    XSetWindowAttributes attr;
    attr.colormap = XCreateColormap(display, DefaultRootWindow(display), vinfo.visual, AllocNone);
    attr.border_pixel = 0;
    attr.background_pixel = 0;

    Window win = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 300, 200, 0, vinfo.depth, InputOutput, vinfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr);
    XSelectInput(display, win, StructureNotifyMask);
    GC gc = XCreateGC(display, win, 0, 0);

    Atom wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", 0);
    XSetWMProtocols(display, win, &wm_delete_window, 1);

    XMapWindow(display, win);

    int keep_running = 1;
    XEvent event;

    while (keep_running) {
        XNextEvent(display, &event);

        switch(event.type) {
            case ClientMessage:
                if (event.xclient.message_type == XInternAtom(display, "WM_PROTOCOLS", 1) && (Atom)event.xclient.data.l[0] == XInternAtom(display, "WM_DELETE_WINDOW", 1))
                    keep_running = 0;

                break;

            default:
                break;
        }
    }

    XDestroyWindow(display, win);
    XCloseDisplay(display);
    return 0;
}

你的代码对我来说效果很好:

kde:

openbox + xcompmgr:

您很可能没有运行复合管理器。尝试开始xcompmgr command

另请检查_NET_WM_CM_S0选择所有者 - 应该指向复合管理器创建的窗口 http://standards.freedesktop.org/wm-spec/1.4/ar01s08.html.

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    Display* display = XOpenDisplay(NULL);

    Atom cmAtom = XInternAtom(display, "_NET_WM_CM_S0", 0);
    Window cmOwner = XGetSelectionOwner(display, cmAtom);

    printf("Composite manager window: %i\n", cmOwner);

    XCloseDisplay(display);
    return 0;
}

Update:

尝试设置覆盖重定向以防止 WM 装饰遮盖您的窗口。

attr.border_pixel = 0;
attr.background_pixel = 0;
attr.override_redirect = 1; /* this line added */

Window win = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 300, 200, 0, 
vinfo.depth, InputOutput, vinfo.visual, 
CWColormap | CWBorderPixel | CWBackPixel | CWOverrideRedirect /* and this one*/, &attr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我设置xlib窗口背景透明失败? 的相关文章

  • C++ 中的可变参数函数声明中省略了逗号

    我习惯于这样声明可变参数函数 int f int n 读书时C 编程语言我发现书中的声明省略了逗号 int f int n the comma has been omitted 这个语法似乎是 C 特定的 因为当我尝试使用 C 编译器编译它
  • CRTP 能否完全取代小型设计的虚拟功能?

    Is CRTP http en wikipedia org wiki Curiously recurring template pattern有足够的能力智胜virtual功能齐全 我认为 CRTP 的唯一缺点是为每个重复模式生成大量代码
  • C 或 C++ 中是否有轻量级的多部分/表单数据解析器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑将多部分表单数据解析集成到 Web 服务器模块中 以便可以减轻后端 Web 应用程序 通常用动
  • FileStream - “不支持给定路径的格式”

    我正在尝试使用EPPlus http epplus codeplex com 在我们的 LAN 上保存电子表格 我正在使用一个FileStream对象执行此操作 但是每当我尝试实例化该对象时 我都会收到错误 The given path s
  • 使用请求和多处理时的奇怪问题

    请检查这个Python代码 usr bin env python import requests import multiprocessing from time import sleep time from requests import
  • 从网站保存嵌入的 pdf

    我正在编写一个小型 C 应用程序来管理供应商提供的 化学品 安全数据表 目前 我手动搜索该化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接 问题是我还有很多化学品需要处理 所以最好将过程自动化 例如 化学品的部件号如下 2710
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • 在 C 中初始化结构体的静态数组

    我正在用 C 实现一个纸牌游戏 纸牌有很多种类型 每种纸牌都有大量信息 包括一些需要单独编写与其关联的脚本的操作 给定这样的结构 并且我不确定我的语法是否适合函数指针 struct CARD int value int cost This
  • gcc总是做这种优化吗? (公共子表达式消除)

    作为示例 假设表达式sys gt pot atoms item gt P kind mass在循环内求值 循环只改变item 因此表达式可以简化为atoms item gt P kind mass通过将变量定义为atoms sys gt p
  • 在 C、C++ 中实现腐蚀、膨胀

    我对二值图像的膨胀是如何完成的有理论上的了解 AFAIK 如果我的 SE 结构元素 是这样的 0 1 1 1 在哪里 代表中心 我的图像 二进制是这样的 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0
  • 创建 .ICS 文件,添加到 Outlook

    我正在创建一个简单的应用程序 允许用户下载 ICS 文件 并将其导入到他们选择的日历应用程序 站点中 我对创建过程感到满意 但对在 Outlook 中打开它们有疑问 将使用C ASP NET进行开发 当我打开一个日历时 它会添加一个新日历
  • 串行端口轮询和数据处理

    我正在尝试通过微控制器从传感器的多个串行端口读取数据 每个串口将接收超过2000个测量值 每个测量值7个字节 全部为十六进制 而且他们同时开火 现在我正在从 4 个串行端口进行轮询 另外 我将每个测量值转换为字符串并将其附加到字符串构建器
  • ASP.NET 5 (vNext) - 配置

    我正在尝试学习 ASP NET 5 我在 Mac OS X 上使用它 此时 我有一个如下所示的 config json 文件 配置 json AppSettings Environment dev DbSettings AppConnect
  • 带有 epgm 的 ZeroMQ PUB/SUB 无法接收同一主机上进程发送的消息

    我的所有进程都有两个套接字 一个 PUB 和一个 SUB 并且它们都使用相同的多播地址和端口 例如 PUB 会这样做 绑定 epgm 239 192 1 1 5555 SUB 将执行以下操作 连接 epgm 239 192 1 1 5555
  • 在 Qt C++ 中使用多个键

    我正在构建 坦克 游戏 我使用关键事件在地图上运行我的坦克 实际上我当时只能使用一把钥匙 但我需要有能力去完成任务 同时向上和离开 这是我的单键事件代码 switch event gt key case Qt Key Up if ui gt
  • 使用 std::set 时重载运算符<

    这是我第一次使用 std set 容器 并且我对操作符 std less 遇到了问题 我声明该集合 std set
  • 从原始 URL 获取重定向 URL

    我的数据库中有一个表 其中包含一些网站的 URL 我必须打开这些 URL 并验证这些页面上的一些链接 问题是某些 URL 被重定向到其他 URL 对于这样的 URL 我的逻辑是失败的 有什么方法可以传递原始 URL 字符串并获取重定向的 U
  • C++ 中的 Ofstream 数组

    我想要在我的项目中使用 41 个输出文件来在其上写入文本 首先创建一个字符串数组list为了命名这些输出文件 然后我尝试定义一个 ofstream 对象数组并使用list命名它们 但我收到此错误 outfile cannot be used
  • C/C++ 中的最小二乘回归

    如何在 C C 中实现因子分析的最小二乘回归 the黄金标准是LAPACK http www netlib org lapack lug node27 html 你特别想要xGELS
  • 如何注销多个非当前用户的会员用户?

    我正在使用属于 MVC2 默认项目一部分的 MembershipProvider 我希望能够获取用户名列表 注销用户 并在需要时销毁他们的会话 我能想到的最接近的是 foreach string userName in UserNames

随机推荐

  • java中的equals方法

    我读过有关equals java中的方法 我听说它只是根据价值进行比较 但是为什么在下面的情况下它返回 false 其中值相同但类型不同 public class test public static void main String ar
  • Coq :> 符号

    这可能是非常微不足道的 但我找不到任何关于 gt 符号在 Coq 中含义的信息 有什么区别 U 类型 和 W gt 类型 这取决于符号出现的位置 例如 如果它位于记录声明内 它会指示 Coq 添加相应的记录投影作为强制 具体来说 假设我们有
  • 如何在打字稿中使用不同类型的通用键输入对象

    您将如何在打字稿中输入这些对象 我有一个特殊的 日期时间 键 即日期 其余键是数字 但我事先并不知道每个对象上将设置哪些键 示例值 type Metrics const example1 Metrics datetime new Date
  • Facebook FB.login 在 Safari 中有效,但在移动 Safari 中无效

    以下 FB Login 函数在桌面 Chrome FF 和 Safari 中运行良好 但在移动 Safari 中 在 iPhone 4S 上测试 它挂起并且不会返回 FB login 回调 当我使用 Safari 并将用户代理设置为 Saf
  • 检查是否有节点但没有文本

    我有以下 xml 片段 Case1
  • CSS菜单IE7问题

    菜单适用于所有主要浏览器 但在 IE7 中看起来有所不同 请参阅下面的屏幕截图 查看演示 http jsfiddle net FQLdm 6 http jsfiddle net FQLdm 6 当您将鼠标悬停在主页链接上时 您将看到一个子菜
  • 如何在 intelliJ-idea 中最好地调试 solr?

    如何在 intelliJ idea 中最好地调试 solr 哪条路容易 当向 solr 发布查询时 我想处理这个问题 您可以设置远程调试 在里面运行 调试配置 然后当使用默认的jetty 这个处于多核模式 启动solr时 传入 java a
  • 按第一个字母对字符串数组进行分组

    我面临这个挑战 其中包括 编写一个以字符串数组作为参数的函数 然后 按第一个字母对数组中的字符串进行分组 返回一个对象 其中包含带有代表第一个字母的键的属性 例如 应该返回 groupIt hola adios chao hemos acc
  • Android - EBADF(错误文件号)OnClickInfoMarker

    我搜索过相关问题但没有找到 我创建了一个显示图片 名称和地址的 InfoWindowMarker 然后我创建 OnInfoWindowClickListener 将显示所选标记的纬度和经度 但是当我单击信息窗口时 我收到此错误消息 Logc
  • Kotlin 中对象字段中具有上下文的 Android 类

    Kotlin 中的对象类中是否可以有一个具有上下文的属性 在 Android 中 将上下文相关对象放入静态字段中是一种不好的做法 Android studio 甚至会突出显示它并发出警告 这与 Kotlin 不同 Kotlin 没有警告 示
  • Pandas 数据框从指定列中选择具有最高值的整行

    我有一个数据框 我想返回包含指定列中最大值的完整行 假设我创建了一个像这样的数据框 df pd DataFrame np random randint 0 100 size 25 4 columns list ABCD 然后我会有一个像这样
  • Android 测试框架

    我是 Android 测试框架的新手 想了解现有测试框架之间的区别 Monkey CTS Instrumentation Framework 和 Robotium 仪器仪表是测试的一个类别 与单元测试相反 该框架提供了用于仪器测试的挂钩 但
  • 将散列捆绑 URL 插入静态 pug 模板

    我正在使用 Webpack pug html loader file loader 生成一堆静态 pug 模板 我还想开始添加散列捆绑文件名 但我无法弄清楚如何将散列文件名插入到我的所有哈巴狗模板中 这就是我当前在所有哈巴狗模板中引用我的包
  • 为什么是 SIGSEGV?

    为什么这段代码会抛出一个SIGSEGV http en wikipedia org wiki SIGSEGV int main unsigned long toshuffle 9765625 unsigned long i for i 0
  • 螺纹消毒剂可以用吗?

    我想尝试一下线程消毒剂 http code google com p data race test wiki ThreadSanitizer Using ThreadSanitizer http code google com p data
  • 无法使用 jinja2 将浮点数舍入为整数

    尝试让 jina2 模板执行舍入时遇到问题 我真的不介意发生什么 因为我的所有数字都是通过乘以小于 1 的小数得出的 例如0 31 然后乘以100 所以我有31 0 我想去掉小数位 但似乎没有任何作用 row score combined
  • 单击通知时如何打开“活动”

    我需要使用带有点击事件的通知 我有通知方法 但此方法不会打开我的活动 My code private void sendNotification String msg NotificationCompat Builder mBuilder
  • 批:管子是什么|用于?

    stackoverflow 用户大家好 我对批处理并不陌生 我只是从来没用过管道 批量 甚至在我阅读 ss64 com 上的参考资料后 我也不明白管道的用途 起初我以为它是 OR 运算符或其他东西 显然我现在知道它不是 我只知道它位于两行
  • 是否可以不关闭 StreamReader/StreamWriter 以保持底层流打开?

    我有一个类 它本质上包装了一个用于读 写的流 但该流预计由该类的使用者管理 为了便于使用 我使用 StreamReader 和 StreamWriter 类对流执行 I O 操作 通常我会把读者和作者包裹起来using块 但我想避免关闭读取
  • 为什么我设置xlib窗口背景透明失败?

    我使用以下代码获得透明窗口 但它返回黑色 我出了什么问题 并且 任何人都可以给我一个简单的例子来创建具有透明背景的窗口吗 谢谢 include