Theppitak's blog

My personal blog.

28 พฤศจิกายน 2555

My Alternative Desktops (3) - Xfce

จาก E17 และ LXDE ก็ถึงคราวของ Xfce ละ

Xfce 4 วางตัวไว้เป็น desktop environment ที่ใช้ GTK+ เป็นหลัก จึงเป็นทางเลือกที่ใกล้เคียงกับ GNOME แต่เบากว่า ผมเองเคยใช้แบบโฉบ ๆ เมื่อหลายปีก่อน แล้วก็กลับไปใช้ GNOME เหมือนเดิมเพราะยังมีพันธกิจกับ GNOME อยู่

หน้าจอที่ปรับแต่งจนสามารถใช้สองจอแล้ว เป็นแบบนี้:

Xfce dual monitor screenshot

ซึ่งผ่านการปรับแต่งดังนี้

สองจอ

Xfce ก็เหมือนกับ LXDE ตรงที่เครื่องมือตั้งค่าจอภาพ คือ xfce4-display-settings ตั้งได้แค่การเปิด/ปิดจอภาพ ความละเอียด ความถี่การรีเฟรช และบวกการหมุนจอและกลับซ้ายเป็นขวาได้ด้วย แต่ไม่สามารถตั้งค่าการต่อชนพื้นที่จอได้

Xfce4 Display Settings

ก็ต้องกลับไปพึ่ง ARandR เหมือนคราว LXDE (อ่านวิธีการได้จาก ตอนที่แล้ว) เพียงแต่สถานการณ์หลังจากนั้นของ Xfce ดีกว่า LXDE มาก เพราะ Xfce รองรับการใช้สองจอเป็นอย่างดี ตัวพาเนลวางพาดลงในจอเดียวอย่างรู้งาน แถมสามารถตั้งพื้นหลังแยกต่างกันสองจอได้อีกต่างหาก

Xfce4 Background Settings

เรียกได้ว่า กลไกภายในรองรับการใช้สองจอเต็มที่แล้ว ยังขาดก็แต่การตั้งค่าจอภาพในเครื่องมือตั้งค่า!

สำหรับ Xfce ไม่จำเป็นต้องตั้งปุ่มลัดสำหรับสลับการใช้จอเดียว/สองจอ สามารถบังคับใช้สองจอได้เลย ถ้าถอดจอนอกออก มันจะปรับ layout เป็นจอเดียวโดยอัตโนมัติ และเมื่อต่อจอนอกเข้ามาใหม่ มันก็จะปรับเป็นสองจอโดยอัตโนมัติเช่นกัน ดังนั้น สคริปต์ที่ต้องใช้จากคราวที่แล้วจึงมีเพียง dual.sh เท่านั้น

เนื่องจากอาจมีการกำหนดอย่างอื่นอีกในอนาคตนอกเหนือจากเรื่องจอภาพ ผมจึงไม่เรียก dual.sh ตรง ๆ แต่จะเรียกผ่านสคริปต์ ~/bin/xfce-init ที่เขียนขึ้นเองแทน:

$ cat > ~/bin/xfce-init <<EOF
#!/bin/sh

$HOME/.screenlayout/dual.sh
EOF
$ chmod +x ~/bin/xfce-init

จากนั้น ก็ไปกำหนดให้วาระของ Xfce เรียกสคริปต์นี้ในตอนเริ่มด้วย โดยใช้เมนู Settings > Session and Startup > Application Autostart

Xfce Session Startup

เกจ์วัดต่าง ๆ

Xfce ปกตินั้น ไม่มีเครื่องมือแสดงสถานะเครื่องอะไรมากนัก แต่มีปลั๊กอินเพิ่มเติมจาก Xfce Goodies ที่สามารถติดตั้งเพิ่มเติมได้ มีแพกเกจใน Debian ด้วย โดยถ้าติดตั้ง xfce4-goodies ก็จะได้ปลั๊กอินทั้งหมด แต่ผมเลือกติดตั้งเฉพาะที่ใช้ คือ:

  • xfce4-cpugraph-plugin (แสดงโหลดของซีพียูคอร์ต่าง ๆ พร้อมกราฟ)
  • xfce4-netload-plugin (แสดงขีดปริมาณข้อมูลเครือข่ายขาเข้า-ออก)
  • xfce4-places-plugin (เมนูไดเรกทอรีต่าง ๆ สำหรับสั่งเปิดด้วย file manager หรือเทอร์มินัลก็ได้)
  • xfce4-sensors-plugin (แสดงขีดอุณหภูมิต่างของซีพียู ฮาร์ดดิสก์)
  • xfce4-systemload-plugin (แสดงขีดการใช้ทรัพยากรต่าง ๆ ของระบบ)
  • xfce4-weather-plugin (แสดงรายงานอากาศ)

อื่น ๆ

  • ธีมของวิดเจ็ต (Settings > Appearance > Style หรือ xfce4-appearance-settings)
  • ธีมของหน้าต่าง (Settings > Window Manager หรือ xfwm4-settings) พร้อมกับตั้งให้ snap หน้าต่างกับขอบหน้าต่างอื่นด้วย (Advanced > Windows snapping > Snap windows to other windows)
  • ภาพพื้นหลัง (Settings > Desktop > Style หรือ xfdesktop-settings)
  • ปุ่มลัดสำหรับเรียกโปรแกรม (Settings > Keyboard > Application Shortcuts หรือ xfce4-keyboard-settings)
  • Xfce สามารถเปิดใช้ compositing ได้ถ้าต้องการ (Settings > Window Manager Tweaks หรือ xfwm4-tweaks-settings ที่แท็บ Compositor) แต่ตอนนี้ยังก่อน

ปัญหา Slow key

ผมใช้ Xfce อยู่หลายวัน ก็รู้สึกสบายดี เป็นธรรมชาติ มีเฟอร์นิเจอร์ที่ต้องการครบครัน แต่มีเรื่องกวนใจอยู่เรื่องหนึ่ง คือถ้าผมกดปุ่ม Shift ค้างเกิน 10 วินาที เช่น อาจเป็นตอนเลือกด้วยเมาส์ด้วยการกด Shift ประกอบ ปรากฏว่าจะมี notification ว่า Slow key is enabled ซึ่งเป็นการเปิดฟังก์ชันสิ่งอำนวยความสะดวก (accessibility) ป้องกันการรัวปุ่มสำหรับคนที่นิ้วมีปัญหายกขึ้นเร็วไม่ได้ แต่ละปุ่มต้องกดค้างประมาณ 1 วินาทีถึงจะได้ตัวอักษร ซึ่งทำให้ผมแทบพิมพ์อะไรไม่ได้เลย ต้องไปคอยสั่งปิดที่ Settings > Accessibility ด้วยการสั่งเปิดครั้งหนึ่ง แล้วสั่งปิดอีกครั้ง (เพราะค่าตั้งตรงนั้นก็ไม่ได้เปิดอยู่)

จาก Debian #657969 ทำให้ได้รู้ว่าเป็นปัญหาเฉพาะกับผู้ที่เข้าระบบผ่าน GDM เท่านั้น โดย GDM จะเปิดฟังก์ชัน AccessX ไว้ ทำให้มีการตรวจสอบพฤติกรรมแป้นพิมพ์เพื่อเปิดใช้สิ่งอำนวยความสะดวก และความเห็นหนึ่งใน RedHat #816764 ได้บอกว่าได้ติดต่อนักพัฒนาต้นน้ำแล้ว ซึ่งต้นน้ำได้แก้ปัญหานี้ทันทีใน git และผู้ดูแลแพกเกจ Xfce ใน Debian กำลังปรึกษา release team ว่าสามารถแก้ปัญหานี้ใน Wheezy ที่กำลัง freeze อยู่ได้หรือไม่ แต่ในระหว่างนี้ ผู้ใช้สามารถแก้ขัดได้โดยใช้คำสั่ง xkbset -a

$ sudo apt-get install xkbset
$ xkbset q | grep Accessibility
Accessibility Features (AccessX) = On
$ xkbset -a
$ xkbset q | grep Accessibility
Accessibility Features (AccessX) = Off

ก็จัดการเพิ่มคำสั่งลงใน ~/bin/xfce-init ของผมเสีย:

$ vi ~/bin/xfce-init
#!/bin/sh

$HOME/.screenlayout/dual.sh
xkbset -a

ปัญหาก็หายเป็นปลิดทิ้ง

ประเมินผล

  • เรื่องการใช้สองจอ Xfce ทำได้ดี ยกเว้นการตั้งค่าที่ยังต้องใช้ ARandR ช่วย แต่หลังจากนั้นก็ไหลลื่นตลอด ในแง่นี้ถือว่า Xfce ทำได้ดีกว่า LXDE แต่ก็ยังด้อยกว่า E17
  • การแสดงสถานะการทำงานของเครื่อง Xfce มีให้ครบตามความต้องการ
  • นาฬิกาและปฏิทิน พาเนลของ Xfce ปกติมีแต่นาฬิกา ไม่มีปฏิทิน ต้องเรียก Orage ขึ้นมาต่างหาก ซึ่งจะได้ปฏิทินที่เชื่อมรวมกับ evolution-data-server เกินความต้องการไปหน่อย แต่ก็ถือว่ามีให้ใช้
  • flash drive เสียบแล้วเมานท์ได้ ไม่มีปัญหา
  • suspend เครื่องได้ ล็อคหน้าจอได้
  • workspace จัดเรียง 2x2 ได้ เปลี่ยน workspace ด้วยแป้นพิมพ์ได้รอบทิศเหมือน GNOME 2
  • การใช้งานโดยรวม ให้ความรู้สึกเหมือน GNOME ที่คุ้นเคย ทำงานได้ไหลลื่นไม่มีสะดุด

เมื่อเทียบกันระหว่าง E17, LXDE และ Xfce แล้ว ผมชอบ Xfce ที่สุด แม้การเซ็ตจอจะขลุกขลักกว่า E17 แต่หลังจากนั้นมันอัตโนมัติหมด ถือว่ายอมรับได้ ฟีเจอร์ต่าง ๆ ก็มีครบตามที่ต้องการใช้ และยังมีความคาบเกี่ยวกับ GNOME อยู่มาก ทำให้ยังเชื่อมโยงกับงานเดิมที่ทำกับ GNOME ได้อยู่

ส่วนอีกสองตัวนั้น ผมชอบ E17 ในแง่ความเนี้ยบของกราฟิกส์ และความสมบูรณ์ของการพัฒนา ติดแต่ว่ามอดูลที่ให้มีน้อยไปหน่อย (มี third party อยู่บ้าง แต่ยังไม่มีเป็นแพกเกจใน Debian) มีปัญหาการ suspend เครื่อง และการใช้ toolkit ที่แตกต่างจาก GNOME ก็ทำให้เชื่อมโยงกับงานเก่าได้ลำบาก

ส่วน LXDE นั้น ผมชอบในความเบา ความเร็ว และการใช้ฟีเจอร์ร่วมกับ GNOME บางส่วน แต่ติดที่ความขาดแคลนต่าง ๆ โดยเฉพาะการรองรับสองจอที่ยังขาด

ตอนนี้ ผมก็เลยยึด Xfce เป็นที่พักพิงมาระยะหนึ่งแล้ว app บางตัวที่เคยเลือกใช้เพราะมัน เชื่อมรวมกับ GNOME ได้ดี จนพอมาใช้ Xfce แล้วกลายเป็น ดีเกินไป โดยมีอะไรประหลาดโผล่มาเยอะ ก็เปลี่ยนไปใช้ตัวอื่น เช่น เปลี่ยนจาก empathy กลับมาหา pidgin เพื่อหลบจากไดอะล็อกทั้งหลายของ gnome-keyring ส่วน app อื่น ๆ ก็คงจะพิจารณาเป็นกรณีไป

อ้อ! กลับมาที่การเปรียบเทียบการใช้หน่วยความจำเสียหน่อย.. ระบบที่ปรับแต่งแล้วของผมใช้หน่วยความจำดังนี้ (วัดด้วยการรีบูต เปิดเทอร์มินัล 1 หน้าต่าง และเรียก gnome-system-monitor ขึ้นมาอ่านหน่วยความจำเหมือนกันทุกตัว เพื่อให้โหลดที่เพิ่มจากระบบเปล่า ๆ มีพอ ๆ กัน):

E17 193 MB
LXDE 203 MB
Xfce 252 MB
GNOME Fallback 456 MB
GNOME Shell 544 MB

ที่ E17 กลายเป็นแชมป์แทนนั้น เกิดจากการ unload มอดูลที่ผมไม่ได้ใช้ เช่น Gadget (desklet)

Update: Xfce ที่ผมทดสอบ เป็นรุ่น 4.8 ยังไม่สามารถเซ็ตสองจอผ่านเครื่องมือของ Xfce เองได้ แต่ไปเห็นข่าวว่า Xfce 4.12 สามารถเซ็ตได้แล้ว ก็คงรอรุ่นใหม่ครับ

ป้ายกำกับ: ,

27 พฤศจิกายน 2555

My Alternative Desktops (2) - LXDE

ตอนที่แล้ว ผมพูดถึงการทดลองเดสก์ท็อปทางเลือกกับ E17 ไปแล้ว ตอนนี้ก็จะพูดถึง LXDE บ้าง

LXDE เขาอ้างว่าเป็น desktop environment ที่กินทรัพยากรน้อยที่สุด ซึ่งจากการทดลองวัดเทียบหน่วยความจำที่ใช้ ก็กินหน่วยความจำต่ำที่สุดในบรรดาตัวเลือกต่าง ๆ จริง แต่ตำแหน่งแชมป์นี้ ก็มาจากความจำกัดจำเขี่ย ให้มาเท่าที่จำเป็นจริง ๆ

หน้าจอที่ผมปรับแต่งจนสามารถใช้สองจอได้แล้ว เป็นแบบนี้:

LXDE dual monitor screenshot

พูดถึงการปรับแต่งก่อน

สองจอ

ด่านแรกก็จอดเสียแล้ว ปรากฏว่า LXDE เป็นเดสก์ท็อปที่รองรับการใช้สองจอได้แย่ที่สุดในบรรดาเดสก์ท็อปที่ทดลองใช้ และจากคำตอบหนึ่งของนักพัฒนา ทำให้รู้ว่าเรื่องนี้กว่าจะแก้คงอีกนาน

LXDE มีเครื่องมือชื่อ lxrandr สำหรับตั้งการต่อจอภาพเหมือนกัน แต่สามารถทำได้แค่เปิด/ปิดจอ และกำหนดความละเอียดของแต่ละจอเท่านั้น เมื่อเปิดใช้สองจอแล้ว สิ่งที่ได้คือการแสดงเนื้อหาที่เหมือนกันเท่านั้น ไม่สามารถเอาเนื้อที่จอมาเรียงต่อกันได้

lxrandr

วิธีแก้คือต้องกลับไปหา xrandr หรือถ้าหรูหน่อยก็ ARandR ซึ่งเป็น GUI ที่ช่วย detect ช่องต่อจอภาพ กำหนดความละเอียดและการวางพื้นที่ แล้วเขียนเป็น shell script สำหรับสั่ง xrandr อีกทีหนึ่ง

ARandR

เมื่อสั่งบันทึก ก็จะได้ shell script อยู่ในไดเรกทอรี ~/.screenlayout/ เนื่องจากผมต้องใช้ทั้งจอเดียวและสองจอ ผมจึงตั้งค่าสองแบบ ตั้งชื่อสคริปต์เป็น dual.sh สำหรับการใช้สองจอ และ single.sh สำหรับการใช้จอเดียว

จากนั้นก็กำหนด key binding สำหรับสั่งเมื่อจะใช้จอเดียวหรือสองจอ

$ vi ~/.config/openbox/lxde-rc.xml

เพิ่ม element เหล่านี้ลงใน element <keyboard>:

  <keybind key="W-2">
    <action name="Execute">
      <command>~/.screenlayout/dual.sh</command>
    </action>
  </keybind>
  <keybind key="W-1">
    <action name="Execute">
      <command>~/.screenlayout/single.sh</command>
    </action>
  </keybind>

ออกจากระบบแล้วเข้าใหม่ จากนั้น เมื่อจะใช้สองจอ ก็กด Super+2 เมื่อจะใช้จอเดียวก็กด Super+1 แต่ช้าก่อน.. ปัญหายังไม่หมดแค่นั้น

LXDE ไม่รู้จักการใช้สองจอ รับรู้แค่ว่ามีจอเดียวที่พื้นที่กว้างเท่ากับสองจอรวมกันตามที่ xrandr บอกเท่านั้น พาเนลที่ตั้งไว้ให้ขยายเต็มความกว้างจอจึงวางพาดตลอดแนวสองจอ ครึ่งซ้ายอยู่จอหนึ่ง ครึ่งขวาอยู่อีกจอ ซึ่งไม่ใช่สิ่งที่ผมต้องการ ตาผมไม่สามารถกวาดมองได้กว้างขนาดนั้น และโดยเฉพาะเมื่อผมจัดวางโดยให้ขอบด้านล่างของจอตรงแนวกัน และย้ายพาเนลไปไว้ขอบบน ปรากฏว่าพาเนลด้านบนซีกขวาที่พาดผ่านพื้นที่ว่างนั้น มันแหว่งหายไปเสียเฉย ๆ ไม่สามารถมองเห็นหรือลากเมาส์ไปหาได้ สิ่งที่ผมต้องการก็คือ ให้มันพาดขอบบนของจอซ้ายเท่านั้น จอขวาใช้เป็นพื้นที่ขยาย ไม่ต้องมีพาเนล

ข่าวร้ายคือ พาเนลของ LXDE ไม่มีวิธีตั้งค่าตรง ๆ ให้เป็นแบบนั้น แต่ข่าวดีก็คือ มันยอมให้กำหนดความกว้างเป็นพิกเซลได้ ผมก็จัดการกำหนดให้มันกว้างเท่ากับความกว้างของจอซ้าย คือ 1280 พิกเซลเสีย เท่านี้ก็เรียบร้อย

ปัญหาที่เหลือคือ จอนอกกับจอโน้ตบุ๊กความกว้างไม่เท่ากัน ความกว้างของพาเนลต้องขึ้นอยู่กับว่ากำลังใช้จอเดียวหรือสองจอ ก็ต้องกลับไปปรับปรุงสคริปต์ของปุ่มลัดให้ปรับความกว้างของพาเนลด้วย ผมไม่อยากเพิ่มโค้ดลงที่สคริปต์ใน ~/.screenlayout/ โดยตรง เพราะถ้ามีการปรับใหม่ด้วย ARandR มันก็จะถูกทับหายไป ดังนั้นจึงเขียนสคริปต์ต่างหากให้มาเรียกสคริปต์ใน ~/.screenlayout/ ตามด้วยการปรับความกว้างพาเนลแทน:

$ cat > ~/bin/lxde-dual <<EOF
#!/bin/sh

# Set dual monitor RandR
$HOME/.screenlayout/dual.sh

# Set panel width
sed -i 's/width=.*/width=1280/' $HOME/.config/lxpanel/LXDE/panels/panel
lxpanelctl restart
EOF
$ chmod +x ~/bin/lxde-dual

และ

$ cat > ~/bin/lxde-single <<EOF
#!/bin/sh

# Set single monitor RandR
$HOME/.screenlayout/single.sh

# Set panel width
sed -i 's/width=.*/width=1366/' $HOME/.config/lxpanel/LXDE/panels/panel
lxpanelctl restart
EOF
$ chmod +x ~/bin/lxde-single

จากนั้นก็กลับไปแก้ ~/.config/openbox/lxde-rc.xml อีกครั้ง ให้มาเรียกสองสคริปต์นี้:

  <keybind key="W-2">
    <action name="Execute">
      <command>~/bin/lxde-dual</command>
    </action>
  </keybind>
  <keybind key="W-1">
    <action name="Execute">
      <command>~/bin/lxde-single</command>
    </action>
  </keybind>

คราวนี้ เมื่อกดปุ่มลัดทั้งสอง ก็จะได้ทั้งการใช้จอเดียว/สองจอ และพาเนลก็จะกว้างเท่ากับจอซ้ายสุดที่มีด้วย

ยังมีเรื่องภาพพื้นหลังที่ LXDE ไม่มองแยกจอกันอีก ต้องหาภาพที่กว้างเท่ากับสองจอรวมกันถึงจะพอดี แต่ผมปล่อยไว้งั้นแหละ ใช้วิธีเรียงแบบปูกระเบื้องต่อกันเอา ภาพหน้าจอของ LXDE จึงดูอัปลักษณ์นิดหน่อย

จบแล้ว.. นี่เพิ่งเรื่องต่อสองจอเท่านั้นนะ ยังไม่นับตอนที่ไปต่อโปรเจกเตอร์แล้วความละเอียดโปรเจกเตอร์เป็นอย่างอื่นอีก แค่คิดก็มันแล้ว ถึงตอนนั้นค่อยว่ากันอีกที

การปรับแต่งทั่วไป

  • กำหนดธีมของ GTK+ ให้เป็น Adwaita (ปรับแต่งพื้นโต๊ะ > Customize Look and Feel)
  • กำหนดธีมของ Openbox window manager (ปรับแต่งพื้นโต๊ะ > Openbox Configuration Manager)
  • เปลี่ยนภาพพื้นหลัง (คลิกขวาที่พื้นโต๊ะ เลือก Desktop Preferences)
  • ปรับพาเนล เพิ่ม launcher, เพิ่มแอพเพล็ต:
    • Battery Monitor
    • Network Status Monitor
    • CPU Usage Monitor

ประเมินผล

  • เรื่องการใช้สองจอ LXDE ทำได้แย่ที่สุด เรียกว่าไม่รองรับเลยจะดีกว่า เพราะทุกอย่างได้มาจากการแฮ็กเอาทั้งนั้น
  • การแสดงสถานะการใช้งานเครื่อง LXDE ขาดแคลนเอามาก สิ่งที่มีให้มีเพียงขีดประจุไฟแบตเตอรี่, สถานะเครือข่าย และการใช้ซีพียูเท่านั้น แต่ยังถือว่าดีกว่า E17 อยู่หน่อยหนึ่ง อย่างน้อยก็สามารถแสดงสถานะเครือข่ายได้
  • นาฬิกาและปฏิทิน โอเค คือใช้วิดเจ็ตของ GNOME เลย เสียอยู่อย่างคือตัวเลขบอกเวลาจะล็อคไว้เป็นสีขาวเสมอ ซึ่งทำให้มองตัวเลขไม่เห็นเมื่อเปลี่ยนสีพื้นของพาเนลเป็นสีอ่อน
  • thumb drive เสียบแล้วเมาทน์ได้ ถือว่าโอเค
  • suspend โน้ตบุ๊กได้ ไม่มีปัญหา
  • workspace วางเรียงได้แบบแถวเดียวเท่านั้น จัดเรียง 2x2 ไม่ได้
  • UI ทำแบบพื้นฐานที่สุด launcher คลิกแล้วไม่ยุบ แต่เรียกโปรแกรมให้ โดยเคอร์เซอร์เมาส์ไม่มีอะไรบ่งบอกว่ากำลังโหลดอยู่ (ดูไฟฮาร์ดดิสก์เอา)
  • การล็อคหน้าจอ ยังมีปัญหา เนื่องจากอิงอาศัย xscreensaver หรือ gnome-screensaver แต่ไม่มีช่องทางเรียกดีมอนของทั้งสองขึ้นมารอ (คงต้องแฮ็กเองอีกแล้ว)

กล่าวโดยสรุป LXDE เป็นเดสก์ท็อปที่บางเบา โหลดเครื่องน้อย แต่ฟีเจอร์ต่าง ๆ ก็น้อยตามไปด้วย การรองรับสองจอเป็นปัญหาใหญ่ที่อาจทำให้ผมทำงานลำบากเวลาเคลื่อนย้ายไปที่ต่าง ๆ การขาดอินเทอร์เฟซต่าง ๆ ทำให้ยังต้องอาศัยการแฮ็ก จึงไม่เหมาะที่จะไปแนะนำให้ชาวบ้านใช้

ป้ายกำกับ: ,

26 พฤศจิกายน 2555

My Alternative Desktops (1) - E17

สองเดือนก่อน ผมได้ซ้อมหนีภัย GNOME Fallback ถูกกำจัด ด้วยการพยายามปรับแต่ง GNOME Shell จนสามารถทนใช้มันได้ แต่หลังจากนั้นไม่นาน (ตั้ง 20 วันแน่ะ) ผมก็ต้องยกธงขาว และ กลับไปใช้ Fallback ตามเดิม เพราะยังคงรำคาญ animation เงาดำ และความหน่วงต่าง ๆ ที่เกิดขึ้นใน GNOME Shell จนกระทั่งไฟมาลนก้นอีกครั้ง เมื่อทีม GNOME ได้ผลสรุปว่าจะตัด Fallback mode ทิ้งจริง ๆ แม้ต่อมาจะมีข่าวว่า จะยังคงจัดเตรียม "Classic mode" ใน GNOME Shell ให้ โดยผ่าน extension ต่าง ๆ ที่จะออกพร้อม GNOME อย่างเป็นทางการโดยไม่ให้มีช่วงรออัปเกรดก็ตาม มันก็ไม่ได้แก้ปัญหาความรำคาญของผมได้อยู่ดี

เพราะฉะนั้น ก็ได้เวลาลงมือปฏิบัติจริงแล้ว ไม่ใช่แค่ทดลองอีกต่อไป ทางเลือกต่าง ๆ ที่ผมทดลองก็มี E17, LXDE และ Xfce ก็เลยจะบันทึกการทดลองเป็นรายตัวไป

ก่อนอื่น problem definition ของผมคือ:

  • การใช้สองจอ ผมเสียบจอเพิ่มเมื่ออยู่บ้าน ใช้จอเดียวเมื่อออกไปข้างนอก และหลายครั้งต้องต่อโปรเจกเตอร์เพื่อนำเสนองาน ดังนั้น เดสก์ท็อปต้องรองรับการใช้สองจอสลับกับจอเดียวอย่างสะดวกสบาย
  • การแสดงสถานะการใช้งานต่าง ๆ เช่น เครือข่าย ซีพียู หน่วยความจำ อุณหภูมิของเครื่องที่จุดต่าง ๆ ซึ่งอันหลังสุดนี่สำคัญมาก เนื่องจากเครื่องผมร้อนง่าย และระบบมักจะปิดตัวเมื่อเครื่องร้อน
  • นาฬิกาและปฏิทิน เป็นแอพเพล็ตที่ขาดไม่ได้เวลาทำงาน
  • flash drive ควรสามารถเสียบแล้วเมานท์ให้ทันที
  • ไม่มี animation หวือหวา ไม่มี edge tiling ไม่มี top-left hot corner งี่เง่าเหมือน GNOME Shell
  • มีพาเนลสำหรับวางแอพเพล็ตและ launcher เป็นแถบเล็ก ๆ และ launcher ต้องไม่เป็น dock (กล่าวคือ ทำให้ตัด WindowMaker และเหล่า GNUstep ออกจากจอเรดาร์ไปได้ รวมทั้ง GNOME Shell และ Unity ด้วย)

E17

เริ่มที่ตัวแรก คือ E17 เพื่อนเก่าสมัยเตาะแตะกับลินุกซ์ เดสก์ท็อปแบบสองจอที่ผมปรับแต่งแล้วเป็นอย่างนี้ (ซีกซ้ายคือจอนอก ซีกขวาคือจอโน้ตบุ๊ก):

E17 dual monitor screenshot

การปรับแต่งทั่วไป

ในการเรียกครั้งแรก จะมี wizard ให้ตั้งค่าเริ่มต้น เช่น จะใช้ compositing หรือไม่ เลือกภาษาที่จะใช้ (ยังไม่มีภาษาไทย) ฯลฯ ซึ่งเมื่อเซ็ตเสร็จแล้ว มันจะสร้างไดเรกทอรี ~/.e/ ที่เก็บค่า config ต่าง ๆ ให้ ดังนั้น ถ้าอยากให้เริ่ม wizard ใหม่ ก็เพียงแต่ลบไดเรกทอรีนี้ หรือเปลี่ยนชื่อหลบ แล้วเข้าระบบใหม่

ผมลองเปิดโหมด composition ใช้อยู่พักหนึ่ง แรก ๆ ก็ตื่นเต้นดีตามปกติน่ะแหละ แต่พอใช้งานทุกวัน ก็คิดว่าปิดก่อนดีกว่า ถึงแม้จะชอบที่หน้าต่างที่ไม่ได้โฟกัสจะโปร่งแสงมองทะลุได้ ช่วยให้วางหน้าต่างซ้อนทับกันโดยยังเทียบเนื้อหาข้ามหน้าต่างได้ก็ตามที แต่ยังไงก็ตาม ผมทน E17 ได้มากกว่า compiz นะ อาจเป็นเพราะ animation มันทำในปริมาณพอเหมาะกว่า บางที ผมอาจจะกลับมาใช้ compositing อีกในอนาคตก็ได้

การปิด compisiting ทำได้โดย unload มอดูล Composite โดยเรียกเมนู Settings > Modules เลือกแท็บ Look ก็จะเห็นรายการมอดูล Composite อยู่ในนั้น

E17 Compositing setting

โหมดการโฟกัส อันนี้แล้วแต่ถนัด ผมเคยชอบการโฟกัสแบบ sloppy คือตามหน้าต่างล่าสุดที่เมาส์เคลื่อนไปวาง ไม่ใช่การคลิกเพื่อโฟกัสพร้อมกับยกหน้าต่างขึ้น ซึ่งทำให้สะดวกกับการทำงานในหน้าต่างที่วางก่ายกันหลายบานได้สะดวก โดยไม่ต้องยกหน้าต่างขึ้นมาทับกันเสมอไป แต่พอไปใช้ GNOME ก็ติดนิสัยคลิกเพื่อโฟกัสเสียแล้ว ตอนนี้ก็เลยลองกลับมาใช้ sloppy ดู โดยไม่เอามาเป็นเกณฑ์ตัดสินเลือกเดสก์ท็อปถ้ามันทำให้เกิดความไม่สะดวก เพราะการตั้งให้เป็นการคลิกเพื่อโฟกัสนั้นทำได้ไม่ยาก (เมนู Settings > Settings Panel แท็บ Windows รายการ Window Focus)

E17 เปล่า ๆ จะได้โปรแกรม GTK+ ที่เปล่าเปลือย ไม่มีธีม ควรกำหนดธีมเสียก่อนโดยเลือกเมนู Main > Settings > Settings Panel และที่แท็บ Look หัวข้อ Applications ก็เลือกธีม Adwaita

E17 application theme setting

สิ่งจำเป็นอีกอย่างคือ system tray หรือ notification area ซึ่งโปรแกรมใหม่ ๆ จะใช้กันเป็นปกติ ก็ควรจะเปิดใช้ โดยโหลดมอดูล Systray ก่อน แล้วจะสามารถเพิ่ม Systray ใน shelf (ศัพท์ที่ E17 ใช้เรียก panel) ได้

E17 systray module loading

การเพิ่ม system tray ใน shelf ก็เพียงคลิกขวาที่ shelf ที่ต้องการ เลือกเมนู Contents แล้วก็เลือกแอพเพล็ตเพิ่มตามปกติ

E17 (LXDE และ Xfce ด้วย) มีความน่ารักกว่า GNOME ตรงที่เวลาต้องการ context menu ของพาเนล ไม่จำเป็นต้องไปเล็งหาที่ว่างระหว่างแอพเพล็ต โดยถ้าเราคลิกขวาโดนแอพเพล็ต GNOME จะให้แต่ context menu ของแอพเพล็ต แต่ E17 (และ LXDE, Xfce) จะเพิ่มเมนูของ shelf ต่อท้ายให้ด้วย

default ของ E17 นั้น วางพาเนลไว้ด้านล่างตรงกลาง แต่ผมชอบให้มันติดมุมมากกว่า ก็จัดตำแหน่งได้โดยคลิกขวาที่ shelf เลือกเมนู Settings แล้วก็ไปเลือกตำแหน่งในแท็บ Position

E17 shelf position setting

ส่วนถ้าต้องการ shelf ที่พาดยาวตลอดขอบจอ ก็ไปที่แท็บ Size แล้วปิดตัวเลือก Shrink to Content Width แต่ตอนนี้ผมแอบปล่อยไว้เฉย ๆ ให้ shelf มันสั้นจู๋อยู่ที่มุมจอไปก่อน

launcher ใน shelf ของ E17 จะบรรจุอยู่ในสิ่งที่เรียกว่า IBar การเพิ่ม launcher ก็ทำได้โดยคลิกขวาในกรอบ IBar แล้วเลือกเมนู IBar > Contents ก็จะได้กล่องโต้ตอบสำหรับเพิ่ม application ต่าง ๆ พร้อมกับจัดลำดับได้ด้วย

มีสิ่งที่ชื่อคล้ายกับ IBar อยู่บน shelf ด้วย คือ IBox ซึ่งจะเป็นพื้นที่เก็บหน้าต่างที่ย่อเก็บ โดยจะแสดงเป็นไอคอนให้คลิกเพื่อเรียกหน้าต่างคืน

E17 มีรายการ config ที่ละเอียดมากมาย จนเขาบอกว่า ทำเสร็จหมดจะได้ดิสโทรใหม่เลย ดังนั้น จะขอพูดถึงเท่านี้ก่อน แล้วมาวิจารณ์กัน

  • เรื่องการใช้สองจอ E17 ทำได้ดีทีเดียว แค่เสียบจอเข้ามา มันก็จัดการเอาพื้นที่สองจอมาเชื่อมกันให้เลย โดยให้จอนอกอยู่ด้านซ้าย ซึ่งตรงกับความต้องการของผมพอดี และเมื่อถอดจอนอกออก ก็จะปรับพื้นที่เหลือจอเดียวโดยอัตโนมัติ
  • การแสดงสถานะการใช้งานเครื่อง E17 ไม่ค่อยมีอะไรให้ นอกจาก cpufreq gadget ที่เป็นหน้าปัดเข็มแสดงความถี่ซีพียู กับ gadget แสดงประจุไฟของแบตเตอรี่เท่านั้น โดยมี gadget แสดงอุณหภูมิเครื่องที่อ่านค่า sensor ไม่ได้ ถ้าต้องการสิ่งเหล่านี้อาจต้องติดตั้งอย่างอื่นเพิ่มเอง เช่น GKrellM
  • นาฬิกาและปฏิทินของ E17 ถือว่าโอเค ตัว gadget สามารถเอามาวางบนพื้นโต๊ะแบบ desklet ได้ด้วย แต่เนื่องจากผมไม่ค่อยใช้ desklet ก็เลยใช้แต่บน shelf เท่านั้น
  • thumb drive เสียบแล้วมีไอคอนขึ้นที่พื้นโต๊ะทันที

ปัญหาจุกจิกที่พบ:

  • มี system monitor น้อย ทำให้ไม่ค่อยรู้สถานะการทำงานของเครื่อง
  • suspend โน้ตบุ๊กไม่ได้ พยายามแก้ปัญหาจากข้อมูลใน Debian #538091 อยู่เหมือนกัน แต่ยังไม่มีวี่แววว่าจะได้ จะใช้วิธีระดับต่ำก็ต้องเป็น root เสียก่อน ซึ่งอันตรายถ้าระหว่างนั้นโน้ตบุ๊กตกไปอยู่ในมือคนอื่น
  • workspace เปลี่ยนด้วยแป้นพิมพ์ได้แบบเป็นลำดับเส้นตรง 1, 2, 3, 4 เท่านั้น แม้จะจัด virtual desktop ให้เป็น 2x2 แล้วก็ตาม
  • การจัด virtual desktop เป็น 2x2 จะทำให้มีการเลื่อนไป workspace บน/ล่างเมื่อลากเมาส์ไปชนขอบบน/ล่าง ซึ่งบ่อยครั้งไม่ใช่เจตนา เช่น เจตนาจะลากกรอบล่างของหน้าต่างเพื่อปรับขนาดเท่านั้น (สรุปว่า E17 ไม่เหมาะกับการใช้ virtual desktop แบบเรียงหลายแถว)

ปัญหาเหล่านี้พอมีทางแก้ไข เช่น ขาด system monitor ก็ใช้ GKrellM, ใช้ workspace 2x2 ไม่ถนัดก็ใช้แบบเส้นตรงแทน โดยเริ่มใช้ที่ workspace ที่ 2 จากนั้นจะมี workspace ซ้าย-ขวาให้เลื่อนใช้ได้ ยังคงเหลือเฉพาะปัญหาการ suspend เครื่องเท่านั้นที่เป็นอุปสรรค

โดยภาพรวมแล้ว E17 นับว่าเป็นมืออาชีพทีเดียว memory footprint ก็ถือว่าต่ำเมื่อเทียบกับ GNOME ถ้าแก้ปัญหาเรื่อง suspend โน้ตบุ๊กได้ ก็สามารถใช้แทน GNOME ได้เลยทีเดียว

ไว้ blog หน้าเขียนถึง LXDE และ Xfce ต่อครับ

ป้ายกำกับ: , ,

23 พฤศจิกายน 2555

Lanxang Project

กลับมาพูดถึง โครงการอักษรอีสาน อีกครั้ง โครงการนี้ถ้านับตั้งแต่เริ่มวางแนวคิด ตอนนี้ก็อายุได้ 2 ปีเต็มพอดี ที่ผ่านมาก็ได้ทำ ฟอนต์โคตรบูรณ์ โดยใช้ฟอนต์ อ.สานิตย์ เป็นฐาน เอามาปรับให้เป็นยูนิโค้ด และเพิ่มกฎ GSUB ในระหว่างที่ rendering engine ต่าง ๆ ยังไม่รองรับ

ความคืบหน้าล่าสุด หลังจากที่ได้ตั้งกลุ่มทำงานอักษรอีสานร่วมกับคุณอันธิฌาและคุณเสกสรร ก็ได้เพิ่มความเข้มข้นในการศึกษาจารึกโบราณมากขึ้น โดยในระหว่างปริวรรตจารึกลงเว็บ ก็พบความไม่สะดวกในการป้อนข้อความตาม phonetic order ของยูนิโค้ด และเนื่องจากทีมงานเริ่มมีความเข้าใจอักษรธรรมกันพอสมควรแล้ว จึงได้ประชุมกันออกแบบ input method สำหรับอักษรธรรมลาว/อีสาน

โค้ดอยู่ใน github โดยใช้ชื่อโครงการว่า ล้านช้าง โดย input method นี้จะมีคุณสมบัติดังนี้:

  • มีผังแป้นพิมพ์ในตัว โดยดัดแปลงจากผัง มอก. 820-2538
  • สลับลำดับการพิมพ์ เพื่อให้ผู้ใช้สามารถป้อนข้อความในลำดับจากซ้ายไปขวาเหมือนอักษรไทย แล้ว input method จะสลับลำดับให้เป็น phonetic order ตามข้อกำหนดยูนิโค้ดให้
  • ตรวจลำดับการพิมพ์ คล้าย วทท. 2.0 โดยสามารถปรับแต่งระดับความเข้มงวดของการตรวจสอบได้ 3 ระดับ คือปล่อยผ่าน, ตรวจสอบขั้นพื้นฐาน (สามารถป้อนตัวสะกดแบบพิเศษได้) และตรวจสอบแบบเข้มงวด (ไม่อนุญาตตัวสะกดแบบพิเศษ)

ผังแป้นพิมพ์จะเป็นแบบนี้:

ผังแป้นพิมพ์

ส่วนตารางการตรวจลำดับที่ได้จากการออกแบบร่วมกันของทีมงาน จะเริ่มจากการแบ่งคลาสของอักขระดังนี้:

  1. LV = สระหน้า
  2. AV = สระบน (อิ อี อึ อื ไม้กง ไม้เกาห่อนึ่ง)
  3. AD1 = ตัวสะกดบน (ไม้ซัด ไม้อังแล่น)
  4. AD2 = ตัวสะกดบน/สระบน (นิคหิต)
  5. BV1 = สระล่าง 1 (อุ อู)
  6. BV2 = สระล่าง 2 (ออล่าง)
  7. FV1 = สระหลัง 1 (อะ)
  8. FV2 = สระหลัง 2 (อา อาสูง)
  9. FV3 = สระหลัง 3 (ออย)
  10. IV = สระลอย (อิ อี อุ อู เอ โอ ลอย, ฤ ฦ)
  11. C1 = พยัญชนะที่เฟื้องด้วยพินทุได้
  12. C2 = พยัญชนะที่เฟื้องด้วยพินทุไม่ได้ (ฃ ฅ ซ ฝ ฟ หยอหยาดน้ำ ร ล ฬ อ ฮ สอสองห้อง)
  13. PH = พินทุ (SAKOT)
  14. S1 = เฟื้องพิเศษ 1 (ระวง)
  15. S2 = เฟื้องพิเศษ 2 (ล เฟื้องล่าง, ล เฟื้องข้าง)
  16. T = วรรณยุกต์
  17. LG = ตัวประสม (แล)
  18. CR = ตัวรหัสลับ (cryptogram)
  19. NP = ตัวเลขและเครื่องหมายวรรคตอน

จากนั้น ก็จะพิจารณาการกระทำระหว่างอักขระที่อยู่หน้าเคอร์เซอร์กับอักขระที่กด โดยกำหนดรหัสการกระทำดังนี้:

  • P = เข้าสู่ pre-edit mode
  • A = รับอักขระ
  • W = รับอักขระโดยสลับกับอักขระก่อนหน้า
  • R = ไม่รับอักขระ
  • S = ไม่รับอักขระในโหมดเข้มงวด รับอักขระในโหมดปกติ

และพิจารณาการกระทำจากตารางนี้:

c0,c1 X L
V
A
V
A
D
1
A
D
2
B
V
1
B
V
2
F
V
1
F
V
2
F
V
3
I
V
C
1
C
2
P
H
S
1
S
2
T L
G
C
R
N
P
X R P R R R R R R R R A A A R R R R A R A
LV R P A A S S S A A S A A A A W A A A A A
AV R P R R A R A S A S A A A A R A A A A A
AD1 R P R R R R R S S S A A A A R A A A A A
AD2 R P R R R R R S A S A A A S R R A A R A
BV1 R P S A A R R S S S A A A S A R A A R A
BV2 R P R A R R R A R R R A A S R R A A R A
FV1 R P R R R R R R R R A A A R R R R A R A
FV2 R P R A R R R A R R A A A A R A R A A A
FV3 R P R R R R R R R R A A A R R R R A R A
IV R P A R R R R R R R R A A R R R R A R A
C1 R P A A A A A A A A A A A A A A A A A A
C2 R P A A A A A A A A A A A A A A A A A A
PH R P R R R R R R R R R A R R R R R R R R
S1 R P A A A A A A A A A A A A R R A A A A
S2 R P A A A A S A A A A A A S R R A A A A
T R P R R R R R A A A A A A A R R R A A A
LG R P R R R R R A R R A A A A R R A A A A
CR R P A A A A A A A A A A A S A A A A A A
NP R P R R R R R R R R A A A R R R R A R A

ตารางการกระทำในโหมด pre-edit:

P X L
V
A
V
A
D
1
A
D
2
B
V
1
B
V
2
F
V
1
F
V
2
F
V
3
I
V
C
1
C
2
P
H
S
1
S
2
T L
G
C
R
N
P
LV R R R R R R R R R R R C C R R R R R R R

การกระทำ C = commit อักขระใน pre-edit string โดยกลับลำดับจากหลังมาหน้า

ขณะนี้ engine สำหรับ IBus เริ่มใช้การได้แล้ว โดยกำลังอยู่ระหว่างทำ GUI สำหรับตั้งค่า:

IBus LanXang Preferences

สำหรับตอนนี้อาจใช้ IBus เป็นหลัก แต่ในอนาคตก็อาจพิจารณาเพิ่ม engine สำหรับ framework อื่นตามความจำเป็น

ว่าแล้วก็ทดสอบ input method สักหน่อย:

ᨹᩲᩅᩣᨾᩮᩨᩬᨦᩎᩈᩣ᩠ᨶᩌᩣ᩠ᨦ ᩈᩥᨧᩪᩙᨡᩯ᩠ᨶᨾᩢ᩠ᨶᨸᩲᨷᩮᩥ᩠ᨦ
ᨠᩫ᩠ᨠᩋᩭᨿᩢ᩠ᨦᩈ᩠ᩅ᩠ᨿᩃ᩠ᩅ᩠ᨿ ᨠᩫ᩠ᨠᨠᩖ᩠ᩅ᩠ᨿᨿᩢ᩠ᨦᩈᩣ᩠ᨿᩃᩣ᩠ᨿ
ᨾᩢ᩠ᨶᩈᩥᩌᩣ᩠ᨦᨷᩬᩁᨧᩢ᩠ᨦᨯᩲ

(จะอ่านได้ ก็ติดตั้งฟอนต์ ก่อนนะครับ และควรเปิดด้วย Firefox หรือ IE9 จึงจะอ่านเป็นคำ ส่วน Chrome และเบราว์เซอร์ที่ใช้ WebKit ทั้งหมดนั้น ยังแสดงผลผิดลำดับ อ่านไม่เป็นคำครับ)

ป้ายกำกับ: , , ,

22 พฤศจิกายน 2555

Thanks

ขอขอบคุณย้อนหลัง สำหรับผู้ที่ได้หย่อนสตางค์ลงหมวกเพื่อสนับสนุนงานพัฒนาของผมตั้งแต่เดือนสิงหาคมที่ผ่านมา เป็นบุคคลนิรนามสองท่าน ท่านหนึ่งซึ่งเคยโอนเงินเข้าที่บัญชีที่กรุงเทพฯ และยังมีอีกท่านหนึ่งที่ได้โอนเงินเข้าบัญชีที่ขอนแก่นเป็นประจำทุกเดือนมาตั้งแต่เดือนมกราคมโดยที่ผมเพิ่งจะสังเกตพบ ในเดือนตุลาคม ก็ได้รับเงินสนับสนุนจากคุณวิทยาอีกครั้งหนึ่ง และในเดือนพฤศจิกายนนี้ ก็ได้รับการสนับสนุนจากพี่ต้น วศิน สินธุภิญโญ อีกครั้งหนึ่งเช่นกัน

ขอขอบคุณทุกท่านครับ ที่ให้การสนับสนุน นอกจากเรื่องราวต่าง ๆ ที่ผมเคยเขียนเล่าในโอกาสที่ทำงานอิสระมาครบสิบปีแล้ว ก็อยากจะเสริมเรื่องการใช้จ่ายของผม ว่าผมพยายามจับจ่ายอย่างประหยัดที่สุด ไม่หมดเปลืองกับสิ่งที่ไม่เป็นสาระของชีวิต เพื่อให้ภาระการเงินของตัวเองลดเหลือน้อยที่สุด ดังนั้น เงินสนับสนุนของทุกท่านจะได้รับการจับจ่ายอย่างคุ้มค่าแน่ครับ และผลงานที่ได้ ก็จะพยายามเขียน blog เล่าให้ฟังเรื่อย ๆ

ขอให้ทุกท่านมีความสุขกับเสรีภาพซอฟต์แวร์!

ป้ายกำกับ: ,

02 พฤศจิกายน 2555

IBus LibThai

แผนการหนึ่งที่ผมคิดจะทำมานานแล้ว คือการเชื่อมต่อ LibThai เข้ากับ IBus ซึ่งเป็น input method framework แบบใหม่ที่กำลังจะมาแทนที่ระบบเดิมแทบทั้งหมด ไม่ว่าจะเป็นรุ่นเก๋ากึ๊กอย่าง XIM หรือทางลัดของ toolkit อย่าง GTK+ IM module หรือ Qt4 IM module หรือจะเป็นระบบที่ยังอายุไม่มากอย่าง SCIM หรือ uim ทั้งหมดจะค่อย ๆ ถูก IBus แทนที่ในดิสโทรต่าง ๆ เช่น สำหรับ Fedora ซึ่งเป็นต้นน้ำนั้น ก็ใช้ IBus โดยปริยายแล้ว และ Debian เองก็เตรียมจะใช้ IBus เป็นตัวหลักเช่นกัน

ทั้งนี้ การเชื่อมรวมกับ IBus ก็เป็นเป้าหมายของ GNOME มาระยะหนึ่ง และสำเร็จในรุ่น 3.6 นี้เอง

แนวโน้มแบบนี้ ทำให้ผมปรารภกับเพื่อน ๆ ในแวดวงมาตั้งแต่ปีก่อนแล้วว่าคงต้องพยายามให้มี input method ภาษาไทยใน IBus แล้วแหละ แต่ก็ชะลอมาเรื่อย ด้วยเหตุผลต่าง ๆ คือ หนึ่ง ผมมีเวลาทำงานน้อย เนื่องจากต้องสลับไปทำหลายงาน, สอง หาเอกสารของ IBus ไม่เจอ (เพิ่งเจอ Developer guide เมื่อเร็ว ๆ นี้ หลังจากที่ได้งมแกะซอร์สของ engine อื่นเป็นตัวอย่างไปเยอะแล้ว), สาม มอดูล ibus-m17n ที่ไปใช้ input method จากคลังของ m17n ก็พอใช้การได้ มีภาษาไทยมาเรียบร้อย ซึ่งผมเคยคุยกับคุณทาคาฮาชิที่ ETL ซึ่งเป็นผู้ดูแลทางเมลและร่วมทดสอบจนมันใช้การได้ สามารถแก้ลำดับการป้อนได้ด้วย (ถ้า app รองรับ) ความเร่งด่วนที่จะต้องเขียน engine ตัวใหม่ก็ลดลง

ผมทดลองใช้ IBus มาระยะหนึ่ง โดยเฉพาะตอนที่ไปเรียนภาษาจีนเมื่อต้นปี ต้องการป้อนภาษาจีน จึงเป็นตัวกระตุ้นให้ใช้ IBus เป็นหลัก แต่รู้สึกไม่พอใจกับ input method ภาษาไทยของ ibus-m17n เลย เนื่องจากมันตอบสนองช้ามากในหลาย ๆ กรณี เช่น เมื่อใช้กับเว็บที่มี Javascript หนัก ๆ อย่าง facebook หรือ Google+ อีกทั้งการพยายาม fallback ไปใช้ pre-edit string โดยอุบัติเหตุก็น่ารำคาญ เนื่องจากอักขระตัวสุดท้ายจะสูญหาย ซึ่งบั๊กนี้ดูเหมือนจะแก้ไปแล้ว แต่มันก็ยังกลับมาเป็นพัก ๆ อยู่ดี

หลังจากที่ห่างหายจากการป้อนภาษาจีนมาระยะหนึ่ง ผมจึงแอบกลับมาใช้ gtk-im-libthai ตามเดิม เพื่อความรวดเร็วของงาน จนกระทั่งถูกกระตุ้นอีกครั้งหนึ่งจากโครงการอักษรอีสาน ที่ทีมงานกำลังร่วมกันออกแบบ input method ของอักษรธรรม และเริ่มศึกษา framework ที่จะใช้สร้างต้นแบบ ซึ่งตัวเลือกอันดับต้น ๆ ก็คือ IBus นั่นเอง

นั่นแหละ ผมถึงได้กลับมาปัดฝุ่นโค้ด ibus-libthai ที่ร่างไว้ตั้งแต่ปีกลาย เอามาปรับต่อจนใช้การได้เมื่อเช้านี้เอง

ตัวโค้ด อยู่ที่ SVN ของ LTN ซึ่งสามารถ checkout มาทดสอบได้:

$ svn co http://linux.thai.net/svn/software/ibus-libthai/trunk \
  ibus-libthai

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

ป้ายกำกับ: ,

hacker emblem