<p><a href="https://gist.github.com/johnlane/351adff97df196add08a#file-dockbar-gtk3-py" rel="nofollow noreferrer">Here</a>是如何在Gtk3中执行此操作:</p>
<pre><code>display = Display()
topw = display.create_resource_object('window',
window.get_toplevel().get_window().get_xid())
topw.change_property(display.intern_atom('_NET_WM_STRUT'),
display.intern_atom('CARDINAL'), 32,
[0, 0, bar_size, 0 ],
X.PropModeReplace)
topw.change_property(display.intern_atom('_NET_WM_STRUT_PARTIAL'),
display.intern_atom('CARDINAL'), 32,
[0, 0, bar_size, 0, 0, 0, 0, 0, x, x+width-1, 0, 0],
X.PropModeReplace)
</code></pre>
<p>您需要以下导入:</p>
^{pr2}$
<p>我<a href="https://mail.gnome.org/archives/python-hackers-list/2017-February/msg00001.html" rel="nofollow noreferrer">confirmed via the mailing list</a>正如@ptomato所说,该函数是不可内省的,这意味着它在Python等内省绑定中不可用。在</p>
<hr/>
<p><strong>其他信息</strong></p>
<p>您可以用Ruby(gtk2或gtk3绑定)来实现这一点。您需要<code>require 'xlib-objects'</code>,然后,从(子类)<code>Gtk::Window</code>的实例:</p>
<pre><code>topw = XlibObj::Window.new(XlibObj::Display.new(':0'),
toplevel.window.xid)
XlibObj::Window::Property.new(topw, '_NET_WM_STRUT').set(
[0, 0, self.height, 0 ],
:CARDINAL)
XlibObj::Window::Property.new(topw, '_NET_WM_STRUT_PARTIAL').set(
[0, 0, self.height, 0, 0, 0, 0, 0, x, x+width-1, 0, 0],
:CARDINAL)
</code></pre>
<p>或者,您可以使用<code>xprop</code>通过<code>system</code>子shell执行此操作:</p>
<pre><code>xid = toplevel.window.xid
system %Q{xprop -id #{xid} -format _NET_WM_STRUT 32c \
-set _NET_WM_STRUT \
"0, 0, #{self.height}, 0"}
system %Q{xprop -id #{xid} -format _NET_WM_STRUT_PARTIAL 32c \
-set _NET_WM_STRUT_PARTIAL \
"0, 0, #{self.height}, 0, 0, 0, 0, 0, #{x}, #{x+width-1}, 0, 0"}
</code></pre>
<p>最后,要从命令行执行此操作:</p>
<pre><code>$ xprop -id 44040195 -format _NET_WM_STRUT_PARTIAL 32c -set _NET_WM_STRUT_PARTIAL "0, 0, 15, 0, 0, 0, 0, 0, 1600, 3519, 0, 0"
</code></pre>
<p>(其中<code>-id 44040195</code>指定它的窗口;忽略用鼠标选择窗口)</p>
<p>要从命令行查看设置,请执行以下操作:</p>
<pre><code>$ xprop _NET_WM_STRUT_PARTIAL _NET_WM_STRUT
</code></pre>