【星辰变】官网——2D次世代动作网游
进入官网
这里是副标题
这里是副标题
领取礼包
礼遇2022礼盒
兑换方法
前往炎京城车侯辕(313,325)处领取
这里是副标题
3分钟极速下载
DOWNLOAD
完整客户端
DOWNLOAD
赤阳
血魔
蓝央
清虚
阴月
炎魔
原掌门的突然飞升让紫阳门陷入动荡,危难之际,赤阳真人横空出世,以通天手段扭转乾坤,兼容并蓄,重建门墙。重建后的紫阳门正式改名为赤阳门。
血魔门修炼的正是魔道三大秘法之一的血魔魔道。能够传承此秘法的人相当稀少。不过真正的血魔战士都是敌人的梦魇,他们的出现就是死亡的宣告。
蓝央门的创始人是一对出生在腾龙大陆的孪生兄弟:哥哥天生驭火、弟弟点物成石。两兄弟在飞升时留下两座神塔,借助双塔神力修行的人们创立了蓝央门。
这些最早迎来天劫的道人们,便是清虚观的创立之祖。到现在,没人知道清虚观究竟有多久的历史,但无论时代如何变迁,清虚观的强大从来没有改变过。
第一次修真者大战,致使仙魔之间长期压抑的积怨集中爆发。大战过后,修魔者重新划分形成了众多的新势力,而这些势力之中又以阴月宫最为独特。
为了将血脉延续,炎魔与凡人女子通婚,以减轻血液中的“天罚之力”。渐渐地,炎魔的子孙恢复了常人的样子,获得重生的炎魔后裔也知感恩。
您已获得礼包激活码
复制
※ 请至游戏内炎京城车侯辕(313,325)处领取
关于qt缺少xcb问题终极解决办法_qt xcb-CSDN博客
关于qt缺少xcb问题终极解决办法
最新推荐文章于 2024-01-29 14:56:40 发布
我爱下午茶
最新推荐文章于 2024-01-29 14:56:40 发布
阅读量7.9w
收藏
191
点赞数
45
分类专栏:
学习工作
文章标签:
qt
qt移植
xcb
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_26106275/article/details/82778951
版权
学习工作
专栏收录该内容
12 篇文章
0 订阅
订阅专栏
关于qt缺少xcb问题终极解决办法
问题背景系统环境qt版本问题描述
解决过程走的弯路解决问题的关键
总结
问题背景
系统环境
中标麒麟,龙芯平台
qt版本
qt5.6
问题描述
原来的Qt程序是qt5.3.2版本,但是由于各种原因,升级成了qt5.6版本。 编译完成后放在其他机器上报错缺少xcb,报错如下:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.
Reinstalling the application may fix this problem.
解决过程
走的弯路
几乎尝试百度到的各种方式,无非就这么几种。 1、运行目录下添加platform文件夹,文件夹里放上libqxcb.so。 2、指定环境变量,具体什么变量记不清楚了。 3、在运行目录下,添加 libQt5Core.so libQt5Gui.so libQt5Network.so libQt5Widgets.so libQt5DBus.so libicuuc.so libicudata.so libicui18n.so
最终结果还是不行。
解决问题的关键
设置环境变量 export QT_DEBUG_PLUGINS=1 加了这个环境变量,让我看到了QT程序加载的过程,看到了详细的报错信息。 最后一部分是这样的:
Found metadata in lib /usr/lib64/qt5/plugins/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 329218
}
Found metadata in lib /opt/dky/SASClient/bin/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 329216
}
QLibraryPrivate::loadPlugin failed on "/usr/lib64/qt5/plugins/platforms/libqxcb.so" : "Cannot load library /usr/lib64/qt5/plugins/platforms/libqxcb.so: (/lib64/libQt5XcbQpa.so.5: symbol _ZNK11QFontEngine6handleEv, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.
Reinstalling the application may fix this problem.
看到问题没? /lib64/libQt5XcbQpa.so.5 这个库有问题。 于是我把libQt5XcbQpa.so,也放在运行目录下。 奇迹发生了,一切OK了!!!
总结
网上大部分搜到的解决办法,可能都是基于qt5.6之前的,但是qt5.6之后新加了几个库,所以网上的解决办法搜不到,所以才困扰了我这么久。 这次解决问题的关键在于,添加环境变量:export QT_DEBUG_PLUGINS=1 相信遇到此问题,利用这个方法,都可以很快的定位并解决问题了。 最后,祝大家好运!!!
优惠劵
我爱下午茶
关注
关注
45
点赞
踩
191
收藏
觉得还不错?
一键收藏
知道了
49
评论
关于qt缺少xcb问题终极解决办法
关于qt缺少xcb问题终极解决办法问题背景系统环境qt版本问题描述解决过程走的弯路解决问题的关键总结问题背景系统环境中标麒麟,龙芯平台qt版本qt5.6问题描述原来的Qt程序是qt5.3.2版本,但是由于各种原因,升级成了qt5.6版本。编译完成后放在其他机器上报错缺少xcb,报错如下:This application failed to start because it cou...
复制链接
扫一扫
专栏目录
Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
09-14
主要介绍了Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题,本文给大家分享解决方案,需要的朋友可以参考下
QT 安装libX11-xcb.so.1
07-01
安装Qt时候,显示缺少libX11-xcb.so.1,这个是安装源码文件
49 条评论
您还未登录,请先
登录
后发表或查看评论
Python qt.qpa.xcb: could not connect to display解决办法
smile_5me的博客
01-29
445
遇到问题:qt.qpa.xcb: could not connect to display。然后重新跑python程序,解决!
Linux关于qt缺少xcb问题解决办法
LEGENDA的博客
07-20
1960
Linux关于qt缺少xcb问题解决办法 , 包解决
ubuntu, debain, uos, deepin qt安装后打不开
07-10
解决下面报错
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
关于Qt 缺少xcb 解决办法
子非鱼的博客
11-15
9381
最近在ARM上编译Qt5.13 编译完之后出现这个错误
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.
Reinstalling the application may
【ARM开发】交叉编译Qt源码之(4)添加xcb支持
console_log的博客
02-16
5163
Debian 9
1、依赖
Qt源码添加xcb支持,依赖xcb-util-wm、xcb-util、xcb-util-image、xcb-util-keysyms、xcb-util-renderutil、libxkbcommon,其中libxkbcommon依赖libxml。
1.1、xcb-util-wm
下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/
#解压
tar -zxvf x
qt 打包程序到别的电脑上 缺少xcb错误 两个大坑
qq_45988470的博客
02-25
2619
This application failed to start because it could not find or load the
Qt platform plugin “xcb” in “”.
一般我们都知道,打包的时候要添加添加platform文件夹,文件夹里放上libqxcb.so。我这里遇到了两个另外的问题,
一
需添加libQt5XcbQpa.so.5,注意是就是我下面选中的文件,不要去复制快捷方式,具体的做法应该是把那个文件复制到你的程序所在目录去,并将libQt5XcbQpa.s.
kylin aarch-64位下编译qt-xcb 。
malihong1的专栏
01-05
1409
为了再kylin 64位下编译qt源码, 先编译xcb, 可以先参考一位博主的文章CentOS7 环境下交叉编译(银河麒麟)_lijing_sun的博客-CSDN博客_银河麒麟交叉编译
,按照步骤来,前面其他的还好编译,就是在编译xproto的时候一直有问题,提示类似无法猜测编译类型啥的, 后来使用如下命令,成功编译:
sudo ./configure --enable-static --build=arm-linux
sudo make
sudo make install
.
...
在Ubuntu上运行Qt发布的应用程序时遇到xcb问题,可以尝试以下几个步骤:
ylfdragon2005的博客
09-11
1263
可以尝试设置QT_QPA_PLATFORM_PLUGIN_PATH环境变量。如果以上步骤都无法解决xcb问题,则可能需要升级Qt库或重新安装Qt Creator。尝试安装libqt5xcbqpa插件。或者将其添加到~/.bashrc文件中(如果它不存在,请创建)。重新启动应用程序或系统,并尝试再次运行Qt应用程序。// 或者使用一下命令再尝试一下。
Qt+x11+xcb的例子
03-08
Qt+x11+xcb的例子, 详见http://blog.csdn.net/xgbing/article/details/79479380
解决安装QT时报的libX11-xcb.so.1 缺包问题
02-21
解决安装QT时报的libX11-xcb.so.1 缺包问题解决安装QT时报的libX11-xcb.so.1 缺包问题解决安装QT时报的libX11-xcb.so.1 缺包问题解决安装QT时报的libX11-xcb.so.1 缺包问题解决安装QT时报的libX11-xcb.so.1 缺包问题...
qt-5.9.9-gcc485-libc217-static-qt-xcb.tar.gz
04-09
./configure -confirm-license -opensource -debug-and-release -static -prefix ../build -no-opengl -nomake tests -no-compile-examples -nomake examples -qt-xcb ———————————————— 原文链接:...
x86上交叉编译的arm xcb插件,配合qt源码编译使用
最新发布
02-21
内含源码包、编译包、安装完成的库. ...如遇到qt程序在客户机报xcb错误,可以先交叉编译此文件夹的包,再在qt源码配置中启用xcb,并指定依赖库位置。请注意:交叉编译qt时,不能引用系统的库,指令集不一致
xcb-proto-1.13.tar.gz
09-30
xcb-proto-1.13.tar.gz的源码,交叉编译通过,亲测可用
Qt5.9.9 编译需要的 fontconfig、x11、xcb相关库
04-14
Qt5.9.9 编译需要的 fontconfig、x11、xcb相关库
qt-5.15.2-jetson-nano
05-09
jetson-nano,jetpack 是4.6.1版本。编译的qt5.15.2,带xcb, 带opengl, qml可用。 在板子上编译大概需要6小时,还会碰到各种问题,试错成本比较高。有需要的小伙伴可以省去大家编译的烦恼,节约时间。
银河麒麟V10系统+飞腾CPU交叉编译Qt5.15
09-29
一、准备工作 1、下载qt源码包 下载网址:...sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-d
麒麟v10 qt 缺少xcb
07-28
您好!对于麒麟v10 qt缺少xcb的问题,您可以尝试通过以下步骤解决:
1. 确认系统是否已经安装了xcb库。您可以打开终端,并输入以下命令进行检查:
```
dpkg -l | grep libxcb
```
2. 如果系统中没有安装xcb库,您可以通过以下命令进行安装:
```
sudo apt-get install libxcb1-dev
```
3. 安装完成后,重新编译和运行您的程序,看是否仍然缺少xcb库。
希望以上步骤能够帮助您解决问题!如果还有其他疑问,请随时提问。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
我爱下午茶
CSDN认证博客专家
CSDN认证企业博客
码龄9年
暂无认证
18
原创
13万+
周排名
43万+
总排名
12万+
访问
等级
813
积分
57
粉丝
91
获赞
82
评论
357
收藏
私信
关注
热门文章
关于qt缺少xcb问题终极解决办法
79674
基于Huffman树的文件压缩原理及C语言实现(一)
8800
基于Huffman树的文件压缩原理及C语言实现(二)
7295
BeyondCompare之忽略换行符(pc/mac/unix)比较文件
5741
各版本的QT源码下载地址
4774
分类专栏
数据结构
9篇
学习工作
12篇
最新评论
基于Huffman树的文件压缩原理及C语言实现(二)
m0_74947800:
可以压缩中英文混合的txt文本嘛
关于qt缺少xcb问题终极解决办法
西伯利亚猹:
那该怎么解决呢 我搜了好几天了
求解决阿大神
关于qt缺少xcb问题终极解决办法
weixin_39179052:
有用,成功解决了问题。
顺便题一下, 运行路径可以通过 readelf -ld ***.so 来查看
关于qt缺少xcb问题终极解决办法
Pom Pom Purin:
我也是这样的,你解决了吗
关于qt缺少xcb问题终极解决办法
我爱下午茶:
QObject::moveToThread: Current thread (0x5638f5ffdf40) is not the object's thread (0x5638fadd59b0).
Cannot move to target thread (0x5638f5ffdf40)
你这个线程不对,好像遇到过。记得是,界面加载动作不要放在自己启动的线程中。
大家在看
String类,StringBuilder类,StringBuffer类
159
【开源物联网平台】使用MQTT.fx模拟设备接入FastBee物联网平台
73
差分--算法思路解析
微软输入法无法输出中文的解决方案
Anthropic 发布最智能模型 Claude 3,超越 ChatGPT 4 !!!
315
最新文章
数据结构—图解排序算法+github代码实现(希尔、冒泡、快排、堆排序、归并排序等)
KMP算法与优化(串的模式匹配)
表达式的二叉树表示
2020年3篇
2019年1篇
2018年3篇
2017年2篇
2016年1篇
2015年11篇
目录
目录
分类专栏
数据结构
9篇
学习工作
12篇
目录
评论 49
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
xcb
xcb
Edit
Page History
Repo Info
Introduction
The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility.
News
August 2023: xcb-proto 1.16 and libxcb 1.16 were released. In addition to fixing bugs, this adds support for DPMS 1.2 & Present 1.3.
May 2022: xcb-proto 1.15 and libxcb 1.15 were released. In addition to fixing bugs, this adds support for XInput 2.4.
February 2020: xcb-proto 1.14 and libxcb 1.14 were released. In addition to fixing bugs, this brings compatibility with check >= 0.13 and adds xcb_total_read() and xcb_total_written() APIs.
March 2018: xcb-proto 1.13 and libxcb 1.13 were released. In addition to fixing bugs, this enables new and completed versions of some protocols.
May 2016: xcb-proto 1.12 and libxcb 1.12 were released.
September 2015: libxcb 1.11.1 was released. This fixes some thread-related issues and adds 64-bit versions of some APIs.
August 2014: xcb-proto 1.11 and libxcb 1.11 were released. This is again mostly a bug-fix release.
December 2013: xcb-proto 1.10 and libxcb 1.10 were released, this time mainly fixing some API and ABI issues introduced with libxcb 1.9.2. See the linked announcements for more details.
May 2013: libxcb 1.9.1 was released, fixing the python code to work with Python 3, and fixing an integer overflow in the read_packet() function (CVE-2013-2064)
October 2012: New releases of the XCB packages have been published, including autogenerated man pages for XCB API's - see the linked announcements for full details of what's changed in each one:
xcb-proto 1.8
libxcb 1.9
Download
You can obtain released versions of XCB from http://xcb.freedesktop.org/dist.
Follow the instructions from the developer's guide to build, except that you can use released versions of the dependencies, and you don't need git, automake, autoconf, or libtool.
Development
If you wish to work on XCB, please read the developer's guide.
Mailing list: Discussion of XCB and Xlib/XCB is through the XCB mailing list.
IRC: XCB developers also hang out on IRC, and have occasional meetings.
Of course, there's still a lot to do .
Documentation
The XCB API is documented. There is also a tutorial and some random notes.
People wanting to implement higher level applications can use xcb-util.
XCB is built atop an XML description of the X core protocol and common extension protocols called XML/XCB. This protocol can be used in other interesting ways. Documentation of the X Window System protocol is also available at X.org's website, and can be used in combination with XCB documentation as XCB functions largely reflect the protocol.
To aid in porting applications, you can configure Xlib to use XCB for the transport layer. We call this Xlib/XCB.
There is automatically-generated documentation for the XCB protocol bindings.
The Windows (32 bit) port of XCB will be merged into the main code base soon. You can read more on that here.
Miscellaneous
The XCB logo
The XCB project has a long history, during which it has produced many academic publications. Various projects have adopted XCB.
Links:
XCBDevelopmentPlan
XCBToDo
XcbApi
XmlXcb
usingxcb
Last edited Sat Mar 2 22:47:09 2024
XCB - 维基百科,自由的百科全书
跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页分类索引特色内容新闻动态最近更改随机条目资助维基百科
帮助
帮助维基社群方针与指引互助客栈知识问答字词转换IRC即时聊天联络我们关于维基百科
语言
语言链接位于页面顶部,标题的另一侧。
搜索
搜索
创建账号
登录
个人工具
创建账号 登录
未登录编辑者的页面 了解详情
贡献讨论
目录
移至侧栏
隐藏
序言
1理念
2示例
3注释
4外部链接
开关目录
XCB
7种语言
DeutschEnglishEspañolFrançais日本語한국어Русский
编辑链接
条目讨论
大陆简体
不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體
阅读编辑查看历史
工具
工具
移至侧栏
隐藏
操作
阅读编辑查看历史
常规
链入页面相关更改上传文件特殊页面固定链接页面信息引用本页获取短URL下载二维码维基数据项目
打印/导出
下载为PDF可打印版
在其他项目中
维基共享资源
维基百科,自由的百科全书
XCB开发者Jamey Sharp、Josh Triplett、Bart Massey当前版本1.16.1 (2024年3月2日;稳定版本)[1]
源代码库gitlab.freedesktop.org/xorg/lib/libxcb
操作系统POSIX类型X Window核心协议开发函式库许可协议MIT许可证网站xcb.freedesktop.org
XCB(X C Binding)是一套以 C语言撰写,并用于绑定(Binding) X Window System之上。XCB是一套免费的软件,目标在于取代 Xlib。这个计划开始于2001年,作者是Bart Massey.
理念[编辑]
XCB 主要目标是:
减轻函式库的大小与复杂度;
可直接访问 X Window核心协议。
示例[编辑]
/* Simple XCB application drawing a box in a window */
#include
#include
#include
int main()
{
xcb_connection_t *c;
xcb_screen_t *s;
xcb_window_t w;
xcb_gcontext_t g;
xcb_generic_event_t *e;
uint32_t mask;
uint32_t values[2];
int done = 0;
xcb_rectangle_t r = { 20, 20, 60, 60 };
/* open connection with the server */
c = xcb_connect(NULL,NULL);
if (xcb_connection_has_error(c)) {
printf("Cannot open display\n");
exit(1);
}
/* get the first screen */
s = xcb_setup_roots_iterator( xcb_get_setup(c) ).data;
/* create black graphics context */
g = xcb_generate_id(c);
w = s->root;
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
values[0] = s->black_pixel;
values[1] = 0;
xcb_create_gc(c, g, w, mask, values);
/* create window */
w = xcb_generate_id(c);
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = s->white_pixel;
values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS;
xcb_create_window(c, s->root_depth, w, s->root,
10, 10, 100, 100, 1,
XCB_WINDOW_CLASS_INPUT_OUTPUT, s->root_visual,
mask, values);
/* map (show) the window */
xcb_map_window(c, w);
xcb_flush(c);
/* event loop */
while (!done && (e = xcb_wait_for_event(c))) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: /* draw or redraw the window */
xcb_poly_fill_rectangle(c, w, g, 1, &r);
xcb_flush(c);
break;
case XCB_KEY_PRESS: /* exit on key press */
done = 1;
break;
}
free(e);
}
/* close connection to server */
xcb_disconnect(c);
return 0;
}
注释[编辑]
^ libxcb-1.16.1.
^ [ANNOUNCE] libxcb 1.14. xcb (邮件列表). 2020-02-22 [2020-02-22]. (原始内容存档于2021-02-26).
外部链接[编辑]
XCB wiki (页面存档备份,存于互联网档案馆) (freedesktop.org)
XCB API reference (页面存档备份,存于互联网档案馆)
Further publications (页面存档备份,存于互联网档案馆)
查论编Freedesktop.org托管的自由及开放源代码软件项目操作系统组件音频
PulseAudio
PipeWire
图形
Compiz
DRI(英语:Direct Rendering Infrastructure)
Enchant(英语:Enchant (software))
nouveau
Plymouth
Wayland
X.Org Server
Glamor
Xephyr(英语:Xephyr)
其它
Avahi(英语:Avahi (software))
D-Bus
Flatpak
kmscon(英语:kmscon)
luit(英语:luit)
PackageKit
pkg-config
Systemd
函式库
AppStream
cairo
Fontconfig
GStreamer
Mesa 3D
fprint(英语:fprint)
HarfBuzz
Pango
Poppler
Swfdec(英语:Swfdec)
Video Acceleration API(英语:Video Acceleration API)
XCB
Xft(英语:Xft)
软件框架
CppUnit(英语:CppUnit)
Galago(英语:Galago (software))
GeoClue(英语:GeoClue)
Open Collaboration Services(英语:Open Collaboration Services)
Telepathy
会议
Create Project(英语:Create Project)
波特兰计划
查论编X窗口系统架构
核心协议
X Window选择(英语:X Window selection)
X Toolkit Intrinsics
X窗口授权(英语:X Window authorization)
X11颜色名称(英语:X11 color names)
X输入法
Wayland
扩展
X图像扩展(英语:X Image Extension)
X键盘扩展(英语:X keyboard extension)
RandR
X渲染扩展(英语:X Rendering Extension)
形状扩展(英语:Shape extension)
共享内存扩展(英语:MIT-SHM)
X显示管理器控制协议(英语:XDM (display manager))
X视频扩展(英语:X video extension)
X视频运动补偿(英语:X-Video Motion Compensation)
AIGLX(英语:AIGLX)
GLX(英语:GLX)
多指针X(英语:Multi-Pointer X)
Display PostScript
合成(英语:Composite (graphics))
Xinerama(英语:Xinerama)
组件和值得注意的实现显示服务器(英语:display server)
X.Org Server
Cygwin/X
X-Win32(英语:X-Win32)
X386(英语:X386)
XFree86
XGGI(英语:XGGI)
XDarwin(英语:XDarwin)
Xming
Xsgi(英语:Xsgi)
Xsun(英语:Xsun)
Xgl
Xnest(英语:Xnest)
Xephyr(英语:Xephyr)
XQuartz
XWayland
客户端库
Xlib
XCB
显示管理器会话管理器
GNOME显示管理器
KDM
SDDM(英语:Simple Desktop Display Manager)
XDM(英语:XDM (display manager))
LightDM
LXDM
SLiM(英语:SLiM)
Entrance(英语:Entrance (display manager))
WDM
X视窗管理器合成(英语:compositing window manager)
Compiz
KWin
Metacity
Mutter
Xfwm
平铺(英语:tiling window manager)
awesome
dwm
i3
Ion(英语:Ion (window manager))
PWM(英语:PWM (window manager))
ratpoison
wmii(英语:wmii)
xmonad
堆叠(英语:stacking window manager)
AfterStep(英语:AfterStep)
amiwm(英语:amiwm)
Blackbox
cwm(英语:cwm (window manager))
Enlightenment
Fluxbox
FVWM
IceWM
JWM
Matchbox(英语:Matchbox (window manager))
MWM
Openbox
Sawfish
twm
Window Maker
标准
ICCCM
EWMH
XDS
freedesktop.org
应用程序
xcalc
xclock
xedit
xload
xterm
xeyes
桌面环境(英语:Comparison of X Window System desktop environments)
取自“https://zh.wikipedia.org/w/index.php?title=XCB&oldid=71704018”
分类:X Window系统隐藏分类:使用未知软件信息框参数的页面
本页面最后修订于2022年5月19日 (星期四) 01:16。
本站的全部文字在知识共享 署名-相同方式共享 4.0协议之条款下提供,附加条款亦可能应用。(请参阅使用条款)
Wikipedia®和维基百科标志是维基媒体基金会的注册商标;维基™是维基媒体基金会的商标。
维基媒体基金会是按美国国内税收法501(c)(3)登记的非营利慈善机构。
隐私政策
关于维基百科
免责声明
行为准则
开发者
统计
Cookie声明
手机版视图
开关有限宽度模式
tutorial
xcb/
tutorial
Edit
Page History
Repo Info
Tutorial based off original here, which in turn was based off an Xlib tutorial by Guy Keren.
After reading this page, read these pages (in this order):
Basic Windows and Drawing
Events
Text and Fonts
Window Context and Manipulation
Colors and PixMaps
Mouse Cursors
Xlib to XCB Translation Guide
Introduction
This tutorial is intended for people who want to program with the XCB library. Keep in mind that XCB, like the Xlib library, isn't what most programmers wanting to write X applications are looking for. Rather, most application developers will want to use a much higher-level GUI toolkit, like Motif, LessTiff, GTK, Qt, EWL, or ETK or perhaps use the higher-level drawing library Cairo. However, the basics of XCB are not all that complicated, and knowing about the layers those other libraries are built on top of is not a bad idea.
After reading this tutorial, one should be able to write very simple graphical programs but not write programs with decent user interfaces (at least easily). For real applications, the previously mentioned libraries are much more appropriate.
What is XCB and why does it exist?
XCB ("X C Binding") is an low-level API for the X window server. XCB is an alternative to Xlib, which has been the standard C binding for the X Window System protocol for many years now. Xlib is an excellent piece of work, but there are applications for which it is not ideal, for example:
Small platforms: Xlib is a large piece of code, and it's difficult to make it smaller
Latency hiding: Xlib requests requiring a reply are effectively synchronous: they block until the reply appears, whether the result is needed immediately or not.
Direct access to the protocol: Xlib does quite a bit of caching, layering, and similar optimizations. While this is normally a feature, it makes it difficult to simply emit specified X protocol requests and process specific responses.
Threaded applications: While Xlib does attempt to support multithreading, the API makes this difficult and error-prone.
New extensions: The Xlib infrastructure provides limited support for the new creation of X extension client side code.
XCB has been designed to solve the above problems and thus provide a base for:
Toolkit implementation.
Direct protocol-level programming.
Lightweight emulation of commonly used portions of the Xlib API.
The client and server model of the X window system
The X Window System was developed with one major goal: flexibility. The idea was that the way things look is one thing, but the way things work is another matter. Thus, the lower levels provide the tools required to draw windows, handle user input, allow drawing graphics using colors (or black and white screens), etc. To this point, a decision was made to separate the system into two parts. A client that decides what to do, and a server that actually draws on the screen and reads user input in order to send it to the client for processing.
This model is the complete opposite of what is used to when dealing with clients and servers. In our case, the user sits near the machine controlled by the server, while the client might be running on a remote machine. The server controls the screens, mouse and keyboard. A client may connect to the server, request that it draws a window (or several windows), and ask the server to send it any input the user sends to these windows. Thus, several clients may connect to a single X server (one might be running mail software, one running a WWW browser, etc). When input is sent by the user to some window, the server sends a message to the client controlling this window for processing. The client decides what to do with this input, and sends the server requests for drawing in the window.
The whole session is carried out using the X message protocol. This protocol was originally carried over the TCP/IP protocol suite, allowing the client to run on any machine connected to the same network that the server is. Later on, the X servers were extended to allow clients running on the local machine with more optimized access to the server (note that an X protocol message may be several hundreds of KB in size), such as using shared memory, or using Unix domain sockets (a method for creating a logical channel on a Unix system between two processes).
GUI programming: the asynchronous model
Unlike conventional computer programs, that carry some serial nature, a GUI program usually uses an asynchronous programming model, also known as "event-driven programming". This means that that program mostly sits idle, waiting for events sent by the X server, and then acts upon these events. An event may say "The user pressed the 1st button mouse in spot (x,y)", or "The window you control needs to be redrawn". In order for the program to be responsive to the user input, as well as to refresh requests, it needs to handle each event in a rather short period of time (e.g. less that 200 milliseconds, as a rule of thumb).
This also implies that the program may not perform operations that might take a long time while handling an event (such as opening a network connection to some remote server, or connecting to a database server, or even performing a long file copy operation). Instead, it needs to perform all these operations in an asynchronous manner. This may be done by using various asynchronous models to perform the longish operations, or by performing them in a different process or thread.
So the way a GUI program looks is something like that:
Perform initialization routines.
Connect to the X server.
Perform X-related initialization.
While not finished:
Receive the next event from the X server.
Handle the event, possibly sending various drawing requests to the X server.
If the event was a quit message, exit the loop.
Close down the connection to the X server.
Perform cleanup operations.
Basic XCB notions
XCB has been created to eliminate the need for programs to actually implement the X protocol layer. This library gives a program a very low-level access to any X server. Since the protocol is standardized, a client using any implementation of XCB may talk with any X server (the same occurs for Xlib, of course). We now give a brief description of the basic XCB notions. They will be detailed later.
1. The X Connection
The major notion of using XCB is the X Connection. This is a structure representing the connection we have open with a given X server. It hides a queue of messages coming from the server, and a queue of pending requests that our client intends to send to the server. In XCB, this structure is named 'xcb_connection_t'. It is analogous to the Xlib Display. When we open a connection to an X server, the library returns a pointer to such a structure. Later, we supply this pointer to any XCB function that should send messages to the X server or receive messages from this server.
2. Requests and replies: the Xlib killers
To ask for information from the X server, we have to make a request and ask for a reply. With Xlib, these two tasks are automatically done: Xlib locks the system, sends a request, waits for a reply from the X server and unlocks. This is annoying, especially if one makes a lot of requests to the X server. Indeed, Xlib has to wait for the end of a reply before asking for the next request (because of the locks that Xlib sends). For example, here is a time-line of N=4 requests/replies with Xlib, with a round-trip latency T_round_trip that is 5 times long as the time required to write or read a request/reply (T_write/T_read):
W-----RW-----RW-----RW-----R
* W: Writing request
* -: Stalled, waiting for data
* R: Reading reply
The total time is N * (T_write + T_round_trip + T_read).
With XCB, we can suppress most of the round-trips as the requests and the replies are not locked. We usually send a request, then XCB returns to us a cookie, which is an identifier. Then, later, we ask for a reply using this cookie and XCB returns a pointer to that reply. Hence, with XCB, we can send a lot of requests, and later in the program, ask for all the replies when we need them. Here is the time-line for 4 requests/replies when we use this property of XCB:
WWWW--RRRR
The total time is N * T_write + max (0, T_round_trip - (N-1) * T_write) + N * T_read. Which can be considerably faster than all those Xlib round-trips.
Here is a program that computes the time to create 500 atoms with Xlib and XCB. It shows the Xlib way, the bad XCB way (which is similar to Xlib) and the good XCB way. On my computer, XCB is 25 times faster than Xlib. On another random machine XCB has been observed to be up to 117 times faster than Xlib, on rare occasions.
To further compare Xlib to XCB, there's a XInternAtoms routine. It's the Xlib method to request all the atoms in an array at one time to help hide the latency. Mostly the good Xlib time takes twice the time as the good XCB time. It also highlights the complexity of using XCB, 3 simple statements for Xlib vs 9 statements including two loops for XCB. If this simple test was expanded beyond requesting Atoms, XCB would allow submitting all the various requests at one time, Xlib wouldn't.
/* It's a good idea to paste this and other long code examples
into a text editor for easier reading */
#include
#include
#include
#include
#include
#include
#define NUM_NAMES 500
/*
NOTE: For concision, we're going to be cheesy and use arrays where real code
would use points and memory allocation.s
*/
#ifndef __GNUC__
char* strdup(const char* s) {
int n = strlen(s) + 1;
char *dup = malloc(n);
if(dup)
strcpy(dup, s);
return dup;
}
#endif
/*
return interval of time (uses time.h)
*/
double
get_time (void) {
struct timeval timev;
gettimeofday(&timev, NULL);
return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
}
/*
*/
void
useXlib (char **names,
Display *display ) {
Atom atoms[NUM_NAMES];
for (int i = 0; i < NUM_NAMES; ++i) {
atoms[i] = XInternAtom(display, names[i], 0);
}
}
/*
Request all atoms at once.
*/
void
useXlibProperly (char **names,
Display *display ) {
Atom atoms[NUM_NAMES];
if(!XInternAtoms(display, names, NUM_NAMES, 0, atoms))
fprintf(stderr, "XInternAtoms failed\n");
}
/*
*/
void
useXCBPoorly (char **names,
xcb_connection_t *connection ) {
xcb_atom_t atoms[NUM_NAMES];
// in this bad use of xcb, we use the cookie immediately after posting the request with xcb_intern_atom
for (int i = 0; i < NUM_NAMES; ++i) {
/* make request */
xcb_intern_atom_cookie_t cookie = xcb_intern_atom (connection,
0,
strlen(names[i]),
names[i] );
/* get response */
xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply (connection,
cookie,
NULL ); // normally a pointer to receive error, but we'll just ignore error handling
if (reply) {
atoms[i] = reply->atom;
free (reply);
}
}
// now we have our atoms (replies), but this is just a demo, so we do nothing with them
}
/*
*/
void
useXCBProperly (char **names,
xcb_connection_t *connection ) {
xcb_atom_t atoms[NUM_NAMES];
xcb_intern_atom_cookie_t cookies[NUM_NAMES];
// in this good example, we make all our requests before checking for
// replies because it's best to queue requests when we have many at once
/* make requests */
for (int i = 0; i < NUM_NAMES; ++i) {
cookies[i] = xcb_intern_atom (connection,
0,
strlen (names[i]),
names[i] );
}
/* get responses */
for (int i = 0; i < NUM_NAMES; ++i) {
xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply (connection,
cookies[i],
NULL ); // normally a pointer to receive errors, but we'll just ignore error handling
if (reply) {
atoms[i] = reply->atom;
free (reply);
}
}
// now we have our atoms (replies), but this is just a demo, so we do nothing with them
}
int
main () {
/* setup names for tests */
char (**names) = malloc(NUM_NAMES*sizeof(*names));
// init names to "NAME0", "NAME1", "NAME2" ... and so on
for (int i = 0; i < NUM_NAMES; ++i) {
char buf[100];
sprintf (buf, "NAME%d", i);
names[i] = strdup (buf);
}
/* do tests */
double start, XlibTime, XlibGoodTime, XCBBadTime, XCBGoodTime;
/* test Xlib */
Display *display = XOpenDisplay (NULL);
start = get_time ();
useXlib (names, display);
XlibTime = get_time () - start;
start = get_time ();
useXlibProperly (names, display);
XlibGoodTime = get_time () - start;
XCloseDisplay (display);
/* test XCB */
xcb_connection_t *connection = xcb_connect (NULL, NULL);
start = get_time ();
useXCBPoorly (names, connection);
XCBBadTime = get_time () - start;
start = get_time ();
useXCBProperly (names, connection);
XCBGoodTime = get_time () - start;
xcb_disconnect (connection);
/* report times */
printf ("Bad Xlib time : %f\n", XlibTime);
printf ("Good Xlib time : %f\n", XlibGoodTime);
printf ("Bad xcb time : %f\n", XCBBadTime);
printf ("Good xcb time : %f\n", XCBGoodTime);
printf ("ratio of good xcb time to bad xcb time: %f\n", XCBGoodTime / XCBBadTime);
printf ("ratio of Xlib time to good xcb time: %f\n", XlibTime / XCBGoodTime);
printf ("ratio of good Xlib time to bad Xlib time: %f\n", XlibGoodTime / XlibTime);
return 0;
}
3. The Graphics Context
When we perform various drawing operations (graphics, text, etc), we may specify various options for controlling how the data will be drawn (what foreground and background colors to use, how line edges will be connected, what font to use when drawing some text, etc). In order to avoid the need to supply hundreds of parameters to each drawing function, a graphical context structure is used. We set the various drawing options in this structure, and then we pass a pointer to this structure to any drawing routines. This is rather handy, as we often need to perform several drawing requests with the same options. Thus, we would initialize a graphical context, set the desired options, and pass this structure to all drawing functions.
Note that graphic contexts have no client-side structure in XCB, they're just XIDs. Xlib has a client-side structure because it caches the GC contents so it can avoid making redundant requests, but of course XCB doesn't do that.
4. Events
A structure is used to pass events received from the X server. XCB supports exactly the events specified in the protocol (33 events). This structure contains the type of event received (including a bit for whether it came from the server or another client), as well as the data associated with the event (e.g. position on the screen where the event was generated, mouse button associated with the event, region of the screen associated with a "redraw" event, etc). The way to read the event's data depends on the event type.
Using XCB-based programs
1. Installing XCB
TODO: These instructions are out of date. Just reference the main XCB page so we don't have to maintain these instructions in more than one place.
To build XCB from source, you need to have installed at least:
pkgconfig 0.15.0
automake 1.7
autoconf 2.50
check
xsltproc
gperf 3.0.1
You have to checkout in the git repository the following modules:
Xau from xlibs
xcb-proto
xcb
Note that xcb-proto exists only to install header files, so typing 'make' or 'make all' will produce the message "Nothing to be done for 'all'". That's normal.
2. Compiling XCB-based programs
Compiling XCB-based programs requires linking them with the XCB library. This is easily done thanks to pkgconfig:
gcc -Wall prog.c -o prog `pkg-config --cflags --libs xcb`
or simply :
gcc -Wall prog.c -lxcb
Opening and closing the connection to an X server
An X program first needs to open the connection to the X server, using xcb_connect():
xcb_connection_t *xcb_connect (const char *displayname, // if NULL, uses the DISPLAY environment variable
int *screenp ); // returns the screen number of the connection; can provide NULL if you don't care
To close a connection, it suffices to use:
void xcb_disconnect (xcb_connection_t *c);
So for example:
#include
...
xcb_connection_t *connection = xcb_connect (NULL, NULL);
xcb_disconnect (connection);
Comparison Xlib/XCB:
XOpenDisplay () => xcb_connect ()
XCloseDisplay () => xcb_disconnect ()
Checking basic information about a connection
Once we have opened a connection to an X server, we should check some basic information about it: what screens it has, what is the size (width and height) of the screen, how many colors it supports (black and white ? grey scale ?, 256 colors ? more ?), and so on. We get such information from the xcbscreent structure:
typedef struct {
xcb_window_t root;
xcb_colormap_t default_colormap;
uint32_t white_pixel;
uint32_t black_pixel;
uint32_t current_input_masks;
uint16_t width_in_pixels;
uint16_t height_in_pixels;
uint16_t width_in_millimeters;
uint16_t height_in_millimeters;
uint16_t min_installed_maps;
uint16_t max_installed_maps;
xcb_visualid_t root_visual;
uint8_t backing_stores;
uint8_t save_unders;
uint8_t root_depth;
uint8_t allowed_depths_len;
} xcb_screen_t;
We could retrieve the first screen of the connection by using the following function:
xcb_screen_iterator_t xcb_setup_roots_iterator (xcb_setup_t *R);
Here is a small program that shows how to use this function:
#include
#include
#include
int
main ()
{
/* Open the connection to the X server. Use the DISPLAY environment variable */
int i, screenNum;
xcb_connection_t *connection = xcb_connect (NULL, &screenNum);
/* Get the screen whose number is screenNum */
const xcb_setup_t *setup = xcb_get_setup (connection);
xcb_screen_iterator_t iter = xcb_setup_roots_iterator (setup);
// we want the screen at index screenNum of the iterator
for (i = 0; i < screenNum; ++i) {
xcb_screen_next (&iter);
}
xcb_screen_t *screen = iter.data;
/* report */
printf ("\n");
printf ("Informations of screen %"PRIu32":\n", screen->root);
printf (" width.........: %"PRIu16"\n", screen->width_in_pixels);
printf (" height........: %"PRIu16"\n", screen->height_in_pixels);
printf (" white pixel...: %"PRIu32"\n", screen->white_pixel);
printf (" black pixel...: %"PRIu32"\n", screen->black_pixel);
printf ("\n");
return 0;
}
The window hierarchy
TODO
Links:
index
Last edited Sat 29 Mar 2014 03:59:04 PM UTC
XCB - Wikipedia
Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main pageContentsCurrent eventsRandom articleAbout WikipediaContact usDonate
Contribute
HelpLearn to editCommunity portalRecent changesUpload file
Languages
Language links are at the top of the page.
Search
Search
Create account
Log in
Personal tools
Create account Log in
Pages for logged out editors learn more
ContributionsTalk
Contents
move to sidebar
hide
(Top)
1Overview
Toggle Overview subsection
1.1Xlib compatibility
2Example
3Protocol description
4Logo
5Other language bindings
6Notes
7References
8External links
Toggle the table of contents
XCB
7 languages
DeutschEspañolFrançais한국어日本語Русский中文
Edit links
ArticleTalk
English
ReadEditView history
Tools
Tools
move to sidebar
hide
Actions
ReadEditView history
General
What links hereRelated changesUpload fileSpecial pagesPermanent linkPage informationCite this pageGet shortened URLDownload QR codeWikidata item
Print/export
Download as PDFPrintable version
In other projects
Wikimedia Commons
From Wikipedia, the free encyclopedia
X protocol C language binding library
This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: "XCB" – news · newspapers · books · scholar · JSTOR (November 2009) (Learn how and when to remove this template message)
Original author(s)Bart MasseyDeveloper(s)Jamey Sharp, Josh Triplett, Bart MasseyInitial release2001; 23 years ago (2001)Stable release1.16.1[1]
/ 2 March 2024; 3 days ago (2 March 2024)
Repositorygitlab.freedesktop.org/xorg/lib/libxcb
Written inCOperating systemPOSIXTypeX11 client libraryLicenseMIT LicenseWebsitexcb.freedesktop.org
X11-clients use XCB to communicate with the X server.
A more complete view of the Linux graphics stack
Programs often use GTK or FLTK or Qt for their GUI widgets.
A more complete view of the components of an operating system for home computers.
XCB (X protocol C-language Binding) is a library implementing the client-side of the X11 display server protocol. XCB is written in the C programming language and distributed under the MIT License. The project was started in 2001 by Bart Massey and aims to replace Xlib.
Overview[edit]
XCB was designed as a smaller, modernized replacement for Xlib, previously the primary C library for communicating with the X window system, coinciding with a more complete overhaul of the X implementation that took place during the early 2000s.[2] The main goals of XCB are to:
reduce library size and complexity
provide direct access to the X11 protocol
The required size reduction is achieved primarily by restricting XCB's scope to handling the X protocol and omitting Xlib functionality such as its extensive utility library, much of which saw little use by applications. This results in a factor thirty reduction of the compiled library size (as of 2004).[3]
Secondary goals include making the C interface asynchronous, facilitating better multithreading and making it easier to implement extensions (via XML protocol descriptions).
The core and extension protocol descriptions are in XML, with a program written in Python creating the C bindings. (Previous versions used XSLT and M4.)
A further goal is to be able to use these protocol descriptions to create protocol documentation, more language bindings, and server-side stubs.
Massey and others have worked to prove key portions of XCB formally correct using Z notation.[4] (Xlib has long been known to contain errors.[5])
Xlib compatibility[edit]
Xlib/XCB provides application binary interface compatibility with both Xlib and XCB, providing an incremental porting path.[6] Xlib/XCB uses the protocol layer of Xlib, but replaces the Xlib transport layer with XCB, and provides access to the underlying XCB connection for direct use of XCB. Xlib/XCB allows an application to open a single connection to the X display server and use both XCB and Xlib, possibly through a mixture of libraries designed for one or the other.[7][8]
Example[edit]
// Simple XCB application for opening a window and drawing a box in it
// To compile it using GNU, use:
// gcc x.c -lxcb
#include
#include
#include
int main(void)
{
xcb_connection_t *c;
xcb_screen_t *s;
xcb_window_t w;
xcb_gcontext_t g;
xcb_generic_event_t *e;
uint32_t mask;
uint32_t values[2];
int done = 0;
xcb_rectangle_t r = { 20, 20, 60, 60 };
// open connection to the server
c = xcb_connect(NULL,NULL);
if (xcb_connection_has_error(c)) {
printf("Cannot open display\n");
exit(EXIT_FAILURE);
}
// get the first screen
s = xcb_setup_roots_iterator( xcb_get_setup(c) ).data;
// create black graphics context
g = xcb_generate_id(c);
w = s->root;
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
values[0] = s->black_pixel;
values[1] = 0;
xcb_create_gc(c, g, w, mask, values);
// create window
w = xcb_generate_id(c);
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = s->white_pixel;
values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS;
xcb_create_window(c, s->root_depth, w, s->root,
10, 10, 100, 100, 1,
XCB_WINDOW_CLASS_INPUT_OUTPUT, s->root_visual,
mask, values);
// map (show) the window
xcb_map_window(c, w);
xcb_flush(c);
// event loop
while (!done && (e = xcb_wait_for_event(c))) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: // draw or redraw the window
xcb_poly_fill_rectangle(c, w, g, 1, &r);
xcb_flush(c);
break;
case XCB_KEY_PRESS: // exit on key press
done = 1;
break;
}
free(e);
}
// close connection to server
xcb_disconnect(c);
exit(EXIT_SUCCESS);
}
XCB has a comparable, but slightly lower-level API than Xlib,[9] as can be seen with this example.
Protocol description[edit]
Creators of XCB have invented a specialized interface description language to model X11 protocol in language-neutral way and facilitate generation of bindings to other programming languages. libxcb itself is implemented as a code generator and a tiny C stub of utility functions.
An example:
extension-name="BigRequests" extension-multiword="true" major-version="0" minor-version="0">
Logo[edit]
The XCB logo was produced by Gearóid Molloy, author of the web comic Neko the Kitty, and donated to the project.[10]
Other language bindings[edit]
XCB.pm - Perl module implementing bindings to XCB.
xpyb - The Python binding to the X Window System using XCB. As of June 2013, it does not support Python 3. Provided by freedesktop.org.
xcffib - Another Python binding which supports Python 2 & 3 as well as several more X extensions than xpyb.
Notes[edit]
^ "libxcb-1.16.1".
^ Gettys, James; Packard, Keith (2004). The (Re) Architecture of the X Window System (PDF). Proc. Linux Symposium. Vol. 1.
^ Sharp, Jamey (2004). How Xlib is Implemented (And What We're Doing About It) (PDF). Proc. Usenix Annual Techn. Conf., Freenix Track.
^ Massey and Bauer, 2002.
^ Sharp and Massey, 2002, §2.4. "While Xlib was designed to support threaded applications, and while that support is not unusable, there are known race conditions that cannot be eliminated without changing the Xlib interface."
^ Maloney, Ross J. (31 March 2018). Low Level X Window Programming: An Introduction by Examples. Springer. pp. 225–244. ISBN 978-3-319-74250-2. Retrieved 17 May 2022.
^ "Xlib/XCB: Xlib with XCB transport". 2008-01-11. Retrieved 2009-09-11.
^ Jamey Sharp and Josh Triplett (2006-11-26). "libx11 with Xlib/XCB now in experimental; please test with your packages". debian-devel-announce (Mailing list). Retrieved 2009-09-11.
^ Jamey Sharp; Bart Massey (2002), XCL : An Xlib Compatibility Layer For XCB, USENIX 2002 Annual Technical Conference, Freenix Track
^ KittyLogo (xcb.freedesktop.org)
References[edit]
Massey, Bart; Sharp, Jamey (2001-09-19). "XCB: An X Protocol C Binding" (PDF). Proceedings of the XFree86 Technical Conference. Oakland, California: USENIX. Retrieved 2012-03-12.
Massey, Bart; Bauer, Robert (2002). "X Meets Z: Verifying Correctness In The Presence Of POSIX Threads". Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference. Monterey, California: USENIX. pp. 221–234. Retrieved 2008-11-07.
Sharp, Jamey; Massey, Bart (2002). "XCL: A Compatibility Layer For XCB". Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference. Monterey, California: USENIX. pp. 71–83. Retrieved 2008-11-07.
External links[edit]
Free Software portal
XCB wiki (freedesktop.org)
XCB API reference, tutorial
libxcb tutorial
Further publications
The X New Developer’s Guide: Xlib and XCB
vteFree and open-source software projects hosted by freedesktop.orgOS componentsSound
PulseAudio
PipeWire
Graphics
Compiz
DRI
Enchant
nouveau
Plymouth
Wayland
X.Org Server
Glamor
Xephyr
Other
Avahi
D-Bus
Flatpak
Kmscon
luit
PackageKit
pkg-config
Systemd
Libraries
AppStream
Cairo
FreeType
Fontconfig
GStreamer
libinput
Mesa 3D
HarfBuzz
Pango
Poppler
Swfdec
Video Acceleration API
XCB
Xft
Frameworks
CppUnit
Open Collaboration Services (OCS)
Telepathy
Meetings
Create Project
Portland Project
vteX Window SystemArchitecture
Core protocol
X Window selection
X Window authorization
X11 color names
X Input Method
Wayland
Extensions
X Image Extension
X keyboard extension
RandR
X Rendering Extension
Shape extension
Shared memory extension
X Display Manager Control Protocol
X video extension
X-Video Motion Compensation
AIGLX
GLX
Multi-Pointer X
Display PostScript
Composite Extension
Xinerama
Componentsand notableimplementationsDisplay servers
X.Org Server
Cygwin/X
X-Win32
X386
XFree86
XDarwin
Xming
Xsgi
Xsun
Xgl
Xephyr
XQuartz
XWayland
Client libraries
Xlib
XCB
X Toolkit Intrinsics
Display managersSession managers
GDM
KDM
SDDM
XDM
LightDM
LXDM
Entrance
WDM
Window managers(comparison)Compositing
Compiz
KWin
Metacity
Mutter
Xfwm
Enlightenment
Stacking
4Dwm
9wm
AfterStep
amiwm
Blackbox
CTWM
cwm
Fluxbox
FLWM
FVWM
IceWM
JWM
Matchbox
mwm
olwm
Openbox
Qvwm
Sawfish
swm
tvtwm
twm
vtwm
WindowLab
Window Maker
wm2
Tiling
awesome
dwm
i3
Ion
ratpoison
wmii
xmonad
StumpWM
larswm
Standards
ICCCM
EWMH
XDS
freedesktop.org
Applications
xcalc
xclock
xedit
xload
xterm
xeyes
Desktop environments (comparison)
vteList of widget toolkitsLow-levelOn AmigaOS
Intuition
On Classic Mac OS, macOS
Macintosh Toolbox
Carbon
On Windows
Windows API
UWP
WinRT
On Unix,under X11
Xlib
XCB
X Toolkit Intrinsics
On BeOS, Haiku
BeOS API
Cross-platformCLI
OpenTK
C
GDK
Simple DirectMedia Layer
Java
JOGL
LWJGL
On AndroidCLI
Xamarin.Android
High-level, platform-specificOn AmigaOS
BOOPSI
MUI
ReAction GUI
Zune
On Classic Mac OS, macOSObject Pascal
MacApp
Objective-C, Swift
Cocoa
Cocoa Touch
C++
MacApp
PowerPlant
THINK C
CLI
Xamarin.Mac
Xamarin.iOS
On WindowsCLI
Windows Forms
XAML
Windows Presentation Foundation
Windows UI Library
Silverlight
Microsoft XNA
C++
MFC
Active Template Library
Windows Template Library
Object Windows Library
Object Pascal
Visual Component Library
On Unix,under X11
Athena (Xaw)
LessTif
Motif
OLIT
XForms
On Android
Qt for Android
High-level, cross-platformC
Enlightenment Foundation Libraries
GTK
IUP
XForms
XVT
C++
Bedrock
CEGUI
Component Library for Cross Platform
FLTK
FOX toolkit
OpenGL User Interface Library
gtkmm
JUCE
Qt
Rogue Wave Views
TnFOX
U++
Wt
wxWidgets
Simple and Fast Multimedia Library
Objective-C
GNUstep
CLI
Gtk#
Tao Framework
OpenTK
UIML
MonoGame
Moonlight
Xamarin.Forms
XWT[1][2]
.NET MAUI
Adobe Flash
Apache Flex
MXML
Go
Fyne
Haskell
wxHaskell
Java
Abstract Window Toolkit
FXML
JavaFX
Qt Jambi
Swing
Standard Widget Toolkit
Google Web Toolkit
Lightweight User Interface Toolkit
JavaScript
Dojo Toolkit
Echo
Ext JS
Google Closure Tools
jQuery UI
OpenUI5
Qooxdoo
YUI
Common Lisp
CAPI
CLIM
Common Graphics
Lua
IUP
Pascal
Lazarus Component Library
Object Pascal
Component Library for Cross Platform
fpGUI
IP Pascal
FireMonkey
Perl
Perl/Tk
wxPerl
PHP
PHP-GTK
wxPHP
Python
Tkinter
Kivy
PySide
PyQt
PyGTK
wxPython
Pyjs
Ruby
Shoes
QtRuby
Tcl
Tcl/Tk
XML
GladeXML
Lively Kernel
Extensible Application Markup Language
XUL
Wt
shell
Newt
CDK
Dialog
Dart
Flutter
Retrieved from "https://en.wikipedia.org/w/index.php?title=XCB&oldid=1211644569"
Categories: C (programming language) librariesFreedesktop.orgFreedesktop.org librariesSoftware using the MIT licenseX Window SystemHidden categories: Articles with short descriptionShort description is different from WikidataArticles lacking reliable references from November 2009All articles lacking reliable references
This page was last edited on 3 March 2024, at 17:28 (UTC).
Text is available under the Creative Commons Attribution-ShareAlike License 4.0;
additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Code of Conduct
Developers
Statistics
Cookie statement
Mobile view
Toggle limited content width
Basic Graphics Programming With The XCB Library
Basic Graphics Programming With The XCB Library
Introduction
The client and server model of the X window system
GUI programming: the asynchronous model
Basic XCB notions
The X Connection
Requests and replies: the Xlib killers
The Graphics Context
Object handles
Memory allocation for XCB structures
Events
Using XCB-based programs
Installation of XCB
Compiling XCB-based programs
Opening and closing the connection to an X server
Checking basic information about a connection
Creating a basic window - the "hello world" program
Drawing in a window
Allocating a Graphics Context
Changing the attributes of a Graphics Context
Drawing primitives: point, line, box, circle,...
X Events
Registering for event types using event masks
Receiving events: writing the events loop
Expose events
Getting user input
Mouse button press and release events
Mouse movement events
Mouse pointer enter and leave events
The keyboard focus
Keyboard press and release events
X events: a complete example
Handling text and fonts
The Font structure
Opening a Font
Assigning a Font to a Graphic Context
Drawing text in a drawable
Complete example
Windows hierarchy
Root, parent and child windows
Events propagation
Interacting with the window manager
Window properties
Setting the window name and icon name
Setting preferred window size(s)
Setting miscellaneous window manager hints
Setting an application's icon
Obeying the delete-window protocol
Simple window operations
Mapping and unmapping a window
Configuring a window
Moving a window around the screen
Resizing a window
Changing windows stacking order: raise and lower
Iconifying and de-iconifying a window
Getting informations about a window
Using colors to paint the rainbow
Color maps
Allocating and freeing Color Maps
Allocating and freeing a color entry
Drawing with a color
X Bitmaps and Pixmaps
What is a X Bitmap ? An X Pixmap ?
Loading a bitmap from a file
Drawing a bitmap in a window
Creating a pixmap
Drawing a pixmap in a window
Freeing a pixmap
Messing with the mouse cursor
Creating and destroying a mouse cursor
Setting a window's mouse cursor
Complete example
Translation of basic Xlib functions and macros
Members of the Display structure
ConnectionNumber
DefaultScreen
QLength
ScreenCount
ServerVendor
ProtocolVersion
ProtocolRevision
VendorRelease
DisplayString
BitmapUnit
BitmapBitOrder
BitmapPad
ImageByteOrder
ScreenOfDisplay related functions
ScreenOfDisplay
DefaultScreenOfDisplay
RootWindow / RootWindowOfScreen
DefaultRootWindow
DefaultVisual / DefaultVisualOfScreen
DefaultGC / DefaultGCOfScreen
BlackPixel / BlackPixelOfScreen
WhitePixel / WhitePixelOfScreen
DisplayWidth / WidthOfScreen
DisplayHeight / HeightOfScreen
DisplayWidthMM / WidthMMOfScreen
DisplayHeightMM / HeightMMOfScreen
DisplayPlanes / DefaultDepth / DefaultDepthOfScreen / PlanesOfScreen
DefaultColormap / DefaultColormapOfScreen
MinCmapsOfScreen
MaxCmapsOfScreen
DoesSaveUnders
DoesBackingStore
EventMaskOfScreen
Miscellaneaous macros
DisplayOfScreen
DisplayCells / CellsOfScreen
Introduction
This tutorial is based on the
Xlib Tutorial
written by Guy Keren. The
author allowed me to take some parts of his text, mainly the text which
deals with the X Windows generality.
This tutorial is intended for people who want to start to program
with the XCB
library. keep in mind that XCB, like the
Xlib
library, isn't what most programmers wanting to write X
applications are looking for. They should use a much higher
level GUI toolkit like Motif,
LessTiff,
GTK,
QT,
EWL,
ETK, or use
Cairo.
However,
we need to start somewhere. More than this, knowing how things
work down below is never a bad idea.
After reading this tutorial, one should be able to write very
simple graphical programs, but not programs with decent user
interfaces. For such programs, one of the previously mentioned
libraries should be used.
But what is XCB? Xlib has been
the standard C binding for the X
Window System protocol for many years now. It is an
excellent piece of work, but there are applications for which it
is not ideal, for example:
Small platforms: Xlib is a large piece of code, and
it's difficult to make it smaller
Latency hiding: Xlib requests requiring a reply are
effectively synchronous: they block until the reply appears,
whether the result is needed immediately or not.
Direct access to the protocol: Xlib does quite a
bit of caching, layering, and similar optimizations. While this
is normally a feature, it makes it difficult to simply emit
specified X protocol requests and process specific
responses.
Threaded applications: While Xlib does attempt to
support multithreading, the API makes this difficult and
error-prone.
New extensions: The Xlib infrastructure provides
limited support for the new creation of X extension client side
code.
For these reasons, among others, XCB, an X C binding, has been
designed to solve the above problems and thus provide a base for
Toolkit implementation.
Direct protocol-level programming.
Lightweight emulation of commonly used portions of the
Xlib API.
The client and server model of the X window system
The X Window System was developed with one major goal:
flexibility. The idea was that the way things look is one thing,
but the way things work is another matter. Thus, the lower
levels provide the tools required to draw windows, handle user
input, allow drawing graphics using colors (or black and white
screens), etc. To this point, a decision was made to separate
the system into two parts. A client that decides what to do, and
a server that actually draws on the screen and reads user input
in order to send it to the client for processing.
This model is the complete opposite of what is used to when
dealing with clients and servers. In our case, the user sits
near the machine controlled by the server, while the client
might be running on a remote machine. The server controls the
screens, mouse and keyboard. A client may connect to the server,
request that it draws a window (or several windows), and ask the
server to send it any input the user sends to these
windows. Thus, several clients may connect to a single X server
(one might be running mail software, one running a WWW
browser, etc). When input is sent by the user to some window,
the server sends a message to the client controlling this window
for processing. The client decides what to do with this input,
and sends the server requests for drawing in the window.
The whole session is carried out using the X message
protocol. This protocol was originally carried over the TCP/IP
protocol suite, allowing the client to run on any machine
connected to the same network that the server is. Later on, the
X servers were extended to allow clients running on the local
machine with more optimized access to the server (note that an X
protocol message may be several hundreds of KB in size), such as
using shared memory, or using Unix domain sockets (a method for
creating a logical channel on a Unix system between two processes).
GUI programming: the asynchronous model
Unlike conventional computer programs, that carry some serial
nature, a GUI program usually uses an asynchronous programming
model, also known as "event-driven programming". This means that
that program mostly sits idle, waiting for events sent by the X
server, and then acts upon these events. An event may say "The
user pressed the 1st button mouse in spot (x,y)", or "The window
you control needs to be redrawn". In order for the program to be
responsive to the user input, as well as to refresh requests, it
needs to handle each event in a rather short period of time
(e.g. less that 200 milliseconds, as a rule of thumb).
This also implies that the program may not perform operations
that might take a long time while handling an event (such as
opening a network connection to some remote server, or
connecting to a database server, or even performing a long file
copy operation). Instead, it needs to perform all these
operations in an asynchronous manner. This may be done by using
various asynchronous models to perform the longish operations,
or by performing them in a different process or thread.
So the way a GUI program looks is something like that:
Perform initialization routines.
Connect to the X server.
Perform X-related initialization.
While not finished:
Receive the next event from the X server.
Handle the event, possibly sending various drawing
requests to the X server.
If the event was a quit message, exit the loop.
Close down the connection to the X server.
Perform cleanup operations.
Basic XCB notions
XCB has been created to eliminate the need for
programs to actually implement the X protocol layer. This
library gives a program a very low-level access to any X
server. Since the protocol is standardized, a client using any
implementation of XCB may talk with any X server (the same
occurs for Xlib, of course). We now give a brief description of
the basic XCB notions. They will be detailed later.
The X Connection
The major notion of using XCB is the X Connection. This is a
structure representing the connection we have open with a
given X server. It hides a queue of messages coming from the
server, and a queue of pending requests that our client
intends to send to the server. In XCB, this structure is named
'xcb_connection_t'. It is analogous to the Xlib Display.
When we open a connection to an X server, the
library returns a pointer to such a structure. Later, we
supply this pointer to any XCB function that should send
messages to the X server or receive messages from this server.
Requests and
replies: the Xlib killers
To ask for information from the X server, we have to make a request
and ask for a reply. With Xlib, these two tasks are
automatically done: Xlib locks the system, sends a request,
waits for a reply from the X server and unlocks. This is
annoying, especially if one makes a lot of requests to the X
server. Indeed, Xlib has to wait for the end of a reply
before asking for the next request (because of the locks that
Xlib sends). For example, here is a time-line of N=4
requests/replies with Xlib, with a round-trip latency
T_round_trip that is 5 times long as the time required
to write or read a request/reply (T_write/T_read):
W-----RW-----RW-----RW-----R
W: Writing request
-: Stalled, waiting for data
R: Reading reply
The total time is N * (T_write + T_round_trip + T_read).
With XCB, we can suppress most of the round-trips as the
requests and the replies are not locked. We usually send a
request, then XCB returns to us a cookie, which is an
identifier. Then, later, we ask for a reply using this
cookie and XCB returns a
pointer to that reply. Hence, with XCB, we can send a lot of
requests, and later in the program, ask for all the replies
when we need them. Here is the time-line for 4
requests/replies when we use this property of XCB:
WWWW--RRRR
The total time is N * T_write + max (0, T_round_trip - (N-1) *
T_write) + N * T_read. Which can be considerably faster than
all those Xlib round-trips.
Here is a program that computes the time to create 500 atoms
with Xlib and XCB. It shows the Xlib way, the bad XCB way
(which is similar to Xlib) and the good XCB way. On my
computer, XCB is 25 times faster than Xlib.
#include
#include
#include
#include
#include
#include
double
get_time(void)
{
struct timeval timev;
gettimeofday(&timev, NULL);
return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
}
int
main ()
{
xcb_connection_t *c;
xcb_atom_t *atoms;
xcb_intern_atom_cookie_t *cs;
char **names;
int count;
int i;
double start;
double end;
double diff;
/* Xlib */
Display *disp;
Atom *atoms_x;
double diff_x;
c = xcb_connect (NULL, NULL);
count = 500;
atoms = (xcb_atom_t *)malloc (count * sizeof (atoms));
names = (char **)malloc (count * sizeof (char *));
/* init names */
for (i = 0; i < count; ++i) {
char buf[100];
sprintf (buf, "NAME%d", i);
names[i] = strdup (buf);
}
/* bad use */
start = get_time ();
for (i = 0; i < count; ++i)
atoms[i] = xcb_intern_atom_reply (c,
xcb_intern_atom (c,
0,
strlen(names[i]),
names[i]),
NULL)->atom;
end = get_time ();
diff = end - start;
printf ("bad use time : %f\n", diff);
/* good use */
start = get_time ();
cs = (xcb_intern_atom_cookie_t *) malloc (count * sizeof(xcb_intern_atom_cookie_t));
for(i = 0; i < count; ++i)
cs[i] = xcb_intern_atom (c, 0, strlen(names[i]), names[i]);
for(i = 0; i < count; ++i) {
xcb_intern_atom_reply_t *r;
r = xcb_intern_atom_reply(c, cs[i], 0);
if(r)
atoms[i] = r->atom;
free(r);
}
end = get_time ();
printf ("good use time : %f\n", end - start);
printf ("ratio : %f\n", diff / (end - start));
diff = end - start;
/* free var */
free (atoms);
free (cs);
xcb_disconnect (c);
/* Xlib */
disp = XOpenDisplay (getenv("DISPLAY"));
atoms_x = (Atom *)malloc (count * sizeof (atoms_x));
start = get_time ();
for (i = 0; i < count; ++i)
atoms_x[i] = XInternAtom(disp, names[i], 0);
end = get_time ();
diff_x = end - start;
printf ("Xlib use time : %f\n", diff_x);
printf ("ratio : %f\n", diff_x / diff);
free (atoms_x);
for (i = 0; i < count; ++i)
free (names[i]);
free (names);
XCloseDisplay (disp);
return 0;
}
The Graphic Context
When we perform various drawing operations (graphics, text,
etc), we may specify various options for controlling how the
data will be drawn (what foreground and background colors to
use, how line edges will be connected, what font to use when
drawing some text, etc). In order to avoid the need to supply
hundreds of parameters to each drawing function, a graphical
context structure is used. We set the various drawing options
in this structure, and then we pass a pointer to this
structure to any drawing routines. This is rather handy, as we
often need to perform several drawing requests with the same
options. Thus, we would initialize a graphical context, set
the desired options, and pass this structure to all drawing
functions.
Note that graphic contexts have no client-side structure in
XCB, they're just XIDs. Xlib has a client-side structure
because it caches the GC contents so it can avoid making
redundant requests, but of course XCB doesn't do that.
Events
A structure is used to pass events received from the X
server. XCB supports exactly the events specified in the
protocol (33 events). This structure contains the type
of event received (including a bit for whether it came
from the server or another client), as well as the data associated with the
event (e.g. position on the screen where the event was
generated, mouse button associated with the event, region of
the screen associated with a "redraw" event, etc). The way to
read the event's data depends on the event type.
Using XCB-based programs
Installation of XCB
TODO: These instructions are out of date.
Just reference the main XCB page
so we don't have to maintain these instructions in more than
one place.
To build XCB from source, you need to have installed at
least:
pkgconfig 0.15.0
automake 1.7
autoconf 2.50
check
xsltproc
gperf 3.0.1
You have to checkout in the git repository the following modules:
Xau from xlibs
xcb-proto
xcb
Note that xcb-proto exists only to install header
files, so typing 'make' or 'make all' will produce the message
"Nothing to be done for 'all'". That's normal.
Compiling XCB-based programs
Compiling XCB-based programs requires linking them with the XCB
library. This is easily done thanks to pkgconfig:
gcc -Wall prog.c -o prog `pkg-config --cflags --libs xcb`
Opening and closing the connection to an X server
An X program first needs to open the connection to the X
server. There is a function that opens a connection. It requires
the display name, or NULL. In the latter case, the display name
will be the one in the environment variable DISPLAY.
xcb_connection_t *xcb_connect (const char *displayname,
int *screenp);
The second parameter returns the screen number used for the
connection. The returned structure describes an XCB connection
and is opaque. Here is how the connection can be opened:
#include
int
main ()
{
xcb_connection_t *c;
/* Open the connection to the X server. Use the DISPLAY environment variable as the default display name */
c = xcb_connect (NULL, NULL);
return 0;
}
To close a connection, it suffices to use:
void xcb_disconnect (xcb_connection_t *c);
Comparison Xlib/XCB
XOpenDisplay ()
xcb_connect ()
XCloseDisplay ()
xcb_disconnect ()
Checking basic information about a connection
Once we have opened a connection to an X server, we should check some
basic information about it: what screens it has, what is the
size (width and height) of the screen, how many colors it
supports (black and white ? grey scale ?, 256 colors ? more ?),
and so on. We get such information from the xcb_screen_t
structure:
typedef struct {
xcb_window_t root;
xcb_colormap_t default_colormap;
uint32_t white_pixel;
uint32_t black_pixel;
uint32_t current_input_masks;
uint16_t width_in_pixels;
uint16_t height_in_pixels;
uint16_t width_in_millimeters;
uint16_t height_in_millimeters;
uint16_t min_installed_maps;
uint16_t max_installed_maps;
xcb_visualid_t root_visual;
uint8_t backing_stores;
uint8_t save_unders;
uint8_t root_depth;
uint8_t allowed_depths_len;
} xcb_screen_t;
We could retrieve the first screen of the connection by using the
following function:
xcb_screen_iterator_t xcb_setup_roots_iterator (xcb_setup_t *R);
Here is a small program that shows how to use this function:
#include
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
xcb_screen_iterator_t iter;
/* Open the connection to the X server. Use the DISPLAY environment variable */
c = xcb_connect (NULL, &screen_nbr);
/* Get the screen #screen_nbr */
iter = xcb_setup_roots_iterator (xcb_get_setup (c));
for (; iter.rem; --screen_nbr, xcb_screen_next (&iter))
if (screen_nbr == 0) {
screen = iter.data;
break;
}
printf ("\n");
printf ("Informations of screen %ld:\n", screen->root);
printf (" width.........: %d\n", screen->width_in_pixels);
printf (" height........: %d\n", screen->height_in_pixels);
printf (" white pixel...: %ld\n", screen->white_pixel);
printf (" black pixel...: %ld\n", screen->black_pixel);
printf ("\n");
return 0;
}
Creating a basic window - the "hello world" program
After we got some basic information about our screen, we can
create our first window. In the X Window System, a window is
characterized by an Id. So, in XCB, a window is of type:
typedef uint32_t xcb_window_t;
We first ask for a new Id for our window, with this function:
xcb_window_t xcb_generate_id(xcb_connection_t *c);
Then, XCB supplies the following function to create new windows:
xcb_void_cookie_t xcb_create_window (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
uint8_t depth, /* Depth of the screen */
xcb_window_t wid, /* Id of the window */
xcb_window_t parent, /* Id of an existing window that should be the parent of the new window */
int16_t x, /* X position of the top-left corner of the window (in pixels) */
int16_t y, /* Y position of the top-left corner of the window (in pixels) */
uint16_t width, /* Width of the window (in pixels) */
uint16_t height, /* Height of the window (in pixels) */
uint16_t border_width, /* Width of the window's border (in pixels) */
uint16_t _class,
xcb_visualid_t visual,
uint32_t value_mask,
const uint32_t *value_list);
The fact that we created the window does not mean that it will
be drawn on screen. By default, newly created windows are not
mapped on the screen (they are invisible). In order to make our
window visible, we use the function xcb_map_window(), whose
prototype is
xcb_void_cookie_t xcb_map_window (xcb_connection_t *c,
xcb_window_t window);
Finally, here is a small program to create a window of size
150x150 pixels, positioned at the top-left corner of the screen:
#include
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_window_t win;
/* Open the connection to the X server */
c = xcb_connect (NULL, NULL);
/* Get the first screen */
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* Ask for our window's Id */
win = xcb_generate_id(c);
/* Create the window */
xcb_create_window (c, /* Connection */
XCB_COPY_FROM_PARENT, /* depth (same as root)*/
win, /* window Id */
screen->root, /* parent window */
0, 0, /* x, y */
150, 150, /* width, height */
10, /* border_width */
XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
screen->root_visual, /* visual */
0, NULL); /* masks, not used yet */
/* Map the window on the screen */
xcb_map_window (c, win);
/* Make sure commands are sent before we pause, so window is shown */
xcb_flush (c);
pause (); /* hold client until Ctrl-C */
return 0;
}
In this code, you see one more function - xcb_flush(), not explained
yet. It is used to flush all the pending requests. More
precisely, there are 2 functions that do such things. The first
one is xcb_flush():
int xcb_flush (xcb_connection_t *c);
This function flushes all pending requests to the X server (much
like the fflush() function is used to
flush standard output). The second function is
xcb_aux_sync():
int xcb_aux_sync (xcb_connection_t *c);
This functions also flushes all pending requests to the X
server, and then waits until the X server finishing processing
these requests. In a normal program, this will not be necessary
(we'll see why when we get to write a normal X program), but for
now, we put it there.
The window that is created by the above code has a non defined
background. This one can be set to a specific color,
thanks to the two last parameters of
xcb_create_window(), which are not
described yet. See the subsections
Configuring a window or
Registering for event types using event masks
for examples on how to use these parameters. In addition, as no
events are handled, you have to make a Ctrl-C to interrupt the
program.
TODO: one should tell what these functions return and
about the generic error
Comparison Xlib/XCB
XCreateWindow ()
xcb_generate_id ()
xcb_create_window ()
Drawing in a window
Drawing in a window can be done using various graphical
functions (drawing pixels, lines, rectangles, etc). In order to
draw in a window, we first need to define various general
drawing parameters (what line width to use, which color to draw
with, etc). This is done using a graphical context.
Allocating a Graphics Context
As we said, a graphical context defines several attributes to
be used with the various drawing functions. For this, we
define a graphical context. We can use more than one graphical
context with a single window, in order to draw in multiple
styles (different colors, different line widths, etc). In XCB,
a Graphics Context is, as a window, characterized by an Id:
typedef uint32_t xcb_gcontext_t;
We first ask the X server to attribute an Id to our graphic
context with this function:
xcb_gcontext_t xcb_generate_id (xcb_connection_t *c);
Then, we set the attributes of the graphic context with this function:
xcb_void_cookie_t xcb_create_gc (xcb_connection_t *c,
xcb_gcontext_t cid,
xcb_drawable_t drawable,
uint32_t value_mask,
const uint32_t *value_list);
We give now an example on how to allocate a graphic context
that specifies that each drawing function that uses it will
draw in foreground with a black color.
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_drawable_t win;
xcb_gcontext_t black;
uint32_t mask;
uint32_t value[1];
/* Open the connection to the X server and get the first screen */
c = xcb_connect (NULL, NULL);
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* Create a black graphic context for drawing in the foreground */
win = screen->root;
black = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND;
value[0] = screen->black_pixel;
xcb_create_gc (c, black, win, mask, value);
return 0;
}
Note should be taken regarding the role of "value_mask" and
"value_list" in the prototype of xcb_create_gc(). Since a
graphic context has many attributes, and since we often just
want to define a few of them, we need to be able to tell the
xcb_create_gc() which attributes we
want to set. This is what the "value_mask" parameter is
for. We then use the "value_list" parameter to specify actual
values for the attribute we defined in "value_mask". Thus, for
each constant used in "value_list", we will use the matching
constant in "value_mask". In this case, we define a graphic
context with one attribute: when drawing (a point, a line,
etc), the foreground color will be black. The rest of the
attributes of this graphic context will be set to their
default values.
See the next Subsection for more details.
Comparison Xlib/XCB
XCreateGC ()
xcb_generate_id ()
xcb_create_gc ()
Changing the attributes of a Graphics Context
Once we have allocated a Graphic Context, we may need to
change its attributes (for example, changing the foreground
color we use to draw a line, or changing the attributes of the
font we use to display strings. See Subsections Drawing with a
color and
Assigning a Font to a Graphic Context).
This is done by using this function:
xcb_void_cookie_t xcb_change_gc (xcb_connection_t *c, /* The XCB Connection */
xcb_gcontext_t gc, /* The Graphic Context */
uint32_t value_mask, /* Components of the Graphic Context that have to be set */
const uint32_t *value_list); /* Value as specified by value_mask */
The value_mask parameter could take
any combination of these masks from the xcb_gc_t enumeration:
XCB_GC_FUNCTION
XCB_GC_PLANE_MASK
XCB_GC_FOREGROUND
XCB_GC_BACKGROUND
XCB_GC_LINE_WIDTH
XCB_GC_LINE_STYLE
XCB_GC_CAP_STYLE
XCB_GC_JOIN_STYLE
XCB_GC_FILL_STYLE
XCB_GC_FILL_RULE
XCB_GC_TILE
XCB_GC_STIPPLE
XCB_GC_TILE_STIPPLE_ORIGIN_X
XCB_GC_TILE_STIPPLE_ORIGIN_Y
XCB_GC_FONT
XCB_GC_SUBWINDOW_MODE
XCB_GC_GRAPHICS_EXPOSURES
XCB_GC_CLIP_ORIGIN_X
XCB_GC_CLIP_ORIGIN_Y
XCB_GC_CLIP_MASK
XCB_GC_DASH_OFFSET
XCB_GC_DASH_LIST
XCB_GC_ARC_MODE
It is possible to set several attributes at the same
time (for example setting the attributes of a font and the
color which will be used to display a string), by OR'ing these
values in value_mask. Then
value_list has to be an array which
lists the value for the respective attributes. These values
must be in the same order as masks listed above. See Subsection
Drawing with a color to have an example.
TODO: set the links of the 3 subsections, once they will
be written :)
TODO: give an example which sets several attributes.
Drawing primitives: point, line, box, circle,...
After we have created a Graphic Context, we can draw on a
window using this Graphic Context, with a set of XCB
functions, collectively called "drawing primitives". Let see
how they are used.
To draw a point, or several points, we use
xcb_void_cookie_t xcb_poly_point (xcb_connection_t *c, /* The connection to the X server */
uint8_t coordinate_mode, /* Coordinate mode, usually set to XCB_COORD_MODE_ORIGIN */
xcb_drawable_t drawable, /* The drawable on which we want to draw the point(s) */
xcb_gcontext_t gc, /* The Graphic Context we use to draw the point(s) */
uint32_t points_len, /* The number of points */
const xcb_point_t *points); /* An array of points */
The coordinate_mode parameter
specifies the coordinate mode. Available values are
XCB_COORD_MODE_ORIGIN
XCB_COORD_MODE_PREVIOUS
If XCB_COORD_MODE_PREVIOUS is used, then all points but the first one
are relative to the immediately previous point.
The xcb_point_t type is just a
structure with two fields (the coordinates of the point):
typedef struct {
int16_t x;
int16_t y;
} xcb_point_t;
You could see an example in xpoints.c. TODO Set the link.
To draw a line, or a polygonal line, we use
xcb_void_cookie_t xcb_poly_line (xcb_connection_t *c, /* The connection to the X server */
uint8_t coordinate_mode, /* Coordinate mode, usually set to XCB_COORD_MODE_ORIGIN */
xcb_drawable_t drawable, /* The drawable on which we want to draw the line(s) */
xcb_gcontext_t gc, /* The Graphic Context we use to draw the line(s) */
uint32_t points_len, /* The number of points in the polygonal line */
const xcb_point_t *points); /* An array of points */
This function will draw the line between the first and the
second points, then the line between the second and the third
points, and so on.
To draw a segment, or several segments, we use
xcb_void_cookie_t xcb_poly_segment (xcb_connection_t *c, /* The connection to the X server */
xcb_drawable_t drawable, /* The drawable on which we want to draw the segment(s) */
xcb_gcontext_t gc, /* The Graphic Context we use to draw the segment(s) */
uint32_t segments_len, /* The number of segments */
const xcb_segment_t *segments); /* An array of segments */
The xcb_segment_t type is just a
structure with four fields (the coordinates of the two points
that define the segment):
typedef struct {
int16_t x1;
int16_t y1;
int16_t x2;
int16_t y2;
} xcb_segment_t;
To draw a rectangle, or several rectangles, we use
xcb_void_cookie_t xcb_poly_rectangle (xcb_connection_t *c, /* The connection to the X server */
xcb_drawable_t drawable, /* The drawable on which we want to draw the rectangle(s) */
xcb_gcontext_t gc, /* The Graphic Context we use to draw the rectangle(s) */
uint32_t rectangles_len, /* The number of rectangles */
const xcb_rectangle_t *rectangles); /* An array of rectangles */
The xcb_rectangle_t type is just a
structure with four fields (the coordinates of the top-left
corner of the rectangle, and its width and height):
typedef struct {
int16_t x;
int16_t y;
uint16_t width;
uint16_t height;
} xcb_rectangle_t;
To draw an elliptical arc, or several elliptical arcs, we use
xcb_void_cookie_t xcb_poly_arc (xcb_connection_t *c, /* The connection to the X server */
xcb_drawable_t drawable, /* The drawable on which we want to draw the arc(s) */
xcb_gcontext_t gc, /* The Graphic Context we use to draw the arc(s) */
uint32_t arcs_len, /* The number of arcs */
const xcb_arc_t *arcs); /* An array of arcs */
The xcb_arc_t type is a structure with
six fields:
typedef struct {
int16_t x; /* Top left x coordinate of the rectangle surrounding the ellipse */
int16_t y; /* Top left y coordinate of the rectangle surrounding the ellipse */
uint16_t width; /* Width of the rectangle surrounding the ellipse */
uint16_t height; /* Height of the rectangle surrounding the ellipse */
int16_t angle1; /* Angle at which the arc begins */
int16_t angle2; /* Angle at which the arc ends */
} xcb_arc_t;
Note: the angles are expressed in units of 1/64 of a degree,
so to have an angle of 90 degrees, starting at 0,
angle1 = 0 and
angle2 = 90 << 6. Positive angles
indicate counterclockwise motion, while negative angles
indicate clockwise motion.
The corresponding function which fill inside the geometrical
object are listed below, without further explanation, as they
are used as the above functions.
To Fill a polygon defined by the points given as arguments ,
we use
xcb_void_cookie_t xcb_fill_poly (xcb_connection_t *c,
xcb_drawable_t drawable,
xcb_gcontext_t gc,
uint8_t shape,
uint8_t coordinate_mode,
uint32_t points_len,
const xcb_point_t *points);
The shape parameter specifies a
shape that helps the server to improve performance. Available
values are
XCB_POLY_SHAPE_COMPLEX
XCB_POLY_SHAPE_NONCONVEX
XCB_POLY_SHAPE_CONVEX
To fill one or several rectangles, we use
xcb_void_cookie_t xcb_poly_fill_rectangle (xcb_connection_t *c,
xcb_drawable_t drawable,
xcb_gcontext_t gc,
uint32_t rectangles_len,
const xcb_rectangle_t *rectangles);
To fill one or several arcs, we use
xcb_void_cookie_t xcb_poly_fill_arc (xcb_connection_t *c,
xcb_drawable_t drawable,
xcb_gcontext_t gc,
uint32_t arcs_len,
const xcb_arc_t *arcs);
To illustrate these functions, here is an example that draws
four points, a polygonal line, two segments, two rectangles
and two arcs. Remark that we use events for the first time, as
an introduction to the next section.
TODO: Use screen->root_depth for depth parameter.
#include
#include
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_drawable_t win;
xcb_gcontext_t foreground;
xcb_generic_event_t *e;
uint32_t mask = 0;
uint32_t values[2];
/* geometric objects */
xcb_point_t points[] = {
{10, 10},
{10, 20},
{20, 10},
{20, 20}};
xcb_point_t polyline[] = {
{50, 10},
{ 5, 20}, /* rest of points are relative */
{25,-20},
{10, 10}};
xcb_segment_t segments[] = {
{100, 10, 140, 30},
{110, 25, 130, 60}};
xcb_rectangle_t rectangles[] = {
{ 10, 50, 40, 20},
{ 80, 50, 10, 40}};
xcb_arc_t arcs[] = {
{10, 100, 60, 40, 0, 90 << 6},
{90, 100, 55, 40, 0, 270 << 6}};
/* Open the connection to the X server */
c = xcb_connect (NULL, NULL);
/* Get the first screen */
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* Create black (foreground) graphic context */
win = screen->root;
foreground = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
values[0] = screen->black_pixel;
values[1] = 0;
xcb_create_gc (c, foreground, win, mask, values);
/* Ask for our window's Id */
win = xcb_generate_id(c);
/* Create the window */
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = screen->white_pixel;
values[1] = XCB_EVENT_MASK_EXPOSURE;
xcb_create_window (c, /* Connection */
XCB_COPY_FROM_PARENT, /* depth */
win, /* window Id */
screen->root, /* parent window */
0, 0, /* x, y */
150, 150, /* width, height */
10, /* border_width */
XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
screen->root_visual, /* visual */
mask, values); /* masks */
/* Map the window on the screen */
xcb_map_window (c, win);
/* We flush the request */
xcb_flush (c);
while ((e = xcb_wait_for_event (c))) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
/* We draw the points */
xcb_poly_point (c, XCB_COORD_MODE_ORIGIN, win, foreground, 4, points);
/* We draw the polygonal line */
xcb_poly_line (c, XCB_COORD_MODE_PREVIOUS, win, foreground, 4, polyline);
/* We draw the segements */
xcb_poly_segment (c, win, foreground, 2, segments);
/* We draw the rectangles */
xcb_poly_rectangle (c, win, foreground, 2, rectangles);
/* We draw the arcs */
xcb_poly_arc (c, win, foreground, 2, arcs);
/* We flush the request */
xcb_flush (c);
break;
}
default: {
/* Unknown event type, ignore it */
break;
}
}
/* Free the Generic Event */
free (e);
}
return 0;
}
X Events
In an X program, everything is driven by events. Event painting
on the screen is sometimes done as a response to an event (an
Expose event). If part of a program's
window that was hidden, gets exposed (e.g. the window was raised
above other widows), the X server will send an "expose" event to
let the program know it should repaint that part of the
window. User input (key presses, mouse movement, etc) is also
received as a set of events.
Registering for event types using event masks
During the creation of a window, you should give it what kind
of events it wishes to receive. Thus, you may register for
various mouse (also called pointer) events, keyboard events,
expose events, and so on. This is done for optimizing the
server-to-client connection (i.e. why send a program (that
might even be running at the other side of the globe) an event
it is not interested in ?)
In XCB, you use the "value_mask" and "value_list" data in the
xcb_create_window() function to
register for events. Here is how we register for
Expose event when creating a window:
mask = XCB_CW_EVENT_MASK;
valwin[0] = XCB_EVENT_MASK_EXPOSURE;
win = xcb_generate_id (c);
xcb_create_window (c, depth, win, root->root,
0, 0, 150, 150, 10,
XCB_WINDOW_CLASS_INPUT_OUTPUT, root->root_visual,
mask, valwin);
XCB_EVENT_MASK_EXPOSURE is a constant defined
in the xcb_event_mask_t enumeration in the "xproto.h" header file. If we wanted to register for several
event types, we can logically "or" them, as follows:
mask = XCB_CW_EVENT_MASK;
valwin[0] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS;
win = xcb_generate_id (c);
xcb_create_window (c, depth, win, root->root,
0, 0, 150, 150, 10,
XCB_WINDOW_CLASS_INPUT_OUTPUT, root->root_visual,
mask, valwin);
This registers for Expose events as
well as for mouse button presses inside the created
window. You should note that a mask may represent several
event sub-types.
The values that a mask could take are given
by the xcb_cw_t enumeration:
typedef enum {
XCB_CW_BACK_PIXMAP = 1L<<0,
XCB_CW_BACK_PIXEL = 1L<<1,
XCB_CW_BORDER_PIXMAP = 1L<<2,
XCB_CW_BORDER_PIXEL = 1L<<3,
XCB_CW_BIT_GRAVITY = 1L<<4,
XCB_CW_WIN_GRAVITY = 1L<<5,
XCB_CW_BACKING_STORE = 1L<<6,
XCB_CW_BACKING_PLANES = 1L<<7,
XCB_CW_BACKING_PIXEL = 1L<<8,
XCB_CW_OVERRIDE_REDIRECT = 1L<<9,
XCB_CW_SAVE_UNDER = 1L<<10,
XCB_CW_EVENT_MASK = 1L<<11,
XCB_CW_DONT_PROPAGATE = 1L<<12,
XCB_CW_COLORMAP = 1L<<13,
XCB_CW_CURSOR = 1L<<14
} xcb_cw_t;
Note: we must be careful when setting the values of the valwin
parameter, as they have to follow the order the
xcb_cw_t enumeration. Here is an
example:
mask = XCB_CW_EVENT_MASK | XCB_CW_BACK_PIXMAP;
valwin[0] = XCB_NONE; /* for XCB_CW_BACK_PIXMAP (whose value is 1) */
valwin[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS; /* for XCB_CW_EVENT_MASK, whose value (2048) */
/* is greater than the one of XCB_CW_BACK_PIXMAP */
If the window has already been created, we can use the
xcb_change_window_attributes() function to set
the events that the window will receive. The subsection
Configuring a window shows its
prototype. As an example, here is a piece of code that
configures the window to receive the
Expose and
ButtonPress events:
const static uint32_t values[] = { XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS };
/* The connection c and the window win are supposed to be defined */
xcb_change_window_attributes (c, win, XCB_CW_EVENT_MASK, values);
Note: A common bug programmers do is adding code to handle new
event types in their program, while forgetting to add the
masks for these events in the creation of the window. Such a
programmer then should sit down for hours debugging his
program, wondering "Why doesn't my program notice that I
released the button?", only to find that they registered for
button press events but not for button release events.
Receiving events: writing the events loop
After we have registered for the event types we are interested
in, we need to enter a loop of receiving events and handling
them. There are two ways to receive events: a blocking way and
a non-blocking way:
xcb_wait_for_event (xcb_connection_t *c)
is the blocking way. It waits (so blocks...) until an event is
queued in the X server. Then it retrieves it into a newly
allocated structure (it dequeues it from the queue) and returns
it. This structure has to be freed. The function returns
NULL if an error occurs.
xcb_poll_for_event (xcb_connection_t *c, int
*error) is the non-blocking way. It looks at the event
queue and returns (and dequeues too) an existing event into
a newly allocated structure. This structure has to be
freed. It returns NULL if there is
no event. If an error occurs, the parameter error will be filled with the error
status.
There are various ways to write such a loop. We present two
ways to write such a loop, with the two functions above. The
first one uses xcb_wait_for_event_t, which
is similar to an event Xlib loop using only XNextEvent:
xcb_generic_event_t *e;
while ((e = xcb_wait_for_event (c))) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
/* Handle the Expose event type */
xcb_expose_event_t *ev = (xcb_expose_event_t *)e;
/* ... */
break;
}
case XCB_BUTTON_PRESS: {
/* Handle the ButtonPress event type */
xcb_button_press_event_t *ev = (xcb_button_press_event_t *)e;
/* ... */
break;
}
default: {
/* Unknown event type, ignore it */
break;
}
}
/* Free the Generic Event */
free (e);
}
You will certainly want to use xcb_poll_for_event(xcb_connection_t *c, int
*error) if, in Xlib, you use XPending or
XCheckMaskEvent:
while (XPending (display)) {
XEvent ev;
XNextEvent(d, &ev);
/* Manage your event */
}
Such a loop in XCB looks like:
xcb_generic_event_t *ev;
while ((ev = xcb_poll_for_event (conn, 0))) {
/* Manage your event */
}
The events are managed in the same way as with xcb_wait_for_event_t.
Obviously, we will need to give the user some way of
terminating the program. This is usually done by handling a
special "quit" event, as we will soon see.
Comparison Xlib/XCB
XNextEvent ()
xcb_wait_for_event ()
XPending ()
XCheckMaskEvent ()
xcb_poll_for_event ()
Expose events
The Expose event is one of the most
basic (and most used) events an application may receive. It
will be sent to us in one of several cases:
A window that covered part of our window has moved
away, exposing part (or all) of our window.
Our window was raised above other windows.
Our window mapped for the first time.
Our window was de-iconified.
You should note the implicit assumption hidden here: the
contents of our window is lost when it is being obscured
(covered) by either windows. One may wonder why the X server
does not save this contents. The answer is: to save
memory. After all, the number of windows on a display at a
given time may be very large, and storing the contents of all
of them might require a lot of memory. Actually, there is a
way to tell the X server to store the contents of a window in
special cases, as we will see later.
When we get an Expose event, we
should take the event's data from the members of the following
structure:
typedef struct {
uint8_t response_type; /* The type of the event, here it is XCB_EXPOSE */
uint8_t pad0;
uint16_t sequence;
xcb_window_t window; /* The Id of the window that receives the event (in case */
/* our application registered for events on several windows */
uint16_t x; /* The x coordinate of the top-left part of the window that needs to be redrawn */
uint16_t y; /* The y coordinate of the top-left part of the window that needs to be redrawn */
uint16_t width; /* The width of the part of the window that needs to be redrawn */
uint16_t height; /* The height of the part of the window that needs to be redrawn */
uint16_t count;
} xcb_expose_event_t;
Getting user input
User input traditionally comes from two sources: the mouse
and the keyboard. Various event types exist to notify us of
user input (a key being presses on the keyboard, a key being
released on the keyboard, the mouse moving over our window,
the mouse entering (or leaving) our window, and so on.
Mouse button press and release events
The first event type we will deal with is a mouse
button-press (or button-release) event in our window. In
order to register to such an event type, we should add one
(or more) of the following masks when we create our window:
XCB_EVENT_MASK_BUTTON_PRESS: notify us
of any button that was pressed in one of our windows.
XCB_EVENT_MASK_BUTTON_RELEASE: notify us
of any button that was released in one of our windows.
The structure to be checked for in our events loop is the
same for these two events, and is the following:
typedef struct {
uint8_t response_type; /* The type of the event, here it is xcb_button_press_event_t or xcb_button_release_event_t */
xcb_button_t detail;
uint16_t sequence;
xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
xcb_window_t root;
xcb_window_t event;
xcb_window_t child;
int16_t root_x;
int16_t root_y;
int16_t event_x; /* The x coordinate where the mouse has been pressed in the window */
int16_t event_y; /* The y coordinate where the mouse has been pressed in the window */
uint16_t state; /* A mask of the buttons (or keys) during the event */
uint8_t same_screen;
} xcb_button_press_event_t;
typedef xcb_button_press_event_t xcb_button_release_event_t;
The time field may be used to calculate "double-click"
situations by an application (e.g. if the mouse button was
clicked two times in a duration shorter than a given amount
of time, assume this was a double click).
The state field is a mask of the buttons held down during
the event. It is a bitwise OR of any of the following (from the xcb_button_mask_t and
xcb_mod_mask_t enumerations):
XCB_BUTTON_MASK_1
XCB_BUTTON_MASK_2
XCB_BUTTON_MASK_3
XCB_BUTTON_MASK_4
XCB_BUTTON_MASK_5
XCB_MOD_MASK_SHIFT
XCB_MOD_MASK_LOCK
XCB_MOD_MASK_CONTROL
XCB_MOD_MASK_1
XCB_MOD_MASK_2
XCB_MOD_MASK_3
XCB_MOD_MASK_4
XCB_MOD_MASK_5
Their names are self explanatory, where the first 5 refer to
the mouse buttons that are being pressed, while the rest
refer to various "special keys" that are being pressed (Mod1
is usually the 'Alt' key or the 'Meta' key).
TODO: Problem: it seems that the state does not
change when clicking with various buttons.
Mouse movement events
Similar to mouse button press and release events, we also
can be notified of various mouse movement events. These can
be split into two families. One is of mouse pointer
movement while no buttons are pressed, and the second is a
mouse pointer motion while one (or more) of the buttons are
pressed (this is sometimes called "a mouse drag operation",
or just "dragging"). The following event masks may be added
during the creation of our window:
XCB_EVENT_MASK_POINTER_MOTION: events of
the pointer moving in one of the windows controlled by our
application, while no mouse button is held pressed.
XCB_EVENT_MASK_BUTTON_MOTION: Events of
the pointer moving while one or more of the mouse buttons
is held pressed.
XCB_EVENT_MASK_BUTTON_1_MOTION: same as
XCB_EVENT_MASK_BUTTON_MOTION, but only when
the 1st mouse button is held pressed.
XCB_EVENT_MASK_BUTTON_2_MOTION,
XCB_EVENT_MASK_BUTTON_3_MOTION,
XCB_EVENT_MASK_BUTTON_4_MOTION,
XCB_EVENT_MASK_BUTTON_5_MOTION: same as
XCB_EVENT_MASK_BUTTON_1_MOTION, but
respectively for 2nd, 3rd, 4th and 5th mouse button.
The structure to be checked for in our events loop is the
same for these events, and is the following:
typedef struct {
uint8_t response_type; /* The type of the event */
uint8_t detail;
uint16_t sequence;
xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
xcb_window_t root;
xcb_window_t event;
xcb_window_t child;
int16_t root_x;
int16_t root_y;
int16_t event_x; /* The x coordinate of the mouse when the event was generated */
int16_t event_y; /* The y coordinate of the mouse when the event was generated */
uint16_t state; /* A mask of the buttons (or keys) during the event */
uint8_t same_screen;
} xcb_motion_notify_event_t;
Mouse pointer enter and leave events
Another type of event that applications might be interested
in, is a mouse pointer entering a window the program
controls, or leaving such a window. Some programs use these
events to show the user that the application is now in
focus. In order to register for such an event type, we
should add one (or more) of the following masks when we
create our window:
xcb_event_enter_window_t: notify us
when the mouse pointer enters any of our controlled
windows.
xcb_event_leave_window_t: notify us
when the mouse pointer leaves any of our controlled
windows.
The structure to be checked for in our events loop is the
same for these two events, and is the following:
typedef struct {
uint8_t response_type; /* The type of the event */
uint8_t detail;
uint16_t sequence;
xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
xcb_window_t root;
xcb_window_t event;
xcb_window_t child;
int16_t root_x;
int16_t root_y;
int16_t event_x; /* The x coordinate of the mouse when the event was generated */
int16_t event_y; /* The y coordinate of the mouse when the event was generated */
uint16_t state; /* A mask of the buttons (or keys) during the event */
uint8_t mode; /* The number of mouse button that was clicked */
uint8_t same_screen_focus;
} xcb_enter_notify_event_t;
typedef xcb_enter_notify_event_t xcb_leave_notify_event_t;
The keyboard focus
There may be many windows on a screen, but only a single
keyboard attached to them. How does the X server then know
which window should be sent a given keyboard input ? This is
done using the keyboard focus. Only a single window on the
screen may have the keyboard focus at a given time. There
is a XCB function that allows a program to set the keyboard
focus to a given window. The user can usually set the
keyboard focus using the window manager (often by clicking
on the title bar of the desired window). Once our window
has the keyboard focus, every key press or key release will
cause an event to be sent to our program (if it regsitered
for these event types...).
Keyboard press and release events
If a window controlled by our program currently holds the
keyboard focus, it can receive key press and key release
events. So, we should add one (or more) of the following
masks when we create our window:
XCB_EVENT_MASK_KEY_PRESS: notify us when
a key was pressed while any of our controlled windows had
the keyboard focus.
XCB_EVENT_MASK_KEY_RELEASE: notify us
when a key was released while any of our controlled
windows had the keyboard focus.
The structure to be checked for in our events loop is the
same for these two events, and is the following:
typedef struct {
uint8_t response_type; /* The type of the event */
xcb_keycode_t detail;
uint16_t sequence;
xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
xcb_window_t root;
xcb_window_t event;
xcb_window_t child;
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
uint16_t state;
uint8_t same_screen;
} xcb_key_press_event_t;
typedef xcb_key_press_event_t xcb_key_release_event_t;
The detail field refers to the
physical key on the keyboard.
TODO: Talk about getting the ASCII code from the key code.
X events: a complete example
As an example for handling events, we show a program that
creates a window, enters an events loop and checks for all the
events described above, and writes on the terminal the relevant
characteristics of the event. With this code, it should be
easy to add drawing operations, like those which have been
described above.
#include
#include
#include
void
print_modifiers (uint32_t mask)
{
const char **mod, *mods[] = {
"Shift", "Lock", "Ctrl", "Alt",
"Mod2", "Mod3", "Mod4", "Mod5",
"Button1", "Button2", "Button3", "Button4", "Button5"
};
printf ("Modifier mask: ");
for (mod = mods ; mask; mask >>= 1, mod++)
if (mask & 1)
printf(*mod);
putchar ('\n');
}
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_window_t win;
xcb_generic_event_t *e;
uint32_t mask = 0;
uint32_t values[2];
/* Open the connection to the X server */
c = xcb_connect (NULL, NULL);
/* Get the first screen */
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* Ask for our window's Id */
win = xcb_generate_id (c);
/* Create the window */
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = screen->white_pixel;
values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS |
XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION |
XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_KEY_RELEASE;
xcb_create_window (c, /* Connection */
0, /* depth */
win, /* window Id */
screen->root, /* parent window */
0, 0, /* x, y */
150, 150, /* width, height */
10, /* border_width */
XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
screen->root_visual, /* visual */
mask, values); /* masks */
/* Map the window on the screen */
xcb_map_window (c, win);
xcb_flush (c);
while ((e = xcb_wait_for_event (c))) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
xcb_expose_event_t *ev = (xcb_expose_event_t *)e;
printf ("Window %ld exposed. Region to be redrawn at location (%d,%d), with dimension (%d,%d)\n",
ev->window, ev->x, ev->y, ev->width, ev->height);
break;
}
case XCB_BUTTON_PRESS: {
xcb_button_press_event_t *ev = (xcb_button_press_event_t *)e;
print_modifiers(ev->state);
switch (ev->detail) {
case 4:
printf ("Wheel Button up in window %ld, at coordinates (%d,%d)\n",
ev->event, ev->event_x, ev->event_y);
break;
case 5:
printf ("Wheel Button down in window %ld, at coordinates (%d,%d)\n",
ev->event, ev->event_x, ev->event_y);
break;
default:
printf ("Button %d pressed in window %ld, at coordinates (%d,%d)\n",
ev->detail, ev->event, ev->event_x, ev->event_y);
}
break;
}
case XCB_BUTTON_RELEASE: {
xcb_button_release_event_t *ev = (xcb_button_release_event_t *)e;
print_modifiers(ev->state);
printf ("Button %d released in window %ld, at coordinates (%d,%d)\n",
ev->detail, ev->event, ev->event_x, ev->event_y);
break;
}
case XCB_MOTION_NOTIFY: {
xcb_motion_notify_event_t *ev = (xcb_motion_notify_event_t *)e;
printf ("Mouse moved in window %ld, at coordinates (%d,%d)\n",
ev->event, ev->event_x, ev->event_y);
break;
}
case XCB_ENTER_NOTIFY: {
xcb_enter_notify_event_t *ev = (xcb_enter_notify_event_t *)e;
printf ("Mouse entered window %ld, at coordinates (%d,%d)\n",
ev->event, ev->event_x, ev->event_y);
break;
}
case XCB_LEAVE_NOTIFY: {
xcb_leave_notify_event_t *ev = (xcb_leave_notify_event_t *)e;
printf ("Mouse left window %ld, at coordinates (%d,%d)\n",
ev->event, ev->event_x, ev->event_y);
break;
}
case XCB_KEY_PRESS: {
xcb_key_press_event_t *ev = (xcb_key_press_event_t *)e;
print_modifiers(ev->state);
printf ("Key pressed in window %ld\n",
ev->event);
break;
}
case XCB_KEY_RELEASE: {
xcb_key_release_event_t *ev = (xcb_key_release_event_t *)e;
print_modifiers(ev->state);
printf ("Key released in window %ld\n",
ev->event);
break;
}
default:
/* Unknown event type, ignore it */
printf("Unknown event: %d\n", e->response_type);
break;
}
/* Free the Generic Event */
free (e);
}
return 0;
}
Handling text and fonts
Besides drawing graphics on a window, we often want to draw
text. Text strings have two major properties: the characters to
be drawn and the font with which they are drawn. In order to
draw text, we need to first request the X server to load a
font. We then assign a font to a Graphic Context, and finally, we
draw the text in a window, using the Graphic Context.
The Font structure
In order to support flexible fonts, a font type is
defined. You know what ? It's an Id:
typedef uint32_t xcb_font_t;
It is used to contain information about a font, and is passed
to several functions that handle fonts selection and text drawing.
We ask the X server to attribute an Id to our font with the
function:
xcb_font_t xcb_generate_id (xcb_connection_t *c);
Opening a Font
To open a font, we use the following function:
xcb_void_cookie_t xcb_open_font (xcb_connection_t *c,
xcb_font_t fid,
uint16_t name_len,
const char *name);
The fid parameter is the font Id
defined by xcb_generate_id() (see
above). The name parameter is the
name of the font you want to open. Use the command
xlsfonts in a terminal to know which
are the fonts available on your computer. The parameter
name_len is the length of the name
of the font (given by strlen()).
Assigning a Font to a Graphic Context
Once a font is opened, you have to create a Graphic Context
that will contain the informations about the color of the
foreground and the background used when you draw a text in a
Drawable. Here is an exemple of a Graphic Context that will
allow us to draw an opened font with a black foreground and a
white background:
/*
* c is the connection
* screen is the screen where the window is displayed
* window is the window in which we will draw the text
* font is the opened font
*/
uint32_t value_list[3];
xcb_gcontext_t gc;
uint32_t mask;
gc = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
value_list[0] = screen->black_pixel;
value_list[1] = screen->white_pixel;
value_list[2] = font;
xcb_create_gc (c, gc, window, mask, value_list);
/* The font is not needed anymore, so we close it */
xcb_close_font (c, font);
Drawing text in a drawable
To draw a text in a drawable, we use the following function:
xcb_void_cookie_t xcb_image_text_8 (xcb_connection_t *c,
uint8_t string_len,
xcb_drawable_t drawable,
xcb_gcontext_t gc,
int16_t x,
int16_t y,
const char *string);
The string parameter is the text to
draw. The location of the drawing is given by the parameters
x and y.
The base line of the text is exactly the parameter
y.
Complete example
This example draw a text at 10 pixels (for the base line) of
the bottom of a window. Pressing the Esc key exits the program.
#include
#include
#include
#include
#define WIDTH 300
#define HEIGHT 100
static xcb_gc_t gc_font_get (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
const char *font_name);
static void text_draw (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int16_t x1,
int16_t y1,
const char *label);
static void
text_draw (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int16_t x1,
int16_t y1,
const char *label)
{
xcb_void_cookie_t cookie_gc;
xcb_void_cookie_t cookie_text;
xcb_generic_error_t *error;
xcb_gcontext_t gc;
uint8_t length;
length = strlen (label);
gc = gc_font_get(c, screen, window, "7x13");
cookie_text = xcb_image_text_8_checked (c, length, window, gc,
x1,
y1, label);
error = xcb_request_check (c, cookie_text);
if (error) {
fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_gc = xcb_free_gc (c, gc);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
}
static xcb_gc_t
gc_font_get (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
const char *font_name)
{
uint32_t value_list[3];
xcb_void_cookie_t cookie_font;
xcb_void_cookie_t cookie_gc;
xcb_generic_error_t *error;
xcb_font_t font;
xcb_gcontext_t gc;
uint32_t mask;
font = xcb_generate_id (c);
cookie_font = xcb_open_font_checked (c, font,
strlen (font_name),
font_name);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
gc = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
value_list[0] = screen->black_pixel;
value_list[1] = screen->white_pixel;
value_list[2] = font;
cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_font = xcb_close_font_checked (c, font);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
return gc;
}
int main ()
{
xcb_screen_iterator_t screen_iter;
xcb_connection_t *c;
const xcb_setup_t *setup;
xcb_screen_t *screen;
xcb_generic_event_t *e;
xcb_generic_error_t *error;
xcb_void_cookie_t cookie_window;
xcb_void_cookie_t cookie_map;
xcb_window_t window;
uint32_t mask;
uint32_t values[2];
int screen_number;
/* getting the connection */
c = xcb_connect (NULL, &screen_number);
if (!c) {
fprintf (stderr, "ERROR: can't connect to an X server\n");
return -1;
}
/* getting the current screen */
setup = xcb_get_setup (c);
screen = NULL;
screen_iter = xcb_setup_roots_iterator (setup);
for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&screen_iter))
if (screen_number == 0)
{
screen = screen_iter.data;
break;
}
if (!screen) {
fprintf (stderr, "ERROR: can't get the current screen\n");
xcb_disconnect (c);
return -1;
}
/* creating the window */
window = xcb_generate_id (c);
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = screen->white_pixel;
values[1] =
XCB_EVENT_MASK_KEY_RELEASE |
XCB_EVENT_MASK_BUTTON_PRESS |
XCB_EVENT_MASK_EXPOSURE |
XCB_EVENT_MASK_POINTER_MOTION;
cookie_window = xcb_create_window_checked (c,
screen->root_depth,
window, screen->root,
20, 200, WIDTH, HEIGHT,
0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
screen->root_visual,
mask, values);
cookie_map = xcb_map_window_checked (c, window);
/* error managing */
error = xcb_request_check (c, cookie_window);
if (error) {
fprintf (stderr, "ERROR: can't create window : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
error = xcb_request_check (c, cookie_map);
if (error) {
fprintf (stderr, "ERROR: can't map window : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
xcb_flush(c);
while (1) {
e = xcb_poll_for_event(c);
if (e) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
char *text;
text = "Press ESC key to exit...";
text_draw (c, screen, window, 10, HEIGHT - 10, text);
break;
}
case XCB_KEY_RELEASE: {
xcb_key_release_event_t *ev;
ev = (xcb_key_release_event_t *)e;
switch (ev->detail) {
/* ESC */
case 9:
free (e);
xcb_disconnect (c);
return 0;
}
}
}
free (e);
}
}
return 0;
}
Interacting with the window manager
After we have seen how to create windows and draw on them, we
take one step back, and look at how our windows are interacting
with their environment (the full screen and the other
windows). First of all, our application needs to interact with
the window manager. The window manager is responsible to
decorating drawn windows (i.e. adding a frame, an iconify
button, a system menu, a title bar, etc), as well as handling
icons shown when windows are being iconified. It also handles
ordering of windows on the screen, and other administrative
tasks. We need to give it various hints as to how we want it to
treat our application's windows.
Window properties
Many of the parameters communicated to the window manager are
passed using data called "properties". These properties are
attached by the X server to different windows, and are stored
in a format that makes it possible to read them from different
machines that may use different architectures (remember that
an X client program may run on a remote machine).
The property and its type (a string, an integer, etc) are
Id. Their type are xcb_atom_t:
typedef uint32_t xcb_atom_t;
To change the property of a window, we use the following
function:
xcb_void_cookie_t xcb_change_property (xcb_connection_t *c, /* Connection to the X server */
uint8_t mode, /* Property mode */
xcb_window_t window, /* Window */
xcb_atom_t property, /* Property to change */
xcb_atom_t type, /* Type of the property */
uint8_t format, /* Format of the property (8, 16, 32) */
uint32_t data_len, /* Length of the data parameter */
const void *data); /* Data */
The mode parameter coud be one of
the following values (defined in enumeration xcb_prop_mode_t in
the xproto.h header file):
XCB_PROP_MODE_REPLACE
XCB_PROP_MODE_PREPEND
XCB_PROP_MODE_APPEND
Setting the window name and icon name
The first thing we want to do would be to set the name for our
window. This is done using the
xcb_change_property() function. This
name may be used by the window manager as the title of the
window (in the title bar), in a task list, etc. The property
atom to use to set the name of a window is
WM_NAME (and
WM_ICON_NAME for the iconified
window) and its type is STRING. Here
is an example of utilization:
#include
#include
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_window_t win;
char *title = "Hello World !";
char *title_icon = "Hello World ! (iconified)";
/* Open the connection to the X server */
c = xcb_connect (NULL, NULL);
/* Get the first screen */
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* Ask for our window's Id */
win = xcb_generate_id (c);
/* Create the window */
xcb_create_window (c, /* Connection */
0, /* depth */
win, /* window Id */
screen->root, /* parent window */
0, 0, /* x, y */
250, 150, /* width, height */
10, /* border_width */
XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
screen->root_visual, /* visual */
0, NULL); /* masks, not used */
/* Set the title of the window */
xcb_change_property (c, XCB_PROP_MODE_REPLACE, win,
WM_NAME, STRING, 8,
strlen (title), title);
/* Set the title of the window icon */
xcb_change_property (c, XCB_PROP_MODE_REPLACE, win,
WM_ICON_NAME, STRING, 8,
strlen(title_icon), title_icon);
/* Map the window on the screen */
xcb_map_window (c, win);
xcb_flush (c);
while (1) {}
return 0;
}
Note: the use of the atoms needs our program to be compiled
and linked against xcb_atom, so that we have to use
gcc prog.c -o prog `pkg-config --cflags --libs xcb_atom`
for the program to compile fine.
Simple window operations
One more thing we can do to our window is manipulate them on the
screen (resize them, move them, raise or lower them, iconify
them, and so on). Some window operations functions are supplied
by XCB for this purpose.
Mapping and un-mapping a window
The first pair of operations we can apply on a window is
mapping it, or un-mapping it. Mapping a window causes the
window to appear on the screen, as we have seen in our simple
window program example. Un-mapping it causes it to be removed
from the screen (although the window as a logical entity still
exists). This gives the effect of making a window hidden
(unmapped) and shown again (mapped). For example, if we have a
dialog box window in our program, instead of creating it every
time the user asks to open it, we can create the window once,
in an un-mapped mode, and when the user asks to open it, we
simply map the window on the screen. When the user clicked the
'OK' or 'Cancel' button, we simply un-map the window. This is
much faster than creating and destroying the window, however,
the cost is wasted resources, both on the client side, and on
the X server side.
To map a window, you use the following function:
xcb_void_cookie_t xcb_map_window (xcb_connection_t *c,
xcb_window_t window);
To have a simple example, see the example
above. The mapping operation will cause an
Expose event to be sent to our
application, unless the window is completely covered by other
windows.
Un-mapping a window is also simple. You use the function
xcb_void_cookie_t xcb_unmap_window (xcb_connection_t *c,
xcb_window_t window);
The utilization of this function is the same as
xcb_map_window().
Configuring a window
As we have seen when we have created our first window, in the
X Events subsection, we can set some attributes for the window
(that is, the position, the size, the events the window will
receive, etc). If we want to modify them, but the window is
already created, we can change them by using the following
function:
xcb_void_cookie_t xcb_configure_window (xcb_connection_t *c, /* The connection to the X server*/
xcb_window_t window, /* The window to configure */
uint16_t value_mask, /* The mask */
const uint32_t *value_list); /* The values to set */
We set the value_mask to one or
several mask values that are in the xcb_config_window_t enumeration in the xproto.h header:
XCB_CONFIG_WINDOW_X: new x coordinate of the window's top left corner
XCB_CONFIG_WINDOW_Y: new y coordinate of the window's top left corner
XCB_CONFIG_WINDOW_WIDTH: new width of the window
XCB_CONFIG_WINDOW_HEIGHT: new height of the window
XCB_CONFIG_WINDOW_BORDER_WIDTH: new width of the border of the window
XCB_CONFIG_WINDOW_SIBLING
XCB_CONFIG_WINDOW_STACK_MODE: the new stacking order
We then give to value_mask the new
value. We now describe how to use
xcb_configure_window_t in some useful
situations.
Moving a window around the screen
An operation we might want to do with windows is to move them
to a different location. This can be done like this:
const static uint32_t values[] = { 10, 20 };
/* The connection c and the window win are supposed to be defined */
/* Move the window to coordinates x = 10 and y = 20 */
xcb_configure_window (c, win, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, values);
Note that when the window is moved, it might get partially
exposed or partially hidden by other windows, and thus we
might get Expose events due to this
operation.
Resizing a window
Yet another operation we can do is to change the size of a
window. This is done using the following code:
const static uint32_t values[] = { 200, 300 };
/* The connection c and the window win are supposed to be defined */
/* Resize the window to width = 10 and height = 20 */
xcb_configure_window (c, win, XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
We can also combine the move and resize operations using one
single call to xcb_configure_window_t:
const static uint32_t values[] = { 10, 20, 200, 300 };
/* The connection c and the window win are supposed to be defined */
/* Move the window to coordinates x = 10 and y = 20 */
/* and resize the window to width = 10 and height = 20 */
xcb_configure_window (c, win, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
Changing windows stacking order: raise and lower
Until now, we changed properties of a single window. We'll see
that there are properties that relate to the window and other
windows. One of them is the stacking order. That is, the order
in which the windows are layered on top of each other. The
front-most window is said to be on the top of the stack, while
the back-most window is at the bottom of the stack. Here is
how to manipulate our windows stack order:
const static uint32_t values[] = { XCB_STACK_MODE_ABOVE };
/* The connection c and the window win are supposed to be defined */
/* Move the window on the top of the stack */
xcb_configure_window (c, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
const static uint32_t values[] = { XCB_STACK_MODE_BELOW };
/* The connection c and the window win are supposed to be defined */
/* Move the window on the bottom of the stack */
xcb_configure_window (c, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
Getting information about a window
Just like we can set various attributes of our windows, we can
also ask the X server supply the current values of these
attributes. For example, we can check where a window is
located on the screen, what is its current size, whether it is
mapped or not, etc. The structure that contains some of this
information is
typedef struct {
uint8_t response_type;
uint8_t depth; /* depth of the window */
uint16_t sequence;
uint32_t length;
xcb_window_t root; /* Id of the root window *>
int16_t x; /* X coordinate of the window's location */
int16_t y; /* Y coordinate of the window's location */
uint16_t width; /* Width of the window */
uint16_t height; /* Height of the window */
uint16_t border_width; /* Width of the window's border */
} xcb_get_geometry_reply_t;
XCB fill this structure with two functions:
xcb_get_geometry_cookie_t xcb_get_geometry (xcb_connection_t *c,
xcb_drawable_t drawable);
xcb_get_geometry_reply_t *xcb_get_geometry_reply (xcb_connection_t *c,
xcb_get_geometry_cookie_t cookie,
xcb_generic_error_t **e);
You use them as follows:
xcb_connection_t *c;
xcb_drawable_t win;
xcb_get_geometry_reply_t *geom;
/* You initialize c and win */
geom = xcb_get_geometry_reply (c, xcb_get_geometry (c, win), NULL);
/* Do something with the fields of geom */
free (geom);
Remark that you have to free the structure, as
xcb_get_geometry_reply_t allocates a
newly one.
One problem is that the returned location of the window is
relative to its parent window. This makes these coordinates
rather useless for any window manipulation functions, like
moving it on the screen. In order to overcome this problem, we
need to take a two-step operation. First, we find out the Id
of the parent window of our window. We then translate the
above relative coordinates to the screen coordinates.
To get the Id of the parent window, we need this structure:
typedef struct {
uint8_t response_type;
uint8_t pad0;
uint16_t sequence;
uint32_t length;
xcb_window_t root;
xcb_window_t parent; /* Id of the parent window */
uint16_t children_len;
uint8_t pad1[14];
} xcb_query_tree_reply_t;
To fill this structure, we use these two functions:
xcb_query_tree_cookie_t xcb_query_tree (xcb_connection_t *c,
xcb_window_t window);
xcb_query_tree_reply_t *xcb_query_tree_reply (xcb_connection_t *c,
xcb_query_tree_cookie_t cookie,
xcb_generic_error_t **e);
The translated coordinates will be found in this structure:
typedef struct {
uint8_t response_type;
uint8_t same_screen;
uint16_t sequence;
uint32_t length;
xcb_window_t child;
uint16_t dst_x; /* Translated x coordinate */
uint16_t dst_y; /* Translated y coordinate */
} xcb_translate_coordinates_reply_t;
As usual, we need two functions to fill this structure:
xcb_translate_coordinates_cookie_t xcb_translate_coordinates (xcb_connection_t *c,
xcb_window_t src_window,
xcb_window_t dst_window,
int16_t src_x,
int16_t src_y);
xcb_translate_coordinates_reply_t *xcb_translate_coordinates_reply (xcb_connection_t *c,
xcb_translate_coordinates_cookie_t cookie,
xcb_generic_error_t **e);
We use them as follows:
xcb_connection_t *c;
xcb_drawable_t win;
xcb_get_geometry_reply_t *geom;
xcb_query_tree_reply_t *tree;
xcb_translate_coordinates_reply_t *trans;
/* You initialize c and win */
geom = xcb_get_geometry_reply (c, xcb_get_geometry (c, win), NULL);
if (!geom)
return 0;
tree = xcb_query_tree_reply (c, xcb_query_tree (c, win), NULL);
if (!tree)
return 0;
trans = xcb_translate_coordinates_reply (c,
xcb_translate_coordinates (c,
win,
tree->parent,
geom->x, geom->y),
NULL);
if (!trans)
return 0;
/* the translated coordinates are in trans->dst_x and trans->dst_y */
free (trans);
free (tree);
free (geom);
Of course, as for geom,
tree and
trans have to be freed.
The work is a bit hard, but XCB is a very low-level library.
TODO: the utilization of these functions should be a
prog, which displays the coordinates of the window.
There is another structure that gives informations about our window:
typedef struct {
uint8_t response_type;
uint8_t backing_store;
uint16_t sequence;
uint32_t length;
xcb_visualid_t visual; /* Visual of the window */
uint16_t _class;
uint8_t bit_gravity;
uint8_t win_gravity;
uint32_t backing_planes;
uint32_t backing_pixel;
uint8_t save_under;
uint8_t map_is_installed;
uint8_t map_state; /* Map state of the window */
uint8_t override_redirect;
xcb_colormap_t colormap; /* Colormap of the window */
uint32_t all_event_masks;
uint32_t your_event_mask;
uint16_t do_not_propagate_mask;
} xcb_get_window_attributes_reply_t;
XCB supplies these two functions to fill it:
xcb_get_window_attributes_cookie_t xcb_get_window_attributes (xcb_connection_t *c,
xcb_window_t window);
xcb_get_window_attributes_reply_t *xcb_get_window_attributes_reply (xcb_connection_t *c,
xcb_get_window_attributes_cookie_t cookie,
xcb_generic_error_t **e);
You use them as follows:
xcb_connection_t *c;
xcb_drawable_t win;
xcb_get_window_attributes_reply_t *attr;
/* You initialize c and win */
attr = xcb_get_window_attributes_reply (c, xcb_get_window_attributes (c, win), NULL);
if (!attr)
return 0;
/* Do something with the fields of attr */
free (attr);
As for geom,
attr has to be freed.
Using colors to paint the rainbow
Up until now, all our painting operation were done using black
and white. We will (finally) see now how to draw using colors.
Color maps
In the beginning, there were not enough colors. Screen
controllers could only support a limited number of colors
simultaneously (initially 2, then 4, 16 and 256). Because of
this, an application could not just ask to draw in a "light
purple-red" color, and expect that color to be available. Each
application allocated the colors it needed, and when all the
color entries (4, 16, 256 colors) were in use, the next color
allocation would fail.
Thus, the notion of "a color map" was introduced. A color map
is a table whose size is the same as the number of
simultaneous colors a given screen controller. Each entry
contained the RGB (Red, Green and Blue) values of a different
color (all colors can be drawn using some combination of red,
green and blue). When an application wants to draw on the
screen, it does not specify which color to use. Rather, it
specifies which color entry of some color map to be used
during this drawing. Change the value in this color map entry
and the drawing will use a different color.
In order to be able to draw using colors that got something to
do with what the programmer intended, color map allocation
functions are supplied. You could ask to allocate entry for a
color with a set of RGB values. If one already existed, you
would get its index in the table. If none existed, and the
table was not full, a new cell would be allocated to contain
the given RGB values, and its index returned. If the table was
full, the procedure would fail. You could then ask to get a
color map entry with a color that is closest to the one you
were asking for. This would mean that the actual drawing on
the screen would be done using colors similar to what you
wanted, but not the same.
On today's more modern screens where one runs an X server with
support for 16 million colors, this limitation looks a little
silly, but remember that there are still older computers with
older graphics cards out there. Using color map, support for
these screen becomes transparent to you. On a display
supporting 16 million colors, any color entry allocation
request would succeed. On a display supporting a limited
number of colors, some color allocation requests would return
similar colors. It won't look as good, but your application
would still work.
Allocating and freeing Color Maps
When you draw using XCB, you can choose to use the standard
color map of the screen your window is displayed on, or you
can allocate a new color map and apply it to a window. In the
latter case, each time the mouse moves onto your window, the
screen color map will be replaced by your window's color map,
and you'll see all the other windows on screen change their
colors into something quite bizzare. In fact, this is the
effect you get with X applications that use the "-install"
command line option.
In XCB, a color map is (as often in X) an Id:
typedef uint32_t xcb_colormap_t;
In order to access the screen's default color map, you just
have to retrieve the default_colormap
field of the xcb_screen_t structure
(see Section
Checking basic information about a connection):
#include
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_colormap_t colormap;
/* Open the connection to the X server and get the first screen */
c = xcb_connect (NULL, NULL);
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
colormap = screen->default_colormap;
return 0;
}
This will return the color map used by default on the first
screen (again, remember that an X server may support several
different screens, each of which might have its own resources).
The other option, that of allocating a new colormap, works as
follows. We first ask the X server to give an Id to our color
map, with this function:
xcb_colormap_t xcb_generate_id (xcb_connection_t *c);
Then, we create the color map with
xcb_void_cookie_t xcb_create_colormap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
uint8_t alloc, /* Colormap entries to be allocated (AllocNone or AllocAll) */
xcb_colormap_t mid, /* Id of the color map */
xcb_window_t window, /* Window on whose screen the colormap will be created */
xcb_visualid_t visual); /* Id of the visual supported by the screen */
Here is an example of creation of a new color map:
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_window_t win;
xcb_colormap_t cmap
/* Open the connection to the X server and get the first screen */
c = xcb_connect (NULL, NULL);
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* We create the window win here*/
cmap = xcb_generate_id (c);
xcb_create_colormap (c, XCB_COLORMAP_ALLOC_NONE, cmap, win, screen->root_visual);
return 0;
}
Note that the window parameter is only used to allow the X
server to create the color map for the given screen. We can
then use this color map for any window drawn on the same screen.
To free a color map, it suffices to use this function:
xcb_void_cookie_t xcb_free_colormap (xcb_connection_t *c, /* The connection */
xcb_colormap_t cmap); /* The color map */
Comparison Xlib/XCB
XCreateColormap ()
xcb_generate_id ()
xcb_create_colormap ()
XFreeColormap ()
xcb_free_colormap ()
Allocating and freeing a color entry
Once we got access to some color map, we can start allocating
colors. The informations related to a color are stored in the
following structure:
typedef struct {
uint8_t response_type;
uint8_t pad0;
uint16_t sequence;
uint32_t length;
uint16_t red; /* The red component */
uint16_t green; /* The green component */
uint16_t blue; /* The blue component */
uint8_t pad1[2];
uint32_t pixel; /* The entry in the color map, supplied by the X server */
} xcb_alloc_color_reply_t;
XCB supplies these two functions to fill it:
xcb_alloc_color_cookie_t xcb_alloc_color (xcb_connection_t *c,
xcb_colormap_t cmap,
uint16_t red,
uint16_t green,
uint16_t blue);
xcb_alloc_color_reply_t *xcb_alloc_color_reply (xcb_connection_t *c,
xcb_alloc_color_cookie_t cookie,
xcb_generic_error_t **e);
The fuction xcb_alloc_color() takes the
3 RGB components as parameters (red, green and blue). Here is an
example of using these functions:
#include
#include
int
main ()
{
xcb_connection_t *c;
xcb_screen_t *screen;
xcb_window_t win;
xcb_colormap_t cmap;
xcb_alloc_color_reply_t *rep;
/* Open the connection to the X server and get the first screen */
c = xcb_connect (NULL, NULL);
screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
/* We create the window win here*/
cmap = xcb_generate_id (c);
xcb_create_colormap (c, XCB_COLORMAP_ALLOC_NONE, cmap, win, screen->root_visual);
rep = xcb_alloc_color_reply (c, xcb_alloc_color (c, cmap, 65535, 0, 0), NULL);
if (!rep)
return 0;
/* Do something with r->pixel or the components */
free (rep);
return 0;
}
As xcb_alloc_color_reply() allocates
memory, you have to free rep.
TODO: Talk about freeing colors.
X Bitmaps and Pixmaps
One thing many so-called "Multi-Media" applications need to do,
is display images. In the X world, this is done using bitmaps
and pixmaps. We have already seen some usage of them when
setting an icon for our application. Lets study them further,
and see how to draw these images inside a window, along side the
simple graphics and text we have seen so far.
One thing to note before delving further, is that XCB (nor Xlib)
supplies no means of manipulating popular image formats, such as
gif, png, jpeg or tiff. It is up to the programmer (or to higher
level graphics libraries) to translate these image formats into
formats that the X server is familiar with (x bitmaps and x
pixmaps).
What is a X Bitmap? An X Pixmap?
An X bitmap is a two-color image stored in a format specific
to the X window system. When stored in a file, the bitmap data
looks like a C source file. It contains variables defining the
width and the height of the bitmap, an array containing the
bit values of the bitmap (the size of the array is
(width+7)/8*height and the bit and byte order are LSB), and
an optional hot-spot location (that will
be explained later, when discussing mouse cursors).
An X pixmap is a format used to stored images in the memory of
an X server. This format can store both black and white images
(such as x bitmaps) as well as color images. It is the only
image format supported by the X protocol, and any image to be
drawn on screen, should be first translated into this format.
In actuality, an X pixmap can be thought of as a window that
does not appear on the screen. Many graphics operations that
work on windows, will also work on pixmaps. Indeed, the type
of X pixmap in XCB is an Id like a window:
typedef uint32_t xcb_pixmap_t;
Like Xlib, there is no difference between a Drawable, a Window
or a Pixmap:
typedef uint32_t xcb_drawable_t;
in order to avoid confusion between a window and a pixmap. The
operations that will work the same on a window or a pixmap
will require a xcb_drawable_t
Remark: In Xlib, there is no specific difference between a
Drawable, a
Pixmap or a
Window: all are 32 bit long
integer. XCB wraps all these different IDs in structures to
provide some measure of type-safety.
Creating a pixmap
Sometimes we want to create an un-initialized pixmap, so we
can later draw into it. This is useful for image drawing
programs (creating a new empty canvas will cause the creation
of a new pixmap on which the drawing can be stored). It is
also useful when reading various image formats: we load the
image data into memory, create a pixmap on the server, and
then draw the decoded image data onto that pixmap.
To create a new pixmap, we first ask the X server to give an
Id to our pixmap, with this function:
xcb_pixmap_t xcb_generate_id (xcb_connection_t *c);
Then, XCB supplies the following function to create new pixmaps:
xcb_void_cookie_t xcb_create_pixmap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
uint8_t depth, /* Depth of the screen */
xcb_pixmap_t pid, /* Id of the pixmap */
xcb_drawable_t drawable,
uint16_t width, /* Width of the window (in pixels) */
uint16_t height); /* Height of the window (in pixels) */
TODO: Explain the drawable parameter, and give an
example (like xpoints.c)
Drawing a pixmap in a window
Once we got a handle to a pixmap, we can draw it on some
window, using the following function:
xcb_void_cookie_t xcb_copy_area (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
xcb_drawable_t src_drawable, /* The Drawable we want to paste */
xcb_drawable_t dst_drawable, /* The Drawable on which we copy the previous Drawable */
xcb_gcontext_t gc, /* A Graphic Context */
int16_t src_x, /* Top left x coordinate of the region we want to copy */
int16_t src_y, /* Top left y coordinate of the region we want to copy */
int16_t dst_x, /* Top left x coordinate of the region where we want to copy */
int16_t dst_y, /* Top left y coordinate of the region where we want to copy */
uint16_t width, /* Width of the region we want to copy */
uint16_t height); /* Height of the region we want to copy */
As you can see, we could copy the whole pixmap, as well as
only a given rectangle of the pixmap. This is useful to
optimize the drawing speed: we could copy only what we have
modified in the pixmap.
One important note should be made: it is possible to
create pixmaps with different depths on the same screen. When
we perform copy operations (a pixmap onto a window, etc), we
should make sure that both source and target have the same
depth. If they have a different depth, the operation would
fail. The exception to this is if we copy a specific bit plane
of the source pixmap using the
xcb_copy_plane_t function. In such an
event, we can copy a specific plane to the target window (in
actuality, setting a specific bit in the color of each pixel
copied). This can be used to generate strange graphic effects
in a window, but that is beyond the scope of this tutorial.
Freeing a pixmap
Finally, when we are done using a given pixmap, we should free
it, in order to free resources of the X server. This is done
using this function:
xcb_void_cookie_t xcb_free_pixmap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
xcb_pixmap_t pixmap); /* A given pixmap */
Of course, after having freed it, we must not try accessing
the pixmap again.
TODO: Give an example, or a link to xpoints.c
Messing with the mouse cursor
It it possible to modify the shape of the mouse pointer (also
called the X pointer) when in certain states, as we otfen see in
programs. For example, a busy application would often display
the sand clock over its main window, to give the user a visual
hint that he should wait. Let's see how we can change the mouse
cursor of our windows.
Creating and destroying a mouse cursor
There are two methods for creating cursors. One of them is by
using a set of predefined cursors, that are supplied by the X
server, the other is by using a user-supplied bitmap.
In the first method, we use a special font named "cursor", and
the function xcb_create_glyph_cursor:
xcb_void_cookie_t xcb_create_glyph_cursor (xcb_connection_t *c,
xcb_cursor_t cid,
xcb_font_t source_font, /* font for the source glyph */
xcb_font_t mask_font, /* font for the mask glyph or XCB_NONE */
uint16_t source_char, /* character glyph for the source */
uint16_t mask_char, /* character glyph for the mask */
uint16_t fore_red, /* red value for the foreground of the source */
uint16_t fore_green, /* green value for the foreground of the source */
uint16_t fore_blue, /* blue value for the foreground of the source */
uint16_t back_red, /* red value for the background of the source */
uint16_t back_green, /* green value for the background of the source */
uint16_t back_blue) /* blue value for the background of the source */
TODO: Describe source_char
and mask_char, for example by giving
an example on how to get the values. There is a list there:
X Font Cursors
So we first open that font (see Loading a Font)
and create the new cursor. As for every X ressource, we have to
ask for an X id with xcb_generate_id
first:
xcb_font_t font;
xcb_cursor_t cursor;
/* The connection is set */
font = xcb_generate_id (conn);
xcb_open_font (conn, font, strlen ("cursor"), "cursor");
cursor = xcb_generate_id (conn);
xcb_create_glyph_cursor (conn, cursor, font, font,
58, 58 + 1,
0, 0, 0,
0, 0, 0);
We have created the cursor "right hand" by specifying 58 to
the source_font argument and 58 + 1
to the mask_font.
The cursor is destroyed by using the function
xcb_void_cookie_t xcb_free_cursor (xcb_connection_t *c,
xcb_cursor_t cursor);
In the second method, we create a new cursor by using a pair
of pixmaps, with depth of one (that is, two colors
pixmaps). One pixmap defines the shape of the cursor, while
the other works as a mask, specifying which pixels of the
cursor will be actually drawn. The rest of the pixels will be
transparent.
TODO: give an example.
Setting a window's mouse cursor
Once the cursor is created, we can modify the cursor of our
window by using xcb_change_window_attributes
and using the XCB_CWCURSOR attribute:
uint32_t mask;
uint32_t value_list;
/* The connection and window are set */
/* The cursor is already created */
mask = XCB_CWCURSOR;
value_list = cursor;
xcb_change_window_attributes (conn, window, mask, &value_list);
Of course, the cursor and the font must be freed.
Complete example
The following example displays a window with a
button. When entering the window, the window cursor is changed
to an arrow. When clicking once on the button, the cursor is
changed to a hand. When clicking again on the button, the
cursor window gets back to the arrow. The Esc key exits the
application.
#include
#include
#include
#include
#define WIDTH 300
#define HEIGHT 150
static xcb_gc_t gc_font_get (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
const char *font_name);
static void button_draw (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int16_t x1,
int16_t y1,
const char *label);
static void text_draw (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int16_t x1,
int16_t y1,
const char *label);
static void cursor_set (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int cursor_id);
static void
button_draw (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int16_t x1,
int16_t y1,
const char *label)
{
xcb_point_t points[5];
xcb_void_cookie_t cookie_gc;
xcb_void_cookie_t cookie_line;
xcb_void_cookie_t cookie_text;
xcb_generic_error_t *error;
xcb_gcontext_t gc;
int16_t width;
int16_t height;
uint8_t length;
int16_t inset;
length = strlen (label);
inset = 2;
gc = gc_font_get(c, screen, window, "7x13");
width = 7 * length + 2 * (inset + 1);
height = 13 + 2 * (inset + 1);
points[0].x = x1;
points[0].y = y1;
points[1].x = x1 + width;
points[1].y = y1;
points[2].x = x1 + width;
points[2].y = y1 - height;
points[3].x = x1;
points[3].y = y1 - height;
points[4].x = x1;
points[4].y = y1;
cookie_line = xcb_poly_line_checked (c, XCB_COORD_MODE_ORIGIN,
window, gc, 5, points);
error = xcb_request_check (c, cookie_line);
if (error) {
fprintf (stderr, "ERROR: can't draw lines : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_text = xcb_image_text_8_checked (c, length, window, gc,
x1 + inset + 1,
y1 - inset - 1, label);
error = xcb_request_check (c, cookie_text);
if (error) {
fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_gc = xcb_free_gc (c, gc);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
}
static void
text_draw (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int16_t x1,
int16_t y1,
const char *label)
{
xcb_void_cookie_t cookie_gc;
xcb_void_cookie_t cookie_text;
xcb_generic_error_t *error;
xcb_gcontext_t gc;
uint8_t length;
length = strlen (label);
gc = gc_font_get(c, screen, window, "7x13");
cookie_text = xcb_image_text_8_checked (c, length, window, gc,
x1,
y1, label);
error = xcb_request_check (c, cookie_text);
if (error) {
fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_gc = xcb_free_gc (c, gc);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
}
static xcb_gc_t
gc_font_get (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
const char *font_name)
{
uint32_t value_list[3];
xcb_void_cookie_t cookie_font;
xcb_void_cookie_t cookie_gc;
xcb_generic_error_t *error;
xcb_font_t font;
xcb_gcontext_t gc;
uint32_t mask;
font = xcb_generate_id (c);
cookie_font = xcb_open_font_checked (c, font,
strlen (font_name),
font_name);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
gc = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
value_list[0] = screen->black_pixel;
value_list[1] = screen->white_pixel;
value_list[2] = font;
cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cookie_font = xcb_close_font_checked (c, font);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
return gc;
}
static void
cursor_set (xcb_connection_t *c,
xcb_screen_t *screen,
xcb_window_t window,
int cursor_id)
{
uint32_t values_list[3];
xcb_void_cookie_t cookie_font;
xcb_void_cookie_t cookie_gc;
xcb_generic_error_t *error;
xcb_font_t font;
xcb_cursor_t cursor;
xcb_gcontext_t gc;
uint32_t mask;
uint32_t value_list;
font = xcb_generate_id (c);
cookie_font = xcb_open_font_checked (c, font,
strlen ("cursor"),
"cursor");
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
cursor = xcb_generate_id (c);
xcb_create_glyph_cursor (c, cursor, font, font,
cursor_id, cursor_id + 1,
0, 0, 0,
0, 0, 0);
gc = xcb_generate_id (c);
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
values_list[0] = screen->black_pixel;
values_list[1] = screen->white_pixel;
values_list[2] = font;
cookie_gc = xcb_create_gc_checked (c, gc, window, mask, values_list);
error = xcb_request_check (c, cookie_gc);
if (error) {
fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
mask = XCB_CW_CURSOR;
value_list = cursor;
xcb_change_window_attributes (c, window, mask, &value_list);
xcb_free_cursor (c, cursor);
cookie_font = xcb_close_font_checked (c, font);
error = xcb_request_check (c, cookie_font);
if (error) {
fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
xcb_disconnect (c);
exit (-1);
}
}
int main ()
{
xcb_screen_iterator_t screen_iter;
xcb_connection_t *c;
const xcb_setup_t *setup;
xcb_screen_t *screen;
xcb_generic_event_t *e;
xcb_generic_error_t *error;
xcb_void_cookie_t cookie_window;
xcb_void_cookie_t cookie_map;
xcb_window_t window;
uint32_t mask;
uint32_t values[2];
int screen_number;
uint8_t is_hand = 0;
/* getting the connection */
c = xcb_connect (NULL, &screen_number);
if (!c) {
fprintf (stderr, "ERROR: can't connect to an X server\n");
return -1;
}
/* getting the current screen */
setup = xcb_get_setup (c);
screen = NULL;
screen_iter = xcb_setup_roots_iterator (setup);
for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&screen_iter))
if (screen_number == 0)
{
screen = screen_iter.data;
break;
}
if (!screen) {
fprintf (stderr, "ERROR: can't get the current screen\n");
xcb_disconnect (c);
return -1;
}
/* creating the window */
window = xcb_generate_id (c);
mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
values[0] = screen->white_pixel;
values[1] =
XCB_EVENT_MASK_KEY_RELEASE |
XCB_EVENT_MASK_BUTTON_PRESS |
XCB_EVENT_MASK_EXPOSURE |
XCB_EVENT_MASK_POINTER_MOTION;
cookie_window = xcb_create_window_checked (c,
screen->root_depth,
window, screen->root,
20, 200, WIDTH, HEIGHT,
0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
screen->root_visual,
mask, values);
cookie_map = xcb_map_window_checked (c, window);
/* error managing */
error = xcb_request_check (c, cookie_window);
if (error) {
fprintf (stderr, "ERROR: can't create window : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
error = xcb_request_check (c, cookie_map);
if (error) {
fprintf (stderr, "ERROR: can't map window : %d\n", error->error_code);
xcb_disconnect (c);
return -1;
}
cursor_set (c, screen, window, 68);
xcb_flush(c);
while (1) {
e = xcb_poll_for_event(c);
if (e) {
switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
char *text;
text = "click here to change cursor";
button_draw (c, screen, window,
(WIDTH - 7 * strlen(text)) / 2,
(HEIGHT - 16) / 2, text);
text = "Press ESC key to exit...";
text_draw (c, screen, window, 10, HEIGHT - 10, text);
break;
}
case XCB_BUTTON_PRESS: {
xcb_button_press_event_t *ev;
int length;
ev = (xcb_button_press_event_t *)e;
length = strlen ("click here to change cursor");
if ((ev->event_x >= (WIDTH - 7 * length) / 2) &&
(ev->event_x <= ((WIDTH - 7 * length) / 2 + 7 * length + 6)) &&
(ev->event_y >= (HEIGHT - 16) / 2 - 19) &&
(ev->event_y <= ((HEIGHT - 16) / 2)))
is_hand = 1 - is_hand;
is_hand ? cursor_set (c, screen, window, 58) : cursor_set (c, screen, window, 68);
}
case XCB_KEY_RELEASE: {
xcb_key_release_event_t *ev;
ev = (xcb_key_release_event_t *)e;
switch (ev->detail) {
/* ESC */
case 9:
free (e);
xcb_disconnect (c);
return 0;
}
}
}
free (e);
}
}
return 0;
}
Translation of basic Xlib functions and macros
The problem when you want to port an Xlib program to XCB is that
you don't know if the Xlib function that you want to "translate"
is a X Window one or an Xlib macro. In that section, we describe
a way to translate the usual functions or macros that Xlib
provides. It's usually just a member of a structure.
Members of the Display structure
In this section, we look at how to translate the macros that
return some members of the Display
structure. They are obtained by using a function that requires a
xcb_connection_t * or a member of the
xcb_setup_t structure
(via the function xcb_get_setup), or
a function that requires that structure.
ConnectionNumber
This number is the file descriptor that connects the client
to the server. You just have to use that function:
int xcb_get_file_descriptor (xcb_connection_t *c);
DefaultScreen
That number is not stored by XCB. It is returned in the
second parameter of the function xcb_connect.
Hence, you have to store it yourself if you want to use
it. Then, to get the xcb_screen_t
structure, you have to iterate on the screens.
The equivalent function of the Xlib's
ScreenOfDisplay function can be
found below. This is also provided in the
xcb_aux_t library as xcb_aux_get_screen(). OK, here is the
small piece of code to get that number:
xcb_connection_t *c;
int screen_default_nbr;
/* you pass the name of the display you want to xcb_connect_t */
c = xcb_connect (display_name, &screen_default_nbr);
/* screen_default_nbr contains now the number of the default screen */
QLength
Not documented yet.
However, this points out a basic difference in philosophy between
Xlib and XCB. Xlib has several functions for filtering and
manipulating the incoming and outgoing X message queues. XCB
wishes to hide this as much as possible from the user, which
allows for more freedom in implementation strategies.
ScreenCount
You get the count of screens with the functions
xcb_get_setup
and
xcb_setup_roots_iterator
(if you need to iterate):
xcb_connection_t *c;
int screen_count;
/* you init the connection */
screen_count = xcb_setup_roots_iterator (xcb_get_setup (c)).rem;
/* screen_count contains now the count of screens */
If you don't want to iterate over the screens, a better way
to get that number is to use
xcb_setup_roots_length_t:
xcb_connection_t *c;
int screen_count;
/* you init the connection */
screen_count = xcb_setup_roots_length (xcb_get_setup (c));
/* screen_count contains now the count of screens */
ServerVendor
You get the name of the vendor of the server hardware with
the functions xcb_get_setup
and
xcb_setup_vendor. Beware
that, unlike Xlib, the string returned by XCB is not
necessarily null-terminaled:
xcb_connection_t *c;
char *vendor = NULL;
int length;
/* you init the connection */
length = xcb_setup_vendor_length (xcb_get_setup (c));
vendor = (char *)malloc (length + 1);
if (vendor)
memcpy (vendor, xcb_setup_vendor (xcb_get_setup (c)), length);
vendor[length] = '\0';
/* vendor contains now the name of the vendor. Must be freed when not used anymore */
ProtocolVersion
You get the major version of the protocol in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint16_t protocol_major_version;
/* you init the connection */
protocol_major_version = xcb_get_setup (c)->protocol_major_version;
/* protocol_major_version contains now the major version of the protocol */
ProtocolRevision
You get the minor version of the protocol in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint16_t protocol_minor_version;
/* you init the connection */
protocol_minor_version = xcb_get_setup (c)->protocol_minor_version;
/* protocol_minor_version contains now the minor version of the protocol */
VendorRelease
You get the number of the release of the server hardware in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint32_t release_number;
/* you init the connection */
release_number = xcb_get_setup (c)->release_number;
/* release_number contains now the number of the release of the server hardware */
DisplayString
The name of the display is not stored in XCB. You have to
store it by yourself.
BitmapUnit
You get the bitmap scanline unit in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint8_t bitmap_format_scanline_unit;
/* you init the connection */
bitmap_format_scanline_unit = xcb_get_setup (c)->bitmap_format_scanline_unit;
/* bitmap_format_scanline_unit contains now the bitmap scanline unit */
BitmapBitOrder
You get the bitmap bit order in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint8_t bitmap_format_bit_order;
/* you init the connection */
bitmap_format_bit_order = xcb_get_setup (c)->bitmap_format_bit_order;
/* bitmap_format_bit_order contains now the bitmap bit order */
BitmapPad
You get the bitmap scanline pad in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint8_t bitmap_format_scanline_pad;
/* you init the connection */
bitmap_format_scanline_pad = xcb_get_setup (c)->bitmap_format_scanline_pad;
/* bitmap_format_scanline_pad contains now the bitmap scanline pad */
ImageByteOrder
You get the image byte order in the
xcb_setup_t
structure, with the function xcb_get_setup:
xcb_connection_t *c;
uint8_t image_byte_order;
/* you init the connection */
image_byte_order = xcb_get_setup (c)->image_byte_order;
/* image_byte_order contains now the image byte order */
ScreenOfDisplay related functions
in Xlib, ScreenOfDisplay returns a
Screen structure that contains
several characteristics of your screen. XCB has a similar
structure (xcb_screen_t),
but the way to obtain it is a bit different. With
Xlib, you just provide the number of the screen and you grab it
from an array. With XCB, you iterate over all the screens to
obtain the one you want. The complexity of this operation is
O(n). So the best is to store this structure if you use
it often. See screen_of_display just below.
Xlib provides generally two functions to obtain the characteristics
related to the screen. One with the display and the number of
the screen, which calls ScreenOfDisplay,
and the other that uses the Screen structure.
This might be a bit confusing. As mentioned above, with XCB, it
is better to store the xcb_screen_t
structure. Then, you have to read the members of this
structure. That's why the Xlib functions are put by pairs (or
more) as, with XCB, you will use the same code.
ScreenOfDisplay
This function returns the Xlib Screen
structure. With XCB, you iterate over all the screens and
once you get the one you want, you return it:
xcb_screen_t *screen_of_display (xcb_connection_t *c,
int screen)
{
xcb_screen_iterator_t iter;
iter = xcb_setup_roots_iterator (xcb_get_setup (c));
for (; iter.rem; --screen, xcb_screen_next (&iter))
if (screen == 0)
return iter.data;
return NULL;
}
As mentioned above, you might want to store the value
returned by this function.
All the functions below will use the result of that
function, as they just grab a specific member of the
xcb_screen_t structure.
DefaultScreenOfDisplay
It is the default screen that you obtain when you connect to
the X server. It suffices to call the screen_of_display
function above with the connection and the number of the
default screen.
xcb_connection_t *c;
int screen_default_nbr;
xcb_screen_t *default_screen; /* the returned default screen */
/* you pass the name of the display you want to xcb_connect_t */
c = xcb_connect (display_name, &screen_default_nbr);
default_screen = screen_of_display (c, screen_default_nbr);
/* default_screen contains now the default root window, or a NULL window if no screen is found */
RootWindow / RootWindowOfScreen
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
xcb_window_t root_window = { 0 }; /* the returned window */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
root_window = screen->root;
/* root_window contains now the root window, or a NULL window if no screen is found */
DefaultRootWindow
It is the root window of the default screen. So, you call
ScreenOfDisplay with the
default screen number and you get the
root window as above:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_default_nbr;
xcb_window_t root_window = { 0 }; /* the returned root window */
/* you pass the name of the display you want to xcb_connect_t */
c = xcb_connect (display_name, &screen_default_nbr);
screen = screen_of_display (c, screen_default_nbr);
if (screen)
root_window = screen->root;
/* root_window contains now the default root window, or a NULL window if no screen is found */
DefaultVisual / DefaultVisualOfScreen
While a Visual is, in Xlib, a structure, in XCB, there are
two types: xcb_visualid_t, which is
the Id of the visual, and xcb_visualtype_t,
which corresponds to the Xlib Visual. To get the Id of the
visual of a screen, just get the
root_visual
member of a xcb_screen_t:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
xcb_visualid_t root_visual = { 0 }; /* the returned visual Id */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
root_visual = screen->root_visual;
/* root_visual contains now the value of the Id of the visual, or a NULL visual if no screen is found */
To get the xcb_visualtype_t
structure, it's a bit less easy. You have to get the
xcb_screen_t structure that you want,
get its root_visual member,
then iterate over the xcb_depth_ts
and the xcb_visualtype_ts, and compare
the xcb_visualid_t of these xcb_visualtype_ts:
with root_visual:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
xcb_visualid_t root_visual = { 0 };
xcb_visualtype_t *visual_type = NULL; /* the returned visual type */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen) {
xcb_depth_iterator_t depth_iter;
depth_iter = xcb_screen_allowed_depths_iterator (screen);
for (; depth_iter.rem; xcb_depth_next (&depth_iter)) {
xcb_visualtype_iterator_t visual_iter;
visual_iter = xcb_depth_visuals_iterator (depth_iter.data);
for (; visual_iter.rem; xcb_visualtype_next (&visual_iter)) {
if (screen->root_visual == visual_iter.data->visual_id) {
visual_type = visual_iter.data;
break;
}
}
}
}
/* visual_type contains now the visual structure, or a NULL visual structure if no screen is found */
DefaultGC / DefaultGCOfScreen
This default Graphic Context is just a newly created Graphic
Context, associated to the root window of a
xcb_screen_t,
using the black white pixels of that screen:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
xcb_gcontext_t gc = { 0 }; /* the returned default graphic context */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen) {
xcb_drawable_t draw;
uint32_t mask;
uint32_t values[2];
gc = xcb_generate_id (c);
draw = screen->root;
mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND;
values[0] = screen->black_pixel;
values[1] = screen->white_pixel;
xcb_create_gc (c, gc, draw, mask, values);
}
/* gc contains now the default graphic context */
BlackPixel / BlackPixelOfScreen
It is the Id of the black pixel, which is in the structure
of an xcb_screen_t.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t black_pixel = 0; /* the returned black pixel */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
black_pixel = screen->black_pixel;
/* black_pixel contains now the value of the black pixel, or 0 if no screen is found */
WhitePixel / WhitePixelOfScreen
It is the Id of the white pixel, which is in the structure
of an xcb_screen_t.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t white_pixel = 0; /* the returned white pixel */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
white_pixel = screen->white_pixel;
/* white_pixel contains now the value of the white pixel, or 0 if no screen is found */
DisplayWidth / WidthOfScreen
It is the width in pixels of the screen that you want, and
which is in the structure of the corresponding
xcb_screen_t.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t width_in_pixels = 0; /* the returned width in pixels */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
width_in_pixels = screen->width_in_pixels;
/* width_in_pixels contains now the width in pixels, or 0 if no screen is found */
DisplayHeight / HeightOfScreen
It is the height in pixels of the screen that you want, and
which is in the structure of the corresponding
xcb_screen_t.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t height_in_pixels = 0; /* the returned height in pixels */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
height_in_pixels = screen->height_in_pixels;
/* height_in_pixels contains now the height in pixels, or 0 if no screen is found */
DisplayWidthMM / WidthMMOfScreen
It is the width in millimeters of the screen that you want, and
which is in the structure of the corresponding
xcb_screen_t.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t width_in_millimeters = 0; /* the returned width in millimeters */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
width_in_millimeters = screen->width_in_millimeters;
/* width_in_millimeters contains now the width in millimeters, or 0 if no screen is found */
DisplayHeightMM / HeightMMOfScreen
It is the height in millimeters of the screen that you want, and
which is in the structure of the corresponding
xcb_screen_t.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t height_in_millimeters = 0; /* the returned height in millimeters */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
height_in_millimeters = screen->height_in_millimeters;
/* height_in_millimeters contains now the height in millimeters, or 0 if no screen is found */
DisplayPlanes / DefaultDepth / DefaultDepthOfScreen / PlanesOfScreen
It is the depth (in bits) of the root window of the
screen. You get it from the xcb_screen_t structure.
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint8_t root_depth = 0; /* the returned depth of the root window */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
root_depth = screen->root_depth;
/* root_depth contains now the depth of the root window, or 0 if no screen is found */
DefaultColormap / DefaultColormapOfScreen
This is the default colormap of the screen (and not the
(default) colormap of the default screen !). As usual, you
get it from the xcb_screen_t structure:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
xcb_colormap_t default_colormap = { 0 }; /* the returned default colormap */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
default_colormap = screen->default_colormap;
/* default_colormap contains now the default colormap, or a NULL colormap if no screen is found */
MinCmapsOfScreen
You get the minimum installed colormaps in the xcb_screen_t structure:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint16_t min_installed_maps = 0; /* the returned minimum installed colormaps */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
min_installed_maps = screen->min_installed_maps;
/* min_installed_maps contains now the minimum installed colormaps, or 0 if no screen is found */
MaxCmapsOfScreen
You get the maximum installed colormaps in the xcb_screen_t structure:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint16_t max_installed_maps = 0; /* the returned maximum installed colormaps */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
max_installed_maps = screen->max_installed_maps;
/* max_installed_maps contains now the maximum installed colormaps, or 0 if no screen is found */
DoesSaveUnders
You know if save_unders is set,
by looking in the xcb_screen_t structure:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint8_t save_unders = 0; /* the returned value of save_unders */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
save_unders = screen->save_unders;
/* save_unders contains now the value of save_unders, or FALSE if no screen is found */
DoesBackingStore
You know the value of backing_stores,
by looking in the xcb_screen_t structure:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint8_t backing_stores = 0; /* the returned value of backing_stores */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
backing_stores = screen->backing_stores;
/* backing_stores contains now the value of backing_stores, or FALSE if no screen is found */
EventMaskOfScreen
To get the current input masks,
you look in the xcb_screen_t structure:
xcb_connection_t *c;
xcb_screen_t *screen;
int screen_nbr;
uint32_t current_input_masks = 0; /* the returned value of current input masks */
/* you init the connection and screen_nbr */
screen = screen_of_display (c, screen_nbr);
if (screen)
current_input_masks = screen->current_input_masks;
/* current_input_masks contains now the value of the current input masks, or FALSE if no screen is found */
Miscellaneous macros
DisplayOfScreen
in Xlib, the Screen structure
stores its associated Display
structure. This is not the case in the X Window protocol,
hence, it's also not the case in XCB. So you have to store
it by yourself.
DisplayCells / CellsOfScreen
To get the colormap entries,
you look in the xcb_visualtype_t
structure, that you grab like here:
xcb_connection_t *c;
xcb_visualtype_t *visual_type;
uint16_t colormap_entries = 0; /* the returned value of the colormap entries */
/* you init the connection and visual_type */
if (visual_type)
colormap_entries = visual_type->colormap_entries;
/* colormap_entries contains now the value of the colormap entries, or FALSE if no screen is found */
The X New Developer’s Guide: Xlib and XCB
xorg/
guide/
The X New Developer’s Guide: Xlib and XCB
Edit
Page History
Repo Info
Xlib and XCB
Alan Coopersmith
Example: Converting xwininfo from Xlib to XCB
Mixing Xlib & XCB calls
Example: Converting xdpyinfo extension queries to XCB
Extension libraries
API documentation
The two most popular questions about Xlib and XCB may be
"What are they?" and "What's the difference?"
Most programming languages make it awkward for X
applications to spit raw X protocol down the network and
take apart the protocol coming back. Thus, X toolkits and
applications are a lot easier to write if some library
handles these jobs for them, providing an API that fits with
the programming language and environment for connecting to
the X server.
At the bottom level of the X client library stack are Xlib
and XCB, two helper libraries (really sets of libraries)
that provide API for talking to the X server. Xlib and XCB
have different design goals, and were developed in different
periods in the evolution of the X Window System.
Most application developers should call Xlib and XCB
sparingly. Higher level toolkits provide more efficient
programming models, and support features expected in modern
applications, including support for complex
internationalized input and output, accessibility, and
integration with desktop environments. However, sometimes
applications will find themselves needing to make calls to
the raw underlying X11 libraries for operations not
supported by toolkits. An application might need to make
calls to X extension API's not covered in the current
version of the toolkit's programming model. It is also
common for drawing not to be wrapped by toolkit API's. [Yes?
--po8]
The original C-language X11 API is libX11, often referred to
as "Xlib". It was designed to look like a traditional
library API, hiding the fact that calls result in protocol
requests to a server. Calls that don't require a response
from the X server are queued in a buffer to be sent as a
batch of requests to the server. Those that require a
response flush all the buffered requests and then block
until the response is received.
Xlib's mix of synchronous and asynchronous behaviors causes
some problems. Xlib's behaviour is often confusing to new
programmers. Calls appear to work sometimes and not others,
because it is not obvious which calls implicitly flush the
buffer. The asynchronous nature of many calls makes it
difficult to debug problems. When an error is reported, the
stack trace shows the call that was being made when the
error was received and processed, often many calls after the
one that caused the error. Finally, Xlib's synchronous calls
incur avoidable round-trip latency. This latency has a
notable effect on application performance; in particular,
startup times are often greatly increased.
After many years of experience with Xlib, and learning from
it and other protocol interface libraries, a second attempt
was made at defining a C language binding for X11: the "X11
C Binding" layer XCB. XCB makes the client-server nature of
the protocol explicit in its design. The client is in charge
of deciding when to flush the request buffer, when to read
results and when to wait for the server to respond.
For instance, to lookup a window property, the Xlib code is
a single function call:
XGetWindowProperty(dpy, win, atom, 0, 0, False, AnyPropertyType, &type_ret, &format_ret, &num_ret, &bytes_after, &prop_ret);
Xlib generates the request to the X server to retrieve the
property and appends it to its buffer of requests. Since
this is a request that requires a response, Xlib then
flushes the buffer, sending the contents to the X
server. Next, Xlib waits until the X server processes all
the requests preceding the property retrieve request, and
sends the property retrieve reply. Xlib then returns the
reply to the client.
Xlib also provides convenience functions that wrap a
property request. These convenience functions retrieve
specific properties, knowing the details of each property
and how to request and decode it. Examples include
XGetWMName and XGetWMHints. Some of these functions could be
written outside Xlib, but many use Xlib internals in
non-trivial ways and are thus inseparable. [Yes? --po8]
XCB on the other hand, provides functions generated directly
from the protocol descriptions in an "obvious" mechanistic
way. XCB functions map directly onto the protocol, with
separate functions to put requests into the outgoing buffer
and to read results back from the X server asynchronously
later. The XCB version of the above code is:
prop_cookie = xcb_get_property (dpy, False, win, atom, XCB_GET_PROPERTY_TYPE_ANY, 0, 0);
prop_reply = xcb_get_property_reply (dpy, prop_cookie, NULL);
The power of XCB is in allowing those two steps to have as
much code as you want between them. The programmer decides
when to wait for data, instead of being forced to wait for
the data returned by a request at the time the request is
issued.
Example: Converting xwininfo from Xlib to XCB
The program xwininfo is a command-line utility to print
information about windows on an X server. It knows in
advance, from the command line options, most of the data it
needs to request information for each window from the
server. Thus, xwininfo can make its requests all at once,
and then wait for the results to start coming in. When using
the -tree option to walk the window tree, xwininfo can
request the data for all the children of the current window
at once, batching even further. On a local connection on a
single CPU server, this means less context switches between
X client and server. On a multi-core/CPU server, the X
server can process requests on one core while the client is
handling the responses on another core as they become
available, improving performance. On remote connections, the
requests can be grouped into packets closer to the MTU size
of the connection, instead of just sending whatever requests
are in the buffer when a request is made that needs a
response.
Version 1.1 of xwininfo was converted from Xlib to XCB by
Alan Coopersmith. It was tested with a GNOME desktop session
with a few clients. xwininfo was run as "xwininfo -root
-all": this started xwininfo at the root of the window
hierarchy and asked it to traverse the tree, requesting all
the information available for each window along the way. In
this sample session it found 114 windows. (In X, a window is
simply a container for drawing output and receiving
events. X windows are often regions of, or borders around,
the "user windows"). When running locally on a four-core
Intel Nehalem CPU, both versions ran so fast (0.05 seconds
or less) that the difference in time was too small to
accurately measure. To measure remote performance, "ssh -X"
was used to tunnel an X11 connection from California to a
computer in China, and from there back to the workstation in
California, introducing a huge amount of latency. With this
setup, the difference was dramatic between the two:
Xlib: 0.03u 0.02s 8:19.12 0.0%
xcb: 0.00u 0.00s 0:45.26 0.0%
Of course, xwininfo is an unusual X application in a few ways:
xwininfo runs through the requests as fast as it can and
then exits, not waiting for user input (unless you use
the mode where you click on a window to choose it, after
which it runs through as normal). Once they are up and
running, most X applications spend most of their time
waiting for user input, so the overall runtime won't
decrease as much by reducing the time spent
communicating with the X server. However, application
startups are typically dominated by round-trip times,
and so proper use of XCB reduces the huge startup times
of X applications running over high-latency (and even
medium-latency) connections.
xwininfo uses only the core protocol and shape
extension. It does not use the more complex extensions,
such as Render or Xinput, that most modern applications
use. Xinput, XKB, and GLX are especially problematic, as
those have not yet been fully supported in an XCB
release, though support has been worked on through some
Google Summer of Code projects.
xwininfo is small enough that a complete reworking to
use XCB in one shot was feasible. Most applications are
much larger than this. XCB is aimed primarily at new
code and at toolkits: it is designed specifically to
interoperate with existing Xlib applications. Calls to
Xlib and XCB can be mixed, so Xlib applications can be
converted partially or incrementally if desired.
xwininfo used only raw Xlib, without any toolkit. Thus,
it did not have to worry about which X library the
toolkit used.
xwininfo uses only a few of the Xlib helper
functions. This makes it more directly mappable to
XCB. Applications that rely on Xlib's input method
framework, compose key handling or character set
conversion, for example, would be harder to
port. Fortunately, modern toolkits handle most of this
functionality in the toolkit layer anyway.
xwininfo did rely on Xlib helper functions for converting
the window name property from other character sets---the XCB
version currently only works for UTF-8 and Latin-1 window
names. Since most modern toolkits use UTF-8, no one is
likely to notice. Older applications with localized window
names will fail, but there are few of these in use.
Mixing Xlib & XCB calls
As mentioned above, XCB provides a method for incremental
conversion from Xlib to XCB. One can use libX11 to open the
display and pass the Display pointer it returns to existing
code, toolkits, and libraries. To call an XCB function, one
can convert the Display pointer to an xcb_connection_t
pointer for the same connection. This enables calling into
Xlib and XCB from the same application.
Xlib and XCB compatibility was achieved by rebuilding libX11
as a layer on top of libxcb. Xlib and XCB share the same X
server connection and pass control of it back and
forth. That option was introduced in libX11 1.2, and is now
always present (no longer optional) since the 2010 release
of libX11 1.4.
Example: Converting xdpyinfo extension queries to XCB
xdpyinfo is another command-line tool in the standard X
Window System toolset. Like xwininfo, xdpyinfo prints a lot
of information about the X server. xdpyinfo calls many
extensions, and few of its calls block waiting for a
response from the server. If you add the "-queryExt" option,
though, for every extension xdpyinfo calls XQueryExtension
to print which request, event, and error ids are assigned to
that extension in the currently running server. These ids
are dynamically assigned, and vary depending on the set of
extensions enabled in a given server
build/configuration. Thus, the list of extension ids is
critical information to have when debugging X error reports
that reference them. Using "xdpyinfo -queryExt" is
especially needed when reporting an X error message that
comes from a custom error handler like the one in the gtk
toolkit: such error handlers typically omit the extension
information found in the default Xlib error handler, so the
person reading the bug report will be unable to identify the
extension in which the error was encountered.
The Xlib call XQueryExtension takes one extension name at a
time, sends a request to the X server for the id codes for
that extension, and waits for a response so it can return
those ids to the caller. On the Xorg 1.7 server used as the
test system for this conversion, there were 30 active X
extensions, so that's 30 tiny packets sent to the X server,
30 times that the xdpyinfo client blocks in poll() waiting
for a response, and 30 times that the X server goes through
the client handling and request scheduling code before going
back to block again on its own select() loop.
Note: XListExtensions can be used to get a list of available
extensions that can be called with XQueryExtension.
A simple patch to xdpyinfo replaced just that loop of calls
to XQueryExtension with two loops. The first loop called
xcb_query_extension for each extension. When the entire
batch of queries had been issued, a second loop called
xcb_query_extension_reply to start collecting the batched
replies. Gathering system call counts with "truss -c" showed
the expected reduction in a number of system calls made by
the xdpyinfo client:
System call
Xlib
xcb
writev
40
11
poll
80
22
recv
117
29
total
237
62
Over a TCP connection, the switch to XCB for this
transaction reduced both the number of packets and (due to
tcp packet header overhead) the overall amount of data:
Xlib
xcb
TCP packets
93
35
TCP bytes
11554
7726
This sort of change is far more feasible than wholesale
conversion to XCB for most applications. Find the hotspots
where the application is waiting for data from the server
and convert those. There are almost always opportunities in
application startup code, when the application is gathering
the information about the X server and session. Converting
just those calls to more efficient sets of XCB calls can
have major performance benefits. Earlier work by X
developers reduced the latency of many applications by
converting repeated calls to XInternAtom with a single call
to fetch multiple atoms at once via XInternAtoms. XCB
permits a generalization of this principle.
Extension libraries
Each new extension to the X11 protocol adds requests that
clients can make to the X server. To allow client software
to utilize these requests, most extensions offer API's built
on top of Xlib or XCB. These API's use the library's
connection marshalling to include their requests in the
stream sent to the X server.
In the early X11 releases, many of the smaller and more
common extensions were grouped into a common library,
libXext. You will find several there today which are still
in use, such as the MIT-SHM Shared Memory extension, the
SHAPE extension for non-rectangular windows, and the SYNC
extension for event synchronization. However, libXext also
includes some API's for extensions no longer found in
current Xorg server releases, such as App-Group and
Low-Bandwidth X (LBX), as well as extensions many apps never
use, such as DPMS for display power management. Since these
extension API's cannot be removed from libXext without
breaking any existing application which may be using them,
the code is stuck in there.
Accordingly, new Xlib extension API's are no longer added to
libXext. Instead a new library utilizing libX11 is created
for each extension. Having a library per extension makes it
easier to evolve the API for that extension, to deprecate an
obsolete extension and to only link it into the clients that
actually need it. Almost all modern extensions have their
own Xlib API library---libXrender for the RENDER extension,
libXcomposite for the COMPOSITE extension, and so on. A
handful of extensions are so core to the protocol
interaction that they are supported directly in libX11
itself, such as BigRequests, XC-MISC, and XKB.
When XCB added its API style to the mix, it followed the
newer style and created a "libxcb"-prefixed library for each
extension---libxcb-composite, libxcb-render, etc. Since XCB
can generates the API code for an extension automatically
from an XML description of the extension protocol, new
extension API's are created by simply adding the extension
description to the xcb-proto package and rebuilding.
Unfortunately, some of the older extensions have complex
protocols that are not easily described in the XML
syntax. Work is ongoing to extend the syntax and code
generator to handle these. The XKB & GLX protocols are
current challenges.
API documentation
To write code using Xlib or XCB, you'll need to know the
details of the library API. Xlib includes man pages for
most functions, providing a good API reference. libXext
includes man pages for some of the extension API's it
includes, but not all of them. Man page coverage is even
more spotty in the individual Xlib-based extension
libraries.
There's also a more complete guide to the Xlib API, and
specifications for many extension API's, in the X.Org online
doc set at http://www.x.org/releases/current/doc/.
For extensions without Xlib-style API documentation, the
calls are usually simple mappings to the protocol
specifications provided in the above-linked doc set.
For XCB, the documentation relies even more heavily on the
protocol specifications. The generated API is an exact
mapping to the X protocol; it translates the C call data
into X protocol encoded packets as straightforwardly as
possible. The connection management and other functions in
the XCB API are documented at
http://xcb.freedesktop.org/XcbApi/. Work is in progress on
adding support to XCB to generate Unix style reference man
pages from the XML protocol descriptions as well, for
developer convenience.
There is also a XCB tutorial, "Basic Graphics Programming
With The XCB Library" at
http://www.x.org/releases/current/doc/libxcb/tutorial/index.html.
Helping us improve our API documentation for either library
stack is always appreciated. See the Documentation chapter
later in this guide for more information.
The X New Developer’s Guide
<< The X Client Ecosystem
|
Using Extensions >>
Links:
ProgrammingDocumentation
Last edited Sun 14 Jul 2013 05:33:55 PM UTC
XCB: XCB API
XCB
1.12
Main Page
Related Pages
Modules
Data Structures
Files
Data Structures |
Macros |
Typedefs |
Enumerations |
Functions
XCB API
XCB Protocol Implementation.
More...
Data Structures
struct xcb_char2b_t
xcb_char2b_t More...
struct xcb_char2b_iterator_t
xcb_char2b_iterator_t More...
struct xcb_window_iterator_t
xcb_window_iterator_t More...
struct xcb_pixmap_iterator_t
xcb_pixmap_iterator_t More...
struct xcb_cursor_iterator_t
xcb_cursor_iterator_t More...
struct xcb_font_iterator_t
xcb_font_iterator_t More...
struct xcb_gcontext_iterator_t
xcb_gcontext_iterator_t More...
struct xcb_colormap_iterator_t
xcb_colormap_iterator_t More...
struct xcb_atom_iterator_t
xcb_atom_iterator_t More...
struct xcb_drawable_iterator_t
xcb_drawable_iterator_t More...
struct xcb_fontable_iterator_t
xcb_fontable_iterator_t More...
struct xcb_bool32_iterator_t
xcb_bool32_iterator_t More...
struct xcb_visualid_iterator_t
xcb_visualid_iterator_t More...
struct xcb_timestamp_iterator_t
xcb_timestamp_iterator_t More...
struct xcb_keysym_iterator_t
xcb_keysym_iterator_t More...
struct xcb_keycode_iterator_t
xcb_keycode_iterator_t More...
struct xcb_keycode32_iterator_t
xcb_keycode32_iterator_t More...
struct xcb_button_iterator_t
xcb_button_iterator_t More...
struct xcb_point_t
xcb_point_t More...
struct xcb_point_iterator_t
xcb_point_iterator_t More...
struct xcb_rectangle_t
xcb_rectangle_t More...
struct xcb_rectangle_iterator_t
xcb_rectangle_iterator_t More...
struct xcb_arc_t
xcb_arc_t More...
struct xcb_arc_iterator_t
xcb_arc_iterator_t More...
struct xcb_format_t
xcb_format_t More...
struct xcb_format_iterator_t
xcb_format_iterator_t More...
struct xcb_visualtype_t
xcb_visualtype_t More...
struct xcb_visualtype_iterator_t
xcb_visualtype_iterator_t More...
struct xcb_depth_t
xcb_depth_t More...
struct xcb_depth_iterator_t
xcb_depth_iterator_t More...
struct xcb_screen_t
xcb_screen_t More...
struct xcb_screen_iterator_t
xcb_screen_iterator_t More...
struct xcb_setup_request_t
xcb_setup_request_t More...
struct xcb_setup_request_iterator_t
xcb_setup_request_iterator_t More...
struct xcb_setup_failed_t
xcb_setup_failed_t More...
struct xcb_setup_failed_iterator_t
xcb_setup_failed_iterator_t More...
struct xcb_setup_authenticate_t
xcb_setup_authenticate_t More...
struct xcb_setup_authenticate_iterator_t
xcb_setup_authenticate_iterator_t More...
struct xcb_setup_t
xcb_setup_t More...
struct xcb_setup_iterator_t
xcb_setup_iterator_t More...
struct xcb_key_press_event_t
xcb_key_press_event_t More...
struct xcb_button_press_event_t
xcb_button_press_event_t More...
struct xcb_motion_notify_event_t
xcb_motion_notify_event_t More...
struct xcb_enter_notify_event_t
xcb_enter_notify_event_t More...
struct xcb_focus_in_event_t
xcb_focus_in_event_t More...
struct xcb_keymap_notify_event_t
xcb_keymap_notify_event_t More...
struct xcb_expose_event_t
xcb_expose_event_t More...
struct xcb_graphics_exposure_event_t
xcb_graphics_exposure_event_t More...
struct xcb_no_exposure_event_t
xcb_no_exposure_event_t More...
struct xcb_visibility_notify_event_t
xcb_visibility_notify_event_t More...
struct xcb_create_notify_event_t
xcb_create_notify_event_t More...
struct xcb_destroy_notify_event_t
xcb_destroy_notify_event_t More...
struct xcb_unmap_notify_event_t
xcb_unmap_notify_event_t More...
struct xcb_map_notify_event_t
xcb_map_notify_event_t More...
struct xcb_map_request_event_t
xcb_map_request_event_t More...
struct xcb_reparent_notify_event_t
xcb_reparent_notify_event_t More...
struct xcb_configure_notify_event_t
xcb_configure_notify_event_t More...
struct xcb_configure_request_event_t
xcb_configure_request_event_t More...
struct xcb_gravity_notify_event_t
xcb_gravity_notify_event_t More...
struct xcb_resize_request_event_t
xcb_resize_request_event_t More...
struct xcb_circulate_notify_event_t
xcb_circulate_notify_event_t More...
struct xcb_property_notify_event_t
xcb_property_notify_event_t More...
struct xcb_selection_clear_event_t
xcb_selection_clear_event_t More...
struct xcb_selection_request_event_t
xcb_selection_request_event_t More...
struct xcb_selection_notify_event_t
xcb_selection_notify_event_t More...
struct xcb_colormap_notify_event_t
xcb_colormap_notify_event_t More...
union xcb_client_message_data_t
xcb_client_message_data_t More...
struct xcb_client_message_data_iterator_t
xcb_client_message_data_iterator_t More...
struct xcb_client_message_event_t
xcb_client_message_event_t More...
struct xcb_mapping_notify_event_t
xcb_mapping_notify_event_t More...
struct xcb_ge_generic_event_t
xcb_ge_generic_event_t More...
struct xcb_request_error_t
xcb_request_error_t More...
struct xcb_value_error_t
xcb_value_error_t More...
struct xcb_create_window_value_list_t
xcb_create_window_value_list_t More...
struct xcb_create_window_request_t
xcb_create_window_request_t More...
struct xcb_change_window_attributes_value_list_t
xcb_change_window_attributes_value_list_t More...
struct xcb_change_window_attributes_request_t
xcb_change_window_attributes_request_t More...
struct xcb_get_window_attributes_cookie_t
xcb_get_window_attributes_cookie_t More...
struct xcb_get_window_attributes_request_t
xcb_get_window_attributes_request_t More...
struct xcb_get_window_attributes_reply_t
xcb_get_window_attributes_reply_t More...
struct xcb_destroy_window_request_t
xcb_destroy_window_request_t More...
struct xcb_destroy_subwindows_request_t
xcb_destroy_subwindows_request_t More...
struct xcb_change_save_set_request_t
xcb_change_save_set_request_t More...
struct xcb_reparent_window_request_t
xcb_reparent_window_request_t More...
struct xcb_map_window_request_t
xcb_map_window_request_t More...
struct xcb_map_subwindows_request_t
xcb_map_subwindows_request_t More...
struct xcb_unmap_window_request_t
xcb_unmap_window_request_t More...
struct xcb_unmap_subwindows_request_t
xcb_unmap_subwindows_request_t More...
struct xcb_configure_window_value_list_t
xcb_configure_window_value_list_t More...
struct xcb_configure_window_request_t
xcb_configure_window_request_t More...
struct xcb_circulate_window_request_t
xcb_circulate_window_request_t More...
struct xcb_get_geometry_cookie_t
xcb_get_geometry_cookie_t More...
struct xcb_get_geometry_request_t
xcb_get_geometry_request_t More...
struct xcb_get_geometry_reply_t
xcb_get_geometry_reply_t More...
struct xcb_query_tree_cookie_t
xcb_query_tree_cookie_t More...
struct xcb_query_tree_request_t
xcb_query_tree_request_t More...
struct xcb_query_tree_reply_t
xcb_query_tree_reply_t More...
struct xcb_intern_atom_cookie_t
xcb_intern_atom_cookie_t More...
struct xcb_intern_atom_request_t
xcb_intern_atom_request_t More...
struct xcb_intern_atom_reply_t
xcb_intern_atom_reply_t More...
struct xcb_get_atom_name_cookie_t
xcb_get_atom_name_cookie_t More...
struct xcb_get_atom_name_request_t
xcb_get_atom_name_request_t More...
struct xcb_get_atom_name_reply_t
xcb_get_atom_name_reply_t More...
struct xcb_change_property_request_t
xcb_change_property_request_t More...
struct xcb_delete_property_request_t
xcb_delete_property_request_t More...
struct xcb_get_property_cookie_t
xcb_get_property_cookie_t More...
struct xcb_get_property_request_t
xcb_get_property_request_t More...
struct xcb_get_property_reply_t
xcb_get_property_reply_t More...
struct xcb_list_properties_cookie_t
xcb_list_properties_cookie_t More...
struct xcb_list_properties_request_t
xcb_list_properties_request_t More...
struct xcb_list_properties_reply_t
xcb_list_properties_reply_t More...
struct xcb_set_selection_owner_request_t
xcb_set_selection_owner_request_t More...
struct xcb_get_selection_owner_cookie_t
xcb_get_selection_owner_cookie_t More...
struct xcb_get_selection_owner_request_t
xcb_get_selection_owner_request_t More...
struct xcb_get_selection_owner_reply_t
xcb_get_selection_owner_reply_t More...
struct xcb_convert_selection_request_t
xcb_convert_selection_request_t More...
struct xcb_send_event_request_t
xcb_send_event_request_t More...
struct xcb_grab_pointer_cookie_t
xcb_grab_pointer_cookie_t More...
struct xcb_grab_pointer_request_t
xcb_grab_pointer_request_t More...
struct xcb_grab_pointer_reply_t
xcb_grab_pointer_reply_t More...
struct xcb_ungrab_pointer_request_t
xcb_ungrab_pointer_request_t More...
struct xcb_grab_button_request_t
xcb_grab_button_request_t More...
struct xcb_ungrab_button_request_t
xcb_ungrab_button_request_t More...
struct xcb_change_active_pointer_grab_request_t
xcb_change_active_pointer_grab_request_t More...
struct xcb_grab_keyboard_cookie_t
xcb_grab_keyboard_cookie_t More...
struct xcb_grab_keyboard_request_t
xcb_grab_keyboard_request_t More...
struct xcb_grab_keyboard_reply_t
xcb_grab_keyboard_reply_t More...
struct xcb_ungrab_keyboard_request_t
xcb_ungrab_keyboard_request_t More...
struct xcb_grab_key_request_t
xcb_grab_key_request_t More...
struct xcb_ungrab_key_request_t
xcb_ungrab_key_request_t More...
struct xcb_allow_events_request_t
xcb_allow_events_request_t More...
struct xcb_grab_server_request_t
xcb_grab_server_request_t More...
struct xcb_ungrab_server_request_t
xcb_ungrab_server_request_t More...
struct xcb_query_pointer_cookie_t
xcb_query_pointer_cookie_t More...
struct xcb_query_pointer_request_t
xcb_query_pointer_request_t More...
struct xcb_query_pointer_reply_t
xcb_query_pointer_reply_t More...
struct xcb_timecoord_t
xcb_timecoord_t More...
struct xcb_timecoord_iterator_t
xcb_timecoord_iterator_t More...
struct xcb_get_motion_events_cookie_t
xcb_get_motion_events_cookie_t More...
struct xcb_get_motion_events_request_t
xcb_get_motion_events_request_t More...
struct xcb_get_motion_events_reply_t
xcb_get_motion_events_reply_t More...
struct xcb_translate_coordinates_cookie_t
xcb_translate_coordinates_cookie_t More...
struct xcb_translate_coordinates_request_t
xcb_translate_coordinates_request_t More...
struct xcb_translate_coordinates_reply_t
xcb_translate_coordinates_reply_t More...
struct xcb_warp_pointer_request_t
xcb_warp_pointer_request_t More...
struct xcb_set_input_focus_request_t
xcb_set_input_focus_request_t More...
struct xcb_get_input_focus_cookie_t
xcb_get_input_focus_cookie_t More...
struct xcb_get_input_focus_request_t
xcb_get_input_focus_request_t More...
struct xcb_get_input_focus_reply_t
xcb_get_input_focus_reply_t More...
struct xcb_query_keymap_cookie_t
xcb_query_keymap_cookie_t More...
struct xcb_query_keymap_request_t
xcb_query_keymap_request_t More...
struct xcb_query_keymap_reply_t
xcb_query_keymap_reply_t More...
struct xcb_open_font_request_t
xcb_open_font_request_t More...
struct xcb_close_font_request_t
xcb_close_font_request_t More...
struct xcb_fontprop_t
xcb_fontprop_t More...
struct xcb_fontprop_iterator_t
xcb_fontprop_iterator_t More...
struct xcb_charinfo_t
xcb_charinfo_t More...
struct xcb_charinfo_iterator_t
xcb_charinfo_iterator_t More...
struct xcb_query_font_cookie_t
xcb_query_font_cookie_t More...
struct xcb_query_font_request_t
xcb_query_font_request_t More...
struct xcb_query_font_reply_t
xcb_query_font_reply_t More...
struct xcb_query_text_extents_cookie_t
xcb_query_text_extents_cookie_t More...
struct xcb_query_text_extents_request_t
xcb_query_text_extents_request_t More...
struct xcb_query_text_extents_reply_t
xcb_query_text_extents_reply_t More...
struct xcb_str_t
xcb_str_t More...
struct xcb_str_iterator_t
xcb_str_iterator_t More...
struct xcb_list_fonts_cookie_t
xcb_list_fonts_cookie_t More...
struct xcb_list_fonts_request_t
xcb_list_fonts_request_t More...
struct xcb_list_fonts_reply_t
xcb_list_fonts_reply_t More...
struct xcb_list_fonts_with_info_cookie_t
xcb_list_fonts_with_info_cookie_t More...
struct xcb_list_fonts_with_info_request_t
xcb_list_fonts_with_info_request_t More...
struct xcb_list_fonts_with_info_reply_t
xcb_list_fonts_with_info_reply_t More...
struct xcb_set_font_path_request_t
xcb_set_font_path_request_t More...
struct xcb_get_font_path_cookie_t
xcb_get_font_path_cookie_t More...
struct xcb_get_font_path_request_t
xcb_get_font_path_request_t More...
struct xcb_get_font_path_reply_t
xcb_get_font_path_reply_t More...
struct xcb_create_pixmap_request_t
xcb_create_pixmap_request_t More...
struct xcb_free_pixmap_request_t
xcb_free_pixmap_request_t More...
struct xcb_create_gc_value_list_t
xcb_create_gc_value_list_t More...
struct xcb_create_gc_request_t
xcb_create_gc_request_t More...
struct xcb_change_gc_value_list_t
xcb_change_gc_value_list_t More...
struct xcb_change_gc_request_t
xcb_change_gc_request_t More...
struct xcb_copy_gc_request_t
xcb_copy_gc_request_t More...
struct xcb_set_dashes_request_t
xcb_set_dashes_request_t More...
struct xcb_set_clip_rectangles_request_t
xcb_set_clip_rectangles_request_t More...
struct xcb_free_gc_request_t
xcb_free_gc_request_t More...
struct xcb_clear_area_request_t
xcb_clear_area_request_t More...
struct xcb_copy_area_request_t
xcb_copy_area_request_t More...
struct xcb_copy_plane_request_t
xcb_copy_plane_request_t More...
struct xcb_poly_point_request_t
xcb_poly_point_request_t More...
struct xcb_poly_line_request_t
xcb_poly_line_request_t More...
struct xcb_segment_t
xcb_segment_t More...
struct xcb_segment_iterator_t
xcb_segment_iterator_t More...
struct xcb_poly_segment_request_t
xcb_poly_segment_request_t More...
struct xcb_poly_rectangle_request_t
xcb_poly_rectangle_request_t More...
struct xcb_poly_arc_request_t
xcb_poly_arc_request_t More...
struct xcb_fill_poly_request_t
xcb_fill_poly_request_t More...
struct xcb_poly_fill_rectangle_request_t
xcb_poly_fill_rectangle_request_t More...
struct xcb_poly_fill_arc_request_t
xcb_poly_fill_arc_request_t More...
struct xcb_put_image_request_t
xcb_put_image_request_t More...
struct xcb_get_image_cookie_t
xcb_get_image_cookie_t More...
struct xcb_get_image_request_t
xcb_get_image_request_t More...
struct xcb_get_image_reply_t
xcb_get_image_reply_t More...
struct xcb_poly_text_8_request_t
xcb_poly_text_8_request_t More...
struct xcb_poly_text_16_request_t
xcb_poly_text_16_request_t More...
struct xcb_image_text_8_request_t
xcb_image_text_8_request_t More...
struct xcb_image_text_16_request_t
xcb_image_text_16_request_t More...
struct xcb_create_colormap_request_t
xcb_create_colormap_request_t More...
struct xcb_free_colormap_request_t
xcb_free_colormap_request_t More...
struct xcb_copy_colormap_and_free_request_t
xcb_copy_colormap_and_free_request_t More...
struct xcb_install_colormap_request_t
xcb_install_colormap_request_t More...
struct xcb_uninstall_colormap_request_t
xcb_uninstall_colormap_request_t More...
struct xcb_list_installed_colormaps_cookie_t
xcb_list_installed_colormaps_cookie_t More...
struct xcb_list_installed_colormaps_request_t
xcb_list_installed_colormaps_request_t More...
struct xcb_list_installed_colormaps_reply_t
xcb_list_installed_colormaps_reply_t More...
struct xcb_alloc_color_cookie_t
xcb_alloc_color_cookie_t More...
struct xcb_alloc_color_request_t
xcb_alloc_color_request_t More...
struct xcb_alloc_color_reply_t
xcb_alloc_color_reply_t More...
struct xcb_alloc_named_color_cookie_t
xcb_alloc_named_color_cookie_t More...
struct xcb_alloc_named_color_request_t
xcb_alloc_named_color_request_t More...
struct xcb_alloc_named_color_reply_t
xcb_alloc_named_color_reply_t More...
struct xcb_alloc_color_cells_cookie_t
xcb_alloc_color_cells_cookie_t More...
struct xcb_alloc_color_cells_request_t
xcb_alloc_color_cells_request_t More...
struct xcb_alloc_color_cells_reply_t
xcb_alloc_color_cells_reply_t More...
struct xcb_alloc_color_planes_cookie_t
xcb_alloc_color_planes_cookie_t More...
struct xcb_alloc_color_planes_request_t
xcb_alloc_color_planes_request_t More...
struct xcb_alloc_color_planes_reply_t
xcb_alloc_color_planes_reply_t More...
struct xcb_free_colors_request_t
xcb_free_colors_request_t More...
struct xcb_coloritem_t
xcb_coloritem_t More...
struct xcb_coloritem_iterator_t
xcb_coloritem_iterator_t More...
struct xcb_store_colors_request_t
xcb_store_colors_request_t More...
struct xcb_store_named_color_request_t
xcb_store_named_color_request_t More...
struct xcb_rgb_t
xcb_rgb_t More...
struct xcb_rgb_iterator_t
xcb_rgb_iterator_t More...
struct xcb_query_colors_cookie_t
xcb_query_colors_cookie_t More...
struct xcb_query_colors_request_t
xcb_query_colors_request_t More...
struct xcb_query_colors_reply_t
xcb_query_colors_reply_t More...
struct xcb_lookup_color_cookie_t
xcb_lookup_color_cookie_t More...
struct xcb_lookup_color_request_t
xcb_lookup_color_request_t More...
struct xcb_lookup_color_reply_t
xcb_lookup_color_reply_t More...
struct xcb_create_cursor_request_t
xcb_create_cursor_request_t More...
struct xcb_create_glyph_cursor_request_t
xcb_create_glyph_cursor_request_t More...
struct xcb_free_cursor_request_t
xcb_free_cursor_request_t More...
struct xcb_recolor_cursor_request_t
xcb_recolor_cursor_request_t More...
struct xcb_query_best_size_cookie_t
xcb_query_best_size_cookie_t More...
struct xcb_query_best_size_request_t
xcb_query_best_size_request_t More...
struct xcb_query_best_size_reply_t
xcb_query_best_size_reply_t More...
struct xcb_query_extension_cookie_t
xcb_query_extension_cookie_t More...
struct xcb_query_extension_request_t
xcb_query_extension_request_t More...
struct xcb_query_extension_reply_t
xcb_query_extension_reply_t More...
struct xcb_list_extensions_cookie_t
xcb_list_extensions_cookie_t More...
struct xcb_list_extensions_request_t
xcb_list_extensions_request_t More...
struct xcb_list_extensions_reply_t
xcb_list_extensions_reply_t More...
struct xcb_change_keyboard_mapping_request_t
xcb_change_keyboard_mapping_request_t More...
struct xcb_get_keyboard_mapping_cookie_t
xcb_get_keyboard_mapping_cookie_t More...
struct xcb_get_keyboard_mapping_request_t
xcb_get_keyboard_mapping_request_t More...
struct xcb_get_keyboard_mapping_reply_t
xcb_get_keyboard_mapping_reply_t More...
struct xcb_change_keyboard_control_value_list_t
xcb_change_keyboard_control_value_list_t More...
struct xcb_change_keyboard_control_request_t
xcb_change_keyboard_control_request_t More...
struct xcb_get_keyboard_control_cookie_t
xcb_get_keyboard_control_cookie_t More...
struct xcb_get_keyboard_control_request_t
xcb_get_keyboard_control_request_t More...
struct xcb_get_keyboard_control_reply_t
xcb_get_keyboard_control_reply_t More...
struct xcb_bell_request_t
xcb_bell_request_t More...
struct xcb_change_pointer_control_request_t
xcb_change_pointer_control_request_t More...
struct xcb_get_pointer_control_cookie_t
xcb_get_pointer_control_cookie_t More...
struct xcb_get_pointer_control_request_t
xcb_get_pointer_control_request_t More...
struct xcb_get_pointer_control_reply_t
xcb_get_pointer_control_reply_t More...
struct xcb_set_screen_saver_request_t
xcb_set_screen_saver_request_t More...
struct xcb_get_screen_saver_cookie_t
xcb_get_screen_saver_cookie_t More...
struct xcb_get_screen_saver_request_t
xcb_get_screen_saver_request_t More...
struct xcb_get_screen_saver_reply_t
xcb_get_screen_saver_reply_t More...
struct xcb_change_hosts_request_t
xcb_change_hosts_request_t More...
struct xcb_host_t
xcb_host_t More...
struct xcb_host_iterator_t
xcb_host_iterator_t More...
struct xcb_list_hosts_cookie_t
xcb_list_hosts_cookie_t More...
struct xcb_list_hosts_request_t
xcb_list_hosts_request_t More...
struct xcb_list_hosts_reply_t
xcb_list_hosts_reply_t More...
struct xcb_set_access_control_request_t
xcb_set_access_control_request_t More...
struct xcb_set_close_down_mode_request_t
xcb_set_close_down_mode_request_t More...
struct xcb_kill_client_request_t
xcb_kill_client_request_t More...
struct xcb_rotate_properties_request_t
xcb_rotate_properties_request_t More...
struct xcb_force_screen_saver_request_t
xcb_force_screen_saver_request_t More...
struct xcb_set_pointer_mapping_cookie_t
xcb_set_pointer_mapping_cookie_t More...
struct xcb_set_pointer_mapping_request_t
xcb_set_pointer_mapping_request_t More...
struct xcb_set_pointer_mapping_reply_t
xcb_set_pointer_mapping_reply_t More...
struct xcb_get_pointer_mapping_cookie_t
xcb_get_pointer_mapping_cookie_t More...
struct xcb_get_pointer_mapping_request_t
xcb_get_pointer_mapping_request_t More...
struct xcb_get_pointer_mapping_reply_t
xcb_get_pointer_mapping_reply_t More...
struct xcb_set_modifier_mapping_cookie_t
xcb_set_modifier_mapping_cookie_t More...
struct xcb_set_modifier_mapping_request_t
xcb_set_modifier_mapping_request_t More...
struct xcb_set_modifier_mapping_reply_t
xcb_set_modifier_mapping_reply_t More...
struct xcb_get_modifier_mapping_cookie_t
xcb_get_modifier_mapping_cookie_t More...
struct xcb_get_modifier_mapping_request_t
xcb_get_modifier_mapping_request_t More...
struct xcb_get_modifier_mapping_reply_t
xcb_get_modifier_mapping_reply_t More...
struct xcb_no_operation_request_t
xcb_no_operation_request_t More...
Macros
#define XCB_KEY_PRESS 2
#define XCB_KEY_RELEASE 3
#define XCB_BUTTON_PRESS 4
#define XCB_BUTTON_RELEASE 5
#define XCB_MOTION_NOTIFY 6
#define XCB_ENTER_NOTIFY 7
#define XCB_LEAVE_NOTIFY 8
#define XCB_FOCUS_IN 9
#define XCB_FOCUS_OUT 10
#define XCB_KEYMAP_NOTIFY 11
#define XCB_EXPOSE 12
#define XCB_GRAPHICS_EXPOSURE 13
#define XCB_NO_EXPOSURE 14
#define XCB_VISIBILITY_NOTIFY 15
#define XCB_CREATE_NOTIFY 16
#define XCB_DESTROY_NOTIFY 17
#define XCB_UNMAP_NOTIFY 18
#define XCB_MAP_NOTIFY 19
#define XCB_MAP_REQUEST 20
#define XCB_REPARENT_NOTIFY 21
#define XCB_CONFIGURE_NOTIFY 22
#define XCB_CONFIGURE_REQUEST 23
#define XCB_GRAVITY_NOTIFY 24
#define XCB_RESIZE_REQUEST 25
#define XCB_CIRCULATE_NOTIFY 26
#define XCB_CIRCULATE_REQUEST 27
#define XCB_PROPERTY_NOTIFY 28
#define XCB_SELECTION_CLEAR 29
#define XCB_SELECTION_REQUEST 30
#define XCB_SELECTION_NOTIFY 31
#define XCB_COLORMAP_NOTIFY 32
#define XCB_CLIENT_MESSAGE 33
#define XCB_MAPPING_NOTIFY 34
#define XCB_GE_GENERIC 35
#define XCB_REQUEST 1
#define XCB_VALUE 2
#define XCB_WINDOW 3
#define XCB_PIXMAP 4
#define XCB_ATOM 5
#define XCB_CURSOR 6
#define XCB_FONT 7
#define XCB_MATCH 8
#define XCB_DRAWABLE 9
#define XCB_ACCESS 10
#define XCB_ALLOC 11
#define XCB_COLORMAP 12
#define XCB_G_CONTEXT 13
#define XCB_ID_CHOICE 14
#define XCB_NAME 15
#define XCB_LENGTH 16
#define XCB_IMPLEMENTATION 17
#define XCB_CREATE_WINDOW 1
#define XCB_CHANGE_WINDOW_ATTRIBUTES 2
#define XCB_GET_WINDOW_ATTRIBUTES 3
#define XCB_DESTROY_WINDOW 4
#define XCB_DESTROY_SUBWINDOWS 5
#define XCB_CHANGE_SAVE_SET 6
#define XCB_REPARENT_WINDOW 7
#define XCB_MAP_WINDOW 8
#define XCB_MAP_SUBWINDOWS 9
#define XCB_UNMAP_WINDOW 10
#define XCB_UNMAP_SUBWINDOWS 11
#define XCB_CONFIGURE_WINDOW 12
#define XCB_CIRCULATE_WINDOW 13
#define XCB_GET_GEOMETRY 14
#define XCB_QUERY_TREE 15
#define XCB_INTERN_ATOM 16
#define XCB_GET_ATOM_NAME 17
#define XCB_CHANGE_PROPERTY 18
#define XCB_DELETE_PROPERTY 19
#define XCB_GET_PROPERTY 20
#define XCB_LIST_PROPERTIES 21
#define XCB_SET_SELECTION_OWNER 22
#define XCB_GET_SELECTION_OWNER 23
#define XCB_CONVERT_SELECTION 24
#define XCB_SEND_EVENT 25
#define XCB_GRAB_POINTER 26
#define XCB_UNGRAB_POINTER 27
#define XCB_GRAB_BUTTON 28
#define XCB_UNGRAB_BUTTON 29
#define XCB_CHANGE_ACTIVE_POINTER_GRAB 30
#define XCB_GRAB_KEYBOARD 31
#define XCB_UNGRAB_KEYBOARD 32
#define XCB_GRAB_KEY 33
#define XCB_UNGRAB_KEY 34
#define XCB_ALLOW_EVENTS 35
#define XCB_GRAB_SERVER 36
#define XCB_UNGRAB_SERVER 37
#define XCB_QUERY_POINTER 38
#define XCB_GET_MOTION_EVENTS 39
#define XCB_TRANSLATE_COORDINATES 40
#define XCB_WARP_POINTER 41
#define XCB_SET_INPUT_FOCUS 42
#define XCB_GET_INPUT_FOCUS 43
#define XCB_QUERY_KEYMAP 44
#define XCB_OPEN_FONT 45
#define XCB_CLOSE_FONT 46
#define XCB_QUERY_FONT 47
#define XCB_QUERY_TEXT_EXTENTS 48
#define XCB_LIST_FONTS 49
#define XCB_LIST_FONTS_WITH_INFO 50
#define XCB_SET_FONT_PATH 51
#define XCB_GET_FONT_PATH 52
#define XCB_CREATE_PIXMAP 53
#define XCB_FREE_PIXMAP 54
#define XCB_CREATE_GC 55
#define XCB_CHANGE_GC 56
#define XCB_COPY_GC 57
#define XCB_SET_DASHES 58
#define XCB_SET_CLIP_RECTANGLES 59
#define XCB_FREE_GC 60
#define XCB_CLEAR_AREA 61
#define XCB_COPY_AREA 62
#define XCB_COPY_PLANE 63
#define XCB_POLY_POINT 64
#define XCB_POLY_LINE 65
#define XCB_POLY_SEGMENT 66
#define XCB_POLY_RECTANGLE 67
#define XCB_POLY_ARC 68
#define XCB_FILL_POLY 69
#define XCB_POLY_FILL_RECTANGLE 70
#define XCB_POLY_FILL_ARC 71
#define XCB_PUT_IMAGE 72
#define XCB_GET_IMAGE 73
#define XCB_POLY_TEXT_8 74
#define XCB_POLY_TEXT_16 75
#define XCB_IMAGE_TEXT_8 76
#define XCB_IMAGE_TEXT_16 77
#define XCB_CREATE_COLORMAP 78
#define XCB_FREE_COLORMAP 79
#define XCB_COPY_COLORMAP_AND_FREE 80
#define XCB_INSTALL_COLORMAP 81
#define XCB_UNINSTALL_COLORMAP 82
#define XCB_LIST_INSTALLED_COLORMAPS 83
#define XCB_ALLOC_COLOR 84
#define XCB_ALLOC_NAMED_COLOR 85
#define XCB_ALLOC_COLOR_CELLS 86
#define XCB_ALLOC_COLOR_PLANES 87
#define XCB_FREE_COLORS 88
#define XCB_STORE_COLORS 89
#define XCB_STORE_NAMED_COLOR 90
#define XCB_QUERY_COLORS 91
#define XCB_LOOKUP_COLOR 92
#define XCB_CREATE_CURSOR 93
#define XCB_CREATE_GLYPH_CURSOR 94
#define XCB_FREE_CURSOR 95
#define XCB_RECOLOR_CURSOR 96
#define XCB_QUERY_BEST_SIZE 97
#define XCB_QUERY_EXTENSION 98
#define XCB_LIST_EXTENSIONS 99
#define XCB_CHANGE_KEYBOARD_MAPPING 100
#define XCB_GET_KEYBOARD_MAPPING 101
#define XCB_CHANGE_KEYBOARD_CONTROL 102
#define XCB_GET_KEYBOARD_CONTROL 103
#define XCB_BELL 104
#define XCB_CHANGE_POINTER_CONTROL 105
#define XCB_GET_POINTER_CONTROL 106
#define XCB_SET_SCREEN_SAVER 107
#define XCB_GET_SCREEN_SAVER 108
#define XCB_CHANGE_HOSTS 109
#define XCB_LIST_HOSTS 110
#define XCB_SET_ACCESS_CONTROL 111
#define XCB_SET_CLOSE_DOWN_MODE 112
#define XCB_KILL_CLIENT 113
#define XCB_ROTATE_PROPERTIES 114
#define XCB_FORCE_SCREEN_SAVER 115
#define XCB_SET_POINTER_MAPPING 116
#define XCB_GET_POINTER_MAPPING 117
#define XCB_SET_MODIFIER_MAPPING 118
#define XCB_GET_MODIFIER_MAPPING 119
#define XCB_NO_OPERATION 127
Typedefs
typedef struct xcb_char2b_t xcb_char2b_t
xcb_char2b_t
typedef struct xcb_char2b_iterator_t xcb_char2b_iterator_t
xcb_char2b_iterator_t
typedef uint32_t xcb_window_t
typedef struct xcb_window_iterator_t xcb_window_iterator_t
xcb_window_iterator_t
typedef uint32_t xcb_pixmap_t
typedef struct xcb_pixmap_iterator_t xcb_pixmap_iterator_t
xcb_pixmap_iterator_t
typedef uint32_t xcb_cursor_t
typedef struct xcb_cursor_iterator_t xcb_cursor_iterator_t
xcb_cursor_iterator_t
typedef uint32_t xcb_font_t
typedef struct xcb_font_iterator_t xcb_font_iterator_t
xcb_font_iterator_t
typedef uint32_t xcb_gcontext_t
typedef struct xcb_gcontext_iterator_t xcb_gcontext_iterator_t
xcb_gcontext_iterator_t
typedef uint32_t xcb_colormap_t
typedef struct xcb_colormap_iterator_t xcb_colormap_iterator_t
xcb_colormap_iterator_t
typedef uint32_t xcb_atom_t
typedef struct xcb_atom_iterator_t xcb_atom_iterator_t
xcb_atom_iterator_t
typedef uint32_t xcb_drawable_t
typedef struct xcb_drawable_iterator_t xcb_drawable_iterator_t
xcb_drawable_iterator_t
typedef uint32_t xcb_fontable_t
typedef struct xcb_fontable_iterator_t xcb_fontable_iterator_t
xcb_fontable_iterator_t
typedef uint32_t xcb_bool32_t
typedef struct xcb_bool32_iterator_t xcb_bool32_iterator_t
xcb_bool32_iterator_t
typedef uint32_t xcb_visualid_t
typedef struct xcb_visualid_iterator_t xcb_visualid_iterator_t
xcb_visualid_iterator_t
typedef uint32_t xcb_timestamp_t
typedef struct xcb_timestamp_iterator_t xcb_timestamp_iterator_t
xcb_timestamp_iterator_t
typedef uint32_t xcb_keysym_t
typedef struct xcb_keysym_iterator_t xcb_keysym_iterator_t
xcb_keysym_iterator_t
typedef uint8_t xcb_keycode_t
typedef struct xcb_keycode_iterator_t xcb_keycode_iterator_t
xcb_keycode_iterator_t
typedef uint32_t xcb_keycode32_t
typedef struct xcb_keycode32_iterator_t xcb_keycode32_iterator_t
xcb_keycode32_iterator_t
typedef uint8_t xcb_button_t
typedef struct xcb_button_iterator_t xcb_button_iterator_t
xcb_button_iterator_t
typedef struct xcb_point_t xcb_point_t
xcb_point_t
typedef struct xcb_point_iterator_t xcb_point_iterator_t
xcb_point_iterator_t
typedef struct xcb_rectangle_t xcb_rectangle_t
xcb_rectangle_t
typedef struct xcb_rectangle_iterator_t xcb_rectangle_iterator_t
xcb_rectangle_iterator_t
typedef struct xcb_arc_t xcb_arc_t
xcb_arc_t
typedef struct xcb_arc_iterator_t xcb_arc_iterator_t
xcb_arc_iterator_t
typedef struct xcb_format_t xcb_format_t
xcb_format_t
typedef struct xcb_format_iterator_t xcb_format_iterator_t
xcb_format_iterator_t
typedef enum xcb_visual_class_t xcb_visual_class_t
typedef struct xcb_visualtype_t xcb_visualtype_t
xcb_visualtype_t
typedef struct xcb_visualtype_iterator_t xcb_visualtype_iterator_t
xcb_visualtype_iterator_t
typedef struct xcb_depth_t xcb_depth_t
xcb_depth_t
typedef struct xcb_depth_iterator_t xcb_depth_iterator_t
xcb_depth_iterator_t
typedef enum xcb_event_mask_t xcb_event_mask_t
typedef enum xcb_backing_store_t xcb_backing_store_t
typedef struct xcb_screen_t xcb_screen_t
xcb_screen_t
typedef struct xcb_screen_iterator_t xcb_screen_iterator_t
xcb_screen_iterator_t
typedef struct xcb_setup_request_t xcb_setup_request_t
xcb_setup_request_t
typedef struct xcb_setup_request_iterator_t xcb_setup_request_iterator_t
xcb_setup_request_iterator_t
typedef struct xcb_setup_failed_t xcb_setup_failed_t
xcb_setup_failed_t
typedef struct xcb_setup_failed_iterator_t xcb_setup_failed_iterator_t
xcb_setup_failed_iterator_t
typedef struct xcb_setup_authenticate_t xcb_setup_authenticate_t
xcb_setup_authenticate_t
typedef struct xcb_setup_authenticate_iterator_t xcb_setup_authenticate_iterator_t
xcb_setup_authenticate_iterator_t
typedef enum xcb_image_order_t xcb_image_order_t
typedef struct xcb_setup_t xcb_setup_t
xcb_setup_t
typedef struct xcb_setup_iterator_t xcb_setup_iterator_t
xcb_setup_iterator_t
typedef enum xcb_mod_mask_t xcb_mod_mask_t
typedef enum xcb_key_but_mask_t xcb_key_but_mask_t
typedef enum xcb_window_enum_t xcb_window_enum_t
typedef struct xcb_key_press_event_t xcb_key_press_event_t
xcb_key_press_event_t
typedef xcb_key_press_event_t xcb_key_release_event_t
typedef enum xcb_button_mask_t xcb_button_mask_t
typedef struct xcb_button_press_event_t xcb_button_press_event_t
xcb_button_press_event_t
typedef xcb_button_press_event_t xcb_button_release_event_t
typedef enum xcb_motion_t xcb_motion_t
typedef struct xcb_motion_notify_event_t xcb_motion_notify_event_t
xcb_motion_notify_event_t
typedef enum xcb_notify_detail_t xcb_notify_detail_t
typedef enum xcb_notify_mode_t xcb_notify_mode_t
typedef struct xcb_enter_notify_event_t xcb_enter_notify_event_t
xcb_enter_notify_event_t
typedef xcb_enter_notify_event_t xcb_leave_notify_event_t
typedef struct xcb_focus_in_event_t xcb_focus_in_event_t
xcb_focus_in_event_t
typedef xcb_focus_in_event_t xcb_focus_out_event_t
typedef struct xcb_keymap_notify_event_t xcb_keymap_notify_event_t
xcb_keymap_notify_event_t
typedef struct xcb_expose_event_t xcb_expose_event_t
xcb_expose_event_t
typedef struct xcb_graphics_exposure_event_t xcb_graphics_exposure_event_t
xcb_graphics_exposure_event_t
typedef struct xcb_no_exposure_event_t xcb_no_exposure_event_t
xcb_no_exposure_event_t
typedef enum xcb_visibility_t xcb_visibility_t
typedef struct xcb_visibility_notify_event_t xcb_visibility_notify_event_t
xcb_visibility_notify_event_t
typedef struct xcb_create_notify_event_t xcb_create_notify_event_t
xcb_create_notify_event_t
typedef struct xcb_destroy_notify_event_t xcb_destroy_notify_event_t
xcb_destroy_notify_event_t
typedef struct xcb_unmap_notify_event_t xcb_unmap_notify_event_t
xcb_unmap_notify_event_t
typedef struct xcb_map_notify_event_t xcb_map_notify_event_t
xcb_map_notify_event_t
typedef struct xcb_map_request_event_t xcb_map_request_event_t
xcb_map_request_event_t
typedef struct xcb_reparent_notify_event_t xcb_reparent_notify_event_t
xcb_reparent_notify_event_t
typedef struct xcb_configure_notify_event_t xcb_configure_notify_event_t
xcb_configure_notify_event_t
typedef struct xcb_configure_request_event_t xcb_configure_request_event_t
xcb_configure_request_event_t
typedef struct xcb_gravity_notify_event_t xcb_gravity_notify_event_t
xcb_gravity_notify_event_t
typedef struct xcb_resize_request_event_t xcb_resize_request_event_t
xcb_resize_request_event_t
typedef enum xcb_place_t xcb_place_t
typedef struct xcb_circulate_notify_event_t xcb_circulate_notify_event_t
xcb_circulate_notify_event_t
typedef xcb_circulate_notify_event_t xcb_circulate_request_event_t
typedef enum xcb_property_t xcb_property_t
typedef struct xcb_property_notify_event_t xcb_property_notify_event_t
xcb_property_notify_event_t
typedef struct xcb_selection_clear_event_t xcb_selection_clear_event_t
xcb_selection_clear_event_t
typedef enum xcb_time_t xcb_time_t
typedef enum xcb_atom_enum_t xcb_atom_enum_t
typedef struct xcb_selection_request_event_t xcb_selection_request_event_t
xcb_selection_request_event_t
typedef struct xcb_selection_notify_event_t xcb_selection_notify_event_t
xcb_selection_notify_event_t
typedef enum xcb_colormap_state_t xcb_colormap_state_t
typedef enum xcb_colormap_enum_t xcb_colormap_enum_t
typedef struct xcb_colormap_notify_event_t xcb_colormap_notify_event_t
xcb_colormap_notify_event_t
typedef union xcb_client_message_data_t xcb_client_message_data_t
xcb_client_message_data_t
typedef struct xcb_client_message_data_iterator_t xcb_client_message_data_iterator_t
xcb_client_message_data_iterator_t
typedef struct xcb_client_message_event_t xcb_client_message_event_t
xcb_client_message_event_t
typedef enum xcb_mapping_t xcb_mapping_t
typedef struct xcb_mapping_notify_event_t xcb_mapping_notify_event_t
xcb_mapping_notify_event_t
typedef struct xcb_ge_generic_event_t xcb_ge_generic_event_t
xcb_ge_generic_event_t
typedef struct xcb_request_error_t xcb_request_error_t
xcb_request_error_t
typedef struct xcb_value_error_t xcb_value_error_t
xcb_value_error_t
typedef xcb_value_error_t xcb_window_error_t
typedef xcb_value_error_t xcb_pixmap_error_t
typedef xcb_value_error_t xcb_atom_error_t
typedef xcb_value_error_t xcb_cursor_error_t
typedef xcb_value_error_t xcb_font_error_t
typedef xcb_request_error_t xcb_match_error_t
typedef xcb_value_error_t xcb_drawable_error_t
typedef xcb_request_error_t xcb_access_error_t
typedef xcb_request_error_t xcb_alloc_error_t
typedef xcb_value_error_t xcb_colormap_error_t
typedef xcb_value_error_t xcb_g_context_error_t
typedef xcb_value_error_t xcb_id_choice_error_t
typedef xcb_request_error_t xcb_name_error_t
typedef xcb_request_error_t xcb_length_error_t
typedef xcb_request_error_t xcb_implementation_error_t
typedef enum xcb_window_class_t xcb_window_class_t
typedef enum xcb_cw_t xcb_cw_t
typedef enum xcb_back_pixmap_t xcb_back_pixmap_t
typedef enum xcb_gravity_t xcb_gravity_t
typedef struct xcb_create_window_value_list_t xcb_create_window_value_list_t
xcb_create_window_value_list_t
typedef struct xcb_create_window_request_t xcb_create_window_request_t
xcb_create_window_request_t
typedef struct xcb_change_window_attributes_value_list_t xcb_change_window_attributes_value_list_t
xcb_change_window_attributes_value_list_t
typedef struct xcb_change_window_attributes_request_t xcb_change_window_attributes_request_t
xcb_change_window_attributes_request_t
typedef enum xcb_map_state_t xcb_map_state_t
typedef struct xcb_get_window_attributes_cookie_t xcb_get_window_attributes_cookie_t
xcb_get_window_attributes_cookie_t
typedef struct xcb_get_window_attributes_request_t xcb_get_window_attributes_request_t
xcb_get_window_attributes_request_t
typedef struct xcb_get_window_attributes_reply_t xcb_get_window_attributes_reply_t
xcb_get_window_attributes_reply_t
typedef struct xcb_destroy_window_request_t xcb_destroy_window_request_t
xcb_destroy_window_request_t
typedef struct xcb_destroy_subwindows_request_t xcb_destroy_subwindows_request_t
xcb_destroy_subwindows_request_t
typedef enum xcb_set_mode_t xcb_set_mode_t
typedef struct xcb_change_save_set_request_t xcb_change_save_set_request_t
xcb_change_save_set_request_t
typedef struct xcb_reparent_window_request_t xcb_reparent_window_request_t
xcb_reparent_window_request_t
typedef struct xcb_map_window_request_t xcb_map_window_request_t
xcb_map_window_request_t
typedef struct xcb_map_subwindows_request_t xcb_map_subwindows_request_t
xcb_map_subwindows_request_t
typedef struct xcb_unmap_window_request_t xcb_unmap_window_request_t
xcb_unmap_window_request_t
typedef struct xcb_unmap_subwindows_request_t xcb_unmap_subwindows_request_t
xcb_unmap_subwindows_request_t
typedef enum xcb_config_window_t xcb_config_window_t
typedef enum xcb_stack_mode_t xcb_stack_mode_t
typedef struct xcb_configure_window_value_list_t xcb_configure_window_value_list_t
xcb_configure_window_value_list_t
typedef struct xcb_configure_window_request_t xcb_configure_window_request_t
xcb_configure_window_request_t
typedef enum xcb_circulate_t xcb_circulate_t
typedef struct xcb_circulate_window_request_t xcb_circulate_window_request_t
xcb_circulate_window_request_t
typedef struct xcb_get_geometry_cookie_t xcb_get_geometry_cookie_t
xcb_get_geometry_cookie_t
typedef struct xcb_get_geometry_request_t xcb_get_geometry_request_t
xcb_get_geometry_request_t
typedef struct xcb_get_geometry_reply_t xcb_get_geometry_reply_t
xcb_get_geometry_reply_t
typedef struct xcb_query_tree_cookie_t xcb_query_tree_cookie_t
xcb_query_tree_cookie_t
typedef struct xcb_query_tree_request_t xcb_query_tree_request_t
xcb_query_tree_request_t
typedef struct xcb_query_tree_reply_t xcb_query_tree_reply_t
xcb_query_tree_reply_t
typedef struct xcb_intern_atom_cookie_t xcb_intern_atom_cookie_t
xcb_intern_atom_cookie_t
typedef struct xcb_intern_atom_request_t xcb_intern_atom_request_t
xcb_intern_atom_request_t
typedef struct xcb_intern_atom_reply_t xcb_intern_atom_reply_t
xcb_intern_atom_reply_t
typedef struct xcb_get_atom_name_cookie_t xcb_get_atom_name_cookie_t
xcb_get_atom_name_cookie_t
typedef struct xcb_get_atom_name_request_t xcb_get_atom_name_request_t
xcb_get_atom_name_request_t
typedef struct xcb_get_atom_name_reply_t xcb_get_atom_name_reply_t
xcb_get_atom_name_reply_t
typedef enum xcb_prop_mode_t xcb_prop_mode_t
typedef struct xcb_change_property_request_t xcb_change_property_request_t
xcb_change_property_request_t
typedef struct xcb_delete_property_request_t xcb_delete_property_request_t
xcb_delete_property_request_t
typedef enum xcb_get_property_type_t xcb_get_property_type_t
typedef struct xcb_get_property_cookie_t xcb_get_property_cookie_t
xcb_get_property_cookie_t
typedef struct xcb_get_property_request_t xcb_get_property_request_t
xcb_get_property_request_t
typedef struct xcb_get_property_reply_t xcb_get_property_reply_t
xcb_get_property_reply_t
typedef struct xcb_list_properties_cookie_t xcb_list_properties_cookie_t
xcb_list_properties_cookie_t
typedef struct xcb_list_properties_request_t xcb_list_properties_request_t
xcb_list_properties_request_t
typedef struct xcb_list_properties_reply_t xcb_list_properties_reply_t
xcb_list_properties_reply_t
typedef struct xcb_set_selection_owner_request_t xcb_set_selection_owner_request_t
xcb_set_selection_owner_request_t
typedef struct xcb_get_selection_owner_cookie_t xcb_get_selection_owner_cookie_t
xcb_get_selection_owner_cookie_t
typedef struct xcb_get_selection_owner_request_t xcb_get_selection_owner_request_t
xcb_get_selection_owner_request_t
typedef struct xcb_get_selection_owner_reply_t xcb_get_selection_owner_reply_t
xcb_get_selection_owner_reply_t
typedef struct xcb_convert_selection_request_t xcb_convert_selection_request_t
xcb_convert_selection_request_t
typedef enum xcb_send_event_dest_t xcb_send_event_dest_t
typedef struct xcb_send_event_request_t xcb_send_event_request_t
xcb_send_event_request_t
typedef enum xcb_grab_mode_t xcb_grab_mode_t
typedef enum xcb_grab_status_t xcb_grab_status_t
typedef enum xcb_cursor_enum_t xcb_cursor_enum_t
typedef struct xcb_grab_pointer_cookie_t xcb_grab_pointer_cookie_t
xcb_grab_pointer_cookie_t
typedef struct xcb_grab_pointer_request_t xcb_grab_pointer_request_t
xcb_grab_pointer_request_t
typedef struct xcb_grab_pointer_reply_t xcb_grab_pointer_reply_t
xcb_grab_pointer_reply_t
typedef struct xcb_ungrab_pointer_request_t xcb_ungrab_pointer_request_t
xcb_ungrab_pointer_request_t
typedef enum xcb_button_index_t xcb_button_index_t
typedef struct xcb_grab_button_request_t xcb_grab_button_request_t
xcb_grab_button_request_t
typedef struct xcb_ungrab_button_request_t xcb_ungrab_button_request_t
xcb_ungrab_button_request_t
typedef struct xcb_change_active_pointer_grab_request_t xcb_change_active_pointer_grab_request_t
xcb_change_active_pointer_grab_request_t
typedef struct xcb_grab_keyboard_cookie_t xcb_grab_keyboard_cookie_t
xcb_grab_keyboard_cookie_t
typedef struct xcb_grab_keyboard_request_t xcb_grab_keyboard_request_t
xcb_grab_keyboard_request_t
typedef struct xcb_grab_keyboard_reply_t xcb_grab_keyboard_reply_t
xcb_grab_keyboard_reply_t
typedef struct xcb_ungrab_keyboard_request_t xcb_ungrab_keyboard_request_t
xcb_ungrab_keyboard_request_t
typedef enum xcb_grab_t xcb_grab_t
typedef struct xcb_grab_key_request_t xcb_grab_key_request_t
xcb_grab_key_request_t
typedef struct xcb_ungrab_key_request_t xcb_ungrab_key_request_t
xcb_ungrab_key_request_t
typedef enum xcb_allow_t xcb_allow_t
typedef struct xcb_allow_events_request_t xcb_allow_events_request_t
xcb_allow_events_request_t
typedef struct xcb_grab_server_request_t xcb_grab_server_request_t
xcb_grab_server_request_t
typedef struct xcb_ungrab_server_request_t xcb_ungrab_server_request_t
xcb_ungrab_server_request_t
typedef struct xcb_query_pointer_cookie_t xcb_query_pointer_cookie_t
xcb_query_pointer_cookie_t
typedef struct xcb_query_pointer_request_t xcb_query_pointer_request_t
xcb_query_pointer_request_t
typedef struct xcb_query_pointer_reply_t xcb_query_pointer_reply_t
xcb_query_pointer_reply_t
typedef struct xcb_timecoord_t xcb_timecoord_t
xcb_timecoord_t
typedef struct xcb_timecoord_iterator_t xcb_timecoord_iterator_t
xcb_timecoord_iterator_t
typedef struct xcb_get_motion_events_cookie_t xcb_get_motion_events_cookie_t
xcb_get_motion_events_cookie_t
typedef struct xcb_get_motion_events_request_t xcb_get_motion_events_request_t
xcb_get_motion_events_request_t
typedef struct xcb_get_motion_events_reply_t xcb_get_motion_events_reply_t
xcb_get_motion_events_reply_t
typedef struct xcb_translate_coordinates_cookie_t xcb_translate_coordinates_cookie_t
xcb_translate_coordinates_cookie_t
typedef struct xcb_translate_coordinates_request_t xcb_translate_coordinates_request_t
xcb_translate_coordinates_request_t
typedef struct xcb_translate_coordinates_reply_t xcb_translate_coordinates_reply_t
xcb_translate_coordinates_reply_t
typedef struct xcb_warp_pointer_request_t xcb_warp_pointer_request_t
xcb_warp_pointer_request_t
typedef enum xcb_input_focus_t xcb_input_focus_t
typedef struct xcb_set_input_focus_request_t xcb_set_input_focus_request_t
xcb_set_input_focus_request_t
typedef struct xcb_get_input_focus_cookie_t xcb_get_input_focus_cookie_t
xcb_get_input_focus_cookie_t
typedef struct xcb_get_input_focus_request_t xcb_get_input_focus_request_t
xcb_get_input_focus_request_t
typedef struct xcb_get_input_focus_reply_t xcb_get_input_focus_reply_t
xcb_get_input_focus_reply_t
typedef struct xcb_query_keymap_cookie_t xcb_query_keymap_cookie_t
xcb_query_keymap_cookie_t
typedef struct xcb_query_keymap_request_t xcb_query_keymap_request_t
xcb_query_keymap_request_t
typedef struct xcb_query_keymap_reply_t xcb_query_keymap_reply_t
xcb_query_keymap_reply_t
typedef struct xcb_open_font_request_t xcb_open_font_request_t
xcb_open_font_request_t
typedef struct xcb_close_font_request_t xcb_close_font_request_t
xcb_close_font_request_t
typedef enum xcb_font_draw_t xcb_font_draw_t
typedef struct xcb_fontprop_t xcb_fontprop_t
xcb_fontprop_t
typedef struct xcb_fontprop_iterator_t xcb_fontprop_iterator_t
xcb_fontprop_iterator_t
typedef struct xcb_charinfo_t xcb_charinfo_t
xcb_charinfo_t
typedef struct xcb_charinfo_iterator_t xcb_charinfo_iterator_t
xcb_charinfo_iterator_t
typedef struct xcb_query_font_cookie_t xcb_query_font_cookie_t
xcb_query_font_cookie_t
typedef struct xcb_query_font_request_t xcb_query_font_request_t
xcb_query_font_request_t
typedef struct xcb_query_font_reply_t xcb_query_font_reply_t
xcb_query_font_reply_t
typedef struct xcb_query_text_extents_cookie_t xcb_query_text_extents_cookie_t
xcb_query_text_extents_cookie_t
typedef struct xcb_query_text_extents_request_t xcb_query_text_extents_request_t
xcb_query_text_extents_request_t
typedef struct xcb_query_text_extents_reply_t xcb_query_text_extents_reply_t
xcb_query_text_extents_reply_t
typedef struct xcb_str_t xcb_str_t
xcb_str_t
typedef struct xcb_str_iterator_t xcb_str_iterator_t
xcb_str_iterator_t
typedef struct xcb_list_fonts_cookie_t xcb_list_fonts_cookie_t
xcb_list_fonts_cookie_t
typedef struct xcb_list_fonts_request_t xcb_list_fonts_request_t
xcb_list_fonts_request_t
typedef struct xcb_list_fonts_reply_t xcb_list_fonts_reply_t
xcb_list_fonts_reply_t
typedef struct xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info_cookie_t
xcb_list_fonts_with_info_cookie_t
typedef struct xcb_list_fonts_with_info_request_t xcb_list_fonts_with_info_request_t
xcb_list_fonts_with_info_request_t
typedef struct xcb_list_fonts_with_info_reply_t xcb_list_fonts_with_info_reply_t
xcb_list_fonts_with_info_reply_t
typedef struct xcb_set_font_path_request_t xcb_set_font_path_request_t
xcb_set_font_path_request_t
typedef struct xcb_get_font_path_cookie_t xcb_get_font_path_cookie_t
xcb_get_font_path_cookie_t
typedef struct xcb_get_font_path_request_t xcb_get_font_path_request_t
xcb_get_font_path_request_t
typedef struct xcb_get_font_path_reply_t xcb_get_font_path_reply_t
xcb_get_font_path_reply_t
typedef struct xcb_create_pixmap_request_t xcb_create_pixmap_request_t
xcb_create_pixmap_request_t
typedef struct xcb_free_pixmap_request_t xcb_free_pixmap_request_t
xcb_free_pixmap_request_t
typedef enum xcb_gc_t xcb_gc_t
typedef enum xcb_gx_t xcb_gx_t
typedef enum xcb_line_style_t xcb_line_style_t
typedef enum xcb_cap_style_t xcb_cap_style_t
typedef enum xcb_join_style_t xcb_join_style_t
typedef enum xcb_fill_style_t xcb_fill_style_t
typedef enum xcb_fill_rule_t xcb_fill_rule_t
typedef enum xcb_subwindow_mode_t xcb_subwindow_mode_t
typedef enum xcb_arc_mode_t xcb_arc_mode_t
typedef struct xcb_create_gc_value_list_t xcb_create_gc_value_list_t
xcb_create_gc_value_list_t
typedef struct xcb_create_gc_request_t xcb_create_gc_request_t
xcb_create_gc_request_t
typedef struct xcb_change_gc_value_list_t xcb_change_gc_value_list_t
xcb_change_gc_value_list_t
typedef struct xcb_change_gc_request_t xcb_change_gc_request_t
xcb_change_gc_request_t
typedef struct xcb_copy_gc_request_t xcb_copy_gc_request_t
xcb_copy_gc_request_t
typedef struct xcb_set_dashes_request_t xcb_set_dashes_request_t
xcb_set_dashes_request_t
typedef enum xcb_clip_ordering_t xcb_clip_ordering_t
typedef struct xcb_set_clip_rectangles_request_t xcb_set_clip_rectangles_request_t
xcb_set_clip_rectangles_request_t
typedef struct xcb_free_gc_request_t xcb_free_gc_request_t
xcb_free_gc_request_t
typedef struct xcb_clear_area_request_t xcb_clear_area_request_t
xcb_clear_area_request_t
typedef struct xcb_copy_area_request_t xcb_copy_area_request_t
xcb_copy_area_request_t
typedef struct xcb_copy_plane_request_t xcb_copy_plane_request_t
xcb_copy_plane_request_t
typedef enum xcb_coord_mode_t xcb_coord_mode_t
typedef struct xcb_poly_point_request_t xcb_poly_point_request_t
xcb_poly_point_request_t
typedef struct xcb_poly_line_request_t xcb_poly_line_request_t
xcb_poly_line_request_t
typedef struct xcb_segment_t xcb_segment_t
xcb_segment_t
typedef struct xcb_segment_iterator_t xcb_segment_iterator_t
xcb_segment_iterator_t
typedef struct xcb_poly_segment_request_t xcb_poly_segment_request_t
xcb_poly_segment_request_t
typedef struct xcb_poly_rectangle_request_t xcb_poly_rectangle_request_t
xcb_poly_rectangle_request_t
typedef struct xcb_poly_arc_request_t xcb_poly_arc_request_t
xcb_poly_arc_request_t
typedef enum xcb_poly_shape_t xcb_poly_shape_t
typedef struct xcb_fill_poly_request_t xcb_fill_poly_request_t
xcb_fill_poly_request_t
typedef struct xcb_poly_fill_rectangle_request_t xcb_poly_fill_rectangle_request_t
xcb_poly_fill_rectangle_request_t
typedef struct xcb_poly_fill_arc_request_t xcb_poly_fill_arc_request_t
xcb_poly_fill_arc_request_t
typedef enum xcb_image_format_t xcb_image_format_t
typedef struct xcb_put_image_request_t xcb_put_image_request_t
xcb_put_image_request_t
typedef struct xcb_get_image_cookie_t xcb_get_image_cookie_t
xcb_get_image_cookie_t
typedef struct xcb_get_image_request_t xcb_get_image_request_t
xcb_get_image_request_t
typedef struct xcb_get_image_reply_t xcb_get_image_reply_t
xcb_get_image_reply_t
typedef struct xcb_poly_text_8_request_t xcb_poly_text_8_request_t
xcb_poly_text_8_request_t
typedef struct xcb_poly_text_16_request_t xcb_poly_text_16_request_t
xcb_poly_text_16_request_t
typedef struct xcb_image_text_8_request_t xcb_image_text_8_request_t
xcb_image_text_8_request_t
typedef struct xcb_image_text_16_request_t xcb_image_text_16_request_t
xcb_image_text_16_request_t
typedef enum xcb_colormap_alloc_t xcb_colormap_alloc_t
typedef struct xcb_create_colormap_request_t xcb_create_colormap_request_t
xcb_create_colormap_request_t
typedef struct xcb_free_colormap_request_t xcb_free_colormap_request_t
xcb_free_colormap_request_t
typedef struct xcb_copy_colormap_and_free_request_t xcb_copy_colormap_and_free_request_t
xcb_copy_colormap_and_free_request_t
typedef struct xcb_install_colormap_request_t xcb_install_colormap_request_t
xcb_install_colormap_request_t
typedef struct xcb_uninstall_colormap_request_t xcb_uninstall_colormap_request_t
xcb_uninstall_colormap_request_t
typedef struct xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps_cookie_t
xcb_list_installed_colormaps_cookie_t
typedef struct xcb_list_installed_colormaps_request_t xcb_list_installed_colormaps_request_t
xcb_list_installed_colormaps_request_t
typedef struct xcb_list_installed_colormaps_reply_t xcb_list_installed_colormaps_reply_t
xcb_list_installed_colormaps_reply_t
typedef struct xcb_alloc_color_cookie_t xcb_alloc_color_cookie_t
xcb_alloc_color_cookie_t
typedef struct xcb_alloc_color_request_t xcb_alloc_color_request_t
xcb_alloc_color_request_t
typedef struct xcb_alloc_color_reply_t xcb_alloc_color_reply_t
xcb_alloc_color_reply_t
typedef struct xcb_alloc_named_color_cookie_t xcb_alloc_named_color_cookie_t
xcb_alloc_named_color_cookie_t
typedef struct xcb_alloc_named_color_request_t xcb_alloc_named_color_request_t
xcb_alloc_named_color_request_t
typedef struct xcb_alloc_named_color_reply_t xcb_alloc_named_color_reply_t
xcb_alloc_named_color_reply_t
typedef struct xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells_cookie_t
xcb_alloc_color_cells_cookie_t
typedef struct xcb_alloc_color_cells_request_t xcb_alloc_color_cells_request_t
xcb_alloc_color_cells_request_t
typedef struct xcb_alloc_color_cells_reply_t xcb_alloc_color_cells_reply_t
xcb_alloc_color_cells_reply_t
typedef struct xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes_cookie_t
xcb_alloc_color_planes_cookie_t
typedef struct xcb_alloc_color_planes_request_t xcb_alloc_color_planes_request_t
xcb_alloc_color_planes_request_t
typedef struct xcb_alloc_color_planes_reply_t xcb_alloc_color_planes_reply_t
xcb_alloc_color_planes_reply_t
typedef struct xcb_free_colors_request_t xcb_free_colors_request_t
xcb_free_colors_request_t
typedef enum xcb_color_flag_t xcb_color_flag_t
typedef struct xcb_coloritem_t xcb_coloritem_t
xcb_coloritem_t
typedef struct xcb_coloritem_iterator_t xcb_coloritem_iterator_t
xcb_coloritem_iterator_t
typedef struct xcb_store_colors_request_t xcb_store_colors_request_t
xcb_store_colors_request_t
typedef struct xcb_store_named_color_request_t xcb_store_named_color_request_t
xcb_store_named_color_request_t
typedef struct xcb_rgb_t xcb_rgb_t
xcb_rgb_t
typedef struct xcb_rgb_iterator_t xcb_rgb_iterator_t
xcb_rgb_iterator_t
typedef struct xcb_query_colors_cookie_t xcb_query_colors_cookie_t
xcb_query_colors_cookie_t
typedef struct xcb_query_colors_request_t xcb_query_colors_request_t
xcb_query_colors_request_t
typedef struct xcb_query_colors_reply_t xcb_query_colors_reply_t
xcb_query_colors_reply_t
typedef struct xcb_lookup_color_cookie_t xcb_lookup_color_cookie_t
xcb_lookup_color_cookie_t
typedef struct xcb_lookup_color_request_t xcb_lookup_color_request_t
xcb_lookup_color_request_t
typedef struct xcb_lookup_color_reply_t xcb_lookup_color_reply_t
xcb_lookup_color_reply_t
typedef enum xcb_pixmap_enum_t xcb_pixmap_enum_t
typedef struct xcb_create_cursor_request_t xcb_create_cursor_request_t
xcb_create_cursor_request_t
typedef enum xcb_font_enum_t xcb_font_enum_t
typedef struct xcb_create_glyph_cursor_request_t xcb_create_glyph_cursor_request_t
xcb_create_glyph_cursor_request_t
typedef struct xcb_free_cursor_request_t xcb_free_cursor_request_t
xcb_free_cursor_request_t
typedef struct xcb_recolor_cursor_request_t xcb_recolor_cursor_request_t
xcb_recolor_cursor_request_t
typedef enum xcb_query_shape_of_t xcb_query_shape_of_t
typedef struct xcb_query_best_size_cookie_t xcb_query_best_size_cookie_t
xcb_query_best_size_cookie_t
typedef struct xcb_query_best_size_request_t xcb_query_best_size_request_t
xcb_query_best_size_request_t
typedef struct xcb_query_best_size_reply_t xcb_query_best_size_reply_t
xcb_query_best_size_reply_t
typedef struct xcb_query_extension_cookie_t xcb_query_extension_cookie_t
xcb_query_extension_cookie_t
typedef struct xcb_query_extension_request_t xcb_query_extension_request_t
xcb_query_extension_request_t
typedef struct xcb_query_extension_reply_t xcb_query_extension_reply_t
xcb_query_extension_reply_t
typedef struct xcb_list_extensions_cookie_t xcb_list_extensions_cookie_t
xcb_list_extensions_cookie_t
typedef struct xcb_list_extensions_request_t xcb_list_extensions_request_t
xcb_list_extensions_request_t
typedef struct xcb_list_extensions_reply_t xcb_list_extensions_reply_t
xcb_list_extensions_reply_t
typedef struct xcb_change_keyboard_mapping_request_t xcb_change_keyboard_mapping_request_t
xcb_change_keyboard_mapping_request_t
typedef struct xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping_cookie_t
xcb_get_keyboard_mapping_cookie_t
typedef struct xcb_get_keyboard_mapping_request_t xcb_get_keyboard_mapping_request_t
xcb_get_keyboard_mapping_request_t
typedef struct xcb_get_keyboard_mapping_reply_t xcb_get_keyboard_mapping_reply_t
xcb_get_keyboard_mapping_reply_t
typedef enum xcb_kb_t xcb_kb_t
typedef enum xcb_led_mode_t xcb_led_mode_t
typedef enum xcb_auto_repeat_mode_t xcb_auto_repeat_mode_t
typedef struct xcb_change_keyboard_control_value_list_t xcb_change_keyboard_control_value_list_t
xcb_change_keyboard_control_value_list_t
typedef struct xcb_change_keyboard_control_request_t xcb_change_keyboard_control_request_t
xcb_change_keyboard_control_request_t
typedef struct xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control_cookie_t
xcb_get_keyboard_control_cookie_t
typedef struct xcb_get_keyboard_control_request_t xcb_get_keyboard_control_request_t
xcb_get_keyboard_control_request_t
typedef struct xcb_get_keyboard_control_reply_t xcb_get_keyboard_control_reply_t
xcb_get_keyboard_control_reply_t
typedef struct xcb_bell_request_t xcb_bell_request_t
xcb_bell_request_t
typedef struct xcb_change_pointer_control_request_t xcb_change_pointer_control_request_t
xcb_change_pointer_control_request_t
typedef struct xcb_get_pointer_control_cookie_t xcb_get_pointer_control_cookie_t
xcb_get_pointer_control_cookie_t
typedef struct xcb_get_pointer_control_request_t xcb_get_pointer_control_request_t
xcb_get_pointer_control_request_t
typedef struct xcb_get_pointer_control_reply_t xcb_get_pointer_control_reply_t
xcb_get_pointer_control_reply_t
typedef enum xcb_blanking_t xcb_blanking_t
typedef enum xcb_exposures_t xcb_exposures_t
typedef struct xcb_set_screen_saver_request_t xcb_set_screen_saver_request_t
xcb_set_screen_saver_request_t
typedef struct xcb_get_screen_saver_cookie_t xcb_get_screen_saver_cookie_t
xcb_get_screen_saver_cookie_t
typedef struct xcb_get_screen_saver_request_t xcb_get_screen_saver_request_t
xcb_get_screen_saver_request_t
typedef struct xcb_get_screen_saver_reply_t xcb_get_screen_saver_reply_t
xcb_get_screen_saver_reply_t
typedef enum xcb_host_mode_t xcb_host_mode_t
typedef enum xcb_family_t xcb_family_t
typedef struct xcb_change_hosts_request_t xcb_change_hosts_request_t
xcb_change_hosts_request_t
typedef struct xcb_host_t xcb_host_t
xcb_host_t
typedef struct xcb_host_iterator_t xcb_host_iterator_t
xcb_host_iterator_t
typedef struct xcb_list_hosts_cookie_t xcb_list_hosts_cookie_t
xcb_list_hosts_cookie_t
typedef struct xcb_list_hosts_request_t xcb_list_hosts_request_t
xcb_list_hosts_request_t
typedef struct xcb_list_hosts_reply_t xcb_list_hosts_reply_t
xcb_list_hosts_reply_t
typedef enum xcb_access_control_t xcb_access_control_t
typedef struct xcb_set_access_control_request_t xcb_set_access_control_request_t
xcb_set_access_control_request_t
typedef enum xcb_close_down_t xcb_close_down_t
typedef struct xcb_set_close_down_mode_request_t xcb_set_close_down_mode_request_t
xcb_set_close_down_mode_request_t
typedef enum xcb_kill_t xcb_kill_t
typedef struct xcb_kill_client_request_t xcb_kill_client_request_t
xcb_kill_client_request_t
typedef struct xcb_rotate_properties_request_t xcb_rotate_properties_request_t
xcb_rotate_properties_request_t
typedef enum xcb_screen_saver_t xcb_screen_saver_t
typedef struct xcb_force_screen_saver_request_t xcb_force_screen_saver_request_t
xcb_force_screen_saver_request_t
typedef enum xcb_mapping_status_t xcb_mapping_status_t
typedef struct xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping_cookie_t
xcb_set_pointer_mapping_cookie_t
typedef struct xcb_set_pointer_mapping_request_t xcb_set_pointer_mapping_request_t
xcb_set_pointer_mapping_request_t
typedef struct xcb_set_pointer_mapping_reply_t xcb_set_pointer_mapping_reply_t
xcb_set_pointer_mapping_reply_t
typedef struct xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping_cookie_t
xcb_get_pointer_mapping_cookie_t
typedef struct xcb_get_pointer_mapping_request_t xcb_get_pointer_mapping_request_t
xcb_get_pointer_mapping_request_t
typedef struct xcb_get_pointer_mapping_reply_t xcb_get_pointer_mapping_reply_t
xcb_get_pointer_mapping_reply_t
typedef enum xcb_map_index_t xcb_map_index_t
typedef struct xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping_cookie_t
xcb_set_modifier_mapping_cookie_t
typedef struct xcb_set_modifier_mapping_request_t xcb_set_modifier_mapping_request_t
xcb_set_modifier_mapping_request_t
typedef struct xcb_set_modifier_mapping_reply_t xcb_set_modifier_mapping_reply_t
xcb_set_modifier_mapping_reply_t
typedef struct xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping_cookie_t
xcb_get_modifier_mapping_cookie_t
typedef struct xcb_get_modifier_mapping_request_t xcb_get_modifier_mapping_request_t
xcb_get_modifier_mapping_request_t
typedef struct xcb_get_modifier_mapping_reply_t xcb_get_modifier_mapping_reply_t
xcb_get_modifier_mapping_reply_t
typedef struct xcb_no_operation_request_t xcb_no_operation_request_t
xcb_no_operation_request_t
Enumerations
enum xcb_visual_class_t {
XCB_VISUAL_CLASS_STATIC_GRAY = 0,
XCB_VISUAL_CLASS_GRAY_SCALE = 1,
XCB_VISUAL_CLASS_STATIC_COLOR = 2,
XCB_VISUAL_CLASS_PSEUDO_COLOR = 3,
XCB_VISUAL_CLASS_TRUE_COLOR = 4,
XCB_VISUAL_CLASS_DIRECT_COLOR = 5
}
enum xcb_event_mask_t {
XCB_EVENT_MASK_NO_EVENT = 0,
XCB_EVENT_MASK_KEY_PRESS = 1,
XCB_EVENT_MASK_KEY_RELEASE = 2,
XCB_EVENT_MASK_BUTTON_PRESS = 4,
XCB_EVENT_MASK_BUTTON_RELEASE = 8,
XCB_EVENT_MASK_ENTER_WINDOW = 16,
XCB_EVENT_MASK_LEAVE_WINDOW = 32,
XCB_EVENT_MASK_POINTER_MOTION = 64,
XCB_EVENT_MASK_POINTER_MOTION_HINT = 128,
XCB_EVENT_MASK_BUTTON_1_MOTION = 256,
XCB_EVENT_MASK_BUTTON_2_MOTION = 512,
XCB_EVENT_MASK_BUTTON_3_MOTION = 1024,
XCB_EVENT_MASK_BUTTON_4_MOTION = 2048,
XCB_EVENT_MASK_BUTTON_5_MOTION = 4096,
XCB_EVENT_MASK_BUTTON_MOTION = 8192,
XCB_EVENT_MASK_KEYMAP_STATE = 16384,
XCB_EVENT_MASK_EXPOSURE = 32768,
XCB_EVENT_MASK_VISIBILITY_CHANGE = 65536,
XCB_EVENT_MASK_STRUCTURE_NOTIFY = 131072,
XCB_EVENT_MASK_RESIZE_REDIRECT = 262144,
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY = 524288,
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT = 1048576,
XCB_EVENT_MASK_FOCUS_CHANGE = 2097152,
XCB_EVENT_MASK_PROPERTY_CHANGE = 4194304,
XCB_EVENT_MASK_COLOR_MAP_CHANGE = 8388608,
XCB_EVENT_MASK_OWNER_GRAB_BUTTON = 16777216
}
enum xcb_backing_store_t { XCB_BACKING_STORE_NOT_USEFUL = 0,
XCB_BACKING_STORE_WHEN_MAPPED = 1,
XCB_BACKING_STORE_ALWAYS = 2
}
enum xcb_image_order_t { XCB_IMAGE_ORDER_LSB_FIRST = 0,
XCB_IMAGE_ORDER_MSB_FIRST = 1
}
enum xcb_mod_mask_t {
XCB_MOD_MASK_SHIFT = 1,
XCB_MOD_MASK_LOCK = 2,
XCB_MOD_MASK_CONTROL = 4,
XCB_MOD_MASK_1 = 8,
XCB_MOD_MASK_2 = 16,
XCB_MOD_MASK_3 = 32,
XCB_MOD_MASK_4 = 64,
XCB_MOD_MASK_5 = 128,
XCB_MOD_MASK_ANY = 32768
}
enum xcb_key_but_mask_t {
XCB_KEY_BUT_MASK_SHIFT = 1,
XCB_KEY_BUT_MASK_LOCK = 2,
XCB_KEY_BUT_MASK_CONTROL = 4,
XCB_KEY_BUT_MASK_MOD_1 = 8,
XCB_KEY_BUT_MASK_MOD_2 = 16,
XCB_KEY_BUT_MASK_MOD_3 = 32,
XCB_KEY_BUT_MASK_MOD_4 = 64,
XCB_KEY_BUT_MASK_MOD_5 = 128,
XCB_KEY_BUT_MASK_BUTTON_1 = 256,
XCB_KEY_BUT_MASK_BUTTON_2 = 512,
XCB_KEY_BUT_MASK_BUTTON_3 = 1024,
XCB_KEY_BUT_MASK_BUTTON_4 = 2048,
XCB_KEY_BUT_MASK_BUTTON_5 = 4096
}
enum xcb_window_enum_t { XCB_WINDOW_NONE = 0
}
enum xcb_button_mask_t {
XCB_BUTTON_MASK_1 = 256,
XCB_BUTTON_MASK_2 = 512,
XCB_BUTTON_MASK_3 = 1024,
XCB_BUTTON_MASK_4 = 2048,
XCB_BUTTON_MASK_5 = 4096,
XCB_BUTTON_MASK_ANY = 32768
}
enum xcb_motion_t { XCB_MOTION_NORMAL = 0,
XCB_MOTION_HINT = 1
}
enum xcb_notify_detail_t {
XCB_NOTIFY_DETAIL_ANCESTOR = 0,
XCB_NOTIFY_DETAIL_VIRTUAL = 1,
XCB_NOTIFY_DETAIL_INFERIOR = 2,
XCB_NOTIFY_DETAIL_NONLINEAR = 3,
XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL = 4,
XCB_NOTIFY_DETAIL_POINTER = 5,
XCB_NOTIFY_DETAIL_POINTER_ROOT = 6,
XCB_NOTIFY_DETAIL_NONE = 7
}
enum xcb_notify_mode_t { XCB_NOTIFY_MODE_NORMAL = 0,
XCB_NOTIFY_MODE_GRAB = 1,
XCB_NOTIFY_MODE_UNGRAB = 2,
XCB_NOTIFY_MODE_WHILE_GRABBED = 3
}
enum xcb_visibility_t { XCB_VISIBILITY_UNOBSCURED = 0,
XCB_VISIBILITY_PARTIALLY_OBSCURED = 1,
XCB_VISIBILITY_FULLY_OBSCURED = 2
}
enum xcb_place_t { XCB_PLACE_ON_TOP = 0,
XCB_PLACE_ON_BOTTOM = 1
}
enum xcb_property_t { XCB_PROPERTY_NEW_VALUE = 0,
XCB_PROPERTY_DELETE = 1
}
enum xcb_time_t { XCB_TIME_CURRENT_TIME = 0
}
enum xcb_atom_enum_t {
XCB_ATOM_NONE = 0,
XCB_ATOM_ANY = 0,
XCB_ATOM_PRIMARY = 1,
XCB_ATOM_SECONDARY = 2,
XCB_ATOM_ARC = 3,
XCB_ATOM_ATOM = 4,
XCB_ATOM_BITMAP = 5,
XCB_ATOM_CARDINAL = 6,
XCB_ATOM_COLORMAP = 7,
XCB_ATOM_CURSOR = 8,
XCB_ATOM_CUT_BUFFER0 = 9,
XCB_ATOM_CUT_BUFFER1 = 10,
XCB_ATOM_CUT_BUFFER2 = 11,
XCB_ATOM_CUT_BUFFER3 = 12,
XCB_ATOM_CUT_BUFFER4 = 13,
XCB_ATOM_CUT_BUFFER5 = 14,
XCB_ATOM_CUT_BUFFER6 = 15,
XCB_ATOM_CUT_BUFFER7 = 16,
XCB_ATOM_DRAWABLE = 17,
XCB_ATOM_FONT = 18,
XCB_ATOM_INTEGER = 19,
XCB_ATOM_PIXMAP = 20,
XCB_ATOM_POINT = 21,
XCB_ATOM_RECTANGLE = 22,
XCB_ATOM_RESOURCE_MANAGER = 23,
XCB_ATOM_RGB_COLOR_MAP = 24,
XCB_ATOM_RGB_BEST_MAP = 25,
XCB_ATOM_RGB_BLUE_MAP = 26,
XCB_ATOM_RGB_DEFAULT_MAP = 27,
XCB_ATOM_RGB_GRAY_MAP = 28,
XCB_ATOM_RGB_GREEN_MAP = 29,
XCB_ATOM_RGB_RED_MAP = 30,
XCB_ATOM_STRING = 31,
XCB_ATOM_VISUALID = 32,
XCB_ATOM_WINDOW = 33,
XCB_ATOM_WM_COMMAND = 34,
XCB_ATOM_WM_HINTS = 35,
XCB_ATOM_WM_CLIENT_MACHINE = 36,
XCB_ATOM_WM_ICON_NAME = 37,
XCB_ATOM_WM_ICON_SIZE = 38,
XCB_ATOM_WM_NAME = 39,
XCB_ATOM_WM_NORMAL_HINTS = 40,
XCB_ATOM_WM_SIZE_HINTS = 41,
XCB_ATOM_WM_ZOOM_HINTS = 42,
XCB_ATOM_MIN_SPACE = 43,
XCB_ATOM_NORM_SPACE = 44,
XCB_ATOM_MAX_SPACE = 45,
XCB_ATOM_END_SPACE = 46,
XCB_ATOM_SUPERSCRIPT_X = 47,
XCB_ATOM_SUPERSCRIPT_Y = 48,
XCB_ATOM_SUBSCRIPT_X = 49,
XCB_ATOM_SUBSCRIPT_Y = 50,
XCB_ATOM_UNDERLINE_POSITION = 51,
XCB_ATOM_UNDERLINE_THICKNESS = 52,
XCB_ATOM_STRIKEOUT_ASCENT = 53,
XCB_ATOM_STRIKEOUT_DESCENT = 54,
XCB_ATOM_ITALIC_ANGLE = 55,
XCB_ATOM_X_HEIGHT = 56,
XCB_ATOM_QUAD_WIDTH = 57,
XCB_ATOM_WEIGHT = 58,
XCB_ATOM_POINT_SIZE = 59,
XCB_ATOM_RESOLUTION = 60,
XCB_ATOM_COPYRIGHT = 61,
XCB_ATOM_NOTICE = 62,
XCB_ATOM_FONT_NAME = 63,
XCB_ATOM_FAMILY_NAME = 64,
XCB_ATOM_FULL_NAME = 65,
XCB_ATOM_CAP_HEIGHT = 66,
XCB_ATOM_WM_CLASS = 67,
XCB_ATOM_WM_TRANSIENT_FOR = 68
}
enum xcb_colormap_state_t { XCB_COLORMAP_STATE_UNINSTALLED = 0,
XCB_COLORMAP_STATE_INSTALLED = 1
}
enum xcb_colormap_enum_t { XCB_COLORMAP_NONE = 0
}
enum xcb_mapping_t { XCB_MAPPING_MODIFIER = 0,
XCB_MAPPING_KEYBOARD = 1,
XCB_MAPPING_POINTER = 2
}
enum xcb_window_class_t { XCB_WINDOW_CLASS_COPY_FROM_PARENT = 0,
XCB_WINDOW_CLASS_INPUT_OUTPUT = 1,
XCB_WINDOW_CLASS_INPUT_ONLY = 2
}
enum xcb_cw_t {
XCB_CW_BACK_PIXMAP = 1,
XCB_CW_BACK_PIXEL = 2,
XCB_CW_BORDER_PIXMAP = 4,
XCB_CW_BORDER_PIXEL = 8,
XCB_CW_BIT_GRAVITY = 16,
XCB_CW_WIN_GRAVITY = 32,
XCB_CW_BACKING_STORE = 64,
XCB_CW_BACKING_PLANES = 128,
XCB_CW_BACKING_PIXEL = 256,
XCB_CW_OVERRIDE_REDIRECT = 512,
XCB_CW_SAVE_UNDER = 1024,
XCB_CW_EVENT_MASK = 2048,
XCB_CW_DONT_PROPAGATE = 4096,
XCB_CW_COLORMAP = 8192,
XCB_CW_CURSOR = 16384
}
enum xcb_back_pixmap_t { XCB_BACK_PIXMAP_NONE = 0,
XCB_BACK_PIXMAP_PARENT_RELATIVE = 1
}
enum xcb_gravity_t {
XCB_GRAVITY_BIT_FORGET = 0,
XCB_GRAVITY_WIN_UNMAP = 0,
XCB_GRAVITY_NORTH_WEST = 1,
XCB_GRAVITY_NORTH = 2,
XCB_GRAVITY_NORTH_EAST = 3,
XCB_GRAVITY_WEST = 4,
XCB_GRAVITY_CENTER = 5,
XCB_GRAVITY_EAST = 6,
XCB_GRAVITY_SOUTH_WEST = 7,
XCB_GRAVITY_SOUTH = 8,
XCB_GRAVITY_SOUTH_EAST = 9,
XCB_GRAVITY_STATIC = 10
}
enum xcb_map_state_t { XCB_MAP_STATE_UNMAPPED = 0,
XCB_MAP_STATE_UNVIEWABLE = 1,
XCB_MAP_STATE_VIEWABLE = 2
}
enum xcb_set_mode_t { XCB_SET_MODE_INSERT = 0,
XCB_SET_MODE_DELETE = 1
}
enum xcb_config_window_t {
XCB_CONFIG_WINDOW_X = 1,
XCB_CONFIG_WINDOW_Y = 2,
XCB_CONFIG_WINDOW_WIDTH = 4,
XCB_CONFIG_WINDOW_HEIGHT = 8,
XCB_CONFIG_WINDOW_BORDER_WIDTH = 16,
XCB_CONFIG_WINDOW_SIBLING = 32,
XCB_CONFIG_WINDOW_STACK_MODE = 64
}
enum xcb_stack_mode_t {
XCB_STACK_MODE_ABOVE = 0,
XCB_STACK_MODE_BELOW = 1,
XCB_STACK_MODE_TOP_IF = 2,
XCB_STACK_MODE_BOTTOM_IF = 3,
XCB_STACK_MODE_OPPOSITE = 4
}
enum xcb_circulate_t { XCB_CIRCULATE_RAISE_LOWEST = 0,
XCB_CIRCULATE_LOWER_HIGHEST = 1
}
enum xcb_prop_mode_t { XCB_PROP_MODE_REPLACE = 0,
XCB_PROP_MODE_PREPEND = 1,
XCB_PROP_MODE_APPEND = 2
}
enum xcb_get_property_type_t { XCB_GET_PROPERTY_TYPE_ANY = 0
}
enum xcb_send_event_dest_t { XCB_SEND_EVENT_DEST_POINTER_WINDOW = 0,
XCB_SEND_EVENT_DEST_ITEM_FOCUS = 1
}
enum xcb_grab_mode_t { XCB_GRAB_MODE_SYNC = 0,
XCB_GRAB_MODE_ASYNC = 1
}
enum xcb_grab_status_t {
XCB_GRAB_STATUS_SUCCESS = 0,
XCB_GRAB_STATUS_ALREADY_GRABBED = 1,
XCB_GRAB_STATUS_INVALID_TIME = 2,
XCB_GRAB_STATUS_NOT_VIEWABLE = 3,
XCB_GRAB_STATUS_FROZEN = 4
}
enum xcb_cursor_enum_t { XCB_CURSOR_NONE = 0
}
enum xcb_button_index_t {
XCB_BUTTON_INDEX_ANY = 0,
XCB_BUTTON_INDEX_1 = 1,
XCB_BUTTON_INDEX_2 = 2,
XCB_BUTTON_INDEX_3 = 3,
XCB_BUTTON_INDEX_4 = 4,
XCB_BUTTON_INDEX_5 = 5
}
enum xcb_grab_t { XCB_GRAB_ANY = 0
}
enum xcb_allow_t {
XCB_ALLOW_ASYNC_POINTER = 0,
XCB_ALLOW_SYNC_POINTER = 1,
XCB_ALLOW_REPLAY_POINTER = 2,
XCB_ALLOW_ASYNC_KEYBOARD = 3,
XCB_ALLOW_SYNC_KEYBOARD = 4,
XCB_ALLOW_REPLAY_KEYBOARD = 5,
XCB_ALLOW_ASYNC_BOTH = 6,
XCB_ALLOW_SYNC_BOTH = 7
}
enum xcb_input_focus_t { XCB_INPUT_FOCUS_NONE = 0,
XCB_INPUT_FOCUS_POINTER_ROOT = 1,
XCB_INPUT_FOCUS_PARENT = 2,
XCB_INPUT_FOCUS_FOLLOW_KEYBOARD = 3
}
enum xcb_font_draw_t { XCB_FONT_DRAW_LEFT_TO_RIGHT = 0,
XCB_FONT_DRAW_RIGHT_TO_LEFT = 1
}
enum xcb_gc_t {
XCB_GC_FUNCTION = 1,
XCB_GC_PLANE_MASK = 2,
XCB_GC_FOREGROUND = 4,
XCB_GC_BACKGROUND = 8,
XCB_GC_LINE_WIDTH = 16,
XCB_GC_LINE_STYLE = 32,
XCB_GC_CAP_STYLE = 64,
XCB_GC_JOIN_STYLE = 128,
XCB_GC_FILL_STYLE = 256,
XCB_GC_FILL_RULE = 512,
XCB_GC_TILE = 1024,
XCB_GC_STIPPLE = 2048,
XCB_GC_TILE_STIPPLE_ORIGIN_X = 4096,
XCB_GC_TILE_STIPPLE_ORIGIN_Y = 8192,
XCB_GC_FONT = 16384,
XCB_GC_SUBWINDOW_MODE = 32768,
XCB_GC_GRAPHICS_EXPOSURES = 65536,
XCB_GC_CLIP_ORIGIN_X = 131072,
XCB_GC_CLIP_ORIGIN_Y = 262144,
XCB_GC_CLIP_MASK = 524288,
XCB_GC_DASH_OFFSET = 1048576,
XCB_GC_DASH_LIST = 2097152,
XCB_GC_ARC_MODE = 4194304
}
enum xcb_gx_t {
XCB_GX_CLEAR = 0,
XCB_GX_AND = 1,
XCB_GX_AND_REVERSE = 2,
XCB_GX_COPY = 3,
XCB_GX_AND_INVERTED = 4,
XCB_GX_NOOP = 5,
XCB_GX_XOR = 6,
XCB_GX_OR = 7,
XCB_GX_NOR = 8,
XCB_GX_EQUIV = 9,
XCB_GX_INVERT = 10,
XCB_GX_OR_REVERSE = 11,
XCB_GX_COPY_INVERTED = 12,
XCB_GX_OR_INVERTED = 13,
XCB_GX_NAND = 14,
XCB_GX_SET = 15
}
enum xcb_line_style_t { XCB_LINE_STYLE_SOLID = 0,
XCB_LINE_STYLE_ON_OFF_DASH = 1,
XCB_LINE_STYLE_DOUBLE_DASH = 2
}
enum xcb_cap_style_t { XCB_CAP_STYLE_NOT_LAST = 0,
XCB_CAP_STYLE_BUTT = 1,
XCB_CAP_STYLE_ROUND = 2,
XCB_CAP_STYLE_PROJECTING = 3
}
enum xcb_join_style_t { XCB_JOIN_STYLE_MITER = 0,
XCB_JOIN_STYLE_ROUND = 1,
XCB_JOIN_STYLE_BEVEL = 2
}
enum xcb_fill_style_t { XCB_FILL_STYLE_SOLID = 0,
XCB_FILL_STYLE_TILED = 1,
XCB_FILL_STYLE_STIPPLED = 2,
XCB_FILL_STYLE_OPAQUE_STIPPLED = 3
}
enum xcb_fill_rule_t { XCB_FILL_RULE_EVEN_ODD = 0,
XCB_FILL_RULE_WINDING = 1
}
enum xcb_subwindow_mode_t { XCB_SUBWINDOW_MODE_CLIP_BY_CHILDREN = 0,
XCB_SUBWINDOW_MODE_INCLUDE_INFERIORS = 1
}
enum xcb_arc_mode_t { XCB_ARC_MODE_CHORD = 0,
XCB_ARC_MODE_PIE_SLICE = 1
}
enum xcb_clip_ordering_t { XCB_CLIP_ORDERING_UNSORTED = 0,
XCB_CLIP_ORDERING_Y_SORTED = 1,
XCB_CLIP_ORDERING_YX_SORTED = 2,
XCB_CLIP_ORDERING_YX_BANDED = 3
}
enum xcb_coord_mode_t { XCB_COORD_MODE_ORIGIN = 0,
XCB_COORD_MODE_PREVIOUS = 1
}
enum xcb_poly_shape_t { XCB_POLY_SHAPE_COMPLEX = 0,
XCB_POLY_SHAPE_NONCONVEX = 1,
XCB_POLY_SHAPE_CONVEX = 2
}
enum xcb_image_format_t { XCB_IMAGE_FORMAT_XY_BITMAP = 0,
XCB_IMAGE_FORMAT_XY_PIXMAP = 1,
XCB_IMAGE_FORMAT_Z_PIXMAP = 2
}
enum xcb_colormap_alloc_t { XCB_COLORMAP_ALLOC_NONE = 0,
XCB_COLORMAP_ALLOC_ALL = 1
}
enum xcb_color_flag_t { XCB_COLOR_FLAG_RED = 1,
XCB_COLOR_FLAG_GREEN = 2,
XCB_COLOR_FLAG_BLUE = 4
}
enum xcb_pixmap_enum_t { XCB_PIXMAP_NONE = 0
}
enum xcb_font_enum_t { XCB_FONT_NONE = 0
}
enum xcb_query_shape_of_t { XCB_QUERY_SHAPE_OF_LARGEST_CURSOR = 0,
XCB_QUERY_SHAPE_OF_FASTEST_TILE = 1,
XCB_QUERY_SHAPE_OF_FASTEST_STIPPLE = 2
}
enum xcb_kb_t {
XCB_KB_KEY_CLICK_PERCENT = 1,
XCB_KB_BELL_PERCENT = 2,
XCB_KB_BELL_PITCH = 4,
XCB_KB_BELL_DURATION = 8,
XCB_KB_LED = 16,
XCB_KB_LED_MODE = 32,
XCB_KB_KEY = 64,
XCB_KB_AUTO_REPEAT_MODE = 128
}
enum xcb_led_mode_t { XCB_LED_MODE_OFF = 0,
XCB_LED_MODE_ON = 1
}
enum xcb_auto_repeat_mode_t { XCB_AUTO_REPEAT_MODE_OFF = 0,
XCB_AUTO_REPEAT_MODE_ON = 1,
XCB_AUTO_REPEAT_MODE_DEFAULT = 2
}
enum xcb_blanking_t { XCB_BLANKING_NOT_PREFERRED = 0,
XCB_BLANKING_PREFERRED = 1,
XCB_BLANKING_DEFAULT = 2
}
enum xcb_exposures_t { XCB_EXPOSURES_NOT_ALLOWED = 0,
XCB_EXPOSURES_ALLOWED = 1,
XCB_EXPOSURES_DEFAULT = 2
}
enum xcb_host_mode_t { XCB_HOST_MODE_INSERT = 0,
XCB_HOST_MODE_DELETE = 1
}
enum xcb_family_t {
XCB_FAMILY_INTERNET = 0,
XCB_FAMILY_DECNET = 1,
XCB_FAMILY_CHAOS = 2,
XCB_FAMILY_SERVER_INTERPRETED = 5,
XCB_FAMILY_INTERNET_6 = 6
}
enum xcb_access_control_t { XCB_ACCESS_CONTROL_DISABLE = 0,
XCB_ACCESS_CONTROL_ENABLE = 1
}
enum xcb_close_down_t { XCB_CLOSE_DOWN_DESTROY_ALL = 0,
XCB_CLOSE_DOWN_RETAIN_PERMANENT = 1,
XCB_CLOSE_DOWN_RETAIN_TEMPORARY = 2
}
enum xcb_kill_t { XCB_KILL_ALL_TEMPORARY = 0
}
enum xcb_screen_saver_t { XCB_SCREEN_SAVER_RESET = 0,
XCB_SCREEN_SAVER_ACTIVE = 1
}
enum xcb_mapping_status_t { XCB_MAPPING_STATUS_SUCCESS = 0,
XCB_MAPPING_STATUS_BUSY = 1,
XCB_MAPPING_STATUS_FAILURE = 2
}
enum xcb_map_index_t {
XCB_MAP_INDEX_SHIFT = 0,
XCB_MAP_INDEX_LOCK = 1,
XCB_MAP_INDEX_CONTROL = 2,
XCB_MAP_INDEX_1 = 3,
XCB_MAP_INDEX_2 = 4,
XCB_MAP_INDEX_3 = 5,
XCB_MAP_INDEX_4 = 6,
XCB_MAP_INDEX_5 = 7
}
Functions
void xcb_char2b_next (xcb_char2b_iterator_t *i)
xcb_generic_iterator_t xcb_char2b_end (xcb_char2b_iterator_t i)
void xcb_window_next (xcb_window_iterator_t *i)
xcb_generic_iterator_t xcb_window_end (xcb_window_iterator_t i)
void xcb_pixmap_next (xcb_pixmap_iterator_t *i)
xcb_generic_iterator_t xcb_pixmap_end (xcb_pixmap_iterator_t i)
void xcb_cursor_next (xcb_cursor_iterator_t *i)
xcb_generic_iterator_t xcb_cursor_end (xcb_cursor_iterator_t i)
void xcb_font_next (xcb_font_iterator_t *i)
xcb_generic_iterator_t xcb_font_end (xcb_font_iterator_t i)
void xcb_gcontext_next (xcb_gcontext_iterator_t *i)
xcb_generic_iterator_t xcb_gcontext_end (xcb_gcontext_iterator_t i)
void xcb_colormap_next (xcb_colormap_iterator_t *i)
xcb_generic_iterator_t xcb_colormap_end (xcb_colormap_iterator_t i)
void xcb_atom_next (xcb_atom_iterator_t *i)
xcb_generic_iterator_t xcb_atom_end (xcb_atom_iterator_t i)
void xcb_drawable_next (xcb_drawable_iterator_t *i)
xcb_generic_iterator_t xcb_drawable_end (xcb_drawable_iterator_t i)
void xcb_fontable_next (xcb_fontable_iterator_t *i)
xcb_generic_iterator_t xcb_fontable_end (xcb_fontable_iterator_t i)
void xcb_bool32_next (xcb_bool32_iterator_t *i)
xcb_generic_iterator_t xcb_bool32_end (xcb_bool32_iterator_t i)
void xcb_visualid_next (xcb_visualid_iterator_t *i)
xcb_generic_iterator_t xcb_visualid_end (xcb_visualid_iterator_t i)
void xcb_timestamp_next (xcb_timestamp_iterator_t *i)
xcb_generic_iterator_t xcb_timestamp_end (xcb_timestamp_iterator_t i)
void xcb_keysym_next (xcb_keysym_iterator_t *i)
xcb_generic_iterator_t xcb_keysym_end (xcb_keysym_iterator_t i)
void xcb_keycode_next (xcb_keycode_iterator_t *i)
xcb_generic_iterator_t xcb_keycode_end (xcb_keycode_iterator_t i)
void xcb_keycode32_next (xcb_keycode32_iterator_t *i)
xcb_generic_iterator_t xcb_keycode32_end (xcb_keycode32_iterator_t i)
void xcb_button_next (xcb_button_iterator_t *i)
xcb_generic_iterator_t xcb_button_end (xcb_button_iterator_t i)
void xcb_point_next (xcb_point_iterator_t *i)
xcb_generic_iterator_t xcb_point_end (xcb_point_iterator_t i)
void xcb_rectangle_next (xcb_rectangle_iterator_t *i)
xcb_generic_iterator_t xcb_rectangle_end (xcb_rectangle_iterator_t i)
void xcb_arc_next (xcb_arc_iterator_t *i)
xcb_generic_iterator_t xcb_arc_end (xcb_arc_iterator_t i)
void xcb_format_next (xcb_format_iterator_t *i)
xcb_generic_iterator_t xcb_format_end (xcb_format_iterator_t i)
void xcb_visualtype_next (xcb_visualtype_iterator_t *i)
xcb_generic_iterator_t xcb_visualtype_end (xcb_visualtype_iterator_t i)
int xcb_depth_sizeof (const void *_buffer)
xcb_visualtype_t * xcb_depth_visuals (const xcb_depth_t *R)
int xcb_depth_visuals_length (const xcb_depth_t *R)
xcb_visualtype_iterator_t xcb_depth_visuals_iterator (const xcb_depth_t *R)
void xcb_depth_next (xcb_depth_iterator_t *i)
xcb_generic_iterator_t xcb_depth_end (xcb_depth_iterator_t i)
int xcb_screen_sizeof (const void *_buffer)
int xcb_screen_allowed_depths_length (const xcb_screen_t *R)
xcb_depth_iterator_t xcb_screen_allowed_depths_iterator (const xcb_screen_t *R)
void xcb_screen_next (xcb_screen_iterator_t *i)
xcb_generic_iterator_t xcb_screen_end (xcb_screen_iterator_t i)
int xcb_setup_request_sizeof (const void *_buffer)
char * xcb_setup_request_authorization_protocol_name (const xcb_setup_request_t *R)
int xcb_setup_request_authorization_protocol_name_length (const xcb_setup_request_t *R)
xcb_generic_iterator_t xcb_setup_request_authorization_protocol_name_end (const xcb_setup_request_t *R)
char * xcb_setup_request_authorization_protocol_data (const xcb_setup_request_t *R)
int xcb_setup_request_authorization_protocol_data_length (const xcb_setup_request_t *R)
xcb_generic_iterator_t xcb_setup_request_authorization_protocol_data_end (const xcb_setup_request_t *R)
void xcb_setup_request_next (xcb_setup_request_iterator_t *i)
xcb_generic_iterator_t xcb_setup_request_end (xcb_setup_request_iterator_t i)
int xcb_setup_failed_sizeof (const void *_buffer)
char * xcb_setup_failed_reason (const xcb_setup_failed_t *R)
int xcb_setup_failed_reason_length (const xcb_setup_failed_t *R)
xcb_generic_iterator_t xcb_setup_failed_reason_end (const xcb_setup_failed_t *R)
void xcb_setup_failed_next (xcb_setup_failed_iterator_t *i)
xcb_generic_iterator_t xcb_setup_failed_end (xcb_setup_failed_iterator_t i)
int xcb_setup_authenticate_sizeof (const void *_buffer)
char * xcb_setup_authenticate_reason (const xcb_setup_authenticate_t *R)
int xcb_setup_authenticate_reason_length (const xcb_setup_authenticate_t *R)
xcb_generic_iterator_t xcb_setup_authenticate_reason_end (const xcb_setup_authenticate_t *R)
void xcb_setup_authenticate_next (xcb_setup_authenticate_iterator_t *i)
xcb_generic_iterator_t xcb_setup_authenticate_end (xcb_setup_authenticate_iterator_t i)
int xcb_setup_sizeof (const void *_buffer)
char * xcb_setup_vendor (const xcb_setup_t *R)
int xcb_setup_vendor_length (const xcb_setup_t *R)
xcb_generic_iterator_t xcb_setup_vendor_end (const xcb_setup_t *R)
xcb_format_t * xcb_setup_pixmap_formats (const xcb_setup_t *R)
int xcb_setup_pixmap_formats_length (const xcb_setup_t *R)
xcb_format_iterator_t xcb_setup_pixmap_formats_iterator (const xcb_setup_t *R)
int xcb_setup_roots_length (const xcb_setup_t *R)
xcb_screen_iterator_t xcb_setup_roots_iterator (const xcb_setup_t *R)
void xcb_setup_next (xcb_setup_iterator_t *i)
xcb_generic_iterator_t xcb_setup_end (xcb_setup_iterator_t i)
void xcb_client_message_data_next (xcb_client_message_data_iterator_t *i)
xcb_generic_iterator_t xcb_client_message_data_end (xcb_client_message_data_iterator_t i)
int xcb_create_window_value_list_serialize (void **_buffer, uint32_t value_mask, const xcb_create_window_value_list_t *_aux)
int xcb_create_window_value_list_unpack (const void *_buffer, uint32_t value_mask, xcb_create_window_value_list_t *_aux)
int xcb_create_window_value_list_sizeof (const void *_buffer, uint32_t value_mask)
int xcb_create_window_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_create_window_checked (xcb_connection_t *c, uint8_t depth, xcb_window_t wid, xcb_window_t parent, int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t border_width, uint16_t _class, xcb_visualid_t visual, uint32_t value_mask, const void *value_list)
Creates a window. More...
xcb_void_cookie_t xcb_create_window (xcb_connection_t *c, uint8_t depth, xcb_window_t wid, xcb_window_t parent, int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t border_width, uint16_t _class, xcb_visualid_t visual, uint32_t value_mask, const void *value_list)
Creates a window. More...
xcb_void_cookie_t xcb_create_window_aux_checked (xcb_connection_t *c, uint8_t depth, xcb_window_t wid, xcb_window_t parent, int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t border_width, uint16_t _class, xcb_visualid_t visual, uint32_t value_mask, const xcb_create_window_value_list_t *value_list)
Creates a window. More...
xcb_void_cookie_t xcb_create_window_aux (xcb_connection_t *c, uint8_t depth, xcb_window_t wid, xcb_window_t parent, int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t border_width, uint16_t _class, xcb_visualid_t visual, uint32_t value_mask, const xcb_create_window_value_list_t *value_list)
Creates a window. More...
void * xcb_create_window_value_list (const xcb_create_window_request_t *R)
int xcb_change_window_attributes_value_list_serialize (void **_buffer, uint32_t value_mask, const xcb_change_window_attributes_value_list_t *_aux)
int xcb_change_window_attributes_value_list_unpack (const void *_buffer, uint32_t value_mask, xcb_change_window_attributes_value_list_t *_aux)
int xcb_change_window_attributes_value_list_sizeof (const void *_buffer, uint32_t value_mask)
int xcb_change_window_attributes_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_change_window_attributes_checked (xcb_connection_t *c, xcb_window_t window, uint32_t value_mask, const void *value_list)
change window attributes More...
xcb_void_cookie_t xcb_change_window_attributes (xcb_connection_t *c, xcb_window_t window, uint32_t value_mask, const void *value_list)
change window attributes More...
xcb_void_cookie_t xcb_change_window_attributes_aux_checked (xcb_connection_t *c, xcb_window_t window, uint32_t value_mask, const xcb_change_window_attributes_value_list_t *value_list)
change window attributes More...
xcb_void_cookie_t xcb_change_window_attributes_aux (xcb_connection_t *c, xcb_window_t window, uint32_t value_mask, const xcb_change_window_attributes_value_list_t *value_list)
change window attributes More...
void * xcb_change_window_attributes_value_list (const xcb_change_window_attributes_request_t *R)
xcb_get_window_attributes_cookie_t xcb_get_window_attributes (xcb_connection_t *c, xcb_window_t window)
Gets window attributes. More...
xcb_get_window_attributes_cookie_t xcb_get_window_attributes_unchecked (xcb_connection_t *c, xcb_window_t window)
Gets window attributes. More...
xcb_get_window_attributes_reply_t * xcb_get_window_attributes_reply (xcb_connection_t *c, xcb_get_window_attributes_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_destroy_window_checked (xcb_connection_t *c, xcb_window_t window)
Destroys a window. More...
xcb_void_cookie_t xcb_destroy_window (xcb_connection_t *c, xcb_window_t window)
Destroys a window. More...
xcb_void_cookie_t xcb_destroy_subwindows_checked (xcb_connection_t *c, xcb_window_t window)
xcb_void_cookie_t xcb_destroy_subwindows (xcb_connection_t *c, xcb_window_t window)
xcb_void_cookie_t xcb_change_save_set_checked (xcb_connection_t *c, uint8_t mode, xcb_window_t window)
Changes a client's save set. More...
xcb_void_cookie_t xcb_change_save_set (xcb_connection_t *c, uint8_t mode, xcb_window_t window)
Changes a client's save set. More...
xcb_void_cookie_t xcb_reparent_window_checked (xcb_connection_t *c, xcb_window_t window, xcb_window_t parent, int16_t x, int16_t y)
Reparents a window. More...
xcb_void_cookie_t xcb_reparent_window (xcb_connection_t *c, xcb_window_t window, xcb_window_t parent, int16_t x, int16_t y)
Reparents a window. More...
xcb_void_cookie_t xcb_map_window_checked (xcb_connection_t *c, xcb_window_t window)
Makes a window visible. More...
xcb_void_cookie_t xcb_map_window (xcb_connection_t *c, xcb_window_t window)
Makes a window visible. More...
xcb_void_cookie_t xcb_map_subwindows_checked (xcb_connection_t *c, xcb_window_t window)
xcb_void_cookie_t xcb_map_subwindows (xcb_connection_t *c, xcb_window_t window)
xcb_void_cookie_t xcb_unmap_window_checked (xcb_connection_t *c, xcb_window_t window)
Makes a window invisible. More...
xcb_void_cookie_t xcb_unmap_window (xcb_connection_t *c, xcb_window_t window)
Makes a window invisible. More...
xcb_void_cookie_t xcb_unmap_subwindows_checked (xcb_connection_t *c, xcb_window_t window)
xcb_void_cookie_t xcb_unmap_subwindows (xcb_connection_t *c, xcb_window_t window)
int xcb_configure_window_value_list_serialize (void **_buffer, uint16_t value_mask, const xcb_configure_window_value_list_t *_aux)
int xcb_configure_window_value_list_unpack (const void *_buffer, uint16_t value_mask, xcb_configure_window_value_list_t *_aux)
int xcb_configure_window_value_list_sizeof (const void *_buffer, uint16_t value_mask)
int xcb_configure_window_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_configure_window_checked (xcb_connection_t *c, xcb_window_t window, uint16_t value_mask, const void *value_list)
Configures window attributes. More...
xcb_void_cookie_t xcb_configure_window (xcb_connection_t *c, xcb_window_t window, uint16_t value_mask, const void *value_list)
Configures window attributes. More...
xcb_void_cookie_t xcb_configure_window_aux_checked (xcb_connection_t *c, xcb_window_t window, uint16_t value_mask, const xcb_configure_window_value_list_t *value_list)
Configures window attributes. More...
xcb_void_cookie_t xcb_configure_window_aux (xcb_connection_t *c, xcb_window_t window, uint16_t value_mask, const xcb_configure_window_value_list_t *value_list)
Configures window attributes. More...
void * xcb_configure_window_value_list (const xcb_configure_window_request_t *R)
xcb_void_cookie_t xcb_circulate_window_checked (xcb_connection_t *c, uint8_t direction, xcb_window_t window)
Change window stacking order. More...
xcb_void_cookie_t xcb_circulate_window (xcb_connection_t *c, uint8_t direction, xcb_window_t window)
Change window stacking order. More...
xcb_get_geometry_cookie_t xcb_get_geometry (xcb_connection_t *c, xcb_drawable_t drawable)
Get current window geometry. More...
xcb_get_geometry_cookie_t xcb_get_geometry_unchecked (xcb_connection_t *c, xcb_drawable_t drawable)
Get current window geometry. More...
xcb_get_geometry_reply_t * xcb_get_geometry_reply (xcb_connection_t *c, xcb_get_geometry_cookie_t cookie, xcb_generic_error_t **e)
int xcb_query_tree_sizeof (const void *_buffer)
xcb_query_tree_cookie_t xcb_query_tree (xcb_connection_t *c, xcb_window_t window)
query the window tree More...
xcb_query_tree_cookie_t xcb_query_tree_unchecked (xcb_connection_t *c, xcb_window_t window)
query the window tree More...
xcb_window_t * xcb_query_tree_children (const xcb_query_tree_reply_t *R)
int xcb_query_tree_children_length (const xcb_query_tree_reply_t *R)
xcb_generic_iterator_t xcb_query_tree_children_end (const xcb_query_tree_reply_t *R)
xcb_query_tree_reply_t * xcb_query_tree_reply (xcb_connection_t *c, xcb_query_tree_cookie_t cookie, xcb_generic_error_t **e)
int xcb_intern_atom_sizeof (const void *_buffer)
xcb_intern_atom_cookie_t xcb_intern_atom (xcb_connection_t *c, uint8_t only_if_exists, uint16_t name_len, const char *name)
Get atom identifier by name. More...
xcb_intern_atom_cookie_t xcb_intern_atom_unchecked (xcb_connection_t *c, uint8_t only_if_exists, uint16_t name_len, const char *name)
Get atom identifier by name. More...
xcb_intern_atom_reply_t * xcb_intern_atom_reply (xcb_connection_t *c, xcb_intern_atom_cookie_t cookie, xcb_generic_error_t **e)
int xcb_get_atom_name_sizeof (const void *_buffer)
xcb_get_atom_name_cookie_t xcb_get_atom_name (xcb_connection_t *c, xcb_atom_t atom)
xcb_get_atom_name_cookie_t xcb_get_atom_name_unchecked (xcb_connection_t *c, xcb_atom_t atom)
char * xcb_get_atom_name_name (const xcb_get_atom_name_reply_t *R)
int xcb_get_atom_name_name_length (const xcb_get_atom_name_reply_t *R)
xcb_generic_iterator_t xcb_get_atom_name_name_end (const xcb_get_atom_name_reply_t *R)
xcb_get_atom_name_reply_t * xcb_get_atom_name_reply (xcb_connection_t *c, xcb_get_atom_name_cookie_t cookie, xcb_generic_error_t **e)
int xcb_change_property_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_change_property_checked (xcb_connection_t *c, uint8_t mode, xcb_window_t window, xcb_atom_t property, xcb_atom_t type, uint8_t format, uint32_t data_len, const void *data)
Changes a window property. More...
xcb_void_cookie_t xcb_change_property (xcb_connection_t *c, uint8_t mode, xcb_window_t window, xcb_atom_t property, xcb_atom_t type, uint8_t format, uint32_t data_len, const void *data)
Changes a window property. More...
void * xcb_change_property_data (const xcb_change_property_request_t *R)
int xcb_change_property_data_length (const xcb_change_property_request_t *R)
xcb_generic_iterator_t xcb_change_property_data_end (const xcb_change_property_request_t *R)
xcb_void_cookie_t xcb_delete_property_checked (xcb_connection_t *c, xcb_window_t window, xcb_atom_t property)
xcb_void_cookie_t xcb_delete_property (xcb_connection_t *c, xcb_window_t window, xcb_atom_t property)
int xcb_get_property_sizeof (const void *_buffer)
xcb_get_property_cookie_t xcb_get_property (xcb_connection_t *c, uint8_t _delete, xcb_window_t window, xcb_atom_t property, xcb_atom_t type, uint32_t long_offset, uint32_t long_length)
Gets a window property. More...
xcb_get_property_cookie_t xcb_get_property_unchecked (xcb_connection_t *c, uint8_t _delete, xcb_window_t window, xcb_atom_t property, xcb_atom_t type, uint32_t long_offset, uint32_t long_length)
Gets a window property. More...
void * xcb_get_property_value (const xcb_get_property_reply_t *R)
int xcb_get_property_value_length (const xcb_get_property_reply_t *R)
xcb_generic_iterator_t xcb_get_property_value_end (const xcb_get_property_reply_t *R)
xcb_get_property_reply_t * xcb_get_property_reply (xcb_connection_t *c, xcb_get_property_cookie_t cookie, xcb_generic_error_t **e)
int xcb_list_properties_sizeof (const void *_buffer)
xcb_list_properties_cookie_t xcb_list_properties (xcb_connection_t *c, xcb_window_t window)
xcb_list_properties_cookie_t xcb_list_properties_unchecked (xcb_connection_t *c, xcb_window_t window)
xcb_atom_t * xcb_list_properties_atoms (const xcb_list_properties_reply_t *R)
int xcb_list_properties_atoms_length (const xcb_list_properties_reply_t *R)
xcb_generic_iterator_t xcb_list_properties_atoms_end (const xcb_list_properties_reply_t *R)
xcb_list_properties_reply_t * xcb_list_properties_reply (xcb_connection_t *c, xcb_list_properties_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_set_selection_owner_checked (xcb_connection_t *c, xcb_window_t owner, xcb_atom_t selection, xcb_timestamp_t time)
Sets the owner of a selection. More...
xcb_void_cookie_t xcb_set_selection_owner (xcb_connection_t *c, xcb_window_t owner, xcb_atom_t selection, xcb_timestamp_t time)
Sets the owner of a selection. More...
xcb_get_selection_owner_cookie_t xcb_get_selection_owner (xcb_connection_t *c, xcb_atom_t selection)
Gets the owner of a selection. More...
xcb_get_selection_owner_cookie_t xcb_get_selection_owner_unchecked (xcb_connection_t *c, xcb_atom_t selection)
Gets the owner of a selection. More...
xcb_get_selection_owner_reply_t * xcb_get_selection_owner_reply (xcb_connection_t *c, xcb_get_selection_owner_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_convert_selection_checked (xcb_connection_t *c, xcb_window_t requestor, xcb_atom_t selection, xcb_atom_t target, xcb_atom_t property, xcb_timestamp_t time)
xcb_void_cookie_t xcb_convert_selection (xcb_connection_t *c, xcb_window_t requestor, xcb_atom_t selection, xcb_atom_t target, xcb_atom_t property, xcb_timestamp_t time)
xcb_void_cookie_t xcb_send_event_checked (xcb_connection_t *c, uint8_t propagate, xcb_window_t destination, uint32_t event_mask, const char *event)
send an event More...
xcb_void_cookie_t xcb_send_event (xcb_connection_t *c, uint8_t propagate, xcb_window_t destination, uint32_t event_mask, const char *event)
send an event More...
xcb_grab_pointer_cookie_t xcb_grab_pointer (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t event_mask, uint8_t pointer_mode, uint8_t keyboard_mode, xcb_window_t confine_to, xcb_cursor_t cursor, xcb_timestamp_t time)
Grab the pointer. More...
xcb_grab_pointer_cookie_t xcb_grab_pointer_unchecked (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t event_mask, uint8_t pointer_mode, uint8_t keyboard_mode, xcb_window_t confine_to, xcb_cursor_t cursor, xcb_timestamp_t time)
Grab the pointer. More...
xcb_grab_pointer_reply_t * xcb_grab_pointer_reply (xcb_connection_t *c, xcb_grab_pointer_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_ungrab_pointer_checked (xcb_connection_t *c, xcb_timestamp_t time)
release the pointer More...
xcb_void_cookie_t xcb_ungrab_pointer (xcb_connection_t *c, xcb_timestamp_t time)
release the pointer More...
xcb_void_cookie_t xcb_grab_button_checked (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t event_mask, uint8_t pointer_mode, uint8_t keyboard_mode, xcb_window_t confine_to, xcb_cursor_t cursor, uint8_t button, uint16_t modifiers)
Grab pointer button(s) More...
xcb_void_cookie_t xcb_grab_button (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t event_mask, uint8_t pointer_mode, uint8_t keyboard_mode, xcb_window_t confine_to, xcb_cursor_t cursor, uint8_t button, uint16_t modifiers)
Grab pointer button(s) More...
xcb_void_cookie_t xcb_ungrab_button_checked (xcb_connection_t *c, uint8_t button, xcb_window_t grab_window, uint16_t modifiers)
xcb_void_cookie_t xcb_ungrab_button (xcb_connection_t *c, uint8_t button, xcb_window_t grab_window, uint16_t modifiers)
xcb_void_cookie_t xcb_change_active_pointer_grab_checked (xcb_connection_t *c, xcb_cursor_t cursor, xcb_timestamp_t time, uint16_t event_mask)
xcb_void_cookie_t xcb_change_active_pointer_grab (xcb_connection_t *c, xcb_cursor_t cursor, xcb_timestamp_t time, uint16_t event_mask)
xcb_grab_keyboard_cookie_t xcb_grab_keyboard (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, xcb_timestamp_t time, uint8_t pointer_mode, uint8_t keyboard_mode)
Grab the keyboard. More...
xcb_grab_keyboard_cookie_t xcb_grab_keyboard_unchecked (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, xcb_timestamp_t time, uint8_t pointer_mode, uint8_t keyboard_mode)
Grab the keyboard. More...
xcb_grab_keyboard_reply_t * xcb_grab_keyboard_reply (xcb_connection_t *c, xcb_grab_keyboard_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_ungrab_keyboard_checked (xcb_connection_t *c, xcb_timestamp_t time)
xcb_void_cookie_t xcb_ungrab_keyboard (xcb_connection_t *c, xcb_timestamp_t time)
xcb_void_cookie_t xcb_grab_key_checked (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t modifiers, xcb_keycode_t key, uint8_t pointer_mode, uint8_t keyboard_mode)
Grab keyboard key(s) More...
xcb_void_cookie_t xcb_grab_key (xcb_connection_t *c, uint8_t owner_events, xcb_window_t grab_window, uint16_t modifiers, xcb_keycode_t key, uint8_t pointer_mode, uint8_t keyboard_mode)
Grab keyboard key(s) More...
xcb_void_cookie_t xcb_ungrab_key_checked (xcb_connection_t *c, xcb_keycode_t key, xcb_window_t grab_window, uint16_t modifiers)
release a key combination More...
xcb_void_cookie_t xcb_ungrab_key (xcb_connection_t *c, xcb_keycode_t key, xcb_window_t grab_window, uint16_t modifiers)
release a key combination More...
xcb_void_cookie_t xcb_allow_events_checked (xcb_connection_t *c, uint8_t mode, xcb_timestamp_t time)
release queued events More...
xcb_void_cookie_t xcb_allow_events (xcb_connection_t *c, uint8_t mode, xcb_timestamp_t time)
release queued events More...
xcb_void_cookie_t xcb_grab_server_checked (xcb_connection_t *c)
xcb_void_cookie_t xcb_grab_server (xcb_connection_t *c)
xcb_void_cookie_t xcb_ungrab_server_checked (xcb_connection_t *c)
xcb_void_cookie_t xcb_ungrab_server (xcb_connection_t *c)
xcb_query_pointer_cookie_t xcb_query_pointer (xcb_connection_t *c, xcb_window_t window)
get pointer coordinates More...
xcb_query_pointer_cookie_t xcb_query_pointer_unchecked (xcb_connection_t *c, xcb_window_t window)
get pointer coordinates More...
xcb_query_pointer_reply_t * xcb_query_pointer_reply (xcb_connection_t *c, xcb_query_pointer_cookie_t cookie, xcb_generic_error_t **e)
void xcb_timecoord_next (xcb_timecoord_iterator_t *i)
xcb_generic_iterator_t xcb_timecoord_end (xcb_timecoord_iterator_t i)
int xcb_get_motion_events_sizeof (const void *_buffer)
xcb_get_motion_events_cookie_t xcb_get_motion_events (xcb_connection_t *c, xcb_window_t window, xcb_timestamp_t start, xcb_timestamp_t stop)
xcb_get_motion_events_cookie_t xcb_get_motion_events_unchecked (xcb_connection_t *c, xcb_window_t window, xcb_timestamp_t start, xcb_timestamp_t stop)
xcb_timecoord_t * xcb_get_motion_events_events (const xcb_get_motion_events_reply_t *R)
int xcb_get_motion_events_events_length (const xcb_get_motion_events_reply_t *R)
xcb_timecoord_iterator_t xcb_get_motion_events_events_iterator (const xcb_get_motion_events_reply_t *R)
xcb_get_motion_events_reply_t * xcb_get_motion_events_reply (xcb_connection_t *c, xcb_get_motion_events_cookie_t cookie, xcb_generic_error_t **e)
xcb_translate_coordinates_cookie_t xcb_translate_coordinates (xcb_connection_t *c, xcb_window_t src_window, xcb_window_t dst_window, int16_t src_x, int16_t src_y)
xcb_translate_coordinates_cookie_t xcb_translate_coordinates_unchecked (xcb_connection_t *c, xcb_window_t src_window, xcb_window_t dst_window, int16_t src_x, int16_t src_y)
xcb_translate_coordinates_reply_t * xcb_translate_coordinates_reply (xcb_connection_t *c, xcb_translate_coordinates_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_warp_pointer_checked (xcb_connection_t *c, xcb_window_t src_window, xcb_window_t dst_window, int16_t src_x, int16_t src_y, uint16_t src_width, uint16_t src_height, int16_t dst_x, int16_t dst_y)
move mouse pointer More...
xcb_void_cookie_t xcb_warp_pointer (xcb_connection_t *c, xcb_window_t src_window, xcb_window_t dst_window, int16_t src_x, int16_t src_y, uint16_t src_width, uint16_t src_height, int16_t dst_x, int16_t dst_y)
move mouse pointer More...
xcb_void_cookie_t xcb_set_input_focus_checked (xcb_connection_t *c, uint8_t revert_to, xcb_window_t focus, xcb_timestamp_t time)
Sets input focus. More...
xcb_void_cookie_t xcb_set_input_focus (xcb_connection_t *c, uint8_t revert_to, xcb_window_t focus, xcb_timestamp_t time)
Sets input focus. More...
xcb_get_input_focus_cookie_t xcb_get_input_focus (xcb_connection_t *c)
xcb_get_input_focus_cookie_t xcb_get_input_focus_unchecked (xcb_connection_t *c)
xcb_get_input_focus_reply_t * xcb_get_input_focus_reply (xcb_connection_t *c, xcb_get_input_focus_cookie_t cookie, xcb_generic_error_t **e)
xcb_query_keymap_cookie_t xcb_query_keymap (xcb_connection_t *c)
xcb_query_keymap_cookie_t xcb_query_keymap_unchecked (xcb_connection_t *c)
xcb_query_keymap_reply_t * xcb_query_keymap_reply (xcb_connection_t *c, xcb_query_keymap_cookie_t cookie, xcb_generic_error_t **e)
int xcb_open_font_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_open_font_checked (xcb_connection_t *c, xcb_font_t fid, uint16_t name_len, const char *name)
opens a font More...
xcb_void_cookie_t xcb_open_font (xcb_connection_t *c, xcb_font_t fid, uint16_t name_len, const char *name)
opens a font More...
char * xcb_open_font_name (const xcb_open_font_request_t *R)
int xcb_open_font_name_length (const xcb_open_font_request_t *R)
xcb_generic_iterator_t xcb_open_font_name_end (const xcb_open_font_request_t *R)
xcb_void_cookie_t xcb_close_font_checked (xcb_connection_t *c, xcb_font_t font)
xcb_void_cookie_t xcb_close_font (xcb_connection_t *c, xcb_font_t font)
void xcb_fontprop_next (xcb_fontprop_iterator_t *i)
xcb_generic_iterator_t xcb_fontprop_end (xcb_fontprop_iterator_t i)
void xcb_charinfo_next (xcb_charinfo_iterator_t *i)
xcb_generic_iterator_t xcb_charinfo_end (xcb_charinfo_iterator_t i)
int xcb_query_font_sizeof (const void *_buffer)
xcb_query_font_cookie_t xcb_query_font (xcb_connection_t *c, xcb_fontable_t font)
query font metrics More...
xcb_query_font_cookie_t xcb_query_font_unchecked (xcb_connection_t *c, xcb_fontable_t font)
query font metrics More...
xcb_fontprop_t * xcb_query_font_properties (const xcb_query_font_reply_t *R)
int xcb_query_font_properties_length (const xcb_query_font_reply_t *R)
xcb_fontprop_iterator_t xcb_query_font_properties_iterator (const xcb_query_font_reply_t *R)
xcb_charinfo_t * xcb_query_font_char_infos (const xcb_query_font_reply_t *R)
int xcb_query_font_char_infos_length (const xcb_query_font_reply_t *R)
xcb_charinfo_iterator_t xcb_query_font_char_infos_iterator (const xcb_query_font_reply_t *R)
xcb_query_font_reply_t * xcb_query_font_reply (xcb_connection_t *c, xcb_query_font_cookie_t cookie, xcb_generic_error_t **e)
int xcb_query_text_extents_sizeof (const void *_buffer, uint32_t string_len)
xcb_query_text_extents_cookie_t xcb_query_text_extents (xcb_connection_t *c, xcb_fontable_t font, uint32_t string_len, const xcb_char2b_t *string)
get text extents More...
xcb_query_text_extents_cookie_t xcb_query_text_extents_unchecked (xcb_connection_t *c, xcb_fontable_t font, uint32_t string_len, const xcb_char2b_t *string)
get text extents More...
xcb_query_text_extents_reply_t * xcb_query_text_extents_reply (xcb_connection_t *c, xcb_query_text_extents_cookie_t cookie, xcb_generic_error_t **e)
int xcb_str_sizeof (const void *_buffer)
char * xcb_str_name (const xcb_str_t *R)
int xcb_str_name_length (const xcb_str_t *R)
xcb_generic_iterator_t xcb_str_name_end (const xcb_str_t *R)
void xcb_str_next (xcb_str_iterator_t *i)
xcb_generic_iterator_t xcb_str_end (xcb_str_iterator_t i)
int xcb_list_fonts_sizeof (const void *_buffer)
xcb_list_fonts_cookie_t xcb_list_fonts (xcb_connection_t *c, uint16_t max_names, uint16_t pattern_len, const char *pattern)
get matching font names More...
xcb_list_fonts_cookie_t xcb_list_fonts_unchecked (xcb_connection_t *c, uint16_t max_names, uint16_t pattern_len, const char *pattern)
get matching font names More...
int xcb_list_fonts_names_length (const xcb_list_fonts_reply_t *R)
xcb_str_iterator_t xcb_list_fonts_names_iterator (const xcb_list_fonts_reply_t *R)
xcb_list_fonts_reply_t * xcb_list_fonts_reply (xcb_connection_t *c, xcb_list_fonts_cookie_t cookie, xcb_generic_error_t **e)
int xcb_list_fonts_with_info_sizeof (const void *_buffer)
xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info (xcb_connection_t *c, uint16_t max_names, uint16_t pattern_len, const char *pattern)
get matching font names and information More...
xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info_unchecked (xcb_connection_t *c, uint16_t max_names, uint16_t pattern_len, const char *pattern)
get matching font names and information More...
xcb_fontprop_t * xcb_list_fonts_with_info_properties (const xcb_list_fonts_with_info_reply_t *R)
int xcb_list_fonts_with_info_properties_length (const xcb_list_fonts_with_info_reply_t *R)
xcb_fontprop_iterator_t xcb_list_fonts_with_info_properties_iterator (const xcb_list_fonts_with_info_reply_t *R)
char * xcb_list_fonts_with_info_name (const xcb_list_fonts_with_info_reply_t *R)
int xcb_list_fonts_with_info_name_length (const xcb_list_fonts_with_info_reply_t *R)
xcb_generic_iterator_t xcb_list_fonts_with_info_name_end (const xcb_list_fonts_with_info_reply_t *R)
xcb_list_fonts_with_info_reply_t * xcb_list_fonts_with_info_reply (xcb_connection_t *c, xcb_list_fonts_with_info_cookie_t cookie, xcb_generic_error_t **e)
int xcb_set_font_path_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_set_font_path_checked (xcb_connection_t *c, uint16_t font_qty, const xcb_str_t *font)
xcb_void_cookie_t xcb_set_font_path (xcb_connection_t *c, uint16_t font_qty, const xcb_str_t *font)
int xcb_set_font_path_font_length (const xcb_set_font_path_request_t *R)
xcb_str_iterator_t xcb_set_font_path_font_iterator (const xcb_set_font_path_request_t *R)
int xcb_get_font_path_sizeof (const void *_buffer)
xcb_get_font_path_cookie_t xcb_get_font_path (xcb_connection_t *c)
xcb_get_font_path_cookie_t xcb_get_font_path_unchecked (xcb_connection_t *c)
int xcb_get_font_path_path_length (const xcb_get_font_path_reply_t *R)
xcb_str_iterator_t xcb_get_font_path_path_iterator (const xcb_get_font_path_reply_t *R)
xcb_get_font_path_reply_t * xcb_get_font_path_reply (xcb_connection_t *c, xcb_get_font_path_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_create_pixmap_checked (xcb_connection_t *c, uint8_t depth, xcb_pixmap_t pid, xcb_drawable_t drawable, uint16_t width, uint16_t height)
Creates a pixmap. More...
xcb_void_cookie_t xcb_create_pixmap (xcb_connection_t *c, uint8_t depth, xcb_pixmap_t pid, xcb_drawable_t drawable, uint16_t width, uint16_t height)
Creates a pixmap. More...
xcb_void_cookie_t xcb_free_pixmap_checked (xcb_connection_t *c, xcb_pixmap_t pixmap)
Destroys a pixmap. More...
xcb_void_cookie_t xcb_free_pixmap (xcb_connection_t *c, xcb_pixmap_t pixmap)
Destroys a pixmap. More...
int xcb_create_gc_value_list_serialize (void **_buffer, uint32_t value_mask, const xcb_create_gc_value_list_t *_aux)
int xcb_create_gc_value_list_unpack (const void *_buffer, uint32_t value_mask, xcb_create_gc_value_list_t *_aux)
int xcb_create_gc_value_list_sizeof (const void *_buffer, uint32_t value_mask)
int xcb_create_gc_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_create_gc_checked (xcb_connection_t *c, xcb_gcontext_t cid, xcb_drawable_t drawable, uint32_t value_mask, const void *value_list)
Creates a graphics context. More...
xcb_void_cookie_t xcb_create_gc (xcb_connection_t *c, xcb_gcontext_t cid, xcb_drawable_t drawable, uint32_t value_mask, const void *value_list)
Creates a graphics context. More...
xcb_void_cookie_t xcb_create_gc_aux_checked (xcb_connection_t *c, xcb_gcontext_t cid, xcb_drawable_t drawable, uint32_t value_mask, const xcb_create_gc_value_list_t *value_list)
Creates a graphics context. More...
xcb_void_cookie_t xcb_create_gc_aux (xcb_connection_t *c, xcb_gcontext_t cid, xcb_drawable_t drawable, uint32_t value_mask, const xcb_create_gc_value_list_t *value_list)
Creates a graphics context. More...
void * xcb_create_gc_value_list (const xcb_create_gc_request_t *R)
int xcb_change_gc_value_list_serialize (void **_buffer, uint32_t value_mask, const xcb_change_gc_value_list_t *_aux)
int xcb_change_gc_value_list_unpack (const void *_buffer, uint32_t value_mask, xcb_change_gc_value_list_t *_aux)
int xcb_change_gc_value_list_sizeof (const void *_buffer, uint32_t value_mask)
int xcb_change_gc_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_change_gc_checked (xcb_connection_t *c, xcb_gcontext_t gc, uint32_t value_mask, const void *value_list)
change graphics context components More...
xcb_void_cookie_t xcb_change_gc (xcb_connection_t *c, xcb_gcontext_t gc, uint32_t value_mask, const void *value_list)
change graphics context components More...
xcb_void_cookie_t xcb_change_gc_aux_checked (xcb_connection_t *c, xcb_gcontext_t gc, uint32_t value_mask, const xcb_change_gc_value_list_t *value_list)
change graphics context components More...
xcb_void_cookie_t xcb_change_gc_aux (xcb_connection_t *c, xcb_gcontext_t gc, uint32_t value_mask, const xcb_change_gc_value_list_t *value_list)
change graphics context components More...
void * xcb_change_gc_value_list (const xcb_change_gc_request_t *R)
xcb_void_cookie_t xcb_copy_gc_checked (xcb_connection_t *c, xcb_gcontext_t src_gc, xcb_gcontext_t dst_gc, uint32_t value_mask)
xcb_void_cookie_t xcb_copy_gc (xcb_connection_t *c, xcb_gcontext_t src_gc, xcb_gcontext_t dst_gc, uint32_t value_mask)
int xcb_set_dashes_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_set_dashes_checked (xcb_connection_t *c, xcb_gcontext_t gc, uint16_t dash_offset, uint16_t dashes_len, const uint8_t *dashes)
xcb_void_cookie_t xcb_set_dashes (xcb_connection_t *c, xcb_gcontext_t gc, uint16_t dash_offset, uint16_t dashes_len, const uint8_t *dashes)
uint8_t * xcb_set_dashes_dashes (const xcb_set_dashes_request_t *R)
int xcb_set_dashes_dashes_length (const xcb_set_dashes_request_t *R)
xcb_generic_iterator_t xcb_set_dashes_dashes_end (const xcb_set_dashes_request_t *R)
int xcb_set_clip_rectangles_sizeof (const void *_buffer, uint32_t rectangles_len)
xcb_void_cookie_t xcb_set_clip_rectangles_checked (xcb_connection_t *c, uint8_t ordering, xcb_gcontext_t gc, int16_t clip_x_origin, int16_t clip_y_origin, uint32_t rectangles_len, const xcb_rectangle_t *rectangles)
xcb_void_cookie_t xcb_set_clip_rectangles (xcb_connection_t *c, uint8_t ordering, xcb_gcontext_t gc, int16_t clip_x_origin, int16_t clip_y_origin, uint32_t rectangles_len, const xcb_rectangle_t *rectangles)
xcb_rectangle_t * xcb_set_clip_rectangles_rectangles (const xcb_set_clip_rectangles_request_t *R)
int xcb_set_clip_rectangles_rectangles_length (const xcb_set_clip_rectangles_request_t *R)
xcb_rectangle_iterator_t xcb_set_clip_rectangles_rectangles_iterator (const xcb_set_clip_rectangles_request_t *R)
xcb_void_cookie_t xcb_free_gc_checked (xcb_connection_t *c, xcb_gcontext_t gc)
Destroys a graphics context. More...
xcb_void_cookie_t xcb_free_gc (xcb_connection_t *c, xcb_gcontext_t gc)
Destroys a graphics context. More...
xcb_void_cookie_t xcb_clear_area_checked (xcb_connection_t *c, uint8_t exposures, xcb_window_t window, int16_t x, int16_t y, uint16_t width, uint16_t height)
xcb_void_cookie_t xcb_clear_area (xcb_connection_t *c, uint8_t exposures, xcb_window_t window, int16_t x, int16_t y, uint16_t width, uint16_t height)
xcb_void_cookie_t xcb_copy_area_checked (xcb_connection_t *c, xcb_drawable_t src_drawable, xcb_drawable_t dst_drawable, xcb_gcontext_t gc, int16_t src_x, int16_t src_y, int16_t dst_x, int16_t dst_y, uint16_t width, uint16_t height)
copy areas More...
xcb_void_cookie_t xcb_copy_area (xcb_connection_t *c, xcb_drawable_t src_drawable, xcb_drawable_t dst_drawable, xcb_gcontext_t gc, int16_t src_x, int16_t src_y, int16_t dst_x, int16_t dst_y, uint16_t width, uint16_t height)
copy areas More...
xcb_void_cookie_t xcb_copy_plane_checked (xcb_connection_t *c, xcb_drawable_t src_drawable, xcb_drawable_t dst_drawable, xcb_gcontext_t gc, int16_t src_x, int16_t src_y, int16_t dst_x, int16_t dst_y, uint16_t width, uint16_t height, uint32_t bit_plane)
xcb_void_cookie_t xcb_copy_plane (xcb_connection_t *c, xcb_drawable_t src_drawable, xcb_drawable_t dst_drawable, xcb_gcontext_t gc, int16_t src_x, int16_t src_y, int16_t dst_x, int16_t dst_y, uint16_t width, uint16_t height, uint32_t bit_plane)
int xcb_poly_point_sizeof (const void *_buffer, uint32_t points_len)
xcb_void_cookie_t xcb_poly_point_checked (xcb_connection_t *c, uint8_t coordinate_mode, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t points_len, const xcb_point_t *points)
xcb_void_cookie_t xcb_poly_point (xcb_connection_t *c, uint8_t coordinate_mode, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t points_len, const xcb_point_t *points)
xcb_point_t * xcb_poly_point_points (const xcb_poly_point_request_t *R)
int xcb_poly_point_points_length (const xcb_poly_point_request_t *R)
xcb_point_iterator_t xcb_poly_point_points_iterator (const xcb_poly_point_request_t *R)
int xcb_poly_line_sizeof (const void *_buffer, uint32_t points_len)
xcb_void_cookie_t xcb_poly_line_checked (xcb_connection_t *c, uint8_t coordinate_mode, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t points_len, const xcb_point_t *points)
draw lines More...
xcb_void_cookie_t xcb_poly_line (xcb_connection_t *c, uint8_t coordinate_mode, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t points_len, const xcb_point_t *points)
draw lines More...
xcb_point_t * xcb_poly_line_points (const xcb_poly_line_request_t *R)
int xcb_poly_line_points_length (const xcb_poly_line_request_t *R)
xcb_point_iterator_t xcb_poly_line_points_iterator (const xcb_poly_line_request_t *R)
void xcb_segment_next (xcb_segment_iterator_t *i)
xcb_generic_iterator_t xcb_segment_end (xcb_segment_iterator_t i)
int xcb_poly_segment_sizeof (const void *_buffer, uint32_t segments_len)
xcb_void_cookie_t xcb_poly_segment_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t segments_len, const xcb_segment_t *segments)
draw lines More...
xcb_void_cookie_t xcb_poly_segment (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t segments_len, const xcb_segment_t *segments)
draw lines More...
xcb_segment_t * xcb_poly_segment_segments (const xcb_poly_segment_request_t *R)
int xcb_poly_segment_segments_length (const xcb_poly_segment_request_t *R)
xcb_segment_iterator_t xcb_poly_segment_segments_iterator (const xcb_poly_segment_request_t *R)
int xcb_poly_rectangle_sizeof (const void *_buffer, uint32_t rectangles_len)
xcb_void_cookie_t xcb_poly_rectangle_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t rectangles_len, const xcb_rectangle_t *rectangles)
xcb_void_cookie_t xcb_poly_rectangle (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t rectangles_len, const xcb_rectangle_t *rectangles)
xcb_rectangle_t * xcb_poly_rectangle_rectangles (const xcb_poly_rectangle_request_t *R)
int xcb_poly_rectangle_rectangles_length (const xcb_poly_rectangle_request_t *R)
xcb_rectangle_iterator_t xcb_poly_rectangle_rectangles_iterator (const xcb_poly_rectangle_request_t *R)
int xcb_poly_arc_sizeof (const void *_buffer, uint32_t arcs_len)
xcb_void_cookie_t xcb_poly_arc_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t arcs_len, const xcb_arc_t *arcs)
xcb_void_cookie_t xcb_poly_arc (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t arcs_len, const xcb_arc_t *arcs)
xcb_arc_t * xcb_poly_arc_arcs (const xcb_poly_arc_request_t *R)
int xcb_poly_arc_arcs_length (const xcb_poly_arc_request_t *R)
xcb_arc_iterator_t xcb_poly_arc_arcs_iterator (const xcb_poly_arc_request_t *R)
int xcb_fill_poly_sizeof (const void *_buffer, uint32_t points_len)
xcb_void_cookie_t xcb_fill_poly_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint8_t shape, uint8_t coordinate_mode, uint32_t points_len, const xcb_point_t *points)
xcb_void_cookie_t xcb_fill_poly (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint8_t shape, uint8_t coordinate_mode, uint32_t points_len, const xcb_point_t *points)
xcb_point_t * xcb_fill_poly_points (const xcb_fill_poly_request_t *R)
int xcb_fill_poly_points_length (const xcb_fill_poly_request_t *R)
xcb_point_iterator_t xcb_fill_poly_points_iterator (const xcb_fill_poly_request_t *R)
int xcb_poly_fill_rectangle_sizeof (const void *_buffer, uint32_t rectangles_len)
xcb_void_cookie_t xcb_poly_fill_rectangle_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t rectangles_len, const xcb_rectangle_t *rectangles)
Fills rectangles. More...
xcb_void_cookie_t xcb_poly_fill_rectangle (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t rectangles_len, const xcb_rectangle_t *rectangles)
Fills rectangles. More...
xcb_rectangle_t * xcb_poly_fill_rectangle_rectangles (const xcb_poly_fill_rectangle_request_t *R)
int xcb_poly_fill_rectangle_rectangles_length (const xcb_poly_fill_rectangle_request_t *R)
xcb_rectangle_iterator_t xcb_poly_fill_rectangle_rectangles_iterator (const xcb_poly_fill_rectangle_request_t *R)
int xcb_poly_fill_arc_sizeof (const void *_buffer, uint32_t arcs_len)
xcb_void_cookie_t xcb_poly_fill_arc_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t arcs_len, const xcb_arc_t *arcs)
xcb_void_cookie_t xcb_poly_fill_arc (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, uint32_t arcs_len, const xcb_arc_t *arcs)
xcb_arc_t * xcb_poly_fill_arc_arcs (const xcb_poly_fill_arc_request_t *R)
int xcb_poly_fill_arc_arcs_length (const xcb_poly_fill_arc_request_t *R)
xcb_arc_iterator_t xcb_poly_fill_arc_arcs_iterator (const xcb_poly_fill_arc_request_t *R)
int xcb_put_image_sizeof (const void *_buffer, uint32_t data_len)
xcb_void_cookie_t xcb_put_image_checked (xcb_connection_t *c, uint8_t format, xcb_drawable_t drawable, xcb_gcontext_t gc, uint16_t width, uint16_t height, int16_t dst_x, int16_t dst_y, uint8_t left_pad, uint8_t depth, uint32_t data_len, const uint8_t *data)
xcb_void_cookie_t xcb_put_image (xcb_connection_t *c, uint8_t format, xcb_drawable_t drawable, xcb_gcontext_t gc, uint16_t width, uint16_t height, int16_t dst_x, int16_t dst_y, uint8_t left_pad, uint8_t depth, uint32_t data_len, const uint8_t *data)
uint8_t * xcb_put_image_data (const xcb_put_image_request_t *R)
int xcb_put_image_data_length (const xcb_put_image_request_t *R)
xcb_generic_iterator_t xcb_put_image_data_end (const xcb_put_image_request_t *R)
int xcb_get_image_sizeof (const void *_buffer)
xcb_get_image_cookie_t xcb_get_image (xcb_connection_t *c, uint8_t format, xcb_drawable_t drawable, int16_t x, int16_t y, uint16_t width, uint16_t height, uint32_t plane_mask)
xcb_get_image_cookie_t xcb_get_image_unchecked (xcb_connection_t *c, uint8_t format, xcb_drawable_t drawable, int16_t x, int16_t y, uint16_t width, uint16_t height, uint32_t plane_mask)
uint8_t * xcb_get_image_data (const xcb_get_image_reply_t *R)
int xcb_get_image_data_length (const xcb_get_image_reply_t *R)
xcb_generic_iterator_t xcb_get_image_data_end (const xcb_get_image_reply_t *R)
xcb_get_image_reply_t * xcb_get_image_reply (xcb_connection_t *c, xcb_get_image_cookie_t cookie, xcb_generic_error_t **e)
int xcb_poly_text_8_sizeof (const void *_buffer, uint32_t items_len)
xcb_void_cookie_t xcb_poly_text_8_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, uint32_t items_len, const uint8_t *items)
xcb_void_cookie_t xcb_poly_text_8 (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, uint32_t items_len, const uint8_t *items)
uint8_t * xcb_poly_text_8_items (const xcb_poly_text_8_request_t *R)
int xcb_poly_text_8_items_length (const xcb_poly_text_8_request_t *R)
xcb_generic_iterator_t xcb_poly_text_8_items_end (const xcb_poly_text_8_request_t *R)
int xcb_poly_text_16_sizeof (const void *_buffer, uint32_t items_len)
xcb_void_cookie_t xcb_poly_text_16_checked (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, uint32_t items_len, const uint8_t *items)
xcb_void_cookie_t xcb_poly_text_16 (xcb_connection_t *c, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, uint32_t items_len, const uint8_t *items)
uint8_t * xcb_poly_text_16_items (const xcb_poly_text_16_request_t *R)
int xcb_poly_text_16_items_length (const xcb_poly_text_16_request_t *R)
xcb_generic_iterator_t xcb_poly_text_16_items_end (const xcb_poly_text_16_request_t *R)
int xcb_image_text_8_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_image_text_8_checked (xcb_connection_t *c, uint8_t string_len, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, const char *string)
Draws text. More...
xcb_void_cookie_t xcb_image_text_8 (xcb_connection_t *c, uint8_t string_len, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, const char *string)
Draws text. More...
char * xcb_image_text_8_string (const xcb_image_text_8_request_t *R)
int xcb_image_text_8_string_length (const xcb_image_text_8_request_t *R)
xcb_generic_iterator_t xcb_image_text_8_string_end (const xcb_image_text_8_request_t *R)
int xcb_image_text_16_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_image_text_16_checked (xcb_connection_t *c, uint8_t string_len, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, const xcb_char2b_t *string)
Draws text. More...
xcb_void_cookie_t xcb_image_text_16 (xcb_connection_t *c, uint8_t string_len, xcb_drawable_t drawable, xcb_gcontext_t gc, int16_t x, int16_t y, const xcb_char2b_t *string)
Draws text. More...
xcb_char2b_t * xcb_image_text_16_string (const xcb_image_text_16_request_t *R)
int xcb_image_text_16_string_length (const xcb_image_text_16_request_t *R)
xcb_char2b_iterator_t xcb_image_text_16_string_iterator (const xcb_image_text_16_request_t *R)
xcb_void_cookie_t xcb_create_colormap_checked (xcb_connection_t *c, uint8_t alloc, xcb_colormap_t mid, xcb_window_t window, xcb_visualid_t visual)
xcb_void_cookie_t xcb_create_colormap (xcb_connection_t *c, uint8_t alloc, xcb_colormap_t mid, xcb_window_t window, xcb_visualid_t visual)
xcb_void_cookie_t xcb_free_colormap_checked (xcb_connection_t *c, xcb_colormap_t cmap)
xcb_void_cookie_t xcb_free_colormap (xcb_connection_t *c, xcb_colormap_t cmap)
xcb_void_cookie_t xcb_copy_colormap_and_free_checked (xcb_connection_t *c, xcb_colormap_t mid, xcb_colormap_t src_cmap)
xcb_void_cookie_t xcb_copy_colormap_and_free (xcb_connection_t *c, xcb_colormap_t mid, xcb_colormap_t src_cmap)
xcb_void_cookie_t xcb_install_colormap_checked (xcb_connection_t *c, xcb_colormap_t cmap)
xcb_void_cookie_t xcb_install_colormap (xcb_connection_t *c, xcb_colormap_t cmap)
xcb_void_cookie_t xcb_uninstall_colormap_checked (xcb_connection_t *c, xcb_colormap_t cmap)
xcb_void_cookie_t xcb_uninstall_colormap (xcb_connection_t *c, xcb_colormap_t cmap)
int xcb_list_installed_colormaps_sizeof (const void *_buffer)
xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps (xcb_connection_t *c, xcb_window_t window)
xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps_unchecked (xcb_connection_t *c, xcb_window_t window)
xcb_colormap_t * xcb_list_installed_colormaps_cmaps (const xcb_list_installed_colormaps_reply_t *R)
int xcb_list_installed_colormaps_cmaps_length (const xcb_list_installed_colormaps_reply_t *R)
xcb_generic_iterator_t xcb_list_installed_colormaps_cmaps_end (const xcb_list_installed_colormaps_reply_t *R)
xcb_list_installed_colormaps_reply_t * xcb_list_installed_colormaps_reply (xcb_connection_t *c, xcb_list_installed_colormaps_cookie_t cookie, xcb_generic_error_t **e)
xcb_alloc_color_cookie_t xcb_alloc_color (xcb_connection_t *c, xcb_colormap_t cmap, uint16_t red, uint16_t green, uint16_t blue)
Allocate a color. More...
xcb_alloc_color_cookie_t xcb_alloc_color_unchecked (xcb_connection_t *c, xcb_colormap_t cmap, uint16_t red, uint16_t green, uint16_t blue)
Allocate a color. More...
xcb_alloc_color_reply_t * xcb_alloc_color_reply (xcb_connection_t *c, xcb_alloc_color_cookie_t cookie, xcb_generic_error_t **e)
int xcb_alloc_named_color_sizeof (const void *_buffer)
xcb_alloc_named_color_cookie_t xcb_alloc_named_color (xcb_connection_t *c, xcb_colormap_t cmap, uint16_t name_len, const char *name)
xcb_alloc_named_color_cookie_t xcb_alloc_named_color_unchecked (xcb_connection_t *c, xcb_colormap_t cmap, uint16_t name_len, const char *name)
xcb_alloc_named_color_reply_t * xcb_alloc_named_color_reply (xcb_connection_t *c, xcb_alloc_named_color_cookie_t cookie, xcb_generic_error_t **e)
int xcb_alloc_color_cells_sizeof (const void *_buffer)
xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells (xcb_connection_t *c, uint8_t contiguous, xcb_colormap_t cmap, uint16_t colors, uint16_t planes)
xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells_unchecked (xcb_connection_t *c, uint8_t contiguous, xcb_colormap_t cmap, uint16_t colors, uint16_t planes)
uint32_t * xcb_alloc_color_cells_pixels (const xcb_alloc_color_cells_reply_t *R)
int xcb_alloc_color_cells_pixels_length (const xcb_alloc_color_cells_reply_t *R)
xcb_generic_iterator_t xcb_alloc_color_cells_pixels_end (const xcb_alloc_color_cells_reply_t *R)
uint32_t * xcb_alloc_color_cells_masks (const xcb_alloc_color_cells_reply_t *R)
int xcb_alloc_color_cells_masks_length (const xcb_alloc_color_cells_reply_t *R)
xcb_generic_iterator_t xcb_alloc_color_cells_masks_end (const xcb_alloc_color_cells_reply_t *R)
xcb_alloc_color_cells_reply_t * xcb_alloc_color_cells_reply (xcb_connection_t *c, xcb_alloc_color_cells_cookie_t cookie, xcb_generic_error_t **e)
int xcb_alloc_color_planes_sizeof (const void *_buffer)
xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes (xcb_connection_t *c, uint8_t contiguous, xcb_colormap_t cmap, uint16_t colors, uint16_t reds, uint16_t greens, uint16_t blues)
xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes_unchecked (xcb_connection_t *c, uint8_t contiguous, xcb_colormap_t cmap, uint16_t colors, uint16_t reds, uint16_t greens, uint16_t blues)
uint32_t * xcb_alloc_color_planes_pixels (const xcb_alloc_color_planes_reply_t *R)
int xcb_alloc_color_planes_pixels_length (const xcb_alloc_color_planes_reply_t *R)
xcb_generic_iterator_t xcb_alloc_color_planes_pixels_end (const xcb_alloc_color_planes_reply_t *R)
xcb_alloc_color_planes_reply_t * xcb_alloc_color_planes_reply (xcb_connection_t *c, xcb_alloc_color_planes_cookie_t cookie, xcb_generic_error_t **e)
int xcb_free_colors_sizeof (const void *_buffer, uint32_t pixels_len)
xcb_void_cookie_t xcb_free_colors_checked (xcb_connection_t *c, xcb_colormap_t cmap, uint32_t plane_mask, uint32_t pixels_len, const uint32_t *pixels)
xcb_void_cookie_t xcb_free_colors (xcb_connection_t *c, xcb_colormap_t cmap, uint32_t plane_mask, uint32_t pixels_len, const uint32_t *pixels)
uint32_t * xcb_free_colors_pixels (const xcb_free_colors_request_t *R)
int xcb_free_colors_pixels_length (const xcb_free_colors_request_t *R)
xcb_generic_iterator_t xcb_free_colors_pixels_end (const xcb_free_colors_request_t *R)
void xcb_coloritem_next (xcb_coloritem_iterator_t *i)
xcb_generic_iterator_t xcb_coloritem_end (xcb_coloritem_iterator_t i)
int xcb_store_colors_sizeof (const void *_buffer, uint32_t items_len)
xcb_void_cookie_t xcb_store_colors_checked (xcb_connection_t *c, xcb_colormap_t cmap, uint32_t items_len, const xcb_coloritem_t *items)
xcb_void_cookie_t xcb_store_colors (xcb_connection_t *c, xcb_colormap_t cmap, uint32_t items_len, const xcb_coloritem_t *items)
xcb_coloritem_t * xcb_store_colors_items (const xcb_store_colors_request_t *R)
int xcb_store_colors_items_length (const xcb_store_colors_request_t *R)
xcb_coloritem_iterator_t xcb_store_colors_items_iterator (const xcb_store_colors_request_t *R)
int xcb_store_named_color_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_store_named_color_checked (xcb_connection_t *c, uint8_t flags, xcb_colormap_t cmap, uint32_t pixel, uint16_t name_len, const char *name)
xcb_void_cookie_t xcb_store_named_color (xcb_connection_t *c, uint8_t flags, xcb_colormap_t cmap, uint32_t pixel, uint16_t name_len, const char *name)
char * xcb_store_named_color_name (const xcb_store_named_color_request_t *R)
int xcb_store_named_color_name_length (const xcb_store_named_color_request_t *R)
xcb_generic_iterator_t xcb_store_named_color_name_end (const xcb_store_named_color_request_t *R)
void xcb_rgb_next (xcb_rgb_iterator_t *i)
xcb_generic_iterator_t xcb_rgb_end (xcb_rgb_iterator_t i)
int xcb_query_colors_sizeof (const void *_buffer, uint32_t pixels_len)
xcb_query_colors_cookie_t xcb_query_colors (xcb_connection_t *c, xcb_colormap_t cmap, uint32_t pixels_len, const uint32_t *pixels)
xcb_query_colors_cookie_t xcb_query_colors_unchecked (xcb_connection_t *c, xcb_colormap_t cmap, uint32_t pixels_len, const uint32_t *pixels)
xcb_rgb_t * xcb_query_colors_colors (const xcb_query_colors_reply_t *R)
int xcb_query_colors_colors_length (const xcb_query_colors_reply_t *R)
xcb_rgb_iterator_t xcb_query_colors_colors_iterator (const xcb_query_colors_reply_t *R)
xcb_query_colors_reply_t * xcb_query_colors_reply (xcb_connection_t *c, xcb_query_colors_cookie_t cookie, xcb_generic_error_t **e)
int xcb_lookup_color_sizeof (const void *_buffer)
xcb_lookup_color_cookie_t xcb_lookup_color (xcb_connection_t *c, xcb_colormap_t cmap, uint16_t name_len, const char *name)
xcb_lookup_color_cookie_t xcb_lookup_color_unchecked (xcb_connection_t *c, xcb_colormap_t cmap, uint16_t name_len, const char *name)
xcb_lookup_color_reply_t * xcb_lookup_color_reply (xcb_connection_t *c, xcb_lookup_color_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_create_cursor_checked (xcb_connection_t *c, xcb_cursor_t cid, xcb_pixmap_t source, xcb_pixmap_t mask, uint16_t fore_red, uint16_t fore_green, uint16_t fore_blue, uint16_t back_red, uint16_t back_green, uint16_t back_blue, uint16_t x, uint16_t y)
xcb_void_cookie_t xcb_create_cursor (xcb_connection_t *c, xcb_cursor_t cid, xcb_pixmap_t source, xcb_pixmap_t mask, uint16_t fore_red, uint16_t fore_green, uint16_t fore_blue, uint16_t back_red, uint16_t back_green, uint16_t back_blue, uint16_t x, uint16_t y)
xcb_void_cookie_t xcb_create_glyph_cursor_checked (xcb_connection_t *c, xcb_cursor_t cid, xcb_font_t source_font, xcb_font_t mask_font, uint16_t source_char, uint16_t mask_char, uint16_t fore_red, uint16_t fore_green, uint16_t fore_blue, uint16_t back_red, uint16_t back_green, uint16_t back_blue)
create cursor More...
xcb_void_cookie_t xcb_create_glyph_cursor (xcb_connection_t *c, xcb_cursor_t cid, xcb_font_t source_font, xcb_font_t mask_font, uint16_t source_char, uint16_t mask_char, uint16_t fore_red, uint16_t fore_green, uint16_t fore_blue, uint16_t back_red, uint16_t back_green, uint16_t back_blue)
create cursor More...
xcb_void_cookie_t xcb_free_cursor_checked (xcb_connection_t *c, xcb_cursor_t cursor)
Deletes a cursor. More...
xcb_void_cookie_t xcb_free_cursor (xcb_connection_t *c, xcb_cursor_t cursor)
Deletes a cursor. More...
xcb_void_cookie_t xcb_recolor_cursor_checked (xcb_connection_t *c, xcb_cursor_t cursor, uint16_t fore_red, uint16_t fore_green, uint16_t fore_blue, uint16_t back_red, uint16_t back_green, uint16_t back_blue)
xcb_void_cookie_t xcb_recolor_cursor (xcb_connection_t *c, xcb_cursor_t cursor, uint16_t fore_red, uint16_t fore_green, uint16_t fore_blue, uint16_t back_red, uint16_t back_green, uint16_t back_blue)
xcb_query_best_size_cookie_t xcb_query_best_size (xcb_connection_t *c, uint8_t _class, xcb_drawable_t drawable, uint16_t width, uint16_t height)
xcb_query_best_size_cookie_t xcb_query_best_size_unchecked (xcb_connection_t *c, uint8_t _class, xcb_drawable_t drawable, uint16_t width, uint16_t height)
xcb_query_best_size_reply_t * xcb_query_best_size_reply (xcb_connection_t *c, xcb_query_best_size_cookie_t cookie, xcb_generic_error_t **e)
int xcb_query_extension_sizeof (const void *_buffer)
xcb_query_extension_cookie_t xcb_query_extension (xcb_connection_t *c, uint16_t name_len, const char *name)
check if extension is present More...
xcb_query_extension_cookie_t xcb_query_extension_unchecked (xcb_connection_t *c, uint16_t name_len, const char *name)
check if extension is present More...
xcb_query_extension_reply_t * xcb_query_extension_reply (xcb_connection_t *c, xcb_query_extension_cookie_t cookie, xcb_generic_error_t **e)
int xcb_list_extensions_sizeof (const void *_buffer)
xcb_list_extensions_cookie_t xcb_list_extensions (xcb_connection_t *c)
xcb_list_extensions_cookie_t xcb_list_extensions_unchecked (xcb_connection_t *c)
int xcb_list_extensions_names_length (const xcb_list_extensions_reply_t *R)
xcb_str_iterator_t xcb_list_extensions_names_iterator (const xcb_list_extensions_reply_t *R)
xcb_list_extensions_reply_t * xcb_list_extensions_reply (xcb_connection_t *c, xcb_list_extensions_cookie_t cookie, xcb_generic_error_t **e)
int xcb_change_keyboard_mapping_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_change_keyboard_mapping_checked (xcb_connection_t *c, uint8_t keycode_count, xcb_keycode_t first_keycode, uint8_t keysyms_per_keycode, const xcb_keysym_t *keysyms)
xcb_void_cookie_t xcb_change_keyboard_mapping (xcb_connection_t *c, uint8_t keycode_count, xcb_keycode_t first_keycode, uint8_t keysyms_per_keycode, const xcb_keysym_t *keysyms)
xcb_keysym_t * xcb_change_keyboard_mapping_keysyms (const xcb_change_keyboard_mapping_request_t *R)
int xcb_change_keyboard_mapping_keysyms_length (const xcb_change_keyboard_mapping_request_t *R)
xcb_generic_iterator_t xcb_change_keyboard_mapping_keysyms_end (const xcb_change_keyboard_mapping_request_t *R)
int xcb_get_keyboard_mapping_sizeof (const void *_buffer)
xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping (xcb_connection_t *c, xcb_keycode_t first_keycode, uint8_t count)
xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping_unchecked (xcb_connection_t *c, xcb_keycode_t first_keycode, uint8_t count)
xcb_keysym_t * xcb_get_keyboard_mapping_keysyms (const xcb_get_keyboard_mapping_reply_t *R)
int xcb_get_keyboard_mapping_keysyms_length (const xcb_get_keyboard_mapping_reply_t *R)
xcb_generic_iterator_t xcb_get_keyboard_mapping_keysyms_end (const xcb_get_keyboard_mapping_reply_t *R)
xcb_get_keyboard_mapping_reply_t * xcb_get_keyboard_mapping_reply (xcb_connection_t *c, xcb_get_keyboard_mapping_cookie_t cookie, xcb_generic_error_t **e)
int xcb_change_keyboard_control_value_list_serialize (void **_buffer, uint32_t value_mask, const xcb_change_keyboard_control_value_list_t *_aux)
int xcb_change_keyboard_control_value_list_unpack (const void *_buffer, uint32_t value_mask, xcb_change_keyboard_control_value_list_t *_aux)
int xcb_change_keyboard_control_value_list_sizeof (const void *_buffer, uint32_t value_mask)
int xcb_change_keyboard_control_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_change_keyboard_control_checked (xcb_connection_t *c, uint32_t value_mask, const void *value_list)
xcb_void_cookie_t xcb_change_keyboard_control (xcb_connection_t *c, uint32_t value_mask, const void *value_list)
xcb_void_cookie_t xcb_change_keyboard_control_aux_checked (xcb_connection_t *c, uint32_t value_mask, const xcb_change_keyboard_control_value_list_t *value_list)
xcb_void_cookie_t xcb_change_keyboard_control_aux (xcb_connection_t *c, uint32_t value_mask, const xcb_change_keyboard_control_value_list_t *value_list)
void * xcb_change_keyboard_control_value_list (const xcb_change_keyboard_control_request_t *R)
xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control (xcb_connection_t *c)
xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control_unchecked (xcb_connection_t *c)
xcb_get_keyboard_control_reply_t * xcb_get_keyboard_control_reply (xcb_connection_t *c, xcb_get_keyboard_control_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_bell_checked (xcb_connection_t *c, int8_t percent)
xcb_void_cookie_t xcb_bell (xcb_connection_t *c, int8_t percent)
xcb_void_cookie_t xcb_change_pointer_control_checked (xcb_connection_t *c, int16_t acceleration_numerator, int16_t acceleration_denominator, int16_t threshold, uint8_t do_acceleration, uint8_t do_threshold)
xcb_void_cookie_t xcb_change_pointer_control (xcb_connection_t *c, int16_t acceleration_numerator, int16_t acceleration_denominator, int16_t threshold, uint8_t do_acceleration, uint8_t do_threshold)
xcb_get_pointer_control_cookie_t xcb_get_pointer_control (xcb_connection_t *c)
xcb_get_pointer_control_cookie_t xcb_get_pointer_control_unchecked (xcb_connection_t *c)
xcb_get_pointer_control_reply_t * xcb_get_pointer_control_reply (xcb_connection_t *c, xcb_get_pointer_control_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_set_screen_saver_checked (xcb_connection_t *c, int16_t timeout, int16_t interval, uint8_t prefer_blanking, uint8_t allow_exposures)
xcb_void_cookie_t xcb_set_screen_saver (xcb_connection_t *c, int16_t timeout, int16_t interval, uint8_t prefer_blanking, uint8_t allow_exposures)
xcb_get_screen_saver_cookie_t xcb_get_screen_saver (xcb_connection_t *c)
xcb_get_screen_saver_cookie_t xcb_get_screen_saver_unchecked (xcb_connection_t *c)
xcb_get_screen_saver_reply_t * xcb_get_screen_saver_reply (xcb_connection_t *c, xcb_get_screen_saver_cookie_t cookie, xcb_generic_error_t **e)
int xcb_change_hosts_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_change_hosts_checked (xcb_connection_t *c, uint8_t mode, uint8_t family, uint16_t address_len, const uint8_t *address)
xcb_void_cookie_t xcb_change_hosts (xcb_connection_t *c, uint8_t mode, uint8_t family, uint16_t address_len, const uint8_t *address)
uint8_t * xcb_change_hosts_address (const xcb_change_hosts_request_t *R)
int xcb_change_hosts_address_length (const xcb_change_hosts_request_t *R)
xcb_generic_iterator_t xcb_change_hosts_address_end (const xcb_change_hosts_request_t *R)
int xcb_host_sizeof (const void *_buffer)
uint8_t * xcb_host_address (const xcb_host_t *R)
int xcb_host_address_length (const xcb_host_t *R)
xcb_generic_iterator_t xcb_host_address_end (const xcb_host_t *R)
void xcb_host_next (xcb_host_iterator_t *i)
xcb_generic_iterator_t xcb_host_end (xcb_host_iterator_t i)
int xcb_list_hosts_sizeof (const void *_buffer)
xcb_list_hosts_cookie_t xcb_list_hosts (xcb_connection_t *c)
xcb_list_hosts_cookie_t xcb_list_hosts_unchecked (xcb_connection_t *c)
int xcb_list_hosts_hosts_length (const xcb_list_hosts_reply_t *R)
xcb_host_iterator_t xcb_list_hosts_hosts_iterator (const xcb_list_hosts_reply_t *R)
xcb_list_hosts_reply_t * xcb_list_hosts_reply (xcb_connection_t *c, xcb_list_hosts_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_set_access_control_checked (xcb_connection_t *c, uint8_t mode)
xcb_void_cookie_t xcb_set_access_control (xcb_connection_t *c, uint8_t mode)
xcb_void_cookie_t xcb_set_close_down_mode_checked (xcb_connection_t *c, uint8_t mode)
xcb_void_cookie_t xcb_set_close_down_mode (xcb_connection_t *c, uint8_t mode)
xcb_void_cookie_t xcb_kill_client_checked (xcb_connection_t *c, uint32_t resource)
kills a client More...
xcb_void_cookie_t xcb_kill_client (xcb_connection_t *c, uint32_t resource)
kills a client More...
int xcb_rotate_properties_sizeof (const void *_buffer)
xcb_void_cookie_t xcb_rotate_properties_checked (xcb_connection_t *c, xcb_window_t window, uint16_t atoms_len, int16_t delta, const xcb_atom_t *atoms)
xcb_void_cookie_t xcb_rotate_properties (xcb_connection_t *c, xcb_window_t window, uint16_t atoms_len, int16_t delta, const xcb_atom_t *atoms)
xcb_atom_t * xcb_rotate_properties_atoms (const xcb_rotate_properties_request_t *R)
int xcb_rotate_properties_atoms_length (const xcb_rotate_properties_request_t *R)
xcb_generic_iterator_t xcb_rotate_properties_atoms_end (const xcb_rotate_properties_request_t *R)
xcb_void_cookie_t xcb_force_screen_saver_checked (xcb_connection_t *c, uint8_t mode)
xcb_void_cookie_t xcb_force_screen_saver (xcb_connection_t *c, uint8_t mode)
int xcb_set_pointer_mapping_sizeof (const void *_buffer)
xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping (xcb_connection_t *c, uint8_t map_len, const uint8_t *map)
xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping_unchecked (xcb_connection_t *c, uint8_t map_len, const uint8_t *map)
xcb_set_pointer_mapping_reply_t * xcb_set_pointer_mapping_reply (xcb_connection_t *c, xcb_set_pointer_mapping_cookie_t cookie, xcb_generic_error_t **e)
int xcb_get_pointer_mapping_sizeof (const void *_buffer)
xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping (xcb_connection_t *c)
xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping_unchecked (xcb_connection_t *c)
uint8_t * xcb_get_pointer_mapping_map (const xcb_get_pointer_mapping_reply_t *R)
int xcb_get_pointer_mapping_map_length (const xcb_get_pointer_mapping_reply_t *R)
xcb_generic_iterator_t xcb_get_pointer_mapping_map_end (const xcb_get_pointer_mapping_reply_t *R)
xcb_get_pointer_mapping_reply_t * xcb_get_pointer_mapping_reply (xcb_connection_t *c, xcb_get_pointer_mapping_cookie_t cookie, xcb_generic_error_t **e)
int xcb_set_modifier_mapping_sizeof (const void *_buffer)
xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping (xcb_connection_t *c, uint8_t keycodes_per_modifier, const xcb_keycode_t *keycodes)
xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping_unchecked (xcb_connection_t *c, uint8_t keycodes_per_modifier, const xcb_keycode_t *keycodes)
xcb_set_modifier_mapping_reply_t * xcb_set_modifier_mapping_reply (xcb_connection_t *c, xcb_set_modifier_mapping_cookie_t cookie, xcb_generic_error_t **e)
int xcb_get_modifier_mapping_sizeof (const void *_buffer)
xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping (xcb_connection_t *c)
xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping_unchecked (xcb_connection_t *c)
xcb_keycode_t * xcb_get_modifier_mapping_keycodes (const xcb_get_modifier_mapping_reply_t *R)
int xcb_get_modifier_mapping_keycodes_length (const xcb_get_modifier_mapping_reply_t *R)
xcb_generic_iterator_t xcb_get_modifier_mapping_keycodes_end (const xcb_get_modifier_mapping_reply_t *R)
xcb_get_modifier_mapping_reply_t * xcb_get_modifier_mapping_reply (xcb_connection_t *c, xcb_get_modifier_mapping_cookie_t cookie, xcb_generic_error_t **e)
xcb_void_cookie_t xcb_no_operation_checked (xcb_connection_t *c)
xcb_void_cookie_t xcb_no_operation (xcb_connection_t *c)
Detailed Description
XCB Protocol Implementation.
Macro Definition Documentation
#define XCB_ACCESS 10
Opcode for xcb_access.
#define XCB_ALLOC 11
Opcode for xcb_alloc.
#define XCB_ALLOC_COLOR 84
Opcode for xcb_alloc_color.
Referenced by xcb_alloc_color(), and xcb_alloc_color_unchecked().
#define XCB_ALLOC_COLOR_CELLS 86
Opcode for xcb_alloc_color_cells.
Referenced by xcb_alloc_color_cells(), and xcb_alloc_color_cells_unchecked().
#define XCB_ALLOC_COLOR_PLANES 87
Opcode for xcb_alloc_color_planes.
Referenced by xcb_alloc_color_planes(), and xcb_alloc_color_planes_unchecked().
#define XCB_ALLOC_NAMED_COLOR 85
Opcode for xcb_alloc_named_color.
Referenced by xcb_alloc_named_color(), and xcb_alloc_named_color_unchecked().
#define XCB_ALLOW_EVENTS 35
Opcode for xcb_allow_events.
Referenced by xcb_allow_events(), and xcb_allow_events_checked().
#define XCB_ATOM 5
Opcode for xcb_atom.
#define XCB_BELL 104
Opcode for xcb_bell.
Referenced by xcb_bell(), and xcb_bell_checked().
#define XCB_BUTTON_PRESS 4
Opcode for xcb_button_press.
#define XCB_BUTTON_RELEASE 5
Opcode for xcb_button_release.
#define XCB_CHANGE_ACTIVE_POINTER_GRAB 30
Opcode for xcb_change_active_pointer_grab.
Referenced by xcb_change_active_pointer_grab(), and xcb_change_active_pointer_grab_checked().
#define XCB_CHANGE_GC 56
Opcode for xcb_change_gc.
Referenced by xcb_change_gc(), xcb_change_gc_aux(), xcb_change_gc_aux_checked(), and xcb_change_gc_checked().
#define XCB_CHANGE_HOSTS 109
Opcode for xcb_change_hosts.
Referenced by xcb_change_hosts(), and xcb_change_hosts_checked().
#define XCB_CHANGE_KEYBOARD_CONTROL 102
Opcode for xcb_change_keyboard_control.
Referenced by xcb_change_keyboard_control(), xcb_change_keyboard_control_aux(), xcb_change_keyboard_control_aux_checked(), and xcb_change_keyboard_control_checked().
#define XCB_CHANGE_KEYBOARD_MAPPING 100
Opcode for xcb_change_keyboard_mapping.
Referenced by xcb_change_keyboard_mapping(), and xcb_change_keyboard_mapping_checked().
#define XCB_CHANGE_POINTER_CONTROL 105
Opcode for xcb_change_pointer_control.
Referenced by xcb_change_pointer_control(), and xcb_change_pointer_control_checked().
#define XCB_CHANGE_PROPERTY 18
Opcode for xcb_change_property.
Referenced by xcb_change_property(), and xcb_change_property_checked().
#define XCB_CHANGE_SAVE_SET 6
Opcode for xcb_change_save_set.
Referenced by xcb_change_save_set(), and xcb_change_save_set_checked().
#define XCB_CHANGE_WINDOW_ATTRIBUTES 2
Opcode for xcb_change_window_attributes.
Referenced by xcb_change_window_attributes(), xcb_change_window_attributes_aux(), xcb_change_window_attributes_aux_checked(), and xcb_change_window_attributes_checked().
#define XCB_CIRCULATE_NOTIFY 26
Opcode for xcb_circulate_notify.
#define XCB_CIRCULATE_REQUEST 27
Opcode for xcb_circulate_request.
#define XCB_CIRCULATE_WINDOW 13
Opcode for xcb_circulate_window.
Referenced by xcb_circulate_window(), and xcb_circulate_window_checked().
#define XCB_CLEAR_AREA 61
Opcode for xcb_clear_area.
Referenced by xcb_clear_area(), and xcb_clear_area_checked().
#define XCB_CLIENT_MESSAGE 33
Opcode for xcb_client_message.
#define XCB_CLOSE_FONT 46
Opcode for xcb_close_font.
Referenced by xcb_close_font(), and xcb_close_font_checked().
#define XCB_COLORMAP 12
Opcode for xcb_colormap.
#define XCB_COLORMAP_NOTIFY 32
Opcode for xcb_colormap_notify.
#define XCB_CONFIGURE_NOTIFY 22
Opcode for xcb_configure_notify.
#define XCB_CONFIGURE_REQUEST 23
Opcode for xcb_configure_request.
#define XCB_CONFIGURE_WINDOW 12
Opcode for xcb_configure_window.
Referenced by xcb_configure_window(), xcb_configure_window_aux(), xcb_configure_window_aux_checked(), and xcb_configure_window_checked().
#define XCB_CONVERT_SELECTION 24
Opcode for xcb_convert_selection.
Referenced by xcb_convert_selection(), and xcb_convert_selection_checked().
#define XCB_COPY_AREA 62
Opcode for xcb_copy_area.
Referenced by xcb_copy_area(), and xcb_copy_area_checked().
#define XCB_COPY_COLORMAP_AND_FREE 80
Opcode for xcb_copy_colormap_and_free.
Referenced by xcb_copy_colormap_and_free(), and xcb_copy_colormap_and_free_checked().
#define XCB_COPY_GC 57
Opcode for xcb_copy_gc.
Referenced by xcb_copy_gc(), and xcb_copy_gc_checked().
#define XCB_COPY_PLANE 63
Opcode for xcb_copy_plane.
Referenced by xcb_copy_plane(), and xcb_copy_plane_checked().
#define XCB_CREATE_COLORMAP 78
Opcode for xcb_create_colormap.
Referenced by xcb_create_colormap(), and xcb_create_colormap_checked().
#define XCB_CREATE_CURSOR 93
Opcode for xcb_create_cursor.
Referenced by xcb_create_cursor(), and xcb_create_cursor_checked().
#define XCB_CREATE_GC 55
Opcode for xcb_create_gc.
Referenced by xcb_create_gc(), xcb_create_gc_aux(), xcb_create_gc_aux_checked(), and xcb_create_gc_checked().
#define XCB_CREATE_GLYPH_CURSOR 94
Opcode for xcb_create_glyph_cursor.
Referenced by xcb_create_glyph_cursor(), and xcb_create_glyph_cursor_checked().
#define XCB_CREATE_NOTIFY 16
Opcode for xcb_create_notify.
#define XCB_CREATE_PIXMAP 53
Opcode for xcb_create_pixmap.
Referenced by xcb_create_pixmap(), and xcb_create_pixmap_checked().
#define XCB_CREATE_WINDOW 1
Opcode for xcb_create_window.
Referenced by xcb_create_window(), xcb_create_window_aux(), xcb_create_window_aux_checked(), and xcb_create_window_checked().
#define XCB_CURSOR 6
Opcode for xcb_cursor.
#define XCB_DELETE_PROPERTY 19
Opcode for xcb_delete_property.
Referenced by xcb_delete_property(), and xcb_delete_property_checked().
#define XCB_DESTROY_NOTIFY 17
Opcode for xcb_destroy_notify.
#define XCB_DESTROY_SUBWINDOWS 5
Opcode for xcb_destroy_subwindows.
Referenced by xcb_destroy_subwindows(), and xcb_destroy_subwindows_checked().
#define XCB_DESTROY_WINDOW 4
Opcode for xcb_destroy_window.
Referenced by xcb_destroy_window(), and xcb_destroy_window_checked().
#define XCB_DRAWABLE 9
Opcode for xcb_drawable.
#define XCB_ENTER_NOTIFY 7
Opcode for xcb_enter_notify.
#define XCB_EXPOSE 12
Opcode for xcb_expose.
#define XCB_FILL_POLY 69
Opcode for xcb_fill_poly.
Referenced by xcb_fill_poly(), and xcb_fill_poly_checked().
#define XCB_FOCUS_IN 9
Opcode for xcb_focus_in.
#define XCB_FOCUS_OUT 10
Opcode for xcb_focus_out.
#define XCB_FONT 7
Opcode for xcb_font.
#define XCB_FORCE_SCREEN_SAVER 115
Opcode for xcb_force_screen_saver.
Referenced by xcb_force_screen_saver(), and xcb_force_screen_saver_checked().
#define XCB_FREE_COLORMAP 79
Opcode for xcb_free_colormap.
Referenced by xcb_free_colormap(), and xcb_free_colormap_checked().
#define XCB_FREE_COLORS 88
Opcode for xcb_free_colors.
Referenced by xcb_free_colors(), and xcb_free_colors_checked().
#define XCB_FREE_CURSOR 95
Opcode for xcb_free_cursor.
Referenced by xcb_free_cursor(), and xcb_free_cursor_checked().
#define XCB_FREE_GC 60
Opcode for xcb_free_gc.
Referenced by xcb_free_gc(), and xcb_free_gc_checked().
#define XCB_FREE_PIXMAP 54
Opcode for xcb_free_pixmap.
Referenced by xcb_free_pixmap(), and xcb_free_pixmap_checked().
#define XCB_G_CONTEXT 13
Opcode for xcb_g_context.
#define XCB_GE_GENERIC 35
Opcode for xcb_ge_generic.
#define XCB_GET_ATOM_NAME 17
Opcode for xcb_get_atom_name.
Referenced by xcb_get_atom_name(), and xcb_get_atom_name_unchecked().
#define XCB_GET_FONT_PATH 52
Opcode for xcb_get_font_path.
Referenced by xcb_get_font_path(), and xcb_get_font_path_unchecked().
#define XCB_GET_GEOMETRY 14
Opcode for xcb_get_geometry.
Referenced by xcb_get_geometry(), and xcb_get_geometry_unchecked().
#define XCB_GET_IMAGE 73
Opcode for xcb_get_image.
Referenced by xcb_get_image(), and xcb_get_image_unchecked().
#define XCB_GET_INPUT_FOCUS 43
Opcode for xcb_get_input_focus.
Referenced by xcb_get_input_focus(), and xcb_get_input_focus_unchecked().
#define XCB_GET_KEYBOARD_CONTROL 103
Opcode for xcb_get_keyboard_control.
Referenced by xcb_get_keyboard_control(), and xcb_get_keyboard_control_unchecked().
#define XCB_GET_KEYBOARD_MAPPING 101
Opcode for xcb_get_keyboard_mapping.
Referenced by xcb_get_keyboard_mapping(), and xcb_get_keyboard_mapping_unchecked().
#define XCB_GET_MODIFIER_MAPPING 119
Opcode for xcb_get_modifier_mapping.
Referenced by xcb_get_modifier_mapping(), and xcb_get_modifier_mapping_unchecked().
#define XCB_GET_MOTION_EVENTS 39
Opcode for xcb_get_motion_events.
Referenced by xcb_get_motion_events(), and xcb_get_motion_events_unchecked().
#define XCB_GET_POINTER_CONTROL 106
Opcode for xcb_get_pointer_control.
Referenced by xcb_get_pointer_control(), and xcb_get_pointer_control_unchecked().
#define XCB_GET_POINTER_MAPPING 117
Opcode for xcb_get_pointer_mapping.
Referenced by xcb_get_pointer_mapping(), and xcb_get_pointer_mapping_unchecked().
#define XCB_GET_PROPERTY 20
Opcode for xcb_get_property.
Referenced by xcb_get_property(), and xcb_get_property_unchecked().
#define XCB_GET_SCREEN_SAVER 108
Opcode for xcb_get_screen_saver.
Referenced by xcb_get_screen_saver(), and xcb_get_screen_saver_unchecked().
#define XCB_GET_SELECTION_OWNER 23
Opcode for xcb_get_selection_owner.
Referenced by xcb_get_selection_owner(), and xcb_get_selection_owner_unchecked().
#define XCB_GET_WINDOW_ATTRIBUTES 3
Opcode for xcb_get_window_attributes.
Referenced by xcb_get_window_attributes(), and xcb_get_window_attributes_unchecked().
#define XCB_GRAB_BUTTON 28
Opcode for xcb_grab_button.
Referenced by xcb_grab_button(), and xcb_grab_button_checked().
#define XCB_GRAB_KEY 33
Opcode for xcb_grab_key.
Referenced by xcb_grab_key(), and xcb_grab_key_checked().
#define XCB_GRAB_KEYBOARD 31
Opcode for xcb_grab_keyboard.
Referenced by xcb_grab_keyboard(), and xcb_grab_keyboard_unchecked().
#define XCB_GRAB_POINTER 26
Opcode for xcb_grab_pointer.
Referenced by xcb_grab_pointer(), and xcb_grab_pointer_unchecked().
#define XCB_GRAB_SERVER 36
Opcode for xcb_grab_server.
Referenced by xcb_grab_server(), and xcb_grab_server_checked().
#define XCB_GRAPHICS_EXPOSURE 13
Opcode for xcb_graphics_exposure.
#define XCB_GRAVITY_NOTIFY 24
Opcode for xcb_gravity_notify.
#define XCB_ID_CHOICE 14
Opcode for xcb_id_choice.
#define XCB_IMAGE_TEXT_16 77
Opcode for xcb_image_text_16.
Referenced by xcb_image_text_16(), and xcb_image_text_16_checked().
#define XCB_IMAGE_TEXT_8 76
Opcode for xcb_image_text_8.
Referenced by xcb_image_text_8(), and xcb_image_text_8_checked().
#define XCB_IMPLEMENTATION 17
Opcode for xcb_implementation.
#define XCB_INSTALL_COLORMAP 81
Opcode for xcb_install_colormap.
Referenced by xcb_install_colormap(), and xcb_install_colormap_checked().
#define XCB_INTERN_ATOM 16
Opcode for xcb_intern_atom.
Referenced by xcb_intern_atom(), and xcb_intern_atom_unchecked().
#define XCB_KEY_PRESS 2
Opcode for xcb_key_press.
#define XCB_KEY_RELEASE 3
Opcode for xcb_key_release.
#define XCB_KEYMAP_NOTIFY 11
Opcode for xcb_keymap_notify.
#define XCB_KILL_CLIENT 113
Opcode for xcb_kill_client.
Referenced by xcb_kill_client(), and xcb_kill_client_checked().
#define XCB_LEAVE_NOTIFY 8
Opcode for xcb_leave_notify.
#define XCB_LENGTH 16
Opcode for xcb_length.
#define XCB_LIST_EXTENSIONS 99
Opcode for xcb_list_extensions.
Referenced by xcb_list_extensions(), and xcb_list_extensions_unchecked().
#define XCB_LIST_FONTS 49
Opcode for xcb_list_fonts.
Referenced by xcb_list_fonts(), and xcb_list_fonts_unchecked().
#define XCB_LIST_FONTS_WITH_INFO 50
Opcode for xcb_list_fonts_with_info.
Referenced by xcb_list_fonts_with_info(), and xcb_list_fonts_with_info_unchecked().
#define XCB_LIST_HOSTS 110
Opcode for xcb_list_hosts.
Referenced by xcb_list_hosts(), and xcb_list_hosts_unchecked().
#define XCB_LIST_INSTALLED_COLORMAPS 83
Opcode for xcb_list_installed_colormaps.
Referenced by xcb_list_installed_colormaps(), and xcb_list_installed_colormaps_unchecked().
#define XCB_LIST_PROPERTIES 21
Opcode for xcb_list_properties.
Referenced by xcb_list_properties(), and xcb_list_properties_unchecked().
#define XCB_LOOKUP_COLOR 92
Opcode for xcb_lookup_color.
Referenced by xcb_lookup_color(), and xcb_lookup_color_unchecked().
#define XCB_MAP_NOTIFY 19
Opcode for xcb_map_notify.
#define XCB_MAP_REQUEST 20
Opcode for xcb_map_request.
#define XCB_MAP_SUBWINDOWS 9
Opcode for xcb_map_subwindows.
Referenced by xcb_map_subwindows(), and xcb_map_subwindows_checked().
#define XCB_MAP_WINDOW 8
Opcode for xcb_map_window.
Referenced by xcb_map_window(), and xcb_map_window_checked().
#define XCB_MAPPING_NOTIFY 34
Opcode for xcb_mapping_notify.
#define XCB_MATCH 8
Opcode for xcb_match.
#define XCB_MOTION_NOTIFY 6
Opcode for xcb_motion_notify.
#define XCB_NAME 15
Opcode for xcb_name.
#define XCB_NO_EXPOSURE 14
Opcode for xcb_no_exposure.
#define XCB_NO_OPERATION 127
Opcode for xcb_no_operation.
Referenced by xcb_no_operation(), and xcb_no_operation_checked().
#define XCB_OPEN_FONT 45
Opcode for xcb_open_font.
Referenced by xcb_open_font(), and xcb_open_font_checked().
#define XCB_PIXMAP 4
Opcode for xcb_pixmap.
#define XCB_POLY_ARC 68
Opcode for xcb_poly_arc.
Referenced by xcb_poly_arc(), and xcb_poly_arc_checked().
#define XCB_POLY_FILL_ARC 71
Opcode for xcb_poly_fill_arc.
Referenced by xcb_poly_fill_arc(), and xcb_poly_fill_arc_checked().
#define XCB_POLY_FILL_RECTANGLE 70
Opcode for xcb_poly_fill_rectangle.
Referenced by xcb_poly_fill_rectangle(), and xcb_poly_fill_rectangle_checked().
#define XCB_POLY_LINE 65
Opcode for xcb_poly_line.
Referenced by xcb_poly_line(), and xcb_poly_line_checked().
#define XCB_POLY_POINT 64
Opcode for xcb_poly_point.
Referenced by xcb_poly_point(), and xcb_poly_point_checked().
#define XCB_POLY_RECTANGLE 67
Opcode for xcb_poly_rectangle.
Referenced by xcb_poly_rectangle(), and xcb_poly_rectangle_checked().
#define XCB_POLY_SEGMENT 66
Opcode for xcb_poly_segment.
Referenced by xcb_poly_segment(), and xcb_poly_segment_checked().
#define XCB_POLY_TEXT_16 75
Opcode for xcb_poly_text_16.
Referenced by xcb_poly_text_16(), and xcb_poly_text_16_checked().
#define XCB_POLY_TEXT_8 74
Opcode for xcb_poly_text_8.
Referenced by xcb_poly_text_8(), and xcb_poly_text_8_checked().
#define XCB_PROPERTY_NOTIFY 28
Opcode for xcb_property_notify.
#define XCB_PUT_IMAGE 72
Opcode for xcb_put_image.
Referenced by xcb_put_image(), and xcb_put_image_checked().
#define XCB_QUERY_BEST_SIZE 97
Opcode for xcb_query_best_size.
Referenced by xcb_query_best_size(), and xcb_query_best_size_unchecked().
#define XCB_QUERY_COLORS 91
Opcode for xcb_query_colors.
Referenced by xcb_query_colors(), and xcb_query_colors_unchecked().
#define XCB_QUERY_EXTENSION 98
Opcode for xcb_query_extension.
Referenced by xcb_query_extension(), and xcb_query_extension_unchecked().
#define XCB_QUERY_FONT 47
Opcode for xcb_query_font.
Referenced by xcb_query_font(), and xcb_query_font_unchecked().
#define XCB_QUERY_KEYMAP 44
Opcode for xcb_query_keymap.
Referenced by xcb_query_keymap(), and xcb_query_keymap_unchecked().
#define XCB_QUERY_POINTER 38
Opcode for xcb_query_pointer.
Referenced by xcb_query_pointer(), and xcb_query_pointer_unchecked().
#define XCB_QUERY_TEXT_EXTENTS 48
Opcode for xcb_query_text_extents.
Referenced by xcb_query_text_extents(), and xcb_query_text_extents_unchecked().
#define XCB_QUERY_TREE 15
Opcode for xcb_query_tree.
Referenced by xcb_query_tree(), and xcb_query_tree_unchecked().
#define XCB_RECOLOR_CURSOR 96
Opcode for xcb_recolor_cursor.
Referenced by xcb_recolor_cursor(), and xcb_recolor_cursor_checked().
#define XCB_REPARENT_NOTIFY 21
Opcode for xcb_reparent_notify.
#define XCB_REPARENT_WINDOW 7
Opcode for xcb_reparent_window.
Referenced by xcb_reparent_window(), and xcb_reparent_window_checked().
#define XCB_REQUEST 1
Opcode for xcb_request.
#define XCB_RESIZE_REQUEST 25
Opcode for xcb_resize_request.
#define XCB_ROTATE_PROPERTIES 114
Opcode for xcb_rotate_properties.
Referenced by xcb_rotate_properties(), and xcb_rotate_properties_checked().
#define XCB_SELECTION_CLEAR 29
Opcode for xcb_selection_clear.
#define XCB_SELECTION_NOTIFY 31
Opcode for xcb_selection_notify.
#define XCB_SELECTION_REQUEST 30
Opcode for xcb_selection_request.
#define XCB_SEND_EVENT 25
Opcode for xcb_send_event.
Referenced by xcb_send_event(), and xcb_send_event_checked().
#define XCB_SET_ACCESS_CONTROL 111
Opcode for xcb_set_access_control.
Referenced by xcb_set_access_control(), and xcb_set_access_control_checked().
#define XCB_SET_CLIP_RECTANGLES 59
Opcode for xcb_set_clip_rectangles.
Referenced by xcb_set_clip_rectangles(), and xcb_set_clip_rectangles_checked().
#define XCB_SET_CLOSE_DOWN_MODE 112
Opcode for xcb_set_close_down_mode.
Referenced by xcb_set_close_down_mode(), and xcb_set_close_down_mode_checked().
#define XCB_SET_DASHES 58
Opcode for xcb_set_dashes.
Referenced by xcb_set_dashes(), and xcb_set_dashes_checked().
#define XCB_SET_FONT_PATH 51
Opcode for xcb_set_font_path.
Referenced by xcb_set_font_path(), and xcb_set_font_path_checked().
#define XCB_SET_INPUT_FOCUS 42
Opcode for xcb_set_input_focus.
Referenced by xcb_set_input_focus(), and xcb_set_input_focus_checked().
#define XCB_SET_MODIFIER_MAPPING 118
Opcode for xcb_set_modifier_mapping.
Referenced by xcb_set_modifier_mapping(), and xcb_set_modifier_mapping_unchecked().
#define XCB_SET_POINTER_MAPPING 116
Opcode for xcb_set_pointer_mapping.
Referenced by xcb_set_pointer_mapping(), and xcb_set_pointer_mapping_unchecked().
#define XCB_SET_SCREEN_SAVER 107
Opcode for xcb_set_screen_saver.
Referenced by xcb_set_screen_saver(), and xcb_set_screen_saver_checked().
#define XCB_SET_SELECTION_OWNER 22
Opcode for xcb_set_selection_owner.
Referenced by xcb_set_selection_owner(), and xcb_set_selection_owner_checked().
#define XCB_STORE_COLORS 89
Opcode for xcb_store_colors.
Referenced by xcb_store_colors(), and xcb_store_colors_checked().
#define XCB_STORE_NAMED_COLOR 90
Opcode for xcb_store_named_color.
Referenced by xcb_store_named_color(), and xcb_store_named_color_checked().
#define XCB_TRANSLATE_COORDINATES 40
Opcode for xcb_translate_coordinates.
Referenced by xcb_translate_coordinates(), and xcb_translate_coordinates_unchecked().
#define XCB_UNGRAB_BUTTON 29
Opcode for xcb_ungrab_button.
Referenced by xcb_ungrab_button(), and xcb_ungrab_button_checked().
#define XCB_UNGRAB_KEY 34
Opcode for xcb_ungrab_key.
Referenced by xcb_ungrab_key(), and xcb_ungrab_key_checked().
#define XCB_UNGRAB_KEYBOARD 32
Opcode for xcb_ungrab_keyboard.
Referenced by xcb_ungrab_keyboard(), and xcb_ungrab_keyboard_checked().
#define XCB_UNGRAB_POINTER 27
Opcode for xcb_ungrab_pointer.
Referenced by xcb_ungrab_pointer(), and xcb_ungrab_pointer_checked().
#define XCB_UNGRAB_SERVER 37
Opcode for xcb_ungrab_server.
Referenced by xcb_ungrab_server(), and xcb_ungrab_server_checked().
#define XCB_UNINSTALL_COLORMAP 82
Opcode for xcb_uninstall_colormap.
Referenced by xcb_uninstall_colormap(), and xcb_uninstall_colormap_checked().
#define XCB_UNMAP_NOTIFY 18
Opcode for xcb_unmap_notify.
#define XCB_UNMAP_SUBWINDOWS 11
Opcode for xcb_unmap_subwindows.
Referenced by xcb_unmap_subwindows(), and xcb_unmap_subwindows_checked().
#define XCB_UNMAP_WINDOW 10
Opcode for xcb_unmap_window.
Referenced by xcb_unmap_window(), and xcb_unmap_window_checked().
#define XCB_VALUE 2
Opcode for xcb_value.
#define XCB_VISIBILITY_NOTIFY 15
Opcode for xcb_visibility_notify.
#define XCB_WARP_POINTER 41
Opcode for xcb_warp_pointer.
Referenced by xcb_warp_pointer(), and xcb_warp_pointer_checked().
#define XCB_WINDOW 3
Opcode for xcb_window.
Enumeration Type Documentation
enum xcb_allow_t
EnumeratorXCB_ALLOW_ASYNC_POINTER
For AsyncPointer, if the pointer is frozen by the client, pointer event processing continues normally. If the pointer is frozen twice by the client on behalf of two separate grabs, AsyncPointer thaws for both. AsyncPointer has no effect if the pointer is not frozen by the client, but the pointer need not be grabbed by the client.
TODO: rewrite this in more understandable terms.
XCB_ALLOW_SYNC_POINTER
For SyncPointer, if the pointer is frozen and actively grabbed by the client, pointer event processing continues normally until the next ButtonPress or ButtonRelease event is reported to the client, at which time the pointer again appears to freeze. However, if the reported event causes the pointer grab to be released, then the pointer does not freeze. SyncPointer has no effect if the pointer is not frozen by the client or if the pointer is not grabbed by the client.
XCB_ALLOW_REPLAY_POINTER
For ReplayPointer, if the pointer is actively grabbed by the client and is frozen as the result of an event having been sent to the client (either from the activation of a GrabButton or from a previous AllowEvents with mode SyncPointer but not from a GrabPointer), then the pointer grab is released and that event is completely reprocessed, this time ignoring any passive grabs at or above (towards the root) the grab-window of the grab just released. The request has no effect if the pointer is not grabbed by the client or if the pointer is not frozen as the result of an event.
XCB_ALLOW_ASYNC_KEYBOARD
For AsyncKeyboard, if the keyboard is frozen by the client, keyboard event processing continues normally. If the keyboard is frozen twice by the client on behalf of two separate grabs, AsyncKeyboard thaws for both. AsyncKeyboard has no effect if the keyboard is not frozen by the client, but the keyboard need not be grabbed by the client.
XCB_ALLOW_SYNC_KEYBOARD
For SyncKeyboard, if the keyboard is frozen and actively grabbed by the client, keyboard event processing continues normally until the next KeyPress or KeyRelease event is reported to the client, at which time the keyboard again appears to freeze. However, if the reported event causes the keyboard grab to be released, then the keyboard does not freeze. SyncKeyboard has no effect if the keyboard is not frozen by the client or if the keyboard is not grabbed by the client.
XCB_ALLOW_REPLAY_KEYBOARD
For ReplayKeyboard, if the keyboard is actively grabbed by the client and is frozen as the result of an event having been sent to the client (either from the activation of a GrabKey or from a previous AllowEvents with mode SyncKeyboard but not from a GrabKeyboard), then the keyboard grab is released and that event is completely reprocessed, this time ignoring any passive grabs at or above (towards the root) the grab-window of the grab just released. The request has no effect if the keyboard is not grabbed by the client or if the keyboard is not frozen as the result of an event.
XCB_ALLOW_ASYNC_BOTH
For AsyncBoth, if the pointer and the keyboard are frozen by the client, event processing for both devices continues normally. If a device is frozen twice by the client on behalf of two separate grabs, AsyncBoth thaws for both. AsyncBoth has no effect unless both pointer and keyboard are frozen by the client.
XCB_ALLOW_SYNC_BOTH
For SyncBoth, if both pointer and keyboard are frozen by the client, event processing (for both devices) continues normally until the next ButtonPress, ButtonRelease, KeyPress, or KeyRelease event is reported to the client for a grabbed device (button event for the pointer, key event for the keyboard), at which time the devices again appear to freeze. However, if the reported event causes the grab to be released, then the devices do not freeze (but if the other device is still grabbed, then a subsequent event for it will still cause both devices to freeze). SyncBoth has no effect unless both pointer and keyboard are frozen by the client. If the pointer or keyboard is frozen twice by the client on behalf of two separate grabs, SyncBoth thaws for both (but a subsequent freeze for SyncBoth will only freeze each device once).
enum xcb_button_index_t
EnumeratorXCB_BUTTON_INDEX_ANY
Any of the following (or none):
XCB_BUTTON_INDEX_1
The left mouse button.
XCB_BUTTON_INDEX_2
The right mouse button.
XCB_BUTTON_INDEX_3
The middle mouse button.
XCB_BUTTON_INDEX_4
Scroll wheel. TODO: direction?
XCB_BUTTON_INDEX_5
Scroll wheel. TODO: direction?
enum xcb_colormap_state_t
EnumeratorXCB_COLORMAP_STATE_UNINSTALLED
The colormap was uninstalled.
XCB_COLORMAP_STATE_INSTALLED
The colormap was installed.
enum xcb_coord_mode_t
EnumeratorXCB_COORD_MODE_ORIGIN
Treats all coordinates as relative to the origin.
XCB_COORD_MODE_PREVIOUS
Treats all coordinates after the first as relative to the previous coordinate.
enum xcb_cw_t
EnumeratorXCB_CW_BACK_PIXMAP
Overrides the default background-pixmap. The background pixmap and window must have the same root and same depth. Any size pixmap can be used, although some sizes may be faster than others.
If XCB_BACK_PIXMAP_NONE is specified, the window has no defined background. The server may fill the contents with the previous screen contents or with contents of its own choosing.
If XCB_BACK_PIXMAP_PARENT_RELATIVE is specified, the parent's background is used, but the window must have the same depth as the parent (or a Match error results). The parent's background is tracked, and the current version is used each time the window background is required.
XCB_CW_BACK_PIXEL
Overrides BackPixmap. A pixmap of undefined size filled with the specified background pixel is used for the background. Range-checking is not performed, the background pixel is truncated to the appropriate number of bits.
XCB_CW_BORDER_PIXMAP
Overrides the default border-pixmap. The border pixmap and window must have the same root and the same depth. Any size pixmap can be used, although some sizes may be faster than others.
The special value XCB_COPY_FROM_PARENT means the parent's border pixmap is copied (subsequent changes to the parent's border attribute do not affect the child), but the window must have the same depth as the parent.
XCB_CW_BORDER_PIXEL
Overrides BorderPixmap. A pixmap of undefined size filled with the specified border pixel is used for the border. Range checking is not performed on the border-pixel value, it is truncated to the appropriate number of bits.
XCB_CW_BIT_GRAVITY
Defines which region of the window should be retained if the window is resized.
XCB_CW_WIN_GRAVITY
Defines how the window should be repositioned if the parent is resized (see ConfigureWindow).
XCB_CW_BACKING_STORE
A backing-store of WhenMapped advises the server that maintaining contents of obscured regions when the window is mapped would be beneficial. A backing-store of Always advises the server that maintaining contents even when the window is unmapped would be beneficial. In this case, the server may generate an exposure event when the window is created. A value of NotUseful advises the server that maintaining contents is unnecessary, although a server may still choose to maintain contents while the window is mapped. Note that if the server maintains contents, then the server should maintain complete contents not just the region within the parent boundaries, even if the window is larger than its parent. While the server maintains contents, exposure events will not normally be generated, but the server may stop maintaining contents at any time.
XCB_CW_BACKING_PLANES
The backing-planes indicates (with bits set to 1) which bit planes of the window hold dynamic data that must be preserved in backing-stores and during save-unders.
XCB_CW_BACKING_PIXEL
The backing-pixel specifies what value to use in planes not covered by backing-planes. The server is free to save only the specified bit planes in the backing-store or save-under and regenerate the remaining planes with the specified pixel value. Any bits beyond the specified depth of the window in these values are simply ignored.
XCB_CW_OVERRIDE_REDIRECT
The override-redirect specifies whether map and configure requests on this window should override a SubstructureRedirect on the parent, typically to inform a window manager not to tamper with the window.
XCB_CW_SAVE_UNDER
If 1, the server is advised that when this window is mapped, saving the contents of windows it obscures would be beneficial.
XCB_CW_EVENT_MASK
The event-mask defines which events the client is interested in for this window (or for some event types, inferiors of the window).
XCB_CW_DONT_PROPAGATE
The do-not-propagate-mask defines which events should not be propagated to ancestor windows when no client has the event type selected in this window.
XCB_CW_COLORMAP
The colormap specifies the colormap that best reflects the true colors of the window. Servers capable of supporting multiple hardware colormaps may use this information, and window man- agers may use it for InstallColormap requests. The colormap must have the same visual type and root as the window (or a Match error results). If CopyFromParent is specified, the parent's colormap is copied (subsequent changes to the parent's colormap attribute do not affect the child). However, the window must have the same visual type as the parent (or a Match error results), and the parent must not have a colormap of None (or a Match error results). For an explanation of None, see FreeColormap request. The colormap is copied by sharing the colormap object between the child and the parent, not by making a complete copy of the colormap contents.
XCB_CW_CURSOR
If a cursor is specified, it will be used whenever the pointer is in the window. If None is speci- fied, the parent's cursor will be used when the pointer is in the window, and any change in the parent's cursor will cause an immediate change in the displayed cursor.
enum xcb_gc_t
EnumeratorXCB_GC_FUNCTION
TODO: Refer to GX
XCB_GC_PLANE_MASK
In graphics operations, given a source and destination pixel, the result is computed bitwise on corresponding bits of the pixels; that is, a Boolean operation is performed in each bit plane. The plane-mask restricts the operation to a subset of planes, so the result is: ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
XCB_GC_FOREGROUND
Foreground colorpixel.
XCB_GC_BACKGROUND
Background colorpixel.
XCB_GC_LINE_WIDTH
The line-width is measured in pixels and can be greater than or equal to one, a wide line, or the special value zero, a thin line.
XCB_GC_LINE_STYLE
The line-style defines which sections of a line are drawn: Solid The full path of the line is drawn. DoubleDash The full path of the line is drawn, but the even dashes are filled differently than the odd dashes (see fill-style), with Butt cap-style used where even and odd dashes meet. OnOffDash Only the even dashes are drawn, and cap-style applies to all internal ends of the individual dashes (except NotLast is treated as Butt).
XCB_GC_CAP_STYLE
The cap-style defines how the endpoints of a path are drawn: NotLast The result is equivalent to Butt, except that for a line-width of zero the final endpoint is not drawn. Butt The result is square at the endpoint (perpendicular to the slope of the line) with no projection beyond. Round The result is a circular arc with its diameter equal to the line-width, centered on the endpoint; it is equivalent to Butt for line-width zero. Projecting The result is square at the end, but the path continues beyond the endpoint for a distance equal to half the line-width; it is equivalent to Butt for line-width zero.
XCB_GC_JOIN_STYLE
The join-style defines how corners are drawn for wide lines: Miter The outer edges of the two lines extend to meet at an angle. However, if the angle is less than 11 degrees, a Bevel join-style is used instead. Round The result is a circular arc with a diameter equal to the line-width, centered on the joinpoint. Bevel The result is Butt endpoint styles, and then the triangular notch is filled.
XCB_GC_FILL_STYLE
The fill-style defines the contents of the source for line, text, and fill requests. For all text and fill requests (for example, PolyText8, PolyText16, PolyFillRectangle, FillPoly, and PolyFillArc) as well as for line requests with line-style Solid, (for example, PolyLine, PolySegment, PolyRectangle, PolyArc) and for the even dashes for line requests with line-style OnOffDash or DoubleDash: Solid Foreground Tiled Tile OpaqueStippled A tile with the same width and height as stipple but with background everywhere stipple has a zero and with foreground everywhere stipple has a one Stippled Foreground masked by stipple For the odd dashes for line requests with line-style DoubleDash: Solid Background Tiled Same as for even dashes OpaqueStippled Same as for even dashes Stippled Background masked by stipple
XCB_GC_TILE
The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all dimensions. When that plane is superimposed on the drawable for use in a graphics operation, the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the origin of whatever destination drawable is specified in a graphics request. The tile pixmap must have the same root and depth as the gcontext (or a Match error results). The stipple pixmap must have depth one and must have the same root as the gcontext (or a Match error results). For fill-style Stippled (but not fill-style OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an additional clip mask to be ANDed with the clip-mask. Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than others.
XCB_GC_STIPPLE
The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all dimensions. When that plane is superimposed on the drawable for use in a graphics operation, the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the origin of whatever destination drawable is specified in a graphics request. The tile pixmap must have the same root and depth as the gcontext (or a Match error results). The stipple pixmap must have depth one and must have the same root as the gcontext (or a Match error results). For fill-style Stippled (but not fill-style OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an additional clip mask to be ANDed with the clip-mask. Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than others.
XCB_GC_TILE_STIPPLE_ORIGIN_X
TODO
XCB_GC_TILE_STIPPLE_ORIGIN_Y
TODO
XCB_GC_FONT
Which font to use for the ImageText8 and ImageText16 requests.
XCB_GC_SUBWINDOW_MODE
For ClipByChildren, both source and destination windows are additionally clipped by all viewable InputOutput children. For IncludeInferiors, neither source nor destination window is clipped by inferiors. This will result in including subwindow contents in the source and drawing through subwindow boundaries of the destination. The use of IncludeInferiors with a source or destination window of one depth with mapped inferiors of differing depth is not illegal, but the semantics is undefined by the core protocol.
XCB_GC_GRAPHICS_EXPOSURES
Whether ExposureEvents should be generated (1) or not (0).
The default is 1.
XCB_GC_CLIP_ORIGIN_X
TODO
XCB_GC_CLIP_ORIGIN_Y
TODO
XCB_GC_CLIP_MASK
The clip-mask restricts writes to the destination drawable. Only pixels where the clip-mask has bits set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where the clip-mask has bits set to 0. The clip-mask affects all graphics requests, but it does not clip sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. If a pixmap is specified as the clip-mask, it must have depth 1 and have the same root as the gcontext (or a Match error results). If clip-mask is None, then pixels are always drawn, regardless of the clip origin. The clip-mask can also be set with the SetClipRectangles request.
XCB_GC_DASH_OFFSET
TODO
XCB_GC_DASH_LIST
TODO
XCB_GC_ARC_MODE
TODO
enum xcb_grab_mode_t
EnumeratorXCB_GRAB_MODE_SYNC
The state of the keyboard appears to freeze: No further keyboard events are generated by the server until the grabbing client issues a releasing AllowEvents request or until the keyboard grab is released.
XCB_GRAB_MODE_ASYNC
Keyboard event processing continues normally.
enum xcb_input_focus_t
EnumeratorXCB_INPUT_FOCUS_NONE
The focus reverts to XCB_NONE, so no window will have the input focus.
XCB_INPUT_FOCUS_POINTER_ROOT
The focus reverts to XCB_POINTER_ROOT respectively. When the focus reverts, FocusIn and FocusOut events are generated, but the last-focus-change time is not changed.
XCB_INPUT_FOCUS_PARENT
The focus reverts to the parent (or closest viewable ancestor) and the new revert_to value is XCB_INPUT_FOCUS_NONE.
XCB_INPUT_FOCUS_FOLLOW_KEYBOARD
NOT YET DOCUMENTED. Only relevant for the xinput extension.
enum xcb_place_t
EnumeratorXCB_PLACE_ON_TOP
The window is now on top of all siblings.
XCB_PLACE_ON_BOTTOM
The window is now below all siblings.
enum xcb_prop_mode_t
EnumeratorXCB_PROP_MODE_REPLACE
Discard the previous property value and store the new data.
XCB_PROP_MODE_PREPEND
Insert the new data before the beginning of existing data. The format must match existing property value. If the property is undefined, it is treated as defined with the correct type and format with zero-length data.
XCB_PROP_MODE_APPEND
Insert the new data after the beginning of existing data. The format must match existing property value. If the property is undefined, it is treated as defined with the correct type and format with zero-length data.
Function Documentation
xcb_alloc_color_cookie_t xcb_alloc_color
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint16_t
red,
uint16_t
green,
uint16_t
blue
)
Allocate a color.
Parameters
cThe connection
cmapTODO
redThe red value of your color.
greenThe green value of your color.
blueThe blue value of your color.
ReturnsA cookie
Allocates a read-only colormap entry corresponding to the closest RGB value supported by the hardware. If you are using TrueColor, you can take a shortcut and directly calculate the color pixel value to avoid the round trip. But, for example, on 16-bit color setups (VNC), you can easily get the closest supported RGB value to the RGB value you are specifying.
References XCB_ALLOC_COLOR.
xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells
(
xcb_connection_t *
c,
uint8_t
contiguous,
xcb_colormap_t
cmap,
uint16_t
colors,
uint16_t
planes
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_ALLOC_COLOR_CELLS.
xcb_alloc_color_cells_reply_t* xcb_alloc_color_cells_reply
(
xcb_connection_t *
c,
xcb_alloc_color_cells_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_alloc_color_cells_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells_unchecked
(
xcb_connection_t *
c,
uint8_t
contiguous,
xcb_colormap_t
cmap,
uint16_t
colors,
uint16_t
planes
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_ALLOC_COLOR_CELLS.
xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes
(
xcb_connection_t *
c,
uint8_t
contiguous,
xcb_colormap_t
cmap,
uint16_t
colors,
uint16_t
reds,
uint16_t
greens,
uint16_t
blues
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_ALLOC_COLOR_PLANES.
xcb_alloc_color_planes_reply_t* xcb_alloc_color_planes_reply
(
xcb_connection_t *
c,
xcb_alloc_color_planes_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_alloc_color_planes_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes_unchecked
(
xcb_connection_t *
c,
uint8_t
contiguous,
xcb_colormap_t
cmap,
uint16_t
colors,
uint16_t
reds,
uint16_t
greens,
uint16_t
blues
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_ALLOC_COLOR_PLANES.
xcb_alloc_color_reply_t* xcb_alloc_color_reply
(
xcb_connection_t *
c,
xcb_alloc_color_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_alloc_color_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_alloc_color_cookie_t xcb_alloc_color_unchecked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint16_t
red,
uint16_t
green,
uint16_t
blue
)
Allocate a color.
Parameters
cThe connection
cmapTODO
redThe red value of your color.
greenThe green value of your color.
blueThe blue value of your color.
ReturnsA cookie
Allocates a read-only colormap entry corresponding to the closest RGB value supported by the hardware. If you are using TrueColor, you can take a shortcut and directly calculate the color pixel value to avoid the round trip. But, for example, on 16-bit color setups (VNC), you can easily get the closest supported RGB value to the RGB value you are specifying.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_ALLOC_COLOR.
xcb_alloc_named_color_cookie_t xcb_alloc_named_color
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint16_t
name_len,
const char *
name
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_ALLOC_NAMED_COLOR.
xcb_alloc_named_color_reply_t* xcb_alloc_named_color_reply
(
xcb_connection_t *
c,
xcb_alloc_named_color_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_alloc_named_color_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_alloc_named_color_cookie_t xcb_alloc_named_color_unchecked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint16_t
name_len,
const char *
name
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_ALLOC_NAMED_COLOR.
xcb_void_cookie_t xcb_allow_events
(
xcb_connection_t *
c,
uint8_t
mode,
xcb_timestamp_t
time
)
release queued events
Parameters
cThe connection
modeA bitmask of xcb_allow_t values.
mode
timeTimestamp to avoid race conditions when running X over the network.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Releases queued events if the client has caused a device (pointer/keyboard) to freeze due to grabbing it actively. This request has no effect if time is earlier than the last-grab time of the most recent active grab for this client or if time is later than the current X server time.
References XCB_ALLOW_EVENTS.
xcb_void_cookie_t xcb_allow_events_checked
(
xcb_connection_t *
c,
uint8_t
mode,
xcb_timestamp_t
time
)
release queued events
Parameters
cThe connection
modeA bitmask of xcb_allow_t values.
mode
timeTimestamp to avoid race conditions when running X over the network.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Releases queued events if the client has caused a device (pointer/keyboard) to freeze due to grabbing it actively. This request has no effect if time is earlier than the last-grab time of the most recent active grab for this client or if time is later than the current X server time.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_ALLOW_EVENTS.
xcb_generic_iterator_t xcb_arc_end
(
xcb_arc_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_arc_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_arc_next
(
xcb_arc_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_arc_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_arc_t)
xcb_generic_iterator_t xcb_atom_end
(
xcb_atom_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_atom_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_atom_next
(
xcb_atom_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_atom_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_atom_t)
xcb_void_cookie_t xcb_bell
(
xcb_connection_t *
c,
int8_t
percent
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_BELL.
xcb_void_cookie_t xcb_bell_checked
(
xcb_connection_t *
c,
int8_t
percent
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_BELL.
xcb_generic_iterator_t xcb_bool32_end
(
xcb_bool32_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_bool32_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_bool32_next
(
xcb_bool32_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_bool32_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_bool32_t)
xcb_generic_iterator_t xcb_button_end
(
xcb_button_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_button_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_button_next
(
xcb_button_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_button_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_button_t)
xcb_void_cookie_t xcb_change_active_pointer_grab
(
xcb_connection_t *
c,
xcb_cursor_t
cursor,
xcb_timestamp_t
time,
uint16_t
event_mask
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CHANGE_ACTIVE_POINTER_GRAB.
xcb_void_cookie_t xcb_change_active_pointer_grab_checked
(
xcb_connection_t *
c,
xcb_cursor_t
cursor,
xcb_timestamp_t
time,
uint16_t
event_mask
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_ACTIVE_POINTER_GRAB.
xcb_void_cookie_t xcb_change_gc
(
xcb_connection_t *
c,
xcb_gcontext_t
gc,
uint32_t
value_mask,
const void *
value_list
)
change graphics context components
Parameters
cThe connection
gcThe graphics context to change.
value_maskA bitmask of xcb_gc_t values.
value_mask
value_listValues for each of the components specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the components specified by value_mask for the specified graphics context.
References XCB_CHANGE_GC.
xcb_void_cookie_t xcb_change_gc_aux
(
xcb_connection_t *
c,
xcb_gcontext_t
gc,
uint32_t
value_mask,
const xcb_change_gc_value_list_t *
value_list
)
change graphics context components
Parameters
cThe connection
gcThe graphics context to change.
value_maskA bitmask of xcb_gc_t values.
value_mask
value_listValues for each of the components specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the components specified by value_mask for the specified graphics context.
References XCB_CHANGE_GC.
xcb_void_cookie_t xcb_change_gc_aux_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
gc,
uint32_t
value_mask,
const xcb_change_gc_value_list_t *
value_list
)
change graphics context components
Parameters
cThe connection
gcThe graphics context to change.
value_maskA bitmask of xcb_gc_t values.
value_mask
value_listValues for each of the components specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the components specified by value_mask for the specified graphics context.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_GC.
xcb_void_cookie_t xcb_change_gc_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
gc,
uint32_t
value_mask,
const void *
value_list
)
change graphics context components
Parameters
cThe connection
gcThe graphics context to change.
value_maskA bitmask of xcb_gc_t values.
value_mask
value_listValues for each of the components specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the components specified by value_mask for the specified graphics context.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_GC.
xcb_void_cookie_t xcb_change_hosts
(
xcb_connection_t *
c,
uint8_t
mode,
uint8_t
family,
uint16_t
address_len,
const uint8_t *
address
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_CHANGE_HOSTS.
xcb_void_cookie_t xcb_change_hosts_checked
(
xcb_connection_t *
c,
uint8_t
mode,
uint8_t
family,
uint16_t
address_len,
const uint8_t *
address
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_HOSTS.
xcb_void_cookie_t xcb_change_keyboard_control
(
xcb_connection_t *
c,
uint32_t
value_mask,
const void *
value_list
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CHANGE_KEYBOARD_CONTROL.
xcb_void_cookie_t xcb_change_keyboard_control_aux
(
xcb_connection_t *
c,
uint32_t
value_mask,
const xcb_change_keyboard_control_value_list_t *
value_list
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CHANGE_KEYBOARD_CONTROL.
xcb_void_cookie_t xcb_change_keyboard_control_aux_checked
(
xcb_connection_t *
c,
uint32_t
value_mask,
const xcb_change_keyboard_control_value_list_t *
value_list
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_KEYBOARD_CONTROL.
xcb_void_cookie_t xcb_change_keyboard_control_checked
(
xcb_connection_t *
c,
uint32_t
value_mask,
const void *
value_list
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_KEYBOARD_CONTROL.
xcb_void_cookie_t xcb_change_keyboard_mapping
(
xcb_connection_t *
c,
uint8_t
keycode_count,
xcb_keycode_t
first_keycode,
uint8_t
keysyms_per_keycode,
const xcb_keysym_t *
keysyms
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_CHANGE_KEYBOARD_MAPPING.
xcb_void_cookie_t xcb_change_keyboard_mapping_checked
(
xcb_connection_t *
c,
uint8_t
keycode_count,
xcb_keycode_t
first_keycode,
uint8_t
keysyms_per_keycode,
const xcb_keysym_t *
keysyms
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_KEYBOARD_MAPPING.
xcb_void_cookie_t xcb_change_pointer_control
(
xcb_connection_t *
c,
int16_t
acceleration_numerator,
int16_t
acceleration_denominator,
int16_t
threshold,
uint8_t
do_acceleration,
uint8_t
do_threshold
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CHANGE_POINTER_CONTROL.
xcb_void_cookie_t xcb_change_pointer_control_checked
(
xcb_connection_t *
c,
int16_t
acceleration_numerator,
int16_t
acceleration_denominator,
int16_t
threshold,
uint8_t
do_acceleration,
uint8_t
do_threshold
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_POINTER_CONTROL.
xcb_void_cookie_t xcb_change_property
(
xcb_connection_t *
c,
uint8_t
mode,
xcb_window_t
window,
xcb_atom_t
property,
xcb_atom_t
type,
uint8_t
format,
uint32_t
data_len,
const void *
data
)
Changes a window property.
Parameters
cThe connection
modeA bitmask of xcb_prop_mode_t values.
mode
windowThe window whose property you want to change.
propertyThe property you want to change (an atom).
typeThe type of the property you want to change (an atom).
formatSpecifies whether the data should be viewed as a list of 8-bit, 16-bit or 32-bit quantities. Possible values are 8, 16 and 32. This information allows the X server to correctly perform byte-swap operations as necessary.
data_lenSpecifies the number of elements (see format).
dataThe property data.
ReturnsA cookie
Sets or updates a property on the specified window. Properties are for example the window title (WM_NAME) or its minimum size (WM_NORMAL_HINTS). Protocols such as EWMH also use properties - for example EWMH defines the window title, encoded as UTF-8 string, in the _NET_WM_NAME property.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_CHANGE_PROPERTY.
xcb_void_cookie_t xcb_change_property_checked
(
xcb_connection_t *
c,
uint8_t
mode,
xcb_window_t
window,
xcb_atom_t
property,
xcb_atom_t
type,
uint8_t
format,
uint32_t
data_len,
const void *
data
)
Changes a window property.
Parameters
cThe connection
modeA bitmask of xcb_prop_mode_t values.
mode
windowThe window whose property you want to change.
propertyThe property you want to change (an atom).
typeThe type of the property you want to change (an atom).
formatSpecifies whether the data should be viewed as a list of 8-bit, 16-bit or 32-bit quantities. Possible values are 8, 16 and 32. This information allows the X server to correctly perform byte-swap operations as necessary.
data_lenSpecifies the number of elements (see format).
dataThe property data.
ReturnsA cookie
Sets or updates a property on the specified window. Properties are for example the window title (WM_NAME) or its minimum size (WM_NORMAL_HINTS). Protocols such as EWMH also use properties - for example EWMH defines the window title, encoded as UTF-8 string, in the _NET_WM_NAME property.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_PROPERTY.
xcb_void_cookie_t xcb_change_save_set
(
xcb_connection_t *
c,
uint8_t
mode,
xcb_window_t
window
)
Changes a client's save set.
Parameters
cThe connection
modeA bitmask of #xcb_set_mode_t values.
modeInsert to add the specified window to the save set or Delete to delete it from the save set.
windowThe window to add or delete to/from your save set.
ReturnsA cookie
TODO: explain what the save set is for.
This function either adds or removes the specified window to the client's (your application's) save set.
References XCB_CHANGE_SAVE_SET.
xcb_void_cookie_t xcb_change_save_set_checked
(
xcb_connection_t *
c,
uint8_t
mode,
xcb_window_t
window
)
Changes a client's save set.
Parameters
cThe connection
modeA bitmask of #xcb_set_mode_t values.
modeInsert to add the specified window to the save set or Delete to delete it from the save set.
windowThe window to add or delete to/from your save set.
ReturnsA cookie
TODO: explain what the save set is for.
This function either adds or removes the specified window to the client's (your application's) save set.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_SAVE_SET.
xcb_void_cookie_t xcb_change_window_attributes
(
xcb_connection_t *
c,
xcb_window_t
window,
uint32_t
value_mask,
const void *
value_list
)
change window attributes
Parameters
cThe connection
windowThe window to change.
value_maskA bitmask of xcb_cw_t values.
value_mask
value_listValues for each of the attributes specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the attributes specified by value_mask for the specified window.
References XCB_CHANGE_WINDOW_ATTRIBUTES.
xcb_void_cookie_t xcb_change_window_attributes_aux
(
xcb_connection_t *
c,
xcb_window_t
window,
uint32_t
value_mask,
const xcb_change_window_attributes_value_list_t *
value_list
)
change window attributes
Parameters
cThe connection
windowThe window to change.
value_maskA bitmask of xcb_cw_t values.
value_mask
value_listValues for each of the attributes specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the attributes specified by value_mask for the specified window.
References XCB_CHANGE_WINDOW_ATTRIBUTES.
xcb_void_cookie_t xcb_change_window_attributes_aux_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
uint32_t
value_mask,
const xcb_change_window_attributes_value_list_t *
value_list
)
change window attributes
Parameters
cThe connection
windowThe window to change.
value_maskA bitmask of xcb_cw_t values.
value_mask
value_listValues for each of the attributes specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the attributes specified by value_mask for the specified window.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_WINDOW_ATTRIBUTES.
xcb_void_cookie_t xcb_change_window_attributes_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
uint32_t
value_mask,
const void *
value_list
)
change window attributes
Parameters
cThe connection
windowThe window to change.
value_maskA bitmask of xcb_cw_t values.
value_mask
value_listValues for each of the attributes specified in the bitmask value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Changes the attributes specified by value_mask for the specified window.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CHANGE_WINDOW_ATTRIBUTES.
xcb_generic_iterator_t xcb_char2b_end
(
xcb_char2b_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_char2b_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_char2b_next
(
xcb_char2b_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_char2b_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_char2b_t)
xcb_generic_iterator_t xcb_charinfo_end
(
xcb_charinfo_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_charinfo_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_charinfo_next
(
xcb_charinfo_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_charinfo_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_charinfo_t)
xcb_void_cookie_t xcb_circulate_window
(
xcb_connection_t *
c,
uint8_t
direction,
xcb_window_t
window
)
Change window stacking order.
Parameters
cThe connection
directionA bitmask of #xcb_circulate_t values.
direction
windowThe window to raise/lower (depending on direction).
ReturnsA cookie
If direction is XCB_CIRCULATE_RAISE_LOWEST, the lowest mapped child (if any) will be raised to the top of the stack.
If direction is XCB_CIRCULATE_LOWER_HIGHEST, the highest mapped child will be lowered to the bottom of the stack.
References XCB_CIRCULATE_WINDOW.
xcb_void_cookie_t xcb_circulate_window_checked
(
xcb_connection_t *
c,
uint8_t
direction,
xcb_window_t
window
)
Change window stacking order.
Parameters
cThe connection
directionA bitmask of #xcb_circulate_t values.
direction
windowThe window to raise/lower (depending on direction).
ReturnsA cookie
If direction is XCB_CIRCULATE_RAISE_LOWEST, the lowest mapped child (if any) will be raised to the top of the stack.
If direction is XCB_CIRCULATE_LOWER_HIGHEST, the highest mapped child will be lowered to the bottom of the stack.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CIRCULATE_WINDOW.
xcb_void_cookie_t xcb_clear_area
(
xcb_connection_t *
c,
uint8_t
exposures,
xcb_window_t
window,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CLEAR_AREA.
xcb_void_cookie_t xcb_clear_area_checked
(
xcb_connection_t *
c,
uint8_t
exposures,
xcb_window_t
window,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CLEAR_AREA.
xcb_generic_iterator_t xcb_client_message_data_end
(
xcb_client_message_data_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_client_message_data_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, XCB_CW_BACK_PIXEL, XCB_CW_BACK_PIXMAP, XCB_CW_BACKING_PIXEL, XCB_CW_BACKING_PLANES, XCB_CW_BACKING_STORE, XCB_CW_BIT_GRAVITY, XCB_CW_BORDER_PIXEL, XCB_CW_BORDER_PIXMAP, XCB_CW_COLORMAP, XCB_CW_CURSOR, XCB_CW_DONT_PROPAGATE, XCB_CW_EVENT_MASK, XCB_CW_OVERRIDE_REDIRECT, XCB_CW_SAVE_UNDER, and XCB_CW_WIN_GRAVITY.
void xcb_client_message_data_next
(
xcb_client_message_data_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_client_message_data_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_client_message_data_t)
xcb_void_cookie_t xcb_close_font
(
xcb_connection_t *
c,
xcb_font_t
font
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CLOSE_FONT.
xcb_void_cookie_t xcb_close_font_checked
(
xcb_connection_t *
c,
xcb_font_t
font
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CLOSE_FONT.
xcb_generic_iterator_t xcb_coloritem_end
(
xcb_coloritem_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_coloritem_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_coloritem_next
(
xcb_coloritem_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_coloritem_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_coloritem_t)
xcb_generic_iterator_t xcb_colormap_end
(
xcb_colormap_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_colormap_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_colormap_next
(
xcb_colormap_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_colormap_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_colormap_t)
xcb_void_cookie_t xcb_configure_window
(
xcb_connection_t *
c,
xcb_window_t
window,
uint16_t
value_mask,
const void *
value_list
)
Configures window attributes.
Parameters
cThe connection
windowThe window to configure.
value_maskBitmask of attributes to change.
value_listNew values, corresponding to the attributes in value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Configures a window's size, position, border width and stacking order.
References XCB_CONFIGURE_WINDOW.
xcb_void_cookie_t xcb_configure_window_aux
(
xcb_connection_t *
c,
xcb_window_t
window,
uint16_t
value_mask,
const xcb_configure_window_value_list_t *
value_list
)
Configures window attributes.
Parameters
cThe connection
windowThe window to configure.
value_maskBitmask of attributes to change.
value_listNew values, corresponding to the attributes in value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Configures a window's size, position, border width and stacking order.
References XCB_CONFIGURE_WINDOW.
xcb_void_cookie_t xcb_configure_window_aux_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
uint16_t
value_mask,
const xcb_configure_window_value_list_t *
value_list
)
Configures window attributes.
Parameters
cThe connection
windowThe window to configure.
value_maskBitmask of attributes to change.
value_listNew values, corresponding to the attributes in value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Configures a window's size, position, border width and stacking order.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CONFIGURE_WINDOW.
xcb_void_cookie_t xcb_configure_window_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
uint16_t
value_mask,
const void *
value_list
)
Configures window attributes.
Parameters
cThe connection
windowThe window to configure.
value_maskBitmask of attributes to change.
value_listNew values, corresponding to the attributes in value_mask. The order has to correspond to the order of possible value_mask bits. See the example.
ReturnsA cookie
Configures a window's size, position, border width and stacking order.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CONFIGURE_WINDOW.
xcb_void_cookie_t xcb_convert_selection
(
xcb_connection_t *
c,
xcb_window_t
requestor,
xcb_atom_t
selection,
xcb_atom_t
target,
xcb_atom_t
property,
xcb_timestamp_t
time
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CONVERT_SELECTION.
xcb_void_cookie_t xcb_convert_selection_checked
(
xcb_connection_t *
c,
xcb_window_t
requestor,
xcb_atom_t
selection,
xcb_atom_t
target,
xcb_atom_t
property,
xcb_timestamp_t
time
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CONVERT_SELECTION.
xcb_void_cookie_t xcb_copy_area
(
xcb_connection_t *
c,
xcb_drawable_t
src_drawable,
xcb_drawable_t
dst_drawable,
xcb_gcontext_t
gc,
int16_t
src_x,
int16_t
src_y,
int16_t
dst_x,
int16_t
dst_y,
uint16_t
width,
uint16_t
height
)
copy areas
Parameters
cThe connection
src_drawableThe source drawable (Window or Pixmap).
dst_drawableThe destination drawable (Window or Pixmap).
gcThe graphics context to use.
src_xThe source X coordinate.
src_yThe source Y coordinate.
dst_xThe destination X coordinate.
dst_yThe destination Y coordinate.
widthThe width of the area to copy (in pixels).
heightThe height of the area to copy (in pixels).
ReturnsA cookie
Copies the specified rectangle from src_drawable to dst_drawable.
References XCB_COPY_AREA.
xcb_void_cookie_t xcb_copy_area_checked
(
xcb_connection_t *
c,
xcb_drawable_t
src_drawable,
xcb_drawable_t
dst_drawable,
xcb_gcontext_t
gc,
int16_t
src_x,
int16_t
src_y,
int16_t
dst_x,
int16_t
dst_y,
uint16_t
width,
uint16_t
height
)
copy areas
Parameters
cThe connection
src_drawableThe source drawable (Window or Pixmap).
dst_drawableThe destination drawable (Window or Pixmap).
gcThe graphics context to use.
src_xThe source X coordinate.
src_yThe source Y coordinate.
dst_xThe destination X coordinate.
dst_yThe destination Y coordinate.
widthThe width of the area to copy (in pixels).
heightThe height of the area to copy (in pixels).
ReturnsA cookie
Copies the specified rectangle from src_drawable to dst_drawable.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_COPY_AREA.
xcb_void_cookie_t xcb_copy_colormap_and_free
(
xcb_connection_t *
c,
xcb_colormap_t
mid,
xcb_colormap_t
src_cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_COPY_COLORMAP_AND_FREE.
xcb_void_cookie_t xcb_copy_colormap_and_free_checked
(
xcb_connection_t *
c,
xcb_colormap_t
mid,
xcb_colormap_t
src_cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_COPY_COLORMAP_AND_FREE.
xcb_void_cookie_t xcb_copy_gc
(
xcb_connection_t *
c,
xcb_gcontext_t
src_gc,
xcb_gcontext_t
dst_gc,
uint32_t
value_mask
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_COPY_GC.
xcb_void_cookie_t xcb_copy_gc_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
src_gc,
xcb_gcontext_t
dst_gc,
uint32_t
value_mask
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_COPY_GC.
xcb_void_cookie_t xcb_copy_plane
(
xcb_connection_t *
c,
xcb_drawable_t
src_drawable,
xcb_drawable_t
dst_drawable,
xcb_gcontext_t
gc,
int16_t
src_x,
int16_t
src_y,
int16_t
dst_x,
int16_t
dst_y,
uint16_t
width,
uint16_t
height,
uint32_t
bit_plane
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_COPY_PLANE.
xcb_void_cookie_t xcb_copy_plane_checked
(
xcb_connection_t *
c,
xcb_drawable_t
src_drawable,
xcb_drawable_t
dst_drawable,
xcb_gcontext_t
gc,
int16_t
src_x,
int16_t
src_y,
int16_t
dst_x,
int16_t
dst_y,
uint16_t
width,
uint16_t
height,
uint32_t
bit_plane
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_COPY_PLANE.
xcb_void_cookie_t xcb_create_colormap
(
xcb_connection_t *
c,
uint8_t
alloc,
xcb_colormap_t
mid,
xcb_window_t
window,
xcb_visualid_t
visual
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CREATE_COLORMAP.
xcb_void_cookie_t xcb_create_colormap_checked
(
xcb_connection_t *
c,
uint8_t
alloc,
xcb_colormap_t
mid,
xcb_window_t
window,
xcb_visualid_t
visual
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_COLORMAP.
xcb_void_cookie_t xcb_create_cursor
(
xcb_connection_t *
c,
xcb_cursor_t
cid,
xcb_pixmap_t
source,
xcb_pixmap_t
mask,
uint16_t
fore_red,
uint16_t
fore_green,
uint16_t
fore_blue,
uint16_t
back_red,
uint16_t
back_green,
uint16_t
back_blue,
uint16_t
x,
uint16_t
y
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_CREATE_CURSOR.
xcb_void_cookie_t xcb_create_cursor_checked
(
xcb_connection_t *
c,
xcb_cursor_t
cid,
xcb_pixmap_t
source,
xcb_pixmap_t
mask,
uint16_t
fore_red,
uint16_t
fore_green,
uint16_t
fore_blue,
uint16_t
back_red,
uint16_t
back_green,
uint16_t
back_blue,
uint16_t
x,
uint16_t
y
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_CURSOR.
xcb_void_cookie_t xcb_create_gc
(
xcb_connection_t *
c,
xcb_gcontext_t
cid,
xcb_drawable_t
drawable,
uint32_t
value_mask,
const void *
value_list
)
Creates a graphics context.
Parameters
cThe connection
cidThe ID with which you will refer to the graphics context, created by xcb_generate_id.
drawableDrawable to get the root/depth from.
ReturnsA cookie
Creates a graphics context. The graphics context can be used with any drawable that has the same root and depth as the specified drawable.
References XCB_CREATE_GC.
xcb_void_cookie_t xcb_create_gc_aux
(
xcb_connection_t *
c,
xcb_gcontext_t
cid,
xcb_drawable_t
drawable,
uint32_t
value_mask,
const xcb_create_gc_value_list_t *
value_list
)
Creates a graphics context.
Parameters
cThe connection
cidThe ID with which you will refer to the graphics context, created by xcb_generate_id.
drawableDrawable to get the root/depth from.
ReturnsA cookie
Creates a graphics context. The graphics context can be used with any drawable that has the same root and depth as the specified drawable.
References XCB_CREATE_GC, XCB_GC_ARC_MODE, XCB_GC_BACKGROUND, XCB_GC_CAP_STYLE, XCB_GC_CLIP_MASK, XCB_GC_CLIP_ORIGIN_X, XCB_GC_CLIP_ORIGIN_Y, XCB_GC_DASH_LIST, XCB_GC_DASH_OFFSET, XCB_GC_FILL_STYLE, XCB_GC_FONT, XCB_GC_FOREGROUND, XCB_GC_FUNCTION, XCB_GC_GRAPHICS_EXPOSURES, XCB_GC_JOIN_STYLE, XCB_GC_LINE_STYLE, XCB_GC_LINE_WIDTH, XCB_GC_PLANE_MASK, XCB_GC_STIPPLE, XCB_GC_SUBWINDOW_MODE, XCB_GC_TILE, XCB_GC_TILE_STIPPLE_ORIGIN_X, and XCB_GC_TILE_STIPPLE_ORIGIN_Y.
xcb_void_cookie_t xcb_create_gc_aux_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
cid,
xcb_drawable_t
drawable,
uint32_t
value_mask,
const xcb_create_gc_value_list_t *
value_list
)
Creates a graphics context.
Parameters
cThe connection
cidThe ID with which you will refer to the graphics context, created by xcb_generate_id.
drawableDrawable to get the root/depth from.
ReturnsA cookie
Creates a graphics context. The graphics context can be used with any drawable that has the same root and depth as the specified drawable.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_GC.
xcb_void_cookie_t xcb_create_gc_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
cid,
xcb_drawable_t
drawable,
uint32_t
value_mask,
const void *
value_list
)
Creates a graphics context.
Parameters
cThe connection
cidThe ID with which you will refer to the graphics context, created by xcb_generate_id.
drawableDrawable to get the root/depth from.
ReturnsA cookie
Creates a graphics context. The graphics context can be used with any drawable that has the same root and depth as the specified drawable.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_GC.
xcb_void_cookie_t xcb_create_glyph_cursor
(
xcb_connection_t *
c,
xcb_cursor_t
cid,
xcb_font_t
source_font,
xcb_font_t
mask_font,
uint16_t
source_char,
uint16_t
mask_char,
uint16_t
fore_red,
uint16_t
fore_green,
uint16_t
fore_blue,
uint16_t
back_red,
uint16_t
back_green,
uint16_t
back_blue
)
create cursor
Parameters
cThe connection
cidThe ID with which you will refer to the cursor, created by xcb_generate_id.
source_fontIn which font to look for the cursor glyph.
mask_fontIn which font to look for the mask glyph.
source_charThe glyph of source_font to use.
mask_charThe glyph of mask_font to use as a mask: Pixels which are set to 1 define which source pixels are displayed. All pixels which are set to 0 are not displayed.
fore_redThe red value of the foreground color.
fore_greenThe green value of the foreground color.
fore_blueThe blue value of the foreground color.
back_redThe red value of the background color.
back_greenThe green value of the background color.
back_blueThe blue value of the background color.
ReturnsA cookie
Creates a cursor from a font glyph. X provides a set of standard cursor shapes in a special font named cursor. Applications are encouraged to use this interface for their cursors because the font can be customized for the individual display type.
All pixels which are set to 1 in the source will use the foreground color (as specified by fore_red, fore_green and fore_blue). All pixels set to 0 will use the background color (as specified by back_red, back_green and back_blue).
References XCB_CREATE_GLYPH_CURSOR.
xcb_void_cookie_t xcb_create_glyph_cursor_checked
(
xcb_connection_t *
c,
xcb_cursor_t
cid,
xcb_font_t
source_font,
xcb_font_t
mask_font,
uint16_t
source_char,
uint16_t
mask_char,
uint16_t
fore_red,
uint16_t
fore_green,
uint16_t
fore_blue,
uint16_t
back_red,
uint16_t
back_green,
uint16_t
back_blue
)
create cursor
Parameters
cThe connection
cidThe ID with which you will refer to the cursor, created by xcb_generate_id.
source_fontIn which font to look for the cursor glyph.
mask_fontIn which font to look for the mask glyph.
source_charThe glyph of source_font to use.
mask_charThe glyph of mask_font to use as a mask: Pixels which are set to 1 define which source pixels are displayed. All pixels which are set to 0 are not displayed.
fore_redThe red value of the foreground color.
fore_greenThe green value of the foreground color.
fore_blueThe blue value of the foreground color.
back_redThe red value of the background color.
back_greenThe green value of the background color.
back_blueThe blue value of the background color.
ReturnsA cookie
Creates a cursor from a font glyph. X provides a set of standard cursor shapes in a special font named cursor. Applications are encouraged to use this interface for their cursors because the font can be customized for the individual display type.
All pixels which are set to 1 in the source will use the foreground color (as specified by fore_red, fore_green and fore_blue). All pixels set to 0 will use the background color (as specified by back_red, back_green and back_blue).
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_GLYPH_CURSOR.
xcb_void_cookie_t xcb_create_pixmap
(
xcb_connection_t *
c,
uint8_t
depth,
xcb_pixmap_t
pid,
xcb_drawable_t
drawable,
uint16_t
width,
uint16_t
height
)
Creates a pixmap.
Parameters
cThe connection
depthTODO
pidThe ID with which you will refer to the new pixmap, created by xcb_generate_id.
drawableDrawable to get the screen from.
widthThe width of the new pixmap.
heightThe height of the new pixmap.
ReturnsA cookie
Creates a pixmap. The pixmap can only be used on the same screen as drawable is on and only with drawables of the same depth.
References XCB_CREATE_PIXMAP.
xcb_void_cookie_t xcb_create_pixmap_checked
(
xcb_connection_t *
c,
uint8_t
depth,
xcb_pixmap_t
pid,
xcb_drawable_t
drawable,
uint16_t
width,
uint16_t
height
)
Creates a pixmap.
Parameters
cThe connection
depthTODO
pidThe ID with which you will refer to the new pixmap, created by xcb_generate_id.
drawableDrawable to get the screen from.
widthThe width of the new pixmap.
heightThe height of the new pixmap.
ReturnsA cookie
Creates a pixmap. The pixmap can only be used on the same screen as drawable is on and only with drawables of the same depth.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_PIXMAP.
xcb_void_cookie_t xcb_create_window
(
xcb_connection_t *
c,
uint8_t
depth,
xcb_window_t
wid,
xcb_window_t
parent,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height,
uint16_t
border_width,
uint16_t
_class,
xcb_visualid_t
visual,
uint32_t
value_mask,
const void *
value_list
)
Creates a window.
Parameters
cThe connection
depthSpecifies the new window's depth (TODO: what unit?).
The special value XCB_COPY_FROM_PARENT means the depth is taken from the parent window.
widThe ID with which you will refer to the new window, created by xcb_generate_id.
parentThe parent window of the new window.
xThe X coordinate of the new window.
yThe Y coordinate of the new window.
widthThe width of the new window.
heightThe height of the new window.
border_widthTODO:
Must be zero if the class is InputOnly or a xcb_match_error_t occurs.
_classA bitmask of #xcb_window_class_t values.
_class
visualSpecifies the id for the new window's visual.
The special value XCB_COPY_FROM_PARENT means the visual is taken from the parent window.
value_maskA bitmask of xcb_cw_t values.
ReturnsA cookie
Creates an unmapped window as child of the specified parent window. A CreateNotify event will be generated. The new window is placed on top in the stacking order with respect to siblings.
The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside, upper-left corner.
The created window is not yet displayed (mapped), call xcb_map_window to display it.
The created window will initially use the same cursor as its parent.
References XCB_CREATE_WINDOW.
xcb_void_cookie_t xcb_create_window_aux
(
xcb_connection_t *
c,
uint8_t
depth,
xcb_window_t
wid,
xcb_window_t
parent,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height,
uint16_t
border_width,
uint16_t
_class,
xcb_visualid_t
visual,
uint32_t
value_mask,
const xcb_create_window_value_list_t *
value_list
)
Creates a window.
Parameters
cThe connection
depthSpecifies the new window's depth (TODO: what unit?).
The special value XCB_COPY_FROM_PARENT means the depth is taken from the parent window.
widThe ID with which you will refer to the new window, created by xcb_generate_id.
parentThe parent window of the new window.
xThe X coordinate of the new window.
yThe Y coordinate of the new window.
widthThe width of the new window.
heightThe height of the new window.
border_widthTODO:
Must be zero if the class is InputOnly or a xcb_match_error_t occurs.
_classA bitmask of #xcb_window_class_t values.
_class
visualSpecifies the id for the new window's visual.
The special value XCB_COPY_FROM_PARENT means the visual is taken from the parent window.
value_maskA bitmask of xcb_cw_t values.
ReturnsA cookie
Creates an unmapped window as child of the specified parent window. A CreateNotify event will be generated. The new window is placed on top in the stacking order with respect to siblings.
The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside, upper-left corner.
The created window is not yet displayed (mapped), call xcb_map_window to display it.
The created window will initially use the same cursor as its parent.
References XCB_CREATE_WINDOW, XCB_CW_BACK_PIXEL, XCB_CW_BACK_PIXMAP, XCB_CW_BACKING_PIXEL, XCB_CW_BACKING_PLANES, XCB_CW_BACKING_STORE, XCB_CW_BIT_GRAVITY, XCB_CW_BORDER_PIXEL, XCB_CW_BORDER_PIXMAP, XCB_CW_COLORMAP, XCB_CW_CURSOR, XCB_CW_DONT_PROPAGATE, XCB_CW_EVENT_MASK, XCB_CW_OVERRIDE_REDIRECT, XCB_CW_SAVE_UNDER, and XCB_CW_WIN_GRAVITY.
xcb_void_cookie_t xcb_create_window_aux_checked
(
xcb_connection_t *
c,
uint8_t
depth,
xcb_window_t
wid,
xcb_window_t
parent,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height,
uint16_t
border_width,
uint16_t
_class,
xcb_visualid_t
visual,
uint32_t
value_mask,
const xcb_create_window_value_list_t *
value_list
)
Creates a window.
Parameters
cThe connection
depthSpecifies the new window's depth (TODO: what unit?).
The special value XCB_COPY_FROM_PARENT means the depth is taken from the parent window.
widThe ID with which you will refer to the new window, created by xcb_generate_id.
parentThe parent window of the new window.
xThe X coordinate of the new window.
yThe Y coordinate of the new window.
widthThe width of the new window.
heightThe height of the new window.
border_widthTODO:
Must be zero if the class is InputOnly or a xcb_match_error_t occurs.
_classA bitmask of #xcb_window_class_t values.
_class
visualSpecifies the id for the new window's visual.
The special value XCB_COPY_FROM_PARENT means the visual is taken from the parent window.
value_maskA bitmask of xcb_cw_t values.
ReturnsA cookie
Creates an unmapped window as child of the specified parent window. A CreateNotify event will be generated. The new window is placed on top in the stacking order with respect to siblings.
The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside, upper-left corner.
The created window is not yet displayed (mapped), call xcb_map_window to display it.
The created window will initially use the same cursor as its parent.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_WINDOW.
xcb_void_cookie_t xcb_create_window_checked
(
xcb_connection_t *
c,
uint8_t
depth,
xcb_window_t
wid,
xcb_window_t
parent,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height,
uint16_t
border_width,
uint16_t
_class,
xcb_visualid_t
visual,
uint32_t
value_mask,
const void *
value_list
)
Creates a window.
Parameters
cThe connection
depthSpecifies the new window's depth (TODO: what unit?).
The special value XCB_COPY_FROM_PARENT means the depth is taken from the parent window.
widThe ID with which you will refer to the new window, created by xcb_generate_id.
parentThe parent window of the new window.
xThe X coordinate of the new window.
yThe Y coordinate of the new window.
widthThe width of the new window.
heightThe height of the new window.
border_widthTODO:
Must be zero if the class is InputOnly or a xcb_match_error_t occurs.
_classA bitmask of #xcb_window_class_t values.
_class
visualSpecifies the id for the new window's visual.
The special value XCB_COPY_FROM_PARENT means the visual is taken from the parent window.
value_maskA bitmask of xcb_cw_t values.
ReturnsA cookie
Creates an unmapped window as child of the specified parent window. A CreateNotify event will be generated. The new window is placed on top in the stacking order with respect to siblings.
The coordinate system has the X axis horizontal and the Y axis vertical with the origin [0, 0] at the upper-left corner. Coordinates are integral, in terms of pixels, and coincide with pixel centers. Each window and pixmap has its own coordinate system. For a window, the origin is inside the border at the inside, upper-left corner.
The created window is not yet displayed (mapped), call xcb_map_window to display it.
The created window will initially use the same cursor as its parent.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_CREATE_WINDOW.
xcb_generic_iterator_t xcb_cursor_end
(
xcb_cursor_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_cursor_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_cursor_next
(
xcb_cursor_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_cursor_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_cursor_t)
xcb_void_cookie_t xcb_delete_property
(
xcb_connection_t *
c,
xcb_window_t
window,
xcb_atom_t
property
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_DELETE_PROPERTY.
xcb_void_cookie_t xcb_delete_property_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
xcb_atom_t
property
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_DELETE_PROPERTY.
xcb_generic_iterator_t xcb_depth_end
(
xcb_depth_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_depth_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_depth_next().
void xcb_depth_next
(
xcb_depth_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_depth_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_depth_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_depth_end().
xcb_void_cookie_t xcb_destroy_subwindows
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_DESTROY_SUBWINDOWS.
xcb_void_cookie_t xcb_destroy_subwindows_checked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_DESTROY_SUBWINDOWS.
xcb_void_cookie_t xcb_destroy_window
(
xcb_connection_t *
c,
xcb_window_t
window
)
Destroys a window.
Parameters
cThe connection
windowThe window to destroy.
ReturnsA cookie
Destroys the specified window and all of its subwindows. A DestroyNotify event is generated for each destroyed window (a DestroyNotify event is first generated for any given window's inferiors). If the window was mapped, it will be automatically unmapped before destroying.
Calling DestroyWindow on the root window will do nothing.
References XCB_DESTROY_WINDOW.
xcb_void_cookie_t xcb_destroy_window_checked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Destroys a window.
Parameters
cThe connection
windowThe window to destroy.
ReturnsA cookie
Destroys the specified window and all of its subwindows. A DestroyNotify event is generated for each destroyed window (a DestroyNotify event is first generated for any given window's inferiors). If the window was mapped, it will be automatically unmapped before destroying.
Calling DestroyWindow on the root window will do nothing.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_DESTROY_WINDOW.
xcb_generic_iterator_t xcb_drawable_end
(
xcb_drawable_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_drawable_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_drawable_next
(
xcb_drawable_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_drawable_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_drawable_t)
xcb_void_cookie_t xcb_fill_poly
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint8_t
shape,
uint8_t
coordinate_mode,
uint32_t
points_len,
const xcb_point_t *
points
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_FILL_POLY.
xcb_void_cookie_t xcb_fill_poly_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint8_t
shape,
uint8_t
coordinate_mode,
uint32_t
points_len,
const xcb_point_t *
points
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FILL_POLY.
xcb_generic_iterator_t xcb_font_end
(
xcb_font_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_font_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_font_next
(
xcb_font_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_font_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_font_t)
xcb_generic_iterator_t xcb_fontable_end
(
xcb_fontable_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_fontable_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_fontable_next
(
xcb_fontable_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_fontable_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_fontable_t)
xcb_generic_iterator_t xcb_fontprop_end
(
xcb_fontprop_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_fontprop_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
Referenced by xcb_list_fonts_with_info_unchecked(), and xcb_query_font_unchecked().
void xcb_fontprop_next
(
xcb_fontprop_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_fontprop_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_fontprop_t)
xcb_void_cookie_t xcb_force_screen_saver
(
xcb_connection_t *
c,
uint8_t
mode
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_FORCE_SCREEN_SAVER.
xcb_void_cookie_t xcb_force_screen_saver_checked
(
xcb_connection_t *
c,
uint8_t
mode
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FORCE_SCREEN_SAVER.
xcb_generic_iterator_t xcb_format_end
(
xcb_format_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_format_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
Referenced by xcb_setup_authenticate_end().
void xcb_format_next
(
xcb_format_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_format_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_format_t)
xcb_void_cookie_t xcb_free_colormap
(
xcb_connection_t *
c,
xcb_colormap_t
cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_FREE_COLORMAP.
xcb_void_cookie_t xcb_free_colormap_checked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FREE_COLORMAP.
xcb_void_cookie_t xcb_free_colors
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint32_t
plane_mask,
uint32_t
pixels_len,
const uint32_t *
pixels
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_FREE_COLORS.
xcb_void_cookie_t xcb_free_colors_checked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint32_t
plane_mask,
uint32_t
pixels_len,
const uint32_t *
pixels
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FREE_COLORS.
xcb_void_cookie_t xcb_free_cursor
(
xcb_connection_t *
c,
xcb_cursor_t
cursor
)
Deletes a cursor.
Parameters
cThe connection
cursorThe cursor to destroy.
ReturnsA cookie
Deletes the association between the cursor resource ID and the specified cursor. The cursor is freed when no other resource references it.
References XCB_FREE_CURSOR.
xcb_void_cookie_t xcb_free_cursor_checked
(
xcb_connection_t *
c,
xcb_cursor_t
cursor
)
Deletes a cursor.
Parameters
cThe connection
cursorThe cursor to destroy.
ReturnsA cookie
Deletes the association between the cursor resource ID and the specified cursor. The cursor is freed when no other resource references it.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FREE_CURSOR.
xcb_void_cookie_t xcb_free_gc
(
xcb_connection_t *
c,
xcb_gcontext_t
gc
)
Destroys a graphics context.
Parameters
cThe connection
gcThe graphics context to destroy.
ReturnsA cookie
Destroys the specified gc and all associated storage.
References XCB_FREE_GC.
xcb_void_cookie_t xcb_free_gc_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
gc
)
Destroys a graphics context.
Parameters
cThe connection
gcThe graphics context to destroy.
ReturnsA cookie
Destroys the specified gc and all associated storage.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FREE_GC.
xcb_void_cookie_t xcb_free_pixmap
(
xcb_connection_t *
c,
xcb_pixmap_t
pixmap
)
Destroys a pixmap.
Parameters
cThe connection
pixmapThe pixmap to destroy.
ReturnsA cookie
Deletes the association between the pixmap ID and the pixmap. The pixmap storage will be freed when there are no more references to it.
References XCB_FREE_PIXMAP, XCB_GC_ARC_MODE, XCB_GC_BACKGROUND, XCB_GC_CAP_STYLE, XCB_GC_CLIP_MASK, XCB_GC_CLIP_ORIGIN_X, XCB_GC_CLIP_ORIGIN_Y, XCB_GC_DASH_LIST, XCB_GC_DASH_OFFSET, XCB_GC_FILL_STYLE, XCB_GC_FONT, XCB_GC_FOREGROUND, XCB_GC_FUNCTION, XCB_GC_GRAPHICS_EXPOSURES, XCB_GC_JOIN_STYLE, XCB_GC_LINE_STYLE, XCB_GC_LINE_WIDTH, XCB_GC_PLANE_MASK, XCB_GC_STIPPLE, XCB_GC_SUBWINDOW_MODE, XCB_GC_TILE, XCB_GC_TILE_STIPPLE_ORIGIN_X, and XCB_GC_TILE_STIPPLE_ORIGIN_Y.
xcb_void_cookie_t xcb_free_pixmap_checked
(
xcb_connection_t *
c,
xcb_pixmap_t
pixmap
)
Destroys a pixmap.
Parameters
cThe connection
pixmapThe pixmap to destroy.
ReturnsA cookie
Deletes the association between the pixmap ID and the pixmap. The pixmap storage will be freed when there are no more references to it.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_FREE_PIXMAP.
xcb_generic_iterator_t xcb_gcontext_end
(
xcb_gcontext_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_gcontext_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_gcontext_next
(
xcb_gcontext_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_gcontext_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_gcontext_t)
xcb_get_atom_name_cookie_t xcb_get_atom_name
(
xcb_connection_t *
c,
xcb_atom_t
atom
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_ATOM_NAME.
xcb_get_atom_name_reply_t* xcb_get_atom_name_reply
(
xcb_connection_t *
c,
xcb_get_atom_name_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_atom_name_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_atom_name_cookie_t xcb_get_atom_name_unchecked
(
xcb_connection_t *
c,
xcb_atom_t
atom
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_GET_ATOM_NAME.
xcb_get_font_path_cookie_t xcb_get_font_path
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_FONT_PATH.
xcb_get_font_path_reply_t* xcb_get_font_path_reply
(
xcb_connection_t *
c,
xcb_get_font_path_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_font_path_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_font_path_cookie_t xcb_get_font_path_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_FONT_PATH.
xcb_get_geometry_cookie_t xcb_get_geometry
(
xcb_connection_t *
c,
xcb_drawable_t
drawable
)
Get current window geometry.
Parameters
cThe connection
drawableThe drawable (Window or Pixmap) of which the geometry will be received.
ReturnsA cookie
Gets the current geometry of the specified drawable (either Window or Pixmap).
References XCB_GET_GEOMETRY.
xcb_get_geometry_reply_t* xcb_get_geometry_reply
(
xcb_connection_t *
c,
xcb_get_geometry_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_geometry_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_geometry_cookie_t xcb_get_geometry_unchecked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable
)
Get current window geometry.
Parameters
cThe connection
drawableThe drawable (Window or Pixmap) of which the geometry will be received.
ReturnsA cookie
Gets the current geometry of the specified drawable (either Window or Pixmap).
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_GEOMETRY.
xcb_get_image_cookie_t xcb_get_image
(
xcb_connection_t *
c,
uint8_t
format,
xcb_drawable_t
drawable,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height,
uint32_t
plane_mask
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_IMAGE.
xcb_get_image_reply_t* xcb_get_image_reply
(
xcb_connection_t *
c,
xcb_get_image_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_image_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_image_cookie_t xcb_get_image_unchecked
(
xcb_connection_t *
c,
uint8_t
format,
xcb_drawable_t
drawable,
int16_t
x,
int16_t
y,
uint16_t
width,
uint16_t
height,
uint32_t
plane_mask
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_GET_IMAGE.
xcb_get_input_focus_cookie_t xcb_get_input_focus
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_INPUT_FOCUS.
xcb_get_input_focus_reply_t* xcb_get_input_focus_reply
(
xcb_connection_t *
c,
xcb_get_input_focus_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_input_focus_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_input_focus_cookie_t xcb_get_input_focus_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_INPUT_FOCUS.
xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_KEYBOARD_CONTROL.
xcb_get_keyboard_control_reply_t* xcb_get_keyboard_control_reply
(
xcb_connection_t *
c,
xcb_get_keyboard_control_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_keyboard_control_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_KEYBOARD_CONTROL.
xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping
(
xcb_connection_t *
c,
xcb_keycode_t
first_keycode,
uint8_t
count
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_KEYBOARD_MAPPING.
xcb_get_keyboard_mapping_reply_t* xcb_get_keyboard_mapping_reply
(
xcb_connection_t *
c,
xcb_get_keyboard_mapping_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_keyboard_mapping_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping_unchecked
(
xcb_connection_t *
c,
xcb_keycode_t
first_keycode,
uint8_t
count
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_GET_KEYBOARD_MAPPING.
xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_MODIFIER_MAPPING.
xcb_get_modifier_mapping_reply_t* xcb_get_modifier_mapping_reply
(
xcb_connection_t *
c,
xcb_get_modifier_mapping_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_modifier_mapping_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_GET_MODIFIER_MAPPING.
xcb_get_motion_events_cookie_t xcb_get_motion_events
(
xcb_connection_t *
c,
xcb_window_t
window,
xcb_timestamp_t
start,
xcb_timestamp_t
stop
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_MOTION_EVENTS.
xcb_get_motion_events_reply_t* xcb_get_motion_events_reply
(
xcb_connection_t *
c,
xcb_get_motion_events_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_motion_events_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_motion_events_cookie_t xcb_get_motion_events_unchecked
(
xcb_connection_t *
c,
xcb_window_t
window,
xcb_timestamp_t
start,
xcb_timestamp_t
stop
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_MOTION_EVENTS.
xcb_get_pointer_control_cookie_t xcb_get_pointer_control
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_POINTER_CONTROL.
xcb_get_pointer_control_reply_t* xcb_get_pointer_control_reply
(
xcb_connection_t *
c,
xcb_get_pointer_control_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_pointer_control_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_pointer_control_cookie_t xcb_get_pointer_control_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_POINTER_CONTROL.
xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_POINTER_MAPPING.
xcb_get_pointer_mapping_reply_t* xcb_get_pointer_mapping_reply
(
xcb_connection_t *
c,
xcb_get_pointer_mapping_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_pointer_mapping_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_GET_POINTER_MAPPING.
xcb_get_property_cookie_t xcb_get_property
(
xcb_connection_t *
c,
uint8_t
_delete,
xcb_window_t
window,
xcb_atom_t
property,
xcb_atom_t
type,
uint32_t
long_offset,
uint32_t
long_length
)
Gets a window property.
Parameters
cThe connection
_deleteWhether the property should actually be deleted. For deleting a property, the specified type has to match the actual property type.
windowThe window whose property you want to get.
propertyThe property you want to get (an atom).
typeThe type of the property you want to get (an atom).
long_offsetSpecifies the offset (in 32-bit multiples) in the specified property where the data is to be retrieved.
long_lengthSpecifies how many 32-bit multiples of data should be retrieved (e.g. if you set long_length to 4, you will receive 16 bytes of data).
ReturnsA cookie
Gets the specified property from the specified window. Properties are for example the window title (WM_NAME) or its minimum size (WM_NORMAL_HINTS). Protocols such as EWMH also use properties - for example EWMH defines the window title, encoded as UTF-8 string, in the _NET_WM_NAME property.
TODO: talk about type
TODO: talk about delete
TODO: talk about the offset/length thing. what's a valid use case?
References XCB_GET_PROPERTY.
xcb_get_property_reply_t* xcb_get_property_reply
(
xcb_connection_t *
c,
xcb_get_property_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_property_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_property_cookie_t xcb_get_property_unchecked
(
xcb_connection_t *
c,
uint8_t
_delete,
xcb_window_t
window,
xcb_atom_t
property,
xcb_atom_t
type,
uint32_t
long_offset,
uint32_t
long_length
)
Gets a window property.
Parameters
cThe connection
_deleteWhether the property should actually be deleted. For deleting a property, the specified type has to match the actual property type.
windowThe window whose property you want to get.
propertyThe property you want to get (an atom).
typeThe type of the property you want to get (an atom).
long_offsetSpecifies the offset (in 32-bit multiples) in the specified property where the data is to be retrieved.
long_lengthSpecifies how many 32-bit multiples of data should be retrieved (e.g. if you set long_length to 4, you will receive 16 bytes of data).
ReturnsA cookie
Gets the specified property from the specified window. Properties are for example the window title (WM_NAME) or its minimum size (WM_NORMAL_HINTS). Protocols such as EWMH also use properties - for example EWMH defines the window title, encoded as UTF-8 string, in the _NET_WM_NAME property.
TODO: talk about type
TODO: talk about delete
TODO: talk about the offset/length thing. what's a valid use case?
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_GET_PROPERTY.
xcb_get_screen_saver_cookie_t xcb_get_screen_saver
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GET_SCREEN_SAVER.
xcb_get_screen_saver_reply_t* xcb_get_screen_saver_reply
(
xcb_connection_t *
c,
xcb_get_screen_saver_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_screen_saver_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_screen_saver_cookie_t xcb_get_screen_saver_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_SCREEN_SAVER.
xcb_get_selection_owner_cookie_t xcb_get_selection_owner
(
xcb_connection_t *
c,
xcb_atom_t
selection
)
Gets the owner of a selection.
Parameters
cThe connection
selectionThe selection.
ReturnsA cookie
Gets the owner of the specified selection.
TODO: briefly explain what a selection is.
References XCB_GET_SELECTION_OWNER.
xcb_get_selection_owner_reply_t* xcb_get_selection_owner_reply
(
xcb_connection_t *
c,
xcb_get_selection_owner_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_selection_owner_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_selection_owner_cookie_t xcb_get_selection_owner_unchecked
(
xcb_connection_t *
c,
xcb_atom_t
selection
)
Gets the owner of a selection.
Parameters
cThe connection
selectionThe selection.
ReturnsA cookie
Gets the owner of the specified selection.
TODO: briefly explain what a selection is.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_SELECTION_OWNER.
xcb_get_window_attributes_cookie_t xcb_get_window_attributes
(
xcb_connection_t *
c,
xcb_window_t
window
)
Gets window attributes.
Parameters
cThe connection
windowThe window to get the attributes from.
ReturnsA cookie
Gets the current attributes for the specified window.
References XCB_GET_WINDOW_ATTRIBUTES.
xcb_get_window_attributes_reply_t* xcb_get_window_attributes_reply
(
xcb_connection_t *
c,
xcb_get_window_attributes_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_get_window_attributes_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_get_window_attributes_cookie_t xcb_get_window_attributes_unchecked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Gets window attributes.
Parameters
cThe connection
windowThe window to get the attributes from.
ReturnsA cookie
Gets the current attributes for the specified window.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GET_WINDOW_ATTRIBUTES.
xcb_void_cookie_t xcb_grab_button
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
uint16_t
event_mask,
uint8_t
pointer_mode,
uint8_t
keyboard_mode,
xcb_window_t
confine_to,
xcb_cursor_t
cursor,
uint8_t
button,
uint16_t
modifiers
)
Grab pointer button(s)
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
event_maskSpecifies which pointer events are reported to the client.
TODO: which values?
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
confine_toSpecifies the window to confine the pointer in (the user will not be able to move the pointer out of that window).
The special value XCB_NONE means don't confine the pointer.
cursorSpecifies the cursor that should be displayed or XCB_NONE to not change the cursor.
buttonA bitmask of xcb_button_index_t values.
button
modifiersThe modifiers to grab.
Using the special value XCB_MOD_MASK_ANY means grab the pointer with all possible modifier combinations.
ReturnsA cookie
This request establishes a passive grab. The pointer is actively grabbed as described in GrabPointer, the last-pointer-grab time is set to the time at which the button was pressed (as transmitted in the ButtonPress event), and the ButtonPress event is reported if all of the following conditions are true:
The pointer is not grabbed and the specified button is logically pressed when the specified modifier keys are logically down, and no other buttons or modifier keys are logically down.
The grab-window contains the pointer.
The confine-to window (if any) is viewable.
A passive grab on the same button/key combination does not exist on any ancestor of grab-window.
The interpretation of the remaining arguments is the same as for GrabPointer. The active grab is terminated automatically when the logical state of the pointer has all buttons released, independent of the logical state of modifier keys. Note that the logical state of a device (as seen by means of the protocol) may lag the physical state if device event processing is frozen. This request overrides all previous passive grabs by the same client on the same button/key combinations on the same window. A modifier of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all specified modifiers have currently assigned keycodes. A button of AnyButton is equivalent to issuing the request for all possible buttons. Otherwise, it is not required that the button specified currently be assigned to a physical button.
An Access error is generated if some other client has already issued a GrabButton request with the same button/key combination on the same window. When using AnyModifier or AnyButton, the request fails completely (no grabs are established), and an Access error is generated if there is a conflicting grab for any combination. The request has no effect on an active grab.
References XCB_GRAB_BUTTON.
xcb_void_cookie_t xcb_grab_button_checked
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
uint16_t
event_mask,
uint8_t
pointer_mode,
uint8_t
keyboard_mode,
xcb_window_t
confine_to,
xcb_cursor_t
cursor,
uint8_t
button,
uint16_t
modifiers
)
Grab pointer button(s)
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
event_maskSpecifies which pointer events are reported to the client.
TODO: which values?
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
confine_toSpecifies the window to confine the pointer in (the user will not be able to move the pointer out of that window).
The special value XCB_NONE means don't confine the pointer.
cursorSpecifies the cursor that should be displayed or XCB_NONE to not change the cursor.
buttonA bitmask of xcb_button_index_t values.
button
modifiersThe modifiers to grab.
Using the special value XCB_MOD_MASK_ANY means grab the pointer with all possible modifier combinations.
ReturnsA cookie
This request establishes a passive grab. The pointer is actively grabbed as described in GrabPointer, the last-pointer-grab time is set to the time at which the button was pressed (as transmitted in the ButtonPress event), and the ButtonPress event is reported if all of the following conditions are true:
The pointer is not grabbed and the specified button is logically pressed when the specified modifier keys are logically down, and no other buttons or modifier keys are logically down.
The grab-window contains the pointer.
The confine-to window (if any) is viewable.
A passive grab on the same button/key combination does not exist on any ancestor of grab-window.
The interpretation of the remaining arguments is the same as for GrabPointer. The active grab is terminated automatically when the logical state of the pointer has all buttons released, independent of the logical state of modifier keys. Note that the logical state of a device (as seen by means of the protocol) may lag the physical state if device event processing is frozen. This request overrides all previous passive grabs by the same client on the same button/key combinations on the same window. A modifier of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all specified modifiers have currently assigned keycodes. A button of AnyButton is equivalent to issuing the request for all possible buttons. Otherwise, it is not required that the button specified currently be assigned to a physical button.
An Access error is generated if some other client has already issued a GrabButton request with the same button/key combination on the same window. When using AnyModifier or AnyButton, the request fails completely (no grabs are established), and an Access error is generated if there is a conflicting grab for any combination. The request has no effect on an active grab.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_GRAB_BUTTON.
xcb_void_cookie_t xcb_grab_key
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
uint16_t
modifiers,
xcb_keycode_t
key,
uint8_t
pointer_mode,
uint8_t
keyboard_mode
)
Grab keyboard key(s)
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
modifiersThe modifiers to grab.
Using the special value XCB_MOD_MASK_ANY means grab the pointer with all possible modifier combinations.
keyThe keycode of the key to grab.
The special value XCB_GRAB_ANY means grab any key.
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
ReturnsA cookie
Establishes a passive grab on the keyboard. In the future, the keyboard is actively grabbed (as for GrabKeyboard), the last-keyboard-grab time is set to the time at which the key was pressed (as transmitted in the KeyPress event), and the KeyPress event is reported if all of the following conditions are true:
The keyboard is not grabbed and the specified key (which can itself be a modifier key) is logically pressed when the specified modifier keys are logically down, and no other modifier keys are logically down.
Either the grab_window is an ancestor of (or is) the focus window, or the grab_window is a descendant of the focus window and contains the pointer.
A passive grab on the same key combination does not exist on any ancestor of grab_window.
The interpretation of the remaining arguments is as for XGrabKeyboard. The active grab is terminated automatically when the logical state of the keyboard has the specified key released (independent of the logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen.
A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified have currently assigned KeyCodes. A keycode argument of AnyKey is equivalent to issuing the request for all possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode and max_keycode in the connection setup, or a BadValue error results.
If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess error results. When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error results (no grabs are established) if there is a conflicting grab for any combination.
References XCB_GRAB_KEY.
xcb_void_cookie_t xcb_grab_key_checked
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
uint16_t
modifiers,
xcb_keycode_t
key,
uint8_t
pointer_mode,
uint8_t
keyboard_mode
)
Grab keyboard key(s)
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
modifiersThe modifiers to grab.
Using the special value XCB_MOD_MASK_ANY means grab the pointer with all possible modifier combinations.
keyThe keycode of the key to grab.
The special value XCB_GRAB_ANY means grab any key.
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
ReturnsA cookie
Establishes a passive grab on the keyboard. In the future, the keyboard is actively grabbed (as for GrabKeyboard), the last-keyboard-grab time is set to the time at which the key was pressed (as transmitted in the KeyPress event), and the KeyPress event is reported if all of the following conditions are true:
The keyboard is not grabbed and the specified key (which can itself be a modifier key) is logically pressed when the specified modifier keys are logically down, and no other modifier keys are logically down.
Either the grab_window is an ancestor of (or is) the focus window, or the grab_window is a descendant of the focus window and contains the pointer.
A passive grab on the same key combination does not exist on any ancestor of grab_window.
The interpretation of the remaining arguments is as for XGrabKeyboard. The active grab is terminated automatically when the logical state of the keyboard has the specified key released (independent of the logical state of the modifier keys), at which point a KeyRelease event is reported to the grabbing window.
Note that the logical state of a device (as seen by client applications) may lag the physical state if device event processing is frozen.
A modifiers argument of AnyModifier is equivalent to issuing the request for all possible modifier combinations (including the combination of no modifiers). It is not required that all modifiers specified have currently assigned KeyCodes. A keycode argument of AnyKey is equivalent to issuing the request for all possible KeyCodes. Otherwise, the specified keycode must be in the range specified by min_keycode and max_keycode in the connection setup, or a BadValue error results.
If some other client has issued a XGrabKey with the same key combination on the same window, a BadAccess error results. When using AnyModifier or AnyKey, the request fails completely, and a BadAccess error results (no grabs are established) if there is a conflicting grab for any combination.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_GRAB_KEY.
xcb_grab_keyboard_cookie_t xcb_grab_keyboard
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
xcb_timestamp_t
time,
uint8_t
pointer_mode,
uint8_t
keyboard_mode
)
Grab the keyboard.
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
timeTimestamp to avoid race conditions when running X over the network.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
ReturnsA cookie
Actively grabs control of the keyboard and generates FocusIn and FocusOut events. Further key events are reported only to the grabbing client.
Any active keyboard grab by this client is overridden. If the keyboard is actively grabbed by some other client, AlreadyGrabbed is returned. If grab_window is not viewable, GrabNotViewable is returned. If the keyboard is frozen by an active grab of another client, GrabFrozen is returned. If the specified time is earlier than the last-keyboard-grab time or later than the current X server time, GrabInvalidTime is returned. Otherwise, the last-keyboard-grab time is set to the specified time.
References XCB_GRAB_KEYBOARD.
xcb_grab_keyboard_reply_t* xcb_grab_keyboard_reply
(
xcb_connection_t *
c,
xcb_grab_keyboard_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_grab_keyboard_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_grab_keyboard_cookie_t xcb_grab_keyboard_unchecked
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
xcb_timestamp_t
time,
uint8_t
pointer_mode,
uint8_t
keyboard_mode
)
Grab the keyboard.
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
timeTimestamp to avoid race conditions when running X over the network.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
ReturnsA cookie
Actively grabs control of the keyboard and generates FocusIn and FocusOut events. Further key events are reported only to the grabbing client.
Any active keyboard grab by this client is overridden. If the keyboard is actively grabbed by some other client, AlreadyGrabbed is returned. If grab_window is not viewable, GrabNotViewable is returned. If the keyboard is frozen by an active grab of another client, GrabFrozen is returned. If the specified time is earlier than the last-keyboard-grab time or later than the current X server time, GrabInvalidTime is returned. Otherwise, the last-keyboard-grab time is set to the specified time.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GRAB_KEYBOARD.
xcb_grab_pointer_cookie_t xcb_grab_pointer
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
uint16_t
event_mask,
uint8_t
pointer_mode,
uint8_t
keyboard_mode,
xcb_window_t
confine_to,
xcb_cursor_t
cursor,
xcb_timestamp_t
time
)
Grab the pointer.
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
event_maskSpecifies which pointer events are reported to the client.
TODO: which values?
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
confine_toSpecifies the window to confine the pointer in (the user will not be able to move the pointer out of that window).
The special value XCB_NONE means don't confine the pointer.
cursorSpecifies the cursor that should be displayed or XCB_NONE to not change the cursor.
timeThe time argument allows you to avoid certain circumstances that come up if applications take a long time to respond or if there are long network delays. Consider a situation where you have two applications, both of which normally grab the pointer when clicked on. If both applications specify the timestamp from the event, the second application may wake up faster and successfully grab the pointer before the first application. The first application then will get an indication that the other application grabbed the pointer before its request was processed.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
References XCB_GRAB_POINTER.
xcb_grab_pointer_reply_t* xcb_grab_pointer_reply
(
xcb_connection_t *
c,
xcb_grab_pointer_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_grab_pointer_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_grab_pointer_cookie_t xcb_grab_pointer_unchecked
(
xcb_connection_t *
c,
uint8_t
owner_events,
xcb_window_t
grab_window,
uint16_t
event_mask,
uint8_t
pointer_mode,
uint8_t
keyboard_mode,
xcb_window_t
confine_to,
xcb_cursor_t
cursor,
xcb_timestamp_t
time
)
Grab the pointer.
Parameters
cThe connection
owner_eventsIf 1, the grab_window will still get the pointer events. If 0, events are not reported to the grab_window.
grab_windowSpecifies the window on which the pointer should be grabbed.
event_maskSpecifies which pointer events are reported to the client.
TODO: which values?
pointer_modeA bitmask of xcb_grab_mode_t values.
pointer_mode
keyboard_modeA bitmask of xcb_grab_mode_t values.
keyboard_mode
confine_toSpecifies the window to confine the pointer in (the user will not be able to move the pointer out of that window).
The special value XCB_NONE means don't confine the pointer.
cursorSpecifies the cursor that should be displayed or XCB_NONE to not change the cursor.
timeThe time argument allows you to avoid certain circumstances that come up if applications take a long time to respond or if there are long network delays. Consider a situation where you have two applications, both of which normally grab the pointer when clicked on. If both applications specify the timestamp from the event, the second application may wake up faster and successfully grab the pointer before the first application. The first application then will get an indication that the other application grabbed the pointer before its request was processed.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Actively grabs control of the pointer. Further pointer events are reported only to the grabbing client. Overrides any active pointer grab by this client.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_GRAB_POINTER.
xcb_void_cookie_t xcb_grab_server
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_GRAB_SERVER.
xcb_void_cookie_t xcb_grab_server_checked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_GRAB_SERVER.
xcb_generic_iterator_t xcb_host_end
(
xcb_host_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_host_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_host_next().
void xcb_host_next
(
xcb_host_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_host_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_host_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_host_end().
xcb_void_cookie_t xcb_image_text_16
(
xcb_connection_t *
c,
uint8_t
string_len,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
const xcb_char2b_t *
string
)
Draws text.
Parameters
cThe connection
string_lenThe length of the string in characters. Note that this parameter limited by 255 due to using 8 bits!
drawableThe drawable (Window or Pixmap) to draw text on.
gcThe graphics context to use.
The following graphics context components are used: plane-mask, foreground, background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
xThe x coordinate of the first character, relative to the origin of drawable.
yThe y coordinate of the first character, relative to the origin of drawable.
stringThe string to draw. Only the first 255 characters are relevant due to the data type of string_len. Every character uses 2 bytes (hence the 16 in this request's name).
ReturnsA cookie
Fills the destination rectangle with the background pixel from gc, then paints the text with the foreground pixel from gc. The upper-left corner of the filled rectangle is at [x, y - font-ascent]. The width is overall-width, the height is font-ascent + font-descent. The overall-width, font-ascent and font-descent are as returned by xcb_query_text_extents (TODO).
Note that using X core fonts is deprecated (but still supported) in favor of client-side rendering using Xft.
References XCB_IMAGE_TEXT_16.
xcb_void_cookie_t xcb_image_text_16_checked
(
xcb_connection_t *
c,
uint8_t
string_len,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
const xcb_char2b_t *
string
)
Draws text.
Parameters
cThe connection
string_lenThe length of the string in characters. Note that this parameter limited by 255 due to using 8 bits!
drawableThe drawable (Window or Pixmap) to draw text on.
gcThe graphics context to use.
The following graphics context components are used: plane-mask, foreground, background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
xThe x coordinate of the first character, relative to the origin of drawable.
yThe y coordinate of the first character, relative to the origin of drawable.
stringThe string to draw. Only the first 255 characters are relevant due to the data type of string_len. Every character uses 2 bytes (hence the 16 in this request's name).
ReturnsA cookie
Fills the destination rectangle with the background pixel from gc, then paints the text with the foreground pixel from gc. The upper-left corner of the filled rectangle is at [x, y - font-ascent]. The width is overall-width, the height is font-ascent + font-descent. The overall-width, font-ascent and font-descent are as returned by xcb_query_text_extents (TODO).
Note that using X core fonts is deprecated (but still supported) in favor of client-side rendering using Xft.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_IMAGE_TEXT_16.
xcb_void_cookie_t xcb_image_text_8
(
xcb_connection_t *
c,
uint8_t
string_len,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
const char *
string
)
Draws text.
Parameters
cThe connection
string_lenThe length of the string. Note that this parameter limited by 255 due to using 8 bits!
drawableThe drawable (Window or Pixmap) to draw text on.
gcThe graphics context to use.
The following graphics context components are used: plane-mask, foreground, background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
xThe x coordinate of the first character, relative to the origin of drawable.
yThe y coordinate of the first character, relative to the origin of drawable.
stringThe string to draw. Only the first 255 characters are relevant due to the data type of string_len.
ReturnsA cookie
Fills the destination rectangle with the background pixel from gc, then paints the text with the foreground pixel from gc. The upper-left corner of the filled rectangle is at [x, y - font-ascent]. The width is overall-width, the height is font-ascent + font-descent. The overall-width, font-ascent and font-descent are as returned by xcb_query_text_extents (TODO).
Note that using X core fonts is deprecated (but still supported) in favor of client-side rendering using Xft.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_IMAGE_TEXT_8.
xcb_void_cookie_t xcb_image_text_8_checked
(
xcb_connection_t *
c,
uint8_t
string_len,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
const char *
string
)
Draws text.
Parameters
cThe connection
string_lenThe length of the string. Note that this parameter limited by 255 due to using 8 bits!
drawableThe drawable (Window or Pixmap) to draw text on.
gcThe graphics context to use.
The following graphics context components are used: plane-mask, foreground, background, font, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
xThe x coordinate of the first character, relative to the origin of drawable.
yThe y coordinate of the first character, relative to the origin of drawable.
stringThe string to draw. Only the first 255 characters are relevant due to the data type of string_len.
ReturnsA cookie
Fills the destination rectangle with the background pixel from gc, then paints the text with the foreground pixel from gc. The upper-left corner of the filled rectangle is at [x, y - font-ascent]. The width is overall-width, the height is font-ascent + font-descent. The overall-width, font-ascent and font-descent are as returned by xcb_query_text_extents (TODO).
Note that using X core fonts is deprecated (but still supported) in favor of client-side rendering using Xft.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_IMAGE_TEXT_8.
xcb_void_cookie_t xcb_install_colormap
(
xcb_connection_t *
c,
xcb_colormap_t
cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_INSTALL_COLORMAP.
xcb_void_cookie_t xcb_install_colormap_checked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_INSTALL_COLORMAP.
xcb_intern_atom_cookie_t xcb_intern_atom
(
xcb_connection_t *
c,
uint8_t
only_if_exists,
uint16_t
name_len,
const char *
name
)
Get atom identifier by name.
Parameters
cThe connection
only_if_existsReturn a valid atom id only if the atom already exists.
name_lenThe length of the following name.
nameThe name of the atom.
ReturnsA cookie
Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified name. Atoms are used in protocols like EWMH, for example to store window titles (_NET_WM_NAME atom) as property of a window.
If only_if_exists is 0, the atom will be created if it does not already exist. If only_if_exists is 1, XCB_ATOM_NONE will be returned if the atom does not yet exist.
References XCB_INTERN_ATOM.
xcb_intern_atom_reply_t* xcb_intern_atom_reply
(
xcb_connection_t *
c,
xcb_intern_atom_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_intern_atom_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_intern_atom_cookie_t xcb_intern_atom_unchecked
(
xcb_connection_t *
c,
uint8_t
only_if_exists,
uint16_t
name_len,
const char *
name
)
Get atom identifier by name.
Parameters
cThe connection
only_if_existsReturn a valid atom id only if the atom already exists.
name_lenThe length of the following name.
nameThe name of the atom.
ReturnsA cookie
Retrieves the identifier (xcb_atom_t TODO) for the atom with the specified name. Atoms are used in protocols like EWMH, for example to store window titles (_NET_WM_NAME atom) as property of a window.
If only_if_exists is 0, the atom will be created if it does not already exist. If only_if_exists is 1, XCB_ATOM_NONE will be returned if the atom does not yet exist.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_INTERN_ATOM.
xcb_generic_iterator_t xcb_keycode32_end
(
xcb_keycode32_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_keycode32_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_keycode32_next
(
xcb_keycode32_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_keycode32_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_keycode32_t)
xcb_generic_iterator_t xcb_keycode_end
(
xcb_keycode_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_keycode_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_keycode_next
(
xcb_keycode_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_keycode_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_keycode_t)
xcb_generic_iterator_t xcb_keysym_end
(
xcb_keysym_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_keysym_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_keysym_next
(
xcb_keysym_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_keysym_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_keysym_t)
xcb_void_cookie_t xcb_kill_client
(
xcb_connection_t *
c,
uint32_t
resource
)
kills a client
Parameters
cThe connection
resourceAny resource belonging to the client (for example a Window), used to identify the client connection.
The special value of XCB_KILL_ALL_TEMPORARY, the resources of all clients that have terminated in RetainTemporary (TODO) are destroyed.
ReturnsA cookie
Forces a close down of the client that created the specified resource.
References XCB_KILL_CLIENT.
xcb_void_cookie_t xcb_kill_client_checked
(
xcb_connection_t *
c,
uint32_t
resource
)
kills a client
Parameters
cThe connection
resourceAny resource belonging to the client (for example a Window), used to identify the client connection.
The special value of XCB_KILL_ALL_TEMPORARY, the resources of all clients that have terminated in RetainTemporary (TODO) are destroyed.
ReturnsA cookie
Forces a close down of the client that created the specified resource.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_KILL_CLIENT.
xcb_list_extensions_cookie_t xcb_list_extensions
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_LIST_EXTENSIONS.
xcb_list_extensions_reply_t* xcb_list_extensions_reply
(
xcb_connection_t *
c,
xcb_list_extensions_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_list_extensions_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_list_extensions_cookie_t xcb_list_extensions_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_LIST_EXTENSIONS.
xcb_list_fonts_cookie_t xcb_list_fonts
(
xcb_connection_t *
c,
uint16_t
max_names,
uint16_t
pattern_len,
const char *
pattern
)
get matching font names
Parameters
cThe connection
max_namesThe maximum number of fonts to be returned.
pattern_lenThe length (in bytes) of pattern.
patternA font pattern, for example "-misc-fixed-*".
The asterisk (*) is a wildcard for any number of characters. The question mark (?) is a wildcard for a single character. Use of uppercase or lowercase does not matter.
ReturnsA cookie
Gets a list of available font names which match the given pattern.
References XCB_LIST_FONTS.
xcb_list_fonts_reply_t* xcb_list_fonts_reply
(
xcb_connection_t *
c,
xcb_list_fonts_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_list_fonts_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_list_fonts_cookie_t xcb_list_fonts_unchecked
(
xcb_connection_t *
c,
uint16_t
max_names,
uint16_t
pattern_len,
const char *
pattern
)
get matching font names
Parameters
cThe connection
max_namesThe maximum number of fonts to be returned.
pattern_lenThe length (in bytes) of pattern.
patternA font pattern, for example "-misc-fixed-*".
The asterisk (*) is a wildcard for any number of characters. The question mark (?) is a wildcard for a single character. Use of uppercase or lowercase does not matter.
ReturnsA cookie
Gets a list of available font names which match the given pattern.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_LIST_FONTS.
xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info
(
xcb_connection_t *
c,
uint16_t
max_names,
uint16_t
pattern_len,
const char *
pattern
)
get matching font names and information
Parameters
cThe connection
max_namesThe maximum number of fonts to be returned.
pattern_lenThe length (in bytes) of pattern.
patternA font pattern, for example "-misc-fixed-*".
The asterisk (*) is a wildcard for any number of characters. The question mark (?) is a wildcard for a single character. Use of uppercase or lowercase does not matter.
ReturnsA cookie
Gets a list of available font names which match the given pattern.
References XCB_LIST_FONTS_WITH_INFO.
xcb_list_fonts_with_info_reply_t* xcb_list_fonts_with_info_reply
(
xcb_connection_t *
c,
xcb_list_fonts_with_info_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_list_fonts_with_info_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info_unchecked
(
xcb_connection_t *
c,
uint16_t
max_names,
uint16_t
pattern_len,
const char *
pattern
)
get matching font names and information
Parameters
cThe connection
max_namesThe maximum number of fonts to be returned.
pattern_lenThe length (in bytes) of pattern.
patternA font pattern, for example "-misc-fixed-*".
The asterisk (*) is a wildcard for any number of characters. The question mark (?) is a wildcard for a single character. Use of uppercase or lowercase does not matter.
ReturnsA cookie
Gets a list of available font names which match the given pattern.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, xcb_fontprop_end(), and XCB_LIST_FONTS_WITH_INFO.
xcb_list_hosts_cookie_t xcb_list_hosts
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_LIST_HOSTS.
xcb_list_hosts_reply_t* xcb_list_hosts_reply
(
xcb_connection_t *
c,
xcb_list_hosts_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_list_hosts_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_list_hosts_cookie_t xcb_list_hosts_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_LIST_HOSTS.
xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_LIST_INSTALLED_COLORMAPS.
xcb_list_installed_colormaps_reply_t* xcb_list_installed_colormaps_reply
(
xcb_connection_t *
c,
xcb_list_installed_colormaps_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_list_installed_colormaps_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps_unchecked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_LIST_INSTALLED_COLORMAPS.
xcb_list_properties_cookie_t xcb_list_properties
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_LIST_PROPERTIES.
xcb_list_properties_reply_t* xcb_list_properties_reply
(
xcb_connection_t *
c,
xcb_list_properties_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_list_properties_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_list_properties_cookie_t xcb_list_properties_unchecked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_LIST_PROPERTIES.
xcb_lookup_color_cookie_t xcb_lookup_color
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint16_t
name_len,
const char *
name
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_LOOKUP_COLOR.
xcb_lookup_color_reply_t* xcb_lookup_color_reply
(
xcb_connection_t *
c,
xcb_lookup_color_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_lookup_color_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_lookup_color_cookie_t xcb_lookup_color_unchecked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint16_t
name_len,
const char *
name
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_LOOKUP_COLOR.
xcb_void_cookie_t xcb_map_subwindows
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_MAP_SUBWINDOWS.
xcb_void_cookie_t xcb_map_subwindows_checked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_MAP_SUBWINDOWS.
xcb_void_cookie_t xcb_map_window
(
xcb_connection_t *
c,
xcb_window_t
window
)
Makes a window visible.
Parameters
cThe connection
windowThe window to make visible.
ReturnsA cookie
Maps the specified window. This means making the window visible (as long as its parent is visible).
This MapWindow request will be translated to a MapRequest request if a window manager is running. The window manager then decides to either map the window or not. Set the override-redirect window attribute to true if you want to bypass this mechanism.
If the window manager decides to map the window (or if no window manager is running), a MapNotify event is generated.
If the window becomes viewable and no earlier contents for it are remembered, the X server tiles the window with its background. If the window's background is undefined, the existing screen contents are not altered, and the X server generates zero or more Expose events.
If the window type is InputOutput, an Expose event will be generated when the window becomes visible. The normal response to an Expose event should be to repaint the window.
References XCB_MAP_WINDOW.
xcb_void_cookie_t xcb_map_window_checked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Makes a window visible.
Parameters
cThe connection
windowThe window to make visible.
ReturnsA cookie
Maps the specified window. This means making the window visible (as long as its parent is visible).
This MapWindow request will be translated to a MapRequest request if a window manager is running. The window manager then decides to either map the window or not. Set the override-redirect window attribute to true if you want to bypass this mechanism.
If the window manager decides to map the window (or if no window manager is running), a MapNotify event is generated.
If the window becomes viewable and no earlier contents for it are remembered, the X server tiles the window with its background. If the window's background is undefined, the existing screen contents are not altered, and the X server generates zero or more Expose events.
If the window type is InputOutput, an Expose event will be generated when the window becomes visible. The normal response to an Expose event should be to repaint the window.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_MAP_WINDOW.
xcb_void_cookie_t xcb_no_operation
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_NO_OPERATION.
xcb_void_cookie_t xcb_no_operation_checked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_NO_OPERATION.
xcb_void_cookie_t xcb_open_font
(
xcb_connection_t *
c,
xcb_font_t
fid,
uint16_t
name_len,
const char *
name
)
opens a font
Parameters
cThe connection
fidThe ID with which you will refer to the font, created by xcb_generate_id.
name_lenLength (in bytes) of name.
nameA pattern describing an X core font.
ReturnsA cookie
Opens any X core font matching the given name (for example "-misc-fixed-*").
Note that X core fonts are deprecated (but still supported) in favor of client-side rendering using Xft.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_OPEN_FONT.
xcb_void_cookie_t xcb_open_font_checked
(
xcb_connection_t *
c,
xcb_font_t
fid,
uint16_t
name_len,
const char *
name
)
opens a font
Parameters
cThe connection
fidThe ID with which you will refer to the font, created by xcb_generate_id.
name_lenLength (in bytes) of name.
nameA pattern describing an X core font.
ReturnsA cookie
Opens any X core font matching the given name (for example "-misc-fixed-*").
Note that X core fonts are deprecated (but still supported) in favor of client-side rendering using Xft.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_OPEN_FONT.
xcb_generic_iterator_t xcb_pixmap_end
(
xcb_pixmap_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_pixmap_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_pixmap_next
(
xcb_pixmap_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_pixmap_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_pixmap_t)
xcb_generic_iterator_t xcb_point_end
(
xcb_point_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_point_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_point_next
(
xcb_point_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_point_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_point_t)
xcb_void_cookie_t xcb_poly_arc
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
arcs_len,
const xcb_arc_t *
arcs
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_POLY_ARC.
xcb_void_cookie_t xcb_poly_arc_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
arcs_len,
const xcb_arc_t *
arcs
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_ARC.
xcb_void_cookie_t xcb_poly_fill_arc
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
arcs_len,
const xcb_arc_t *
arcs
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_POLY_FILL_ARC.
xcb_void_cookie_t xcb_poly_fill_arc_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
arcs_len,
const xcb_arc_t *
arcs
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_FILL_ARC.
xcb_void_cookie_t xcb_poly_fill_rectangle
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
rectangles_len,
const xcb_rectangle_t *
rectangles
)
Fills rectangles.
Parameters
cThe connection
drawableThe drawable (Window or Pixmap) to draw on.
gcThe graphics context to use.
The following graphics context components are used: function, plane-mask, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
The following graphics context mode-dependent components are used: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin.
rectangles_lenThe number of xcb_rectangle_t structures in rectangles.
rectanglesThe rectangles to fill.
ReturnsA cookie
Fills the specified rectangle(s) in the order listed in the array. For any given rectangle, each pixel is not drawn more than once. If rectangles intersect, the intersecting pixels are drawn multiple times.
References XCB_POLY_FILL_RECTANGLE.
xcb_void_cookie_t xcb_poly_fill_rectangle_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
rectangles_len,
const xcb_rectangle_t *
rectangles
)
Fills rectangles.
Parameters
cThe connection
drawableThe drawable (Window or Pixmap) to draw on.
gcThe graphics context to use.
The following graphics context components are used: function, plane-mask, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
The following graphics context mode-dependent components are used: foreground, background, tile, stipple, tile-stipple-x-origin, and tile-stipple-y-origin.
rectangles_lenThe number of xcb_rectangle_t structures in rectangles.
rectanglesThe rectangles to fill.
ReturnsA cookie
Fills the specified rectangle(s) in the order listed in the array. For any given rectangle, each pixel is not drawn more than once. If rectangles intersect, the intersecting pixels are drawn multiple times.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_FILL_RECTANGLE.
xcb_void_cookie_t xcb_poly_line
(
xcb_connection_t *
c,
uint8_t
coordinate_mode,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
points_len,
const xcb_point_t *
points
)
draw lines
Parameters
cThe connection
coordinate_modeA bitmask of xcb_coord_mode_t values.
coordinate_mode
drawableThe drawable to draw the line(s) on.
gcThe graphics context to use.
points_lenThe number of xcb_point_t structures in points.
pointsAn array of points.
ReturnsA cookie
Draws points_len-1 lines between each pair of points (point[i], point[i+1]) in the points array. The lines are drawn in the order listed in the array. They join correctly at all intermediate points, and if the first and last points coincide, the first and last lines also join correctly. For any given line, a pixel is not drawn more than once. If thin (zero line-width) lines intersect, the intersecting pixels are drawn multiple times. If wide lines intersect, the intersecting pixels are drawn only once, as though the entire request were a single, filled shape.
References XCB_POLY_LINE.
xcb_void_cookie_t xcb_poly_line_checked
(
xcb_connection_t *
c,
uint8_t
coordinate_mode,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
points_len,
const xcb_point_t *
points
)
draw lines
Parameters
cThe connection
coordinate_modeA bitmask of xcb_coord_mode_t values.
coordinate_mode
drawableThe drawable to draw the line(s) on.
gcThe graphics context to use.
points_lenThe number of xcb_point_t structures in points.
pointsAn array of points.
ReturnsA cookie
Draws points_len-1 lines between each pair of points (point[i], point[i+1]) in the points array. The lines are drawn in the order listed in the array. They join correctly at all intermediate points, and if the first and last points coincide, the first and last lines also join correctly. For any given line, a pixel is not drawn more than once. If thin (zero line-width) lines intersect, the intersecting pixels are drawn multiple times. If wide lines intersect, the intersecting pixels are drawn only once, as though the entire request were a single, filled shape.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_LINE.
xcb_void_cookie_t xcb_poly_point
(
xcb_connection_t *
c,
uint8_t
coordinate_mode,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
points_len,
const xcb_point_t *
points
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_POLY_POINT.
xcb_void_cookie_t xcb_poly_point_checked
(
xcb_connection_t *
c,
uint8_t
coordinate_mode,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
points_len,
const xcb_point_t *
points
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_POINT.
xcb_void_cookie_t xcb_poly_rectangle
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
rectangles_len,
const xcb_rectangle_t *
rectangles
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_POLY_RECTANGLE.
xcb_void_cookie_t xcb_poly_rectangle_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
rectangles_len,
const xcb_rectangle_t *
rectangles
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_RECTANGLE.
xcb_void_cookie_t xcb_poly_segment
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
segments_len,
const xcb_segment_t *
segments
)
draw lines
Parameters
cThe connection
drawableA drawable (Window or Pixmap) to draw on.
gcThe graphics context to use.
TODO: document which attributes of a gc are used
segments_lenThe number of xcb_segment_t structures in segments.
segmentsAn array of xcb_segment_t structures.
ReturnsA cookie
Draws multiple, unconnected lines. For each segment, a line is drawn between (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of xcb_segment_t structures and does not perform joining at coincident endpoints. For any given line, a pixel is not drawn more than once. If lines intersect, the intersecting pixels are drawn multiple times.
TODO: include the xcb_segment_t data structure
TODO: an example
References XCB_POLY_SEGMENT.
xcb_void_cookie_t xcb_poly_segment_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint32_t
segments_len,
const xcb_segment_t *
segments
)
draw lines
Parameters
cThe connection
drawableA drawable (Window or Pixmap) to draw on.
gcThe graphics context to use.
TODO: document which attributes of a gc are used
segments_lenThe number of xcb_segment_t structures in segments.
segmentsAn array of xcb_segment_t structures.
ReturnsA cookie
Draws multiple, unconnected lines. For each segment, a line is drawn between (x1, y1) and (x2, y2). The lines are drawn in the order listed in the array of xcb_segment_t structures and does not perform joining at coincident endpoints. For any given line, a pixel is not drawn more than once. If lines intersect, the intersecting pixels are drawn multiple times.
TODO: include the xcb_segment_t data structure
TODO: an example
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_SEGMENT.
xcb_void_cookie_t xcb_poly_text_16
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
uint32_t
items_len,
const uint8_t *
items
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_POLY_TEXT_16.
xcb_void_cookie_t xcb_poly_text_16_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
uint32_t
items_len,
const uint8_t *
items
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_TEXT_16.
xcb_void_cookie_t xcb_poly_text_8
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
uint32_t
items_len,
const uint8_t *
items
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_POLY_TEXT_8.
xcb_void_cookie_t xcb_poly_text_8_checked
(
xcb_connection_t *
c,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
int16_t
x,
int16_t
y,
uint32_t
items_len,
const uint8_t *
items
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_POLY_TEXT_8.
xcb_void_cookie_t xcb_put_image
(
xcb_connection_t *
c,
uint8_t
format,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint16_t
width,
uint16_t
height,
int16_t
dst_x,
int16_t
dst_y,
uint8_t
left_pad,
uint8_t
depth,
uint32_t
data_len,
const uint8_t *
data
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_PUT_IMAGE.
xcb_void_cookie_t xcb_put_image_checked
(
xcb_connection_t *
c,
uint8_t
format,
xcb_drawable_t
drawable,
xcb_gcontext_t
gc,
uint16_t
width,
uint16_t
height,
int16_t
dst_x,
int16_t
dst_y,
uint8_t
left_pad,
uint8_t
depth,
uint32_t
data_len,
const uint8_t *
data
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_PUT_IMAGE.
xcb_query_best_size_cookie_t xcb_query_best_size
(
xcb_connection_t *
c,
uint8_t
_class,
xcb_drawable_t
drawable,
uint16_t
width,
uint16_t
height
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_QUERY_BEST_SIZE.
xcb_query_best_size_reply_t* xcb_query_best_size_reply
(
xcb_connection_t *
c,
xcb_query_best_size_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_best_size_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_query_best_size_cookie_t xcb_query_best_size_unchecked
(
xcb_connection_t *
c,
uint8_t
_class,
xcb_drawable_t
drawable,
uint16_t
width,
uint16_t
height
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_QUERY_BEST_SIZE.
xcb_query_colors_cookie_t xcb_query_colors
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint32_t
pixels_len,
const uint32_t *
pixels
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_QUERY_COLORS.
xcb_query_colors_reply_t* xcb_query_colors_reply
(
xcb_connection_t *
c,
xcb_query_colors_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_colors_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_query_colors_cookie_t xcb_query_colors_unchecked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint32_t
pixels_len,
const uint32_t *
pixels
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_QUERY_COLORS.
xcb_query_extension_cookie_t xcb_query_extension
(
xcb_connection_t *
c,
uint16_t
name_len,
const char *
name
)
check if extension is present
Parameters
cThe connection
name_lenThe length of name in bytes.
nameThe name of the extension to query, for example "RANDR". This is case sensitive!
ReturnsA cookie
Determines if the specified extension is present on this X11 server.
Every extension has a unique major_opcode to identify requests, the minor opcodes and request formats are extension-specific. If the extension provides events and errors, the first_event and first_error fields in the reply are set accordingly.
There should rarely be a need to use this request directly, XCB provides the xcb_get_extension_data function instead.
References XCB_QUERY_EXTENSION.
xcb_query_extension_reply_t* xcb_query_extension_reply
(
xcb_connection_t *
c,
xcb_query_extension_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_extension_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
Referenced by xcb_get_extension_data().
xcb_query_extension_cookie_t xcb_query_extension_unchecked
(
xcb_connection_t *
c,
uint16_t
name_len,
const char *
name
)
check if extension is present
Parameters
cThe connection
name_lenThe length of name in bytes.
nameThe name of the extension to query, for example "RANDR". This is case sensitive!
ReturnsA cookie
Determines if the specified extension is present on this X11 server.
Every extension has a unique major_opcode to identify requests, the minor opcodes and request formats are extension-specific. If the extension provides events and errors, the first_event and first_error fields in the reply are set accordingly.
There should rarely be a need to use this request directly, XCB provides the xcb_get_extension_data function instead.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_QUERY_EXTENSION.
xcb_query_font_cookie_t xcb_query_font
(
xcb_connection_t *
c,
xcb_fontable_t
font
)
query font metrics
Parameters
cThe connection
fontThe fontable (Font or Graphics Context) to query.
ReturnsA cookie
Queries information associated with the font.
References XCB_QUERY_FONT.
xcb_query_font_reply_t* xcb_query_font_reply
(
xcb_connection_t *
c,
xcb_query_font_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_font_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_query_font_cookie_t xcb_query_font_unchecked
(
xcb_connection_t *
c,
xcb_fontable_t
font
)
query font metrics
Parameters
cThe connection
fontThe fontable (Font or Graphics Context) to query.
ReturnsA cookie
Queries information associated with the font.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_fontprop_end(), and XCB_QUERY_FONT.
xcb_query_keymap_cookie_t xcb_query_keymap
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_QUERY_KEYMAP.
xcb_query_keymap_reply_t* xcb_query_keymap_reply
(
xcb_connection_t *
c,
xcb_query_keymap_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_keymap_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_query_keymap_cookie_t xcb_query_keymap_unchecked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_QUERY_KEYMAP.
xcb_query_pointer_cookie_t xcb_query_pointer
(
xcb_connection_t *
c,
xcb_window_t
window
)
get pointer coordinates
Parameters
cThe connection
windowA window to check if the pointer is on the same screen as window (see the same_screen field in the reply).
ReturnsA cookie
Gets the root window the pointer is logically on and the pointer coordinates relative to the root window's origin.
References XCB_QUERY_POINTER.
xcb_query_pointer_reply_t* xcb_query_pointer_reply
(
xcb_connection_t *
c,
xcb_query_pointer_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_pointer_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_query_pointer_cookie_t xcb_query_pointer_unchecked
(
xcb_connection_t *
c,
xcb_window_t
window
)
get pointer coordinates
Parameters
cThe connection
windowA window to check if the pointer is on the same screen as window (see the same_screen field in the reply).
ReturnsA cookie
Gets the root window the pointer is logically on and the pointer coordinates relative to the root window's origin.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_QUERY_POINTER.
xcb_query_text_extents_cookie_t xcb_query_text_extents
(
xcb_connection_t *
c,
xcb_fontable_t
font,
uint32_t
string_len,
const xcb_char2b_t *
string
)
get text extents
Parameters
cThe connection
fontThe font to calculate text extents in. You can also pass a graphics context.
string_lenThe number of characters in string.
stringThe text to get text extents for.
ReturnsA cookie
Query text extents from the X11 server. This request returns the bounding box of the specified 16-bit character string in the specified font or the font contained in the specified graphics context.
font_ascent is set to the maximum of the ascent metrics of all characters in the string. font_descent is set to the maximum of the descent metrics. overall_width is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R.
For fonts defined with linear indexing rather than 2-byte matrix indexing, each xcb_char2b_t structure is interpreted as a 16-bit number with byte1 as the most significant byte. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics.
Characters with all zero metrics are ignored. If the font has no defined default_char, the undefined characters in the string are also ignored.
References XCB_QUERY_TEXT_EXTENTS.
xcb_query_text_extents_reply_t* xcb_query_text_extents_reply
(
xcb_connection_t *
c,
xcb_query_text_extents_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_text_extents_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
xcb_query_text_extents_cookie_t xcb_query_text_extents_unchecked
(
xcb_connection_t *
c,
xcb_fontable_t
font,
uint32_t
string_len,
const xcb_char2b_t *
string
)
get text extents
Parameters
cThe connection
fontThe font to calculate text extents in. You can also pass a graphics context.
string_lenThe number of characters in string.
stringThe text to get text extents for.
ReturnsA cookie
Query text extents from the X11 server. This request returns the bounding box of the specified 16-bit character string in the specified font or the font contained in the specified graphics context.
font_ascent is set to the maximum of the ascent metrics of all characters in the string. font_descent is set to the maximum of the descent metrics. overall_width is set to the sum of the character-width metrics of all characters in the string. For each character in the string, let W be the sum of the character-width metrics of all characters preceding it in the string. Let L be the left-side-bearing metric of the character plus W. Let R be the right-side-bearing metric of the character plus W. The lbearing member is set to the minimum L of all characters in the string. The rbearing member is set to the maximum R.
For fonts defined with linear indexing rather than 2-byte matrix indexing, each xcb_char2b_t structure is interpreted as a 16-bit number with byte1 as the most significant byte. If the font has no defined default character, undefined characters in the string are taken to have all zero metrics.
Characters with all zero metrics are ignored. If the font has no defined default_char, the undefined characters in the string are also ignored.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_QUERY_TEXT_EXTENTS.
xcb_query_tree_cookie_t xcb_query_tree
(
xcb_connection_t *
c,
xcb_window_t
window
)
query the window tree
Parameters
cThe connection
windowThe window to query.
ReturnsA cookie
Gets the root window ID, parent window ID and list of children windows for the specified window. The children are listed in bottom-to-top stacking order.
References XCB_QUERY_TREE.
xcb_query_tree_reply_t* xcb_query_tree_reply
(
xcb_connection_t *
c,
xcb_query_tree_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_query_tree_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_query_tree_cookie_t xcb_query_tree_unchecked
(
xcb_connection_t *
c,
xcb_window_t
window
)
query the window tree
Parameters
cThe connection
windowThe window to query.
ReturnsA cookie
Gets the root window ID, parent window ID and list of children windows for the specified window. The children are listed in bottom-to-top stacking order.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_QUERY_TREE.
xcb_void_cookie_t xcb_recolor_cursor
(
xcb_connection_t *
c,
xcb_cursor_t
cursor,
uint16_t
fore_red,
uint16_t
fore_green,
uint16_t
fore_blue,
uint16_t
back_red,
uint16_t
back_green,
uint16_t
back_blue
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_RECOLOR_CURSOR.
xcb_void_cookie_t xcb_recolor_cursor_checked
(
xcb_connection_t *
c,
xcb_cursor_t
cursor,
uint16_t
fore_red,
uint16_t
fore_green,
uint16_t
fore_blue,
uint16_t
back_red,
uint16_t
back_green,
uint16_t
back_blue
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_RECOLOR_CURSOR.
xcb_generic_iterator_t xcb_rectangle_end
(
xcb_rectangle_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_rectangle_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_rectangle_next
(
xcb_rectangle_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_rectangle_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_rectangle_t)
xcb_void_cookie_t xcb_reparent_window
(
xcb_connection_t *
c,
xcb_window_t
window,
xcb_window_t
parent,
int16_t
x,
int16_t
y
)
Reparents a window.
Parameters
cThe connection
windowThe window to reparent.
parentThe new parent of the window.
xThe X position of the window within its new parent.
yThe Y position of the window within its new parent.
ReturnsA cookie
Makes the specified window a child of the specified parent window. If the window is mapped, it will automatically be unmapped before reparenting and re-mapped after reparenting. The window is placed in the stacking order on top with respect to sibling windows.
After reparenting, a ReparentNotify event is generated.
References XCB_REPARENT_WINDOW.
xcb_void_cookie_t xcb_reparent_window_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
xcb_window_t
parent,
int16_t
x,
int16_t
y
)
Reparents a window.
Parameters
cThe connection
windowThe window to reparent.
parentThe new parent of the window.
xThe X position of the window within its new parent.
yThe Y position of the window within its new parent.
ReturnsA cookie
Makes the specified window a child of the specified parent window. If the window is mapped, it will automatically be unmapped before reparenting and re-mapped after reparenting. The window is placed in the stacking order on top with respect to sibling windows.
After reparenting, a ReparentNotify event is generated.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_REPARENT_WINDOW.
xcb_generic_iterator_t xcb_rgb_end
(
xcb_rgb_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_rgb_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_rgb_next
(
xcb_rgb_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_rgb_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_rgb_t)
xcb_void_cookie_t xcb_rotate_properties
(
xcb_connection_t *
c,
xcb_window_t
window,
uint16_t
atoms_len,
int16_t
delta,
const xcb_atom_t *
atoms
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_ROTATE_PROPERTIES.
xcb_void_cookie_t xcb_rotate_properties_checked
(
xcb_connection_t *
c,
xcb_window_t
window,
uint16_t
atoms_len,
int16_t
delta,
const xcb_atom_t *
atoms
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_ROTATE_PROPERTIES.
xcb_generic_iterator_t xcb_screen_end
(
xcb_screen_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_screen_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_screen_next().
void xcb_screen_next
(
xcb_screen_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_screen_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_screen_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_screen_end().
xcb_generic_iterator_t xcb_segment_end
(
xcb_segment_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_segment_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_segment_next
(
xcb_segment_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_segment_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_segment_t)
xcb_void_cookie_t xcb_send_event
(
xcb_connection_t *
c,
uint8_t
propagate,
xcb_window_t
destination,
uint32_t
event_mask,
const char *
event
)
send an event
Parameters
cThe connection
propagateIf propagate is true and no clients have selected any event on destination, the destination is replaced with the closest ancestor of destination for which some client has selected a type in event_mask and for which no intervening window has that type in its do-not-propagate-mask. If no such window exists or if the window is an ancestor of the focus window and InputFocus was originally specified as the destination, the event is not sent to any clients. Otherwise, the event is reported to every client selecting on the final destination any of the types specified in event_mask.
destinationThe window to send this event to. Every client which selects any event within event_mask on destination will get the event.
The special value XCB_SEND_EVENT_DEST_POINTER_WINDOW refers to the window that contains the mouse pointer.
The special value XCB_SEND_EVENT_DEST_ITEM_FOCUS refers to the window which has the keyboard focus.
event_maskEvent_mask for determining which clients should receive the specified event. See destination and propagate.
eventThe event to send to the specified destination.
ReturnsA cookie
Identifies the destination window, determines which clients should receive the specified event and ignores any active grabs.
The event must be one of the core events or an event defined by an extension, so that the X server can correctly byte-swap the contents as necessary. The contents of event are otherwise unaltered and unchecked except for the send_event field which is forced to 'true'.
References XCB_SEND_EVENT.
xcb_void_cookie_t xcb_send_event_checked
(
xcb_connection_t *
c,
uint8_t
propagate,
xcb_window_t
destination,
uint32_t
event_mask,
const char *
event
)
send an event
Parameters
cThe connection
propagateIf propagate is true and no clients have selected any event on destination, the destination is replaced with the closest ancestor of destination for which some client has selected a type in event_mask and for which no intervening window has that type in its do-not-propagate-mask. If no such window exists or if the window is an ancestor of the focus window and InputFocus was originally specified as the destination, the event is not sent to any clients. Otherwise, the event is reported to every client selecting on the final destination any of the types specified in event_mask.
destinationThe window to send this event to. Every client which selects any event within event_mask on destination will get the event.
The special value XCB_SEND_EVENT_DEST_POINTER_WINDOW refers to the window that contains the mouse pointer.
The special value XCB_SEND_EVENT_DEST_ITEM_FOCUS refers to the window which has the keyboard focus.
event_maskEvent_mask for determining which clients should receive the specified event. See destination and propagate.
eventThe event to send to the specified destination.
ReturnsA cookie
Identifies the destination window, determines which clients should receive the specified event and ignores any active grabs.
The event must be one of the core events or an event defined by an extension, so that the X server can correctly byte-swap the contents as necessary. The contents of event are otherwise unaltered and unchecked except for the send_event field which is forced to 'true'.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SEND_EVENT.
xcb_void_cookie_t xcb_set_access_control
(
xcb_connection_t *
c,
uint8_t
mode
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_ACCESS_CONTROL.
xcb_void_cookie_t xcb_set_access_control_checked
(
xcb_connection_t *
c,
uint8_t
mode
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_ACCESS_CONTROL.
xcb_void_cookie_t xcb_set_clip_rectangles
(
xcb_connection_t *
c,
uint8_t
ordering,
xcb_gcontext_t
gc,
int16_t
clip_x_origin,
int16_t
clip_y_origin,
uint32_t
rectangles_len,
const xcb_rectangle_t *
rectangles
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_CLIP_RECTANGLES.
xcb_void_cookie_t xcb_set_clip_rectangles_checked
(
xcb_connection_t *
c,
uint8_t
ordering,
xcb_gcontext_t
gc,
int16_t
clip_x_origin,
int16_t
clip_y_origin,
uint32_t
rectangles_len,
const xcb_rectangle_t *
rectangles
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_CLIP_RECTANGLES.
xcb_void_cookie_t xcb_set_close_down_mode
(
xcb_connection_t *
c,
uint8_t
mode
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_CLOSE_DOWN_MODE.
xcb_void_cookie_t xcb_set_close_down_mode_checked
(
xcb_connection_t *
c,
uint8_t
mode
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_CLOSE_DOWN_MODE.
xcb_void_cookie_t xcb_set_dashes
(
xcb_connection_t *
c,
xcb_gcontext_t
gc,
uint16_t
dash_offset,
uint16_t
dashes_len,
const uint8_t *
dashes
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_SET_DASHES.
xcb_void_cookie_t xcb_set_dashes_checked
(
xcb_connection_t *
c,
xcb_gcontext_t
gc,
uint16_t
dash_offset,
uint16_t
dashes_len,
const uint8_t *
dashes
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_DASHES.
xcb_void_cookie_t xcb_set_font_path
(
xcb_connection_t *
c,
uint16_t
font_qty,
const xcb_str_t *
font
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_FONT_PATH.
xcb_void_cookie_t xcb_set_font_path_checked
(
xcb_connection_t *
c,
uint16_t
font_qty,
const xcb_str_t *
font
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_FONT_PATH.
xcb_void_cookie_t xcb_set_input_focus
(
xcb_connection_t *
c,
uint8_t
revert_to,
xcb_window_t
focus,
xcb_timestamp_t
time
)
Sets input focus.
Parameters
cThe connection
revert_toA bitmask of xcb_input_focus_t values.
revert_toSpecifies what happens when the focus window becomes unviewable (if focus is neither XCB_NONE nor XCB_POINTER_ROOT).
focusThe window to focus. All keyboard events will be reported to this window. The window must be viewable (TODO), or a xcb_match_error_t occurs (TODO).
If focus is XCB_NONE (TODO), all keyboard events are discarded until a new focus window is set.
If focus is XCB_POINTER_ROOT (TODO), focus is on the root window of the screen on which the pointer is on currently.
timeTimestamp to avoid race conditions when running X over the network.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Changes the input focus and the last-focus-change time. If the specified time is earlier than the current last-focus-change time, the request is ignored (to avoid race conditions when running X over the network).
A FocusIn and FocusOut event is generated when focus is changed.
References XCB_SET_INPUT_FOCUS.
xcb_void_cookie_t xcb_set_input_focus_checked
(
xcb_connection_t *
c,
uint8_t
revert_to,
xcb_window_t
focus,
xcb_timestamp_t
time
)
Sets input focus.
Parameters
cThe connection
revert_toA bitmask of xcb_input_focus_t values.
revert_toSpecifies what happens when the focus window becomes unviewable (if focus is neither XCB_NONE nor XCB_POINTER_ROOT).
focusThe window to focus. All keyboard events will be reported to this window. The window must be viewable (TODO), or a xcb_match_error_t occurs (TODO).
If focus is XCB_NONE (TODO), all keyboard events are discarded until a new focus window is set.
If focus is XCB_POINTER_ROOT (TODO), focus is on the root window of the screen on which the pointer is on currently.
timeTimestamp to avoid race conditions when running X over the network.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Changes the input focus and the last-focus-change time. If the specified time is earlier than the current last-focus-change time, the request is ignored (to avoid race conditions when running X over the network).
A FocusIn and FocusOut event is generated when focus is changed.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_INPUT_FOCUS.
xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping
(
xcb_connection_t *
c,
uint8_t
keycodes_per_modifier,
const xcb_keycode_t *
keycodes
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_MODIFIER_MAPPING.
xcb_set_modifier_mapping_reply_t* xcb_set_modifier_mapping_reply
(
xcb_connection_t *
c,
xcb_set_modifier_mapping_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_set_modifier_mapping_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping_unchecked
(
xcb_connection_t *
c,
uint8_t
keycodes_per_modifier,
const xcb_keycode_t *
keycodes
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_SET_MODIFIER_MAPPING.
xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping
(
xcb_connection_t *
c,
uint8_t
map_len,
const uint8_t *
map
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_POINTER_MAPPING.
xcb_set_pointer_mapping_reply_t* xcb_set_pointer_mapping_reply
(
xcb_connection_t *
c,
xcb_set_pointer_mapping_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_set_pointer_mapping_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping_unchecked
(
xcb_connection_t *
c,
uint8_t
map_len,
const uint8_t *
map
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_SET_POINTER_MAPPING.
xcb_void_cookie_t xcb_set_screen_saver
(
xcb_connection_t *
c,
int16_t
timeout,
int16_t
interval,
uint8_t
prefer_blanking,
uint8_t
allow_exposures
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_SET_SCREEN_SAVER.
xcb_void_cookie_t xcb_set_screen_saver_checked
(
xcb_connection_t *
c,
int16_t
timeout,
int16_t
interval,
uint8_t
prefer_blanking,
uint8_t
allow_exposures
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_SCREEN_SAVER.
xcb_void_cookie_t xcb_set_selection_owner
(
xcb_connection_t *
c,
xcb_window_t
owner,
xcb_atom_t
selection,
xcb_timestamp_t
time
)
Sets the owner of a selection.
Parameters
cThe connection
ownerThe new owner of the selection.
The special value XCB_NONE means that the selection will have no owner.
selectionThe selection.
timeTimestamp to avoid race conditions when running X over the network.
The selection will not be changed if time is earlier than the current last-change time of the selection or is later than the current X server time. Otherwise, the last-change time is set to the specified time.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Makes window the owner of the selection selection and updates the last-change time of the specified selection.
TODO: briefly explain what a selection is.
References XCB_SET_SELECTION_OWNER.
xcb_void_cookie_t xcb_set_selection_owner_checked
(
xcb_connection_t *
c,
xcb_window_t
owner,
xcb_atom_t
selection,
xcb_timestamp_t
time
)
Sets the owner of a selection.
Parameters
cThe connection
ownerThe new owner of the selection.
The special value XCB_NONE means that the selection will have no owner.
selectionThe selection.
timeTimestamp to avoid race conditions when running X over the network.
The selection will not be changed if time is earlier than the current last-change time of the selection or is later than the current X server time. Otherwise, the last-change time is set to the specified time.
The special value XCB_CURRENT_TIME will be replaced with the current server time.
ReturnsA cookie
Makes window the owner of the selection selection and updates the last-change time of the specified selection.
TODO: briefly explain what a selection is.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_SET_SELECTION_OWNER.
xcb_generic_iterator_t xcb_setup_authenticate_end
(
xcb_setup_authenticate_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_setup_authenticate_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, xcb_format_end(), and xcb_setup_authenticate_next().
void xcb_setup_authenticate_next
(
xcb_setup_authenticate_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_setup_authenticate_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_setup_authenticate_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_setup_authenticate_end().
xcb_generic_iterator_t xcb_setup_end
(
xcb_setup_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_setup_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_setup_next().
xcb_generic_iterator_t xcb_setup_failed_end
(
xcb_setup_failed_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_setup_failed_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_setup_failed_next().
void xcb_setup_failed_next
(
xcb_setup_failed_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_setup_failed_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_setup_failed_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_setup_failed_end().
void xcb_setup_next
(
xcb_setup_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_setup_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_setup_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_setup_end().
xcb_generic_iterator_t xcb_setup_request_end
(
xcb_setup_request_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_setup_request_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_setup_request_next().
void xcb_setup_request_next
(
xcb_setup_request_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_setup_request_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_setup_request_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_setup_request_end().
xcb_void_cookie_t xcb_store_colors
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint32_t
items_len,
const xcb_coloritem_t *
items
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_STORE_COLORS.
xcb_void_cookie_t xcb_store_colors_checked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap,
uint32_t
items_len,
const xcb_coloritem_t *
items
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_STORE_COLORS.
xcb_void_cookie_t xcb_store_named_color
(
xcb_connection_t *
c,
uint8_t
flags,
xcb_colormap_t
cmap,
uint32_t
pixel,
uint16_t
name_len,
const char *
name
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and XCB_STORE_NAMED_COLOR.
xcb_void_cookie_t xcb_store_named_color_checked
(
xcb_connection_t *
c,
uint8_t
flags,
xcb_colormap_t
cmap,
uint32_t
pixel,
uint16_t
name_len,
const char *
name
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_STORE_NAMED_COLOR.
xcb_generic_iterator_t xcb_str_end
(
xcb_str_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_str_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, xcb_generic_iterator_t::rem, and xcb_str_next().
void xcb_str_next
(
xcb_str_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_str_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_str_t)
References xcb_generic_iterator_t::data.
Referenced by xcb_str_end().
xcb_generic_iterator_t xcb_timecoord_end
(
xcb_timecoord_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_timecoord_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_timecoord_next
(
xcb_timecoord_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_timecoord_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_timecoord_t)
xcb_generic_iterator_t xcb_timestamp_end
(
xcb_timestamp_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_timestamp_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_timestamp_next
(
xcb_timestamp_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_timestamp_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_timestamp_t)
xcb_translate_coordinates_cookie_t xcb_translate_coordinates
(
xcb_connection_t *
c,
xcb_window_t
src_window,
xcb_window_t
dst_window,
int16_t
src_x,
int16_t
src_y
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_TRANSLATE_COORDINATES.
xcb_translate_coordinates_reply_t* xcb_translate_coordinates_reply
(
xcb_connection_t *
c,
xcb_translate_coordinates_cookie_t
cookie,
xcb_generic_error_t **
e
)
Return the reply Parameters
cThe connection
cookieThe cookie
eThe xcb_generic_error_t supplied
Returns the reply of the request asked by
The parameter e supplied to this function must be NULL if xcb_translate_coordinates_unchecked(). is used. Otherwise, it stores the error if any.
The returned value must be freed by the caller using free().
xcb_translate_coordinates_cookie_t xcb_translate_coordinates_unchecked
(
xcb_connection_t *
c,
xcb_window_t
src_window,
xcb_window_t
dst_window,
int16_t
src_x,
int16_t
src_y
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will cause a reply to be generated. Any returned error will be placed in the event queue.
References XCB_TRANSLATE_COORDINATES.
xcb_void_cookie_t xcb_ungrab_button
(
xcb_connection_t *
c,
uint8_t
button,
xcb_window_t
grab_window,
uint16_t
modifiers
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_UNGRAB_BUTTON.
xcb_void_cookie_t xcb_ungrab_button_checked
(
xcb_connection_t *
c,
uint8_t
button,
xcb_window_t
grab_window,
uint16_t
modifiers
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNGRAB_BUTTON.
xcb_void_cookie_t xcb_ungrab_key
(
xcb_connection_t *
c,
xcb_keycode_t
key,
xcb_window_t
grab_window,
uint16_t
modifiers
)
release a key combination
Parameters
cThe connection
keyThe keycode of the specified key combination.
Using the special value XCB_GRAB_ANY means releasing all possible key codes.
grab_windowThe window on which the grabbed key combination will be released.
modifiersThe modifiers of the specified key combination.
Using the special value XCB_MOD_MASK_ANY means releasing the key combination with every possible modifier combination.
ReturnsA cookie
Releases the key combination on grab_window if you grabbed it using xcb_grab_key before.
References XCB_UNGRAB_KEY.
xcb_void_cookie_t xcb_ungrab_key_checked
(
xcb_connection_t *
c,
xcb_keycode_t
key,
xcb_window_t
grab_window,
uint16_t
modifiers
)
release a key combination
Parameters
cThe connection
keyThe keycode of the specified key combination.
Using the special value XCB_GRAB_ANY means releasing all possible key codes.
grab_windowThe window on which the grabbed key combination will be released.
modifiersThe modifiers of the specified key combination.
Using the special value XCB_MOD_MASK_ANY means releasing the key combination with every possible modifier combination.
ReturnsA cookie
Releases the key combination on grab_window if you grabbed it using xcb_grab_key before.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNGRAB_KEY.
xcb_void_cookie_t xcb_ungrab_keyboard
(
xcb_connection_t *
c,
xcb_timestamp_t
time
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_UNGRAB_KEYBOARD.
xcb_void_cookie_t xcb_ungrab_keyboard_checked
(
xcb_connection_t *
c,
xcb_timestamp_t
time
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNGRAB_KEYBOARD.
xcb_void_cookie_t xcb_ungrab_pointer
(
xcb_connection_t *
c,
xcb_timestamp_t
time
)
release the pointer
Parameters
cThe connection
timeTimestamp to avoid race conditions when running X over the network.
The pointer will not be released if time is earlier than the last-pointer-grab time or later than the current X server time.
ReturnsA cookie
Releases the pointer and any queued events if you actively grabbed the pointer before using xcb_grab_pointer, xcb_grab_button or within a normal button press.
EnterNotify and LeaveNotify events are generated.
References XCB_UNGRAB_POINTER.
xcb_void_cookie_t xcb_ungrab_pointer_checked
(
xcb_connection_t *
c,
xcb_timestamp_t
time
)
release the pointer
Parameters
cThe connection
timeTimestamp to avoid race conditions when running X over the network.
The pointer will not be released if time is earlier than the last-pointer-grab time or later than the current X server time.
ReturnsA cookie
Releases the pointer and any queued events if you actively grabbed the pointer before using xcb_grab_pointer, xcb_grab_button or within a normal button press.
EnterNotify and LeaveNotify events are generated.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNGRAB_POINTER.
xcb_void_cookie_t xcb_ungrab_server
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_UNGRAB_SERVER.
xcb_void_cookie_t xcb_ungrab_server_checked
(
xcb_connection_t *
c)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNGRAB_SERVER.
xcb_void_cookie_t xcb_uninstall_colormap
(
xcb_connection_t *
c,
xcb_colormap_t
cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_UNINSTALL_COLORMAP.
xcb_void_cookie_t xcb_uninstall_colormap_checked
(
xcb_connection_t *
c,
xcb_colormap_t
cmap
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNINSTALL_COLORMAP.
xcb_void_cookie_t xcb_unmap_subwindows
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
References XCB_UNMAP_SUBWINDOWS.
xcb_void_cookie_t xcb_unmap_subwindows_checked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Parameters
cThe connection
ReturnsA cookie
Delivers a request to the X server.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNMAP_SUBWINDOWS.
xcb_void_cookie_t xcb_unmap_window
(
xcb_connection_t *
c,
xcb_window_t
window
)
Makes a window invisible.
Parameters
cThe connection
windowThe window to make invisible.
ReturnsA cookie
Unmaps the specified window. This means making the window invisible (and all its child windows).
Unmapping a window leads to the UnmapNotify event being generated. Also, Expose events are generated for formerly obscured windows.
References XCB_UNMAP_WINDOW.
xcb_void_cookie_t xcb_unmap_window_checked
(
xcb_connection_t *
c,
xcb_window_t
window
)
Makes a window invisible.
Parameters
cThe connection
windowThe window to make invisible.
ReturnsA cookie
Unmaps the specified window. This means making the window invisible (and all its child windows).
Unmapping a window leads to the UnmapNotify event being generated. Also, Expose events are generated for formerly obscured windows.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_UNMAP_WINDOW.
xcb_generic_iterator_t xcb_visualid_end
(
xcb_visualid_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_visualid_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_visualid_next
(
xcb_visualid_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_visualid_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_visualid_t)
xcb_generic_iterator_t xcb_visualtype_end
(
xcb_visualtype_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_visualtype_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_visualtype_next
(
xcb_visualtype_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_visualtype_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_visualtype_t)
xcb_void_cookie_t xcb_warp_pointer
(
xcb_connection_t *
c,
xcb_window_t
src_window,
xcb_window_t
dst_window,
int16_t
src_x,
int16_t
src_y,
uint16_t
src_width,
uint16_t
src_height,
int16_t
dst_x,
int16_t
dst_y
)
move mouse pointer
Parameters
cThe connection
src_windowIf src_window is not XCB_NONE (TODO), the move will only take place if the pointer is inside src_window and within the rectangle specified by (src_x, src_y, src_width, src_height). The rectangle coordinates are relative to src_window.
dst_windowIf dst_window is not XCB_NONE (TODO), the pointer will be moved to the offsets (dst_x, dst_y) relative to dst_window. If dst_window is XCB_NONE (TODO), the pointer will be moved by the offsets (dst_x, dst_y) relative to the current position of the pointer.
ReturnsA cookie
Moves the mouse pointer to the specified position.
If src_window is not XCB_NONE (TODO), the move will only take place if the pointer is inside src_window and within the rectangle specified by (src_x, src_y, src_width, src_height). The rectangle coordinates are relative to src_window.
If dst_window is not XCB_NONE (TODO), the pointer will be moved to the offsets (dst_x, dst_y) relative to dst_window. If dst_window is XCB_NONE (TODO), the pointer will be moved by the offsets (dst_x, dst_y) relative to the current position of the pointer.
References XCB_WARP_POINTER.
xcb_void_cookie_t xcb_warp_pointer_checked
(
xcb_connection_t *
c,
xcb_window_t
src_window,
xcb_window_t
dst_window,
int16_t
src_x,
int16_t
src_y,
uint16_t
src_width,
uint16_t
src_height,
int16_t
dst_x,
int16_t
dst_y
)
move mouse pointer
Parameters
cThe connection
src_windowIf src_window is not XCB_NONE (TODO), the move will only take place if the pointer is inside src_window and within the rectangle specified by (src_x, src_y, src_width, src_height). The rectangle coordinates are relative to src_window.
dst_windowIf dst_window is not XCB_NONE (TODO), the pointer will be moved to the offsets (dst_x, dst_y) relative to dst_window. If dst_window is XCB_NONE (TODO), the pointer will be moved by the offsets (dst_x, dst_y) relative to the current position of the pointer.
ReturnsA cookie
Moves the mouse pointer to the specified position.
If src_window is not XCB_NONE (TODO), the move will only take place if the pointer is inside src_window and within the rectangle specified by (src_x, src_y, src_width, src_height). The rectangle coordinates are relative to src_window.
If dst_window is not XCB_NONE (TODO), the pointer will be moved to the offsets (dst_x, dst_y) relative to dst_window. If dst_window is XCB_NONE (TODO), the pointer will be moved by the offsets (dst_x, dst_y) relative to the current position of the pointer.
This form can be used only if the request will not cause a reply to be generated. Any returned error will be saved for handling by xcb_request_check().
References XCB_WARP_POINTER.
xcb_generic_iterator_t xcb_window_end
(
xcb_window_iterator_t
i)
Return the iterator pointing to the last element Parameters
iAn xcb_window_iterator_t
ReturnsThe iterator pointing to the last element
Set the current element in the iterator to the last element. The member rem is set to 0. The member data points to the last element.
References xcb_generic_iterator_t::data, xcb_generic_iterator_t::index, and xcb_generic_iterator_t::rem.
void xcb_window_next
(
xcb_window_iterator_t *
i)
Get the next element of the iterator Parameters
iPointer to a xcb_window_iterator_t
Get the next element in the iterator. The member rem is decreased by one. The member data points to the next element. The member index is increased by sizeof(xcb_window_t)
Generated by
1.8.11
Linux XCB_xcb gtk qt-CSDN博客
Linux XCB
最新推荐文章于 2024-03-06 15:27:44 发布
顺其自然~
最新推荐文章于 2024-03-06 15:27:44 发布
阅读量1.7k
收藏
5
点赞数
文章标签:
linux
运维
服务器
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fuhanghang/article/details/130129691
版权
X协议的c语言绑定(XCB: The X protocol C-language Binding) 是一种替代Xlib具有占用空间小,延迟隐藏,直接访问协议,提高线程的支持,和可扩展性。
基本的窗口和绘制(basicwindowsanddrawing)事件(events)文本和字体(fonts)窗口的内容和操作(windowcontextandmanipulation)颜色和像素地图(https://xcb.freedesktop.org/colorsandpixmaps/)鼠标光标(mousecursors)Xlib 到XCB的翻译引导(xlibtoxcbtranslationguide)
介绍
这个手册是用来介绍给想用XCB library进行编程需要的人们。 像使用Xlib library来使用XCB,因为不是大多数的编程人员都想要写X的应用程序。而更多的开发者是想使用更高级的GUI 开发工具,如Motif,LessTiff,GTK,Qt,EWL,or ETK 或者更高级的使用library Cairo来进行绘制。虽然, 不是所有的XCB的基础都很复杂,了其他一些库的上层的东西也不是坏事。
在读完这个手册之后,一个人可以写简单图形程序而不是好看的图形界面(至少是相对简单的)。在写应用程序之前,这个先前的关于上面库的了解是更有必要的。
什么是XCB,为什么它为存在?
XCB("X C Bing")是一个低级的api给X window server。 XCB是Xlib的一个替代产物,Xlib曾是多年以来标准的C绑定的给X Window System 协议的库。Xlib表现得很优秀,但是对于应用程序来说也有很多不理想的地方,例如:
小平台: Xlib包含在大段的代码,精简起来十分困难延迟隐藏:Xlib需要有效的同步回复:他们会一直阻塞直到获取到结果,不管这个结果是否立即需要直接访问协议:Xlib需要大量的缓存,层和相似的优化。由于这个通性,它很难简单的发出特定的X 协议请求和处理特定的响应线程化应用程序:Xlib尽量会支持多线程,它的api的容错性较差新的扩展:Xlib的底部架构提供了有限的支持给新的X的扩展客户端代码。
XCB被设计用来解决上述的问题,目前已经解决的有:
工具包的实现直接进行协议级的编程轻量级的调用常用的Xlib api.
Xcb 的全称是 X 协议 C 库,它是一种让在 X Window 活动图形框架中的 Linux 中的程序更易于使用。Xcb 是一种为原生 X 协议提供一个高级接口的库。它允许用户使用函数调用,而不是手动构造消息来访问 X 协议。Xcb 的特点是它是轻量级的,低维护,运行速度快。Xcb 使用在链接器中编译的函数库来缩短天生 X 协议消息的小编程意味,它让用户可以不必担心包装 X 协议消息的技术细节。
在开始使用 Xcb 之前,我们需要一种方法来安装它。如果你使用的是 Ubuntu,你可以使用下面的命令来安装:
“`bash
sudo apt-get install libxcb1-dev
安装之后,我们就可以开始使用 Xcb。要想创建图形界面,我们首先需要做的就是创建 xcb 的连接:
```C
xcb_connection_t *conn = xcb_connect(NULL, NULL);
连接建立之后,我们还需要获取窗口:
“`C
xcb_window_t window = xcb_generate_id(conn);
uint32_t value_list[] = {600, 400};
xcb_create_window(conn,
XCB_COPY_FROM_PARENT,
window,
screen->root,
0, 0,
value_list[0], value_list[1],
0,
XCB_WINDOW_CLASS_INPUT_OUTPUT,
screen->root_visual,
0, NULL );
在窗口创建之后,我们需要把它显示在屏幕上:
```C
xcb_map_window(conn, window);
xcb_flush(conn);
经过以上操作,我们就创建了一个空白窗口。现在,如果我们想要把它绘制成我们想要的样子,我们可以使用 Xcb 的一些其他功能。
另一种在 Linux 中开发图形界面的方法是使用 Qt。Qt 是一个开源的 C++ 框架,它的优势在于它的易用性,以及它的强大的图形功能。此外,它还支持跨平台开发,因此也被用作在 Linux 下开发图形界面的工具。
优惠劵
顺其自然~
关注
关注
0
点赞
踩
5
收藏
觉得还不错?
一键收藏
打赏
知道了
0
评论
Linux XCB
而更多的开发者是想使用更高级的GUI 开发工具,如Motif,LessTiff,GTK,Qt,EWL,or ETK 或者更高级的使用library Cairo来进行绘制。Qt 是一个开源的 C++ 框架,它的优势在于它的易用性,以及它的强大的图形功能。XCB是Xlib的一个替代产物,Xlib曾是多年以来标准的C绑定的给X Window System 协议的库。Xcb 的全称是 X 协议 C 库,它是一种让在 X Window 活动图形框架中的 Linux 中的程序更易于使用。什么是XCB,为什么它为存在?
复制链接
扫一扫
xcb-util-0.4.0-2.el7.x86_64.rpm
11-30
离线安装包,亲测可用
x11 gtk qt gnome kde 之间的区别和联系
weixin_55163060的博客
08-12
1195
x11 gtk qt gnome kde 之间的区别和联系
x11 gtk qt gnome kde 之间的区别和联系
x11 gtk qt gnome kde 之间的区别和联系
参与评论
您还未登录,请先
登录
后发表或查看评论
【ARM开发】交叉编译Qt源码之(4)添加xcb支持
console_log的博客
02-16
5163
Debian 9
1、依赖
Qt源码添加xcb支持,依赖xcb-util-wm、xcb-util、xcb-util-image、xcb-util-keysyms、xcb-util-renderutil、libxkbcommon,其中libxkbcommon依赖libxml。
1.1、xcb-util-wm
下载地址:Index of /releases/individual/xcbhttps://www.x.org/releases/individual/xcb/
#解压
tar -zxvf x
XCB tutorial
热门推荐
01-18
5万+
tutorial (xcb.freedesktop.org)
Introduction
Most application developers will want to use a much higher-level GUI toolkit, like Motif, LessTiff, GTK, Qt, EWL, or ETK or perhaps use the higher-level drawing library Cairo. However, knowing about the layers
linux 原生迅雷
10-21
运行环境要求
硬件:
x86或x64 CPU
下载文件夹所在卷容量大于4G
软件:
Linux 32位或64位x86系列CPU
Python3 >= 3.4
Py3.PyQt5 >= 5.2
详细的软件依赖参见发行版的打包文件。
其它:
拥有迅雷账户(会员/非会员均可)
许可证
GPLv3 -- Xware Desktop部分
迅雷协议 -- Xware部分
新增64位版本(迅雷下载核心1.0.31):
附件:
xware-desktop_0.13.20141115_amd64.deb [1.71 MiB]
被下载 2099 次
Xware Desktop已打包,64位打包系统是kubuntu15.04,凡是64位的ubuntu15.04系,应该都能用.
迅雷版本是1.0.31,包含数个linux原生二进制程序,建议双击安装包进行安装,它还要额外的pyQt5图形库,会自动从ubuntu仓库下载.
第一次先不要登陆,先要设置.启动迅雷软件->菜单栏->文件->设置
->挂载->添加下载目录,比如我的是/home/name/download.
->启动与登陆->xwared托管->我们选systemd托管,ETM选随xwared启动
至此设置告一段落.重启PC后,如下图会有两个迅雷的原生进程:
附件:
thunder.png
thunder.png [ 23.98 KiB | 被浏览 52484 次 ]
在我的kubuntu开始菜单的因特网子菜单里会有个xwared Desktop的迅雷图标,点击它就能启动迅雷了.
第一次登陆后会有激活码,点一下即可成功.
就能跟windows里的迅雷7一样用啦,速度嘛,跟windows完全一样,免费用户同样没有高速通道,要vip才能用.
32位迅雷下载核心更新至1.0.25
附件:
xware-desktop_0.10.20140702_i386.deb [1.61 MiB]
被下载 7829 次
当然,有能力的同学可以自行编译,在Ubuntu上编译安装说明如下 :
编译环境:
安装必备的软件。
sudo apt-get install git build-essential devscripts
下载源代码。
git clone git://github.com/Xinkai/XwareDesktop.git
这会在当前目录下生成一个名为XwareDesktop的子目录。
切换到源代码目录XwareDesktop。
cd XwareDesktop
打包
你需要切换到XwareDesktop的源代码目录。
列出缺失的编译依赖。
dpkg-checkbuilddeps。
如果没有列出任何东西,跳过步骤2。
安装缺失的编译依赖。
sudo apt-get install
制作安装包。
dpkg-buildpackage
执行这条命令后会在你当前目录下生成数个包,其中包括xware-desktop_??????.deb安装包。
安装
回到图形化界面,在XwareDesktop的源代码目录的上级目录,你应该能找到名为xware-desktop_??????.deb的安装包文件, 双击它,按提示安装。
浏览器扩展整合
Xware Desktop接受来自命令行的参数作为新任务的网址,格式为
xware-desktop http://www.website.com/file1 ftp://www.website.com/file2 ...
以Firefox上的Flashgot为例,打开其选项。添加一个新的下载器,程序设置为xware-desktop,参数设置为[URL]。
来自命令行的参数支持http,https,ftp,ed2k,magnet,flashget,qqdl,thunder等多种协议, 也同样支持本地的torrent文件。
注:本软件同linux版115网盘存在冲突,出现如下提示:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Reinstalling the application may fix this problem.
Linux系统中,安装软件时候遇到错误提示xcb问题解决方案
veryhappy1979的专栏
05-05
1929
(3)、debian系linux系统中缺少:libxcb-xinerama.so.0,使用命令安装:sudo apt-get install libxcb-xinerama0。cenntos系统中缺少:libxkbcommon-x11.so.0,使用命令安装:yum -y install libxkbcommon-x11-devel。出现xcb问题,主要是因为安装pyqt5后,缺少一些链接库,通过一下方法定位到缺少的链接库,安装上就可以了。两种方案都可以解决问题。
什么是XCB
Alex Xu's blog
01-27
1万+
简单看了下XCB的功能,作用,大致总结如下,不知道是否正确。暂时如此理解吧。
XCB
是用来替代Xlib。当期Xlib实际是调用XCB。
XCB最大的特征是可以自动生成X协议的c语言绑定。
XLIB/XCB
就是用XML文件描述的x协议,并生成x协议的c语言绑定
x程序 Linux,使用XCB编写X Window程序(01):快速起步
weixin_35715402的博客
05-03
3453
估计现在已经没有谁使用XCB这么底层的库写应用程序了,要用也是用经过精心封装的Motif, LessTiff, GTK, Qt, EWL, ETK或者Cairo等高层次的库。我之所以这么费心地去折腾XCB,其实主要也是为了学习。毕竟,使用最接近底层的UI库写代码是学习X协议及GUI编程原理的最好方法。XCB的主要教程可以参考这里:http://xcb.freedesktop.org/tutori...
Linux系统关于Qt platform plugin “xcb“缺失的解决
weixin_39284111的博客
08-07
2万+
之前在Debian10.0系统中安装图形库(如QT)相关时出现xcb缺失、xinerama缺失的问题。
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
libxcb-xinerama.so.0: cannot open shared object file: No such file or directory
在~/.bashrc中添加QT_DEBUG_PLUGINS在编译
Linux下源码编译安装新版libxcb
luoyayun361的专栏
07-05
8382
前言
上一篇文章提到,linux 下编译Qt源码如果要用到Quick的话,那么运行时会依赖qxcb库,而编译生成qxcb库就需要先安装libxcb,并且最低要求 版本大于1.9.1
Requires libxcb >= 1.9.1.
所以,本篇中主要介绍如何通过源码编译安装最新版的xcb库。
为啥一定要用源码编译安装呢,其实在命令行通过apt-get install 同样可以安装xcb,而且方便快捷,这样确实可以安装,但是不能保证是最新版。
下载源码
首先在这里下载源码:https://xcb.fr
BMenu:基于xcb的linux简单单机菜单
07-01
菜单
一个基于 xcb 的简单、灵活、独立的 linux 饼图菜单。
安装
构建二进制文件。
make
创建配置文件
.config/BMenu/BMenurc
用法
映射到要运行的热键并将文件输出通过管道传输到。 例子:
BMenu | bmenu_out
然后,您可以使用这些命令(使用 bash 脚本)来运行程序,或者做一些奇特的事情。
句法
调试
只需在终端中运行BMenu并查看输出。
选项
请参阅样本配置文件BMenurc和样本bash脚本BMenubash在config/BMenu 。
去做
让它发挥作用。
错误
它目前不起作用。
libxcb-1.14.tar.gz
11-26
X 协议 C 语言绑定 (XCB) 是 Xlib 的替代品,具有占用空间小、隐藏延迟、直接访问协议、改进的线程支持和可扩展性等特点。
xcb-proto-1.13.tar.gz
09-30
xcb-proto-1.13.tar.gz的源码,交叉编译通过,亲测可用
xcb-util-wm-0.4.1-5.el7.x86_64.rpm
11-30
离线安装包,亲测可用
qt程序在linux下发布
08-21
qt程序在linux下发布,特别是QT5的程序发布,解决这个错误,Failed to load platform plugin “xcb”. Available platforms are: Aborted(core dumped)
Linux下mysql添加用户并授权数据库权限
beautifulmemory的博客
03-06
196
在 Linux 下,你可以使用 MySQL 的 root 用户登录到 MySQL 数据库,然后通过 SQL 命令来添加新用户并授予数据库权限。
【Linux】Linux的管道与重定向
AliceNo的博客
03-02
951
在Linux系统中,管道和重定向是使命令行操作更为灵活和高效的关键工具。通过管道,我们可以将一个命令的输出作为另一个命令的输入,实现命令之间的连接和协作。而重定向则允许我们将命令的输入和输出从默认位置进行定向,使得我们能够轻松地将结果保存到文件中或者从文件中读取输入。本文将详细探讨这两个重要概念,并演示它们在日常Linux命令行操作中的应用。管道和重定向是Linux命令行中的两个强大而灵活的工具,它们为用户提供了处理和操作命令输入输出的便利方式。
linux-rpm命令
最新发布
weixin_44654338的博客
03-06
154
rpm命令管理程序包:安装、升级、卸载、查询和校验。1、忽略依赖关系安装/卸载包。2、安装相关默认路径。6、查询已安装过的包。
《Linux C编程实战》笔记:共享内存
ouliten的博客
03-02
849
由于本人要考研了,播客可能不会再长更。这本《Linux C编程实战》其实也差不多完结了,还剩网络编程章节没有讲,我肯定是没时间讲了,可能考研失败了会回来继续。《Primer C++》的课后题还有第八章的存货,后续章节只能随缘更新。Qt部分真烂尾了,写Qt项目的注释实在太累了。最有可能更新的部分是力扣题讲解,因为写来准备复试上机。最后祝大家,也祝我一切顺利。
linux python qt.qpa.xcb: could not connect to display
08-22
引用和中的错误信息是关于Qt平台插件的问题,显示了"qt.qpa.xcb could not connect to display"和"qt.qpa.plugin: Could not load the Qt platform plugin "xcb""的错误信息。这些错误通常会在使用Qt库或相关应用程序时出现。这些错误表明在加载Qt平台插件时遇到了问题。
通常,这些错误是由于缺少Qt平台插件或环境配置不正确导致的。解决这个问题的一种方法是重新安装应用程序或Qt库。您可以尝试重新安装相关软件,以确保所有的依赖项都正确安装并配置。此外,您也可以检查系统环境变量和路径设置,确保它们正确指向Qt库和插件所在的位置。
引用提供了针对Ubuntu 18.04下解决类似问题的解决方案,您可以参考该文档进行操作。既然这个问题出现在Linux Python环境中,您可能还需要考虑检查您的Python环境和依赖项是否正确安装,并确保与Qt版本兼容。
总结来说,qt.qpa.xcb: could not connect to display错误通常是由于Qt平台插件的加载问题引起的。您可以尝试重新安装应用程序或Qt库,并确保环境变量和路径设置正确。如果问题仍然存在,您可以参考适用于您的操作系统和Python环境的特定解决方案。123
#### 引用[.reference_title]
- *1* [mmcv包在linux下无法使用inshow展示报错:qt.qpa.xcb: could not connect to display](https://blog.csdn.net/weixin_44635198/article/details/127616135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [解决qt.qpa.xcb: could not connect to display问题](https://blog.csdn.net/zimojiang/article/details/127383943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题](https://download.csdn.net/download/weixin_38695061/12841039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
顺其自然~
CSDN认证博客专家
CSDN认证企业博客
码龄16年
暂无认证
434
原创
8907
周排名
332
总排名
755万+
访问
等级
3万+
积分
2400
粉丝
6454
获赞
678
评论
3万+
收藏
私信
关注
热门文章
什么是汇编语言
125638
4款最好用的虚拟机软件简介及对比
120110
Java Bean详解
99915
接入层、汇聚层、核心层交换机三者之间的功能详解
91679
netstat查看端口状态
84848
最新评论
堆溢出崩溃分析Critical error detected c0000374
黑白灰12345:
VS2017、VS2019版本,测试只有在释放堆内存时存在检查,申请无检查也不会抛出异常
使用ChatGTP4的Coze AI
CSDN-Ada助手:
Python入门 技能树或许可以帮到你:https://edu.csdn.net/skill/python?utm_source=AI_act_python
服务器硬件基础知识
全球服务器运营:
需要服务器的可以联系
Windows消息机制
x暮落:
受益匪浅,时常回来复习都有新的收获,感谢梳理
声卡是什么
yangzuhao2020:
写的太棒了
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
统一身份管理平台IAM单点登录流程及第三方接口设计方案
MaxKey单点登录认证系统
ajax之HttpOnly cookie 如何与 AJAX 请求配合使用
2024
03月
14篇
02月
12篇
01月
74篇
2023年1005篇
2022年501篇
2021年317篇
2020年328篇
2019年101篇
2018年164篇
目录
目录
最新文章
统一身份管理平台IAM单点登录流程及第三方接口设计方案
MaxKey单点登录认证系统
ajax之HttpOnly cookie 如何与 AJAX 请求配合使用
2024
03月
14篇
02月
12篇
01月
74篇
2023年1005篇
2022年501篇
2021年317篇
2020年328篇
2019年101篇
2018年164篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
顺其自然~
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值