Pages

11/01/2010

Compiz to Aero Snap

From: http://www.clickonf5.org/linux/use-aero-snap-windows7-feature-ubuntu/6956

วิธีทำให้ Ubuntu + Compiz + Wmctrl ใช้งานไ้ด้เหมือนกับ Windows7's Aero Snap
ก่อนอื่นลง compizconfig-settings-manager และ wmctrl ก่อน
ด้วยคำสั่ง
sudo apt-get install compizconfig-settings-manager wmctrl
ถ้าลงcompizconfig-setting-manager (ccsm) ไว้อยู่แล้วก็ลงแค่ wmctrl ก็พอ

คราวนี้ก็เปิด ccsm ขึ้นมา รันจาก command เลยก็ได้ หรือจะเข้า System--> Preferences --> compizconfig-settings-manager ก็ได้

เข้าที่ commands และใส่ คำสั่งเหล่านี้ลงไปในแต่ละช่อง
Command0
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1

Command1
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

Command2
wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz


คำสั่ง command0 = ตั้งให้หน้าจอปัจจุบันชิดซ้ายแล้วกว้างครึ่งจอ
คำสั่ง command1 = ตั้งให้หน้าจอปัจจุบันชิดขวาแล้วก็กว้างครึ่งจอ
คำสั่ง command2 = ตั้งให้หน้าจอปัจจุบันขยายเต็มจอ ทั้งแนวตั้งและแนวนอน

ที่เหลือก็คือ ถ้าให้เหมือนมากขึ้น  เวลา Drag ไปชิดซ้าย ขวา บน แล้วมันจะทำตามคำสั่งต่างๆนี้
ก็ไปตั้งที่แถบ Edge Binding ให้แต่ละคำสั่งไปชิดมุมไหนก็ตั้งไป


และสุดท้าย Shortcut Key
บน Windows7 กด Win+Left , Win+Right ได้ และจะสามารถตั้งจอให้ซ้ายขวาได้
เราก็เอามั่ง ด้วย Key Binding

คราวนี้ล่ะเหมือนเด๊ะๆละ :D


Fix:  เนื่องจาก compiz's  Edge Trigger จะขึ้น แม้เราจะไม่ drag อะไรไปที่ขอบเลยก็ตาม
คือแค่เอาเมาส์ไปแกว่งๆ แถวๆนั้น ก็จะมีการ trigger คำสั่งนี้ขึ้นมาทำงานแล้ว
ดังนั้นวิธีแก้ ก็คือ  (จากNervengift ใน http://www.omgubuntu.co.uk/2009/11/get-aero-snap-in-ubuntu/)
คือการ ใส่ คำสั่งนี้ครอบ คำสั่งต่างๆเข้าไป
if [ `xinput list --long | grep "Button state" | head -n 1 | cut -c 17` = "1" ] ; then    คำสั่งยาวๆนั่น;     fi
คำสั่งนี้เป็นการเช็คว่ามีการกดปุ่มเมาส์ซ้ายระหว่างการขยับเมาส์เข้าไปที่ขอบของจอรึเปล่า ซึ่งถ้ากำลังdrag อะไรซกัอย่างอยู่
ค่อยทำงานคำสั่งนี้

Fix2: หน้าจอเปลี่ยนเร็วไป ควรเข้าไปที่ CCSM หน้าที่เป็น General Options และตั้งให้ Edge Trigger Delay เป็น 500 ms เพื่อที่จะให้ พอลากหน้าจอไปถึงตรงนั้นแล้ว รอซักครึ่งวินาที ค่อยเปลี่ยนทำsnap

Fix3: ถ้าแก้ปัญหาด้วย Fix1 ไปแล้ว จะทำให้ไม่สามารถใช้ Keyboard shortcut ในการสั่งงานได้ (เพราะว่ามันเช็ค mouse click) ดังนั้น ก็แก้ปัญหาแบบง่ายๆด้วยการเพิ่ม command ขึ้น เป็ command 3, command 4, command 5 เพื่อทำงาน แบบไม่มีคำสั่ง เช็ค IF และก็ย้าย Key Binding ไปเชื่อม Super+Left/Right กับ Command3,4,5 นั่นแทน

No comments:

Post a Comment