3
我正在使用python的xlib綁定編寫窗口管理器,我(最初)嘗試以更pythonic的方式模仿dwm的行爲。我已經獲得了我所需要的大部分內容,但是我無法使用內置的窗口邊框功能來指示窗口焦點。在Python xlib中繪製窗口邊框
假設我有一個Xlib的窗口類的實例,並且我正在閱讀文檔,這應該做我想做的事情(至少現在) - 將預先存在的窗口的窗口邊框設置爲花哨的顏色並將邊框寬度設置爲2px。
def set_active_border(self, window):
border_color = self.colormap.alloc_named_color(\
"#ff00ff").pixel
window.change_attributes(None,border_pixel=border_color,
border_width = 2)
self.dpy.sync()
不過,我什麼也沒有從這個 - 我可以添加打印語句來證明我的程序確實運行,我與該事件相關聯的回調函數,但我得到絕對的邊界上沒有顏色變化。任何人都可以確定我在這裏錯過了什麼嗎?如果它有幫助,我可以將pastebin更完整的示例。我並不確定它會如何,因爲這是處理邊界的唯一一點。
Python Xlib綁定似乎是底層Xlib函數的直接轉換。在Xlib中,XChangeWindowAttributes()不接受border_width屬性。窗口管理器通常通過調用XConfigureWindow()或XSetWindowBorderWidth()來建立border_width。 – ottomeister 2012-04-22 05:37:39
Gaah。我想說的是:如果你還沒有這樣做,請在調用change_attributes()之前,在你的set_active_border()函數中調用window.configure(border_width = 2)。 (我沒有看到XSetBorderWidth()的Python綁定。)XSetWindowBorderWidth()。 – ottomeister 2012-04-22 05:46:17
我有一個調用配置(border_width = 2)在那裏之前,但它被註釋掉。沒有辦法似乎工作。我試過: window.configure(border_width = 2); window.change_attributes(...)和只有window.change_attributes()。仍然沒有骰子。當我有更多信息時,我會報告回來。 – bbenne10 2012-04-22 13:16:29