在Linux上使用桌面作为canvas

我想知道有人能帮我一把。 我有一个克隆Linux的怪胎工具克隆的计划。 但我不知道,如果你可以以某种方式使用Linux桌面作为canvas的文字等。我试图谷歌它,但我什么都没有find。 我需要做的是基本上能够在桌面的某些部分上绘制文本,所以它会看起来像他们是壁纸的一部分(从C + +)。 无论是或者能够创build无边框,透明的窗口,可以通过点击,并始终在后台。 如果有人能给我任何启动的指针,我会很高兴。
感谢您的帮助提前:]

您已经接受了部分答案,但是我希望您仍然可以阅读。

按照惯例,桌面背景确实是根窗口。 然而,在典型的现代桌面上有两个重要的机制:

  • 根像素地图设置(墙纸),它不在根窗口的背景上绘制
  • 通过用另一个基本级别窗口阻塞根窗口来丰富桌面背景(例如可点击的图标)

如果你只是想背景,只有后者对你很重要。 如果你也想读背景,例如为了真正的透明度,第一点也起作用。

绘制到背景:

程序xsnow和xpenguins的作者是第一个处理这个问题的人。 他们写了一个巧妙的函数,可以派生出KDE和Gnome桌面窗口。 由于阻碍根窗口的其他窗口管理者倾向于服从这些事实上的标准,所以其工作非常可靠。 通过他们的代码,您可以立即知道要绘制哪个窗口。

读取根背景(pixmap):

这很难。 窗口像素的天真查询将失败,因为所有的前景窗口也是根窗口的一部分; 所以这使得它很容易做一个截图,但不能得到真正的背景。

然而,有一个常规的根像素映射的全局名称(由任何像样的背景像素设置器使用)。 像素图可以通过查询这个名字找到。 然而,如果背景设置者吮吸并且不遵守这个规则,或者背景不是像素图,而只是一个图案或者其他东西,那么它会变得讨厌。

我最近才发现的第二个选项是使用XDBE(双缓冲区)扩展来获取根窗口的背景。 这是非常干净的,只需要两三行代码,并在任何情况下工作。 但是 Xorg认为XDBE已被弃用(或者更确切地说,即将被弃用)。 所以我不知道是否仅仅为了这个目的而使用它仍然是一个好主意。 但我可以根据要求给你代码

最后执行:

是的,这两个东西都有一个实现。 看看http://fopref.meinungsverserer.de/xmms-rootvis/在那个GPL档案中, getroot.c是从xpenguins中获得的,不依赖于其他的xpenguins代码。 另外,从rootvis.c第144行开始,你会发现代码来抓取背景像素图。

玩的开心!

Linux几乎总是使用X11(Gnome / KDE是更高级别的API)。 在X11上,“桌面”被称为“根窗口”。 所以,画这个。

如果您想要定位特定的桌面环境,请查看GNOME的gdesklets或KDE的等离子部件。 或者你也可以像MSalters所说的那样去“裸机”,并直接绘制到根窗口(例如,查看本教程 )

我见过compiz解决方案,能够实现类似的东西。 不笨的compiz不是非常文件AFAIK,但本教程可能会让你开始

谷歌桌面小工具或gdesklets可以帮助,而不是从头开始。

KDE Plasma-Desktop支持所谓的活动,这些活动是用于不同桌面类型(C ++)的模块。 我认为,这样做有一个简单和综合的基础是一个好点。

只要保持它,所以没有人写同样的事情,这是不正确的。

没有“linux桌面”或“linux壁纸”这样的概念。 你不再是Windows世界了。 Linux中的图形环境由多种系统驱动:GNOME,KDE,xfce等*每个系统(及其主要版本)都有自己的方式来访问桌面。

*“etc”不是一个图形环境,它是一个“等等”的短语。