06 เมษายน 2551

KDE4.1-svn กับ compiz - kde4-window-decorator

ตั้งแต่เปลี่ยนมาใช้ KDE4.1-svn ได้ร่วมเดือนแล้วก็ติดปัญหาหลาย ๆ อย่างที่ตัวจัดการหน้าต่าง (kwin) ของ KDE4.1 มันยังไม่ได้ดังใจ เช่น


- ส่วนตัวแล้ว ถ้าขาดลูกเล่น Composite แล้วหงุดหงิด แบบเป็นคนติด Eye Candy อ่ะ :p

- ลูกเล่น Composite ของหน้าต่างยังอืด ๆ ทำงานช้า และบางทีก็ทำให้ KDE freeze ไปซะเฉย ๆ



เลยจำเป็นต้องหันมาใช้ compiz-fusion เจ้าเก่าเจ้าเดิม ที่ทำงานได้ดีบน KDE 4.0.x โดยตอนนั้นผมเลือกใช้ kde4-window-decorator เป็น WM เจ้าประจำ

ครั้นพอเปลี่ยนมาใช้ KDE4.1-svn ก็ปรากฏว่า เจ้า kde4-window-decorator ดันมีปัญหากับ KDE4.1 เสียแล้ว



- ถ้าเปิดหน้าต่างตั้งแต่ 2 หน้าต่างขึ้นไป จะไม่สามารถสลับหน้าต่างผ่านการคลิกเมาส์บนหัวหน้าต่างได้

- คลิกแล้วมันกลายเป็นการปรับขนาดหน้าต่างของตัวหน้าต่างที่ได้รับโฟกัสเป็นตัวแรกแทนซะงั้น

- ไล่ ๆ ดูบนอินเทอร์เน็ต ไม่พบคำตอบ แม้กระทั่งบนเว็บไซต์ของ compiz-fusion เอง ฤาจะไม่มีคนใช้ kde4-window-decorator กับ KDE 4.1-svn ???

- ตามไปถามใน IRC ทั้งที่ห้อง KDE และห้อง compiz ฝรั่งก็ตอบไม่ได้ (ไม่มีใครใช้แบบผม ???)



ถ้าให้เดาผมว่าน่าจะเป็นบั๊กที่ไลบรารีของ KDE 4.1 มากกว่า ก็ไปแจ้งให้ผู้พัฒนา KDE ทราบบน IRC แล้ว ตั้งแต่ 2 อาทิตย์ก่อน ไม่รู้เค้าลองหรือยังเห็นบอกว่ากำลังคอมไพล์ :-P



มันคันมันคาใจ พอแจ้งเสร็จก็เลยไล่แก้เองซะ แก้ที่ตัว kde4-window-decorator ของ compiz-fusion มันนี่แหละ ง่ายดีแต่ลืมมาบล็อกไว้ เผื่อมีคนอยากใช้อย่างผม

ผมแก้ที่ไฟล์ kde/window-decorator-kde4/decorator.cpp ในต้นฉบับของ compiz แก้แบบไม่เอาความสมบูรณ์เอาพอใช้ได้:-P ได้ผลลัพธ์ออกมาเป็นแพตช์ดังนี้ (ใช้กับ compiz-0.7.2)




diff -uNr compiz-0.7.2.orig/kde/window-decorator-kde4/decorator.cpp compiz-0.7.2/kde/window-decorator-kde4/decorator.cpp
--- compiz-0.7.2.orig/kde/window-decorator-kde4/decorator.cpp 2008-02-05 23:06:18.000000000 +0700
+++ compiz-0.7.2/kde/window-decorator-kde4/decorator.cpp 2008-04-06 19:32:19.000000000 +0700
@@ -598,10 +598,23 @@
xbe2.x = xbe->x - child->pos ().x ();
xbe2.y = xbe->y - child->pos ().y ();
}
-
- QApplication::x11ProcessEvent ((XEvent *) &xbe2);
-
- return true;
+ bool chk = xbe->button==1 && (xbe->x == xbe2.x && xbe->y == xbe2.y);
+ if (client->activeChild() != child) client->setActiveChild(child);
+ if (chk)
+ {
+ Qt::MouseButton mouseBtn = xbe->button==1 ? Qt::LeftButton : (xbe->button==3 ? Qt::RightButton : Qt::NoButton);
+ QPoint qp2 (xbe2.x, xbe2.y);
+ QMouseEvent qme (xevent->type==ButtonPress ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease,
+ qp2,
+ mouseBtn,
+ mouseBtn,
+ Qt::NoModifier);
+ QApplication::sendEvent (child, &qme);
+ return false;
+ }
+ else {
+ return QApplication::x11ProcessEvent ( (XEvent *) &xbe2);
+ }
}
} break;
case ClientMessage:



โดยยังมีบั๊กอยู่คือ

- ไม่ตอบสนองการดับเบิลคลิกที่หัวหน้าต่าง

- เมนูผุดจากการคลิกเมาส์ปุ่มขวาจะไม่แสดงค้างถ้าปล่อยปุ่มเมาส์ ต้องคลิกขวาค้างไว้เพื่อเรียกเมนู

- อื่น ๆ ที่ยังไม่รู้



เอาเป็นว่าผมได้ Eye Candy คืนมาละ ในขณะที่ยังได้ใช้กรอบหน้าต่างแบบ Oxygen ต่อไปได้อีกด้วย โฮ่ะ ๆ ๆ

พอใจแล้ว ไม่แก้เพิ่มแล้ว ไม่มีเวลา ใครว่าง ๆ แก้ให้สมบูรณ์ด้วยก็ดีครับ โค้ดยังห่วยเลยไม่ส่งกลับ compiz ขออภัย ลอล

Amarok SVN rev.793903 2008/04/06

ใช้ Amarok 2.0 alpha ตัว svn เดิม (rev ไหนหว่า จำมิได้แล้ว) มาพักนึงรู้สึกบั๊กยังเพียบ ๆ

ประกอบกับตอนนี้คำแปล Amarok ที่คุณหมอไรเดอร์ แปลไว้ใช้กับ KDE 3.5.x มันมีคำเพิ่มขึ้นมาอีกพอสมควร แล้วก็มี fuzzy อีกหนึ่งกระบุง

เลยลองไล่ ๆ แก้แล้วก็แปลเพิ่ม แต่ว่าคำมันไม่ตรงกับ Amarok ตัวที่ผมใช้อยู่อีกเยอะ ก็เลยดึงของสดมาจาก Amarok SVN เช่นเคย

ก็ปรากฏว่าคำแปลตรง ใช้ไล่แปลต่อได้ หึหึ


ไหน ๆ ก็ลองของสดแล้วก็เอามาให้ดูกันดีกว่าว่าของสด (svn-rev793903-20080406) มันเปลี่ยนอะไรไปมั่ง



  • มีแอพเพล็ตของพลาสมาเพิ่มเข้ามาแล้วหลายตัว....

  • แต่ (ดูภาพด้านล่างประกอบ) มันมืดตึ๊บ ดูไม่เห็นตัวหนังสือเลยน่ะสิ -_-!!

  • แสดงภาษาไทยในรายการเล่นได้เมื่อเพิ่มเพลง แต่....

  • เมื่อออกจากโปรแกรมแล้วเรียกโปรแกรมใหม่ มันดันแสดงเป็นตัวอะไรก็ไม่รู้ อ่านไม่ออก

  • บั๊กอีกกองพะเนิน สมแล้วที่ยังเป็น Alpha หึหึ

















:-)

Qt4.4-beta แพตช์ภาษาไทยถูกย้าย

แจ้งไว้ที่ Thai Linux/FOSS developers แล้ว


เนื่องจากตอนนี้ผมใช้แพตช์ที่
http://linux.thai.net/viewvc/viewvc.cgi/software/qt/x11-free-4.3.1/

มาใช้กับ Qt4.4 beta ไม่ได้เสียแล้ว เนื่องจากไฟล์ src/gui/text/qscriptengine.cpp มันไม่มีอยู่แล้ว -_-'

ไล่ตามไปดูเห็นพวกการเรนเดอร์ฟอนต์ภาษาต่าง ๆ ถูกย้ายไปที่src/3rdparty/harfbuzz กันหมดแล้ว

และไม่ถูกคอมไพล์รวมเข้ากับ Qt ซะด้วย เฮ้อ...



ไล่แปล KDE4.1-l10n-th ก็กินเวลาผมแทบหมดแล้ว ไหนตอนนี้ยังต้องเร่ง openSUSE-l10n ให้ทันก่อนออกรุ่น 11.0 ด้วย เฮ้ออออ (อีกที)



เอาใจช่วยทีมคุณอ๊อทให้แก้ได้ไว ๆ ครับ ผมรอใช้อยู่เน้อ แหะ ๆ