Tagged

Xlib

A collection of 3 posts

Linux

You Window Manager #3

在 X window 下要有半透明視窗效果,會需要至少 XComposite extension XDamange extension XFixes extension 用這些 extension 做半透明視窗功能的程式,就叫 Composite Manager (也是 X window client)。在如 metacity, mutter, compiz, kwin 中都有實現。 上面的 extension 中,一定要有 XComposite。它可以告訴 X window server 說:嘿,請把這個 window 的內容給我。那 X window server 就會把該 window 繪製動作 redirect (而非直接輸出到畫面上)

Linux

You Window Manager #2

在 Xlib 中,看 document 都會跟你說這個 function 有錯誤發生時候丟出如 BadAlloc 這樣的 error。但看 function prototype 又不一定有直接的 return value(因為動作的發生是 async 的,所以在 function return 時 error 可能還未發生),那,到底 error 是怎麼去接的?不接又會如何? 原來,在 Xlib 中提供了 XSetErrorHandler() function 可供設定 error callback。如果沒有設定這個 error callback,那 default 的行為是 dump error information 後

Linux

You Window Manger #1

最近在研究 X window 下怎麼寫個 composite manager,慢慢的記錄下過程。 雖然用習慣了 vala,但 xlib 的 binding 還很破,所以以下主要還是以 C 配合 xlib + glib (glib 非 X window programming 必要的) 完成。 首先,當然是 include xlib 的 header include 接著,開啟 display Display * display = XOpenDisplay(NULL); 參數傳入 NULL 時 XOpenDisplay() 會從環境變數 DISPLAY 取得 display string,例如