Theppitak's blog

My personal blog.

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

ป้ายกำกับ: ,

0 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem