使用_NET_WM_STRUT 和_NET_WM_STRUT_PARTIAL(为了向后兼容)属性在X Window System 桌面边缘保留空间。
使用 PyGtk,您可以像这样设置这些属性,假设 self.window 是 gtk.Window 的一个实例:
self.window.get_toplevel().show() # must call show() before property_change()
self.window.get_toplevel().window.property_change("_NET_WM_STRUT",
"CARDINAL", 32, gtk.gdk.PROP_MODE_REPLACE, [0, 0, 0, bottom_width])
对上面数据参数[0, 0, 0, bottom_width]的说明:
此参数指定桌面屏幕每个边框的保留空间宽度,顺序为:[left, right, top, bottom]。所以[0, 0, 0, 50] 会在桌面屏幕底部为您的小部件保留 50 个像素。
这是一个简单的工作示例:
import gtk
class PyGtkWidgetDockExample:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_default_size(100, gtk.gdk.screen_height())
self.window.move(gtk.gdk.screen_width()-100, 0)
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
self.window.show()
self.window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32,
gtk.gdk.PROP_MODE_REPLACE, [0, 100, 0, 0])
app = PyGtkWidgetDockExample()
gtk.main()