Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pygtk(可能是X11?)确定当前壁纸的路径_Python_Pygtk_X11 - Fatal编程技术网

Python 使用pygtk(可能是X11?)确定当前壁纸的路径

Python 使用pygtk(可能是X11?)确定当前壁纸的路径,python,pygtk,x11,Python,Pygtk,X11,我想用PyGTK确定用户的壁纸路径 如果可能的话,我想不要依赖桌面环境的功能来实现这一点-这是因为一些用户(如我自己)不使用DE。因此,我想知道您是否可以使用X11或其他东西来确定当前使用的壁纸。您必须依赖桌面环境,否则这是不可能的,因为X11不应该处理墙纸之类的东西。设置背景图像时,外部程序将加载该图像并将其设置为根窗口的背景像素贴图。因此,除非特定的加载机制将图像路径存储在某处,否则X11本身永远不会知道图像文件在磁盘上的位置。X11中没有壁纸的概念。有根窗口及其背景,但这与驻留在文件系统中

我想用PyGTK确定用户的壁纸路径


如果可能的话,我想不要依赖桌面环境的功能来实现这一点-这是因为一些用户(如我自己)不使用DE。因此,我想知道您是否可以使用X11或其他东西来确定当前使用的壁纸。

您必须依赖桌面环境,否则这是不可能的,因为X11不应该处理墙纸之类的东西。设置背景图像时,外部程序将加载该图像并将其设置为根窗口的背景像素贴图。因此,除非特定的加载机制将图像路径存储在某处,否则X11本身永远不会知道图像文件在磁盘上的位置。

X11中没有壁纸的概念。有根窗口及其背景,但这与驻留在文件系统中的任何类型的映像都没有关联。请提供更多详细信息?X启动时如何加载其背景?它不是来自图像文件吗?X11启动时不会加载任何背景图像。它只能使用简单的图案或纯色。DE或其他客户端程序(如
xsetbg
)可以从磁盘加载一个图像(或合成一个),将其与十几个其他图像混合,应用任意数量的图像处理过滤器,将其转换为位图,并将其设置为屏幕背景。X11本身无法知道位图是如何获得的。我现在明白了。您是否知道,在使用该pixmap时,X是否在任何地方存储对该pixmap的引用?看来我得研究一下源代码才能找到答案。不!背景像素贴图是只写的。您可以设置它们,但无法获取它们。请参见
man XSetWindowBackgroundPixmap
。没有
XGetWindowBackgroundPixmap
。我明白了。查看氮的源代码,我注意到他们通过GTK将文件转换为位图,以便X使用。所以我假设当系统加载时,比如氮气或Feh程序,会将pixmap发送到X,是吗?@lyrae这是真的。他们加载图像,将其转换为pixmap(而不是位图,这与X11略有不同),并将该pixmap设置为根窗口的背景。