Tagged

Programming

A collection of 8 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,例如

Programming

git + ssh 連線問題解法

在使用 git + ssh + key pair 認證時, 如果認證失敗只有簡單的 permission denied, 問題會很不好找. 這時候, 如果能傳入參數給 ssh, 如 -v, 至少就有更詳細的記錄印在畫面上. 好在, git 會去看 GIT_SSH 環境變數, 指向一 shell script 後, 一些額外的參數都可以放在其中. 例如 $ echo 'exec ssh -v "[email protected]"' > /tmp/ssh-wrap $ chmod +x /tmp/ssh-wrap 接著執行 git $ GIT_SSH=/tmp/ssh-wrap git clone

Programming

WindowsEmbedded::Touch panel driver

在 windows CE 6.0,GWES 從 .exe 改成了 .dll,並且被放進了 kernel 中。主要的考量點是效能的問題,如此每當使用 GWES 提供的 servier 時 context switch 的次數會減少一次,在 kernel 中只要直接執行一次 function call 即可,不需要再將 request 轉出至另一個 service procee 了。 不過,相對應的,GWES 用到的 driver 也就必須要一起被放進 kernel space 中,例如: touch.dll 為了減少 load-time relocation 的時間,