3 คะแนน โดย GN⁺ 2024-01-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Sxmo คือสภาพแวดล้อมแบบมินิมอลสำหรับโทรศัพท์ Linux และอุปกรณ์พกพาอื่น ๆ ที่สร้าง UI ตามแนวคิด Unix ด้วยการผสาน โปรแกรมเรียบง่ายและเชลล์สคริปต์
  • ใช้อินเทอร์เฟซแบบเมนูร่วมกับ ตัวจัดการหน้าต่างแบบไทลิง และรองรับทั้ง Wayland กับ Xorg แบบดั้งเดิมบนสแตกอย่างเช่น sway
  • รองรับการควบคุมด้วยการแตะ·ท่าทาง·ปุ่มฮาร์ดแวร์ และเสริมการใช้งานบนหน้าจอเล็กด้วย เมนูตามบริบท ที่เปลี่ยนไปตามว่าแอปที่ใช้งานอยู่เป็น CLI หรือ GUI
  • มีความสามารถสำหรับมือถือ เช่น โมเด็ม การโทร ข้อความ การอ่านการแจ้งเตือน และการปรับให้เบาสำหรับอุปกรณ์ใช้แบตเตอรี่ รวมถึงเข้าถึงเมนูและส่งข้อความผ่าน SSH ได้
  • สามารถผูกการโทร·ข้อความ·ท่าทาง·ปุ่มจริงเข้ากับ สคริปต์ของผู้ใช้ ได้ จึงใกล้เคียงกับการใช้งาน Linux แบบลงมือแก้ไขเองมากกว่าระบบนิเวศแอปที่ปิดตาย

สภาพแวดล้อม Mobile Linux ที่ Sxmo มุ่งไปสู่

  • Sxmo เป็นสภาพแวดล้อมแบบมินิมอลสำหรับอุปกรณ์ Linux แบบพกพา โดยชูแนวคิด “minimal, mobile, hackable”
  • โทรศัพท์หรือแท็บเล็ต Android รุ่นเก่าก็สามารถใช้งานได้ด้วยการตั้งค่าเพียงเล็กน้อย โดยอุปกรณ์ตัวอย่างมี OnePlus 6 และ Poco F1
  • ดูข้อมูลการรองรับอุปกรณ์ได้ที่ device profile และผู้ใช้ใหม่สามารถอ้างอิง getting started guide

วิธีควบคุมและการปรับแต่ง

  • UI ใช้อินเทอร์เฟซแบบ เมนูเรียบง่าย ร่วมกับตัวจัดการหน้าต่างแบบไทลิง
    • ตัวอย่างเช่นสามารถใช้ sway ได้
    • เครื่องมือต่าง ๆ ถูกออกแบบให้ทำงานร่วมกันได้และสลับเปลี่ยนได้ง่าย
    • รองรับทั้ง Wayland และ Xorg แบบดั้งเดิม
  • วิธีป้อนข้อมูลบนมือถือถูกออกแบบโดยคำนึงถึงหน้าจอเล็กและการใช้ปุ่มจริง
    • รองรับการแตะและท่าทาง
    • สามารถควบคุมเมนูด้วยปุ่มฮาร์ดแวร์ได้
    • เมนูตามบริบทที่ชุมชนช่วยกันพัฒนาจะเปลี่ยนไปตามว่าแอปที่ทำงานอยู่เป็น CLI หรือ GUI
  • ความสามารถของ Mobile Linux ครอบคลุมถึง โมเด็ม·การโทร·ข้อความ·การแจ้งเตือน
    • สามารถอ่านการแจ้งเตือนและข้อความได้
    • มีการปรับให้เบาสำหรับอุปกรณ์ที่ใช้แบตเตอรี่และหน้าจอขนาดเล็ก
    • รองรับ SSH เป็นวิธีใช้งานหลัก และสามารถเข้าถึงเมนูทั้งหมดผ่าน SSH ได้
    • สามารถส่งข้อความผ่าน SSH โดยใช้โปรแกรมแก้ไขข้อความอย่าง vis, emacs และ vim
  • เพื่อให้ดัดแปลงได้สูง การทำงานหลายอย่างสามารถเชื่อมเข้ากับ เชลล์สคริปต์ ได้
    • สามารถเรียกใช้สคริปต์กำหนดเองจากเหตุการณ์โทรศัพท์หรือข้อความได้
    • สามารถผูกสคริปต์เข้ากับท่าทางโดยใช้ lisgd ได้
    • สามารถผูกสคริปต์กับการกดปุ่มจริงของอุปกรณ์แบบคลิกเดี่ยว·ดับเบิลคลิก·ทริปเปิลคลิกได้
    • บันทึกโมเด็ม รายชื่อผู้ติดต่อ และข้อความ SMS จะถูกเก็บเป็นข้อความธรรมดา
  • ระบบนิเวศแอปไม่ได้เป็นโครงสร้างแบบปิด และสามารถใช้ แอป FOSS ที่ใช้บนเดสก์ท็อปบนมือถือได้เช่นกัน
    • ทำงานได้บนดิสทริบิวชัน Linux ที่ปรับแต่งมาสำหรับมือถือ เช่น Alpine Linux และ postmarketOS
    • สามารถใช้แอปพลิเคชันแบบเทอร์มินัลบนสมาร์ตโฟนได้

1 ความคิดเห็น

 
GN⁺ 2024-01-28
ความคิดเห็นจาก Hacker News
  • ในบรรดาอินเทอร์เฟซที่เคยลองบน PinePhone sxmo ดีที่สุดแบบทิ้งห่าง
    ปกติไม่ได้ใช้ซอฟต์แวร์สาย suckless มากนัก แม้จะเคารพซอฟต์แวร์แนวนั้น แต่ผมมักถูกดึงดูดไปทางฝั่งที่มีฟีเจอร์เยอะอย่าง Emacs หรือ KDE มากกว่า ถึงอย่างนั้น sxmo ก็ลื่นไหลกว่า KDE หรือ Phosh มาก และถ้าก้าวข้ามกำแพงเรื่องการค้นพบฟีเจอร์ต่าง ๆ ไปได้ ก็ถือว่าใช้งานได้ดีและค่อนข้างเข้าใจง่าย เหมือนว่า megi เคยทำชีตสรุปที่ดีไว้ด้วย

    • ผมใช้ Plasma Mobile บน Librem 5 อยู่ และมันค่อนข้างลื่น
      แต่ KDE ตัดสินใจทำแอปหลัก ๆ ใหม่ด้วยเฟรมเวิร์กที่เป็นมิตรกับมือถือ เลยไม่แน่ใจว่ามันจะเป็นแพลตฟอร์มแอปที่ใช้งานได้จริงแค่ไหน ตอนนี้ยังมีอะไรให้ขุดคุ้ยไม่มาก และมีแนวโน้มว่าจะเป็นแบบนั้นต่อไปอีกหลายปี พอเห็นคำแนะนำแล้วเลยคิดว่าจะลอง sxmo ดูด้วย
    • ไม่ได้ใช้ PinePhone มาประมาณ 6 เดือนแล้ว และก่อนหน้านั้นก็หยุดใช้ไปพักหนึ่งเพราะไม่ทราบสาเหตุว่าทำไมเสียงโทรศัพท์ถึงไม่ออก แต่รวม ๆ แล้วใช้เป็นโทรศัพท์หลักมาประมาณปีครึ่ง
      เคยลองเดสก์ท็อปเอนไวรอนเมนต์อื่น ๆ ด้วย แต่สุดท้ายก็มาลงเอยที่ sxmo/swmo เพราะชอบปรัชญาที่ให้ประกอบและควบคุมชิ้นส่วนต่าง ๆ เองได้ และการควบคุมโทรศัพท์ผ่าน SSH จากแล็ปท็อปก็เป็นข้อดีใหญ่ ผมคุ้นเคยกับ Sway อยู่แล้ว และตอนเริ่มใช้ Phosh กับ KDE ก็มีปัญหาค่อนข้างร้ายแรง
      แต่ sxmo มีบั๊กหนัก ๆ อยู่เสมอ มี race condition จำนวนมากที่ทำให้ระบบพังจนกว่าจะรีสตาร์ต และการปลดล็อกก็ทำงานไม่เหมือนกันขึ้นอยู่กับสถานะ sleep กับการกระทำก่อนหน้า เช่นต้องกดปุ่มพาวเวอร์หนึ่งครั้ง สองครั้ง สามครั้ง หรือกดค้างแล้วกดอีกที การเปลี่ยนสถานะหรือโหมดก็ใช้เวลาเกือบ 1 วินาทีกว่าจะสะท้อนบนหน้าจอ ซึ่งสร้างความหงุดหงิดมากกว่าที่คิด
      ถ้าสถานะของ mutex บางอย่างรวน โปรเซสใหม่ ๆ ที่พยายามควบคุมการกะพริบของ LED จะเพิ่มขึ้นเรื่อย ๆ และสุดท้ายแม้แต่การกดปุ่มพาวเวอร์ค้างก็ไม่ทำงาน จนบางครั้งต้องถอดแบตเตอรี่ออก
      เวลาพูดกันว่า Rust ดีกว่า C มักบอกว่า memory safety กับ data model ที่ดีกว่าช่วยกำจัดบั๊กบางประเภทได้ แต่ sxmo ส่วนใหญ่พอสมควรถูกทำด้วย เชลล์สคริปต์ และในมุมมองการออกแบบขนาดใหญ่ มันแย่กว่า C มาก มี building block พื้นฐานที่เหมาะสมน้อยกว่า และข้อจำกัดนั้นก็แสดงออกมาเต็ม ๆ
      ทั้งระบบดูเหมือนกองรวมของชิ้นส่วนที่ทำเป็นไม่รับรู้การมีอยู่ของกันและกัน ถ้าชิ้นส่วนเหล่านี้ร่วมมือกันน่าจะให้ผลลัพธ์ที่เสถียรกว่านี้มาก บางอย่างภายนอกดูโอเคแต่ไม่ได้ implement อย่างถูกต้องสมบูรณ์ และบางครั้งตัวการออกแบบเองก็ซับซ้อนเกินไปและวางผิดทิศทาง
      คิดว่าช่วง 6 เดือนที่ผ่านมาไม่น่าจะเปลี่ยนไปมากนัก เลยอยากท้าผู้ใช้ sxmo ให้ลองดู วิธีเปลี่ยนการแสดงนาฬิกาใน system tray และวิธีทำให้มันอัปเดตตรงเวลาจริง ๆ แทนที่จะอัปเดตช้าสุด 55 วินาที กระบวนการนี้จะผ่านหลายระบบ เช่น timer 55 วินาทีตั้งค่าแคช แล้ว status bar ไปดึงค่านั้น และต้องค้นหาในดิสก์อย่างน้อยสักสามจุด คุณน่าจะต้องใช้เครื่องมืออย่าง ripgrep และสุดท้ายอาจคิดว่า ทำไมไม่ใส่ date +'%H:%M' ลงในคำสั่งของ status bar แล้วเปลี่ยนเป็น date +'%-I:%M %P' ไปเลยล่ะ
      ในแง่ฟีเจอร์ หลายอย่างที่บน Android ทำได้ตามปกติกลับทำไม่ได้เลย หรือบางอย่างที่ทำได้ใน Phosh ก็ไม่ทำงานอย่างลื่นไหล แต่ในทางกลับกัน ถ้าหาวิธีทำให้อะไรสักอย่างทำงานได้แล้ว มันจะ script ได้ดีกว่ามาก ผมทำ workflow ส่วนตัวให้สะดวกกว่าบนระบบปฏิบัติการอื่น ๆ ได้ แต่ก็ต้องเขียนสคริปต์ไปเยอะมาก
      เมื่อเวลาผ่านไป ปัญหาบางอย่างถูกแก้ บางอย่างก็เกิดขึ้นใหม่ แต่คุณภาพในการใช้งานจริงโดยรวมยังถือว่าต่ำอยู่ ถึงอย่างนั้นผมก็ยังใช้ต่อไป บางทีผมอาจเป็นพวกมาโซคิสต์ก็ได้
      สรุปคือ ผมนึกไม่ออกเลยสักคนที่จะแนะนำให้ใช้ sxmo/swmo ได้จริง ๆ แต่ถ้าจะมีประเภทคนที่น่าแนะนำ ก็น่าจะเป็นคนที่ใช้ tiling window manager บนเดสก์ท็อปอยู่แล้ว และไม่ได้สนใจตัวโทรศัพท์มากนัก
  • ถ้าหน้าแรกมี วิดีโอเดโมความยาว 1–2 นาที แทนการบรรยาย 45 นาที น่าจะสื่อแนวคิดได้ชัดเจนกว่ามาก

  • ชอบนะ ทุกอย่างเชื่อมกันด้วย เชลล์สคริปต์ เลยอาจขึ้นอยู่กับรสนิยม แต่ชอบตรงที่สามารถรื้อแก้ UI ของโทรศัพท์ได้อย่างรวดเร็ว
    ผมเขียนสคริปต์นาฬิกาปลุกบน PinePhone เองระหว่างเดินทางไปกลับที่ทำงาน ซึ่งควรเอาไปเผยแพร่ วิธีการคือให้เครื่องตื่นจากโหมดประหยัดพลังงานลึกก่อนถึงเวลาปลุก แล้วค่อยส่งเสียงปลุก
    ฟีเจอร์อย่างนาฬิกาปลุกที่ตั้ง RTC wakeup ยังขาดอยู่มาก แต่โดยรวมเป็นระบบที่ยอดเยี่ยม และตั้งใจว่าจะกลับไปใช้และแฮ็กมันอีกในอนาคตอันใกล้

  • ถ้าจะไป FOSDEM และสนใจ Linux บนโทรศัพท์ ควรดูตาราง developer room [0] และบูธที่เกี่ยวข้อง [1]
    [0]: https://fosdem.org/2024/schedule/track/foss-on-mobile-device...
    [1]: https://fosdem.org/2024/stands/

  • ผมเห็นด้วยยากกับคำกล่าวที่ว่า “เคอร์เนลที่รันบนอุปกรณ์ Android ถูกแก้ไขอย่างหนักจนชุมชนดูแลรักษาไม่ได้”
    Android ทำงานบน เคอร์เนล Linux mainline ได้ด้วย ถ้าชุมชนสามารถดูแลรักษาเคอร์เนล mainline ได้อยู่แล้ว ชุดแพตช์ 210 รายการที่รวมอยู่ใน Android common kernel ก็คงไม่ใช่ระดับที่รับมือไม่ได้ การทิ้งคุณค่าทั้งหมดของ Android ด้วยเหตุผลนี้เหมือนเผาบ้านทั้งหลังเพื่อไล่ตัวเรือด
    Android รองรับหลายหน้าต่างอยู่แล้ว ดังนั้นก็ดูสมเหตุสมผลถ้ามีใครสักคน implement tiling window manager สำหรับ Android

  • สงสัยว่าสามารถรันสิ่งนี้บนเซิร์ฟเวอร์ Intel/AMD ทั่วไป แล้วใช้ผ่านเซสชัน xrdp/nx ได้หรือไม่
    ต้องการความเข้ากันได้ทางสังคมและกล้องที่ดี เคยลองใช้ i3 แล้ว แต่ใช้งานโดยไม่มีคีย์บอร์ดจริงค่อนข้างยาก

    • สงสัยด้วยว่าจะเพิ่ม gesture สำหรับการทำงาน ให้กับ Sway บนมือถือได้หรือไม่
      pinephone-sway-poc: https://github.com/Dejvino/pinephone-sway-poc#components
      ตอนนี้ rpm-ostree รองรับการใช้ OCI container image เป็น host image แล้ว ทำให้การอัปเกรดระบบปฏิบัติการง่ายขึ้นและทนต่อข้อผิดพลาดได้ดีขึ้น สามารถเลือกเมนูบูตอีกรายการเพื่อย้อนกลับไปยังสถานะก่อนหน้าได้ นั่นคือเคอร์เนล + overlay ของ /etc + พาร์ทิชัน root + แพ็กเกจ
      "Using OSTree Native Containers as Node Base Images" (2023) https://www.opensourcerers.org/2023/06/16/using-ostree-nativ...
  • ถ้าต้องการปรับสไตล์ของ SXMO บน Sway เช่น ทำให้รายการเมนูใหญ่ขึ้นเพื่อให้แตะด้วยนิ้วได้ง่ายขึ้น หรือเปลี่ยนเป็นฟอนต์แคบเพื่อให้ใส่ข้อความได้มากขึ้นในหนึ่งบรรทัด หรือปรับหน้าตา คู่มือนี้น่าจะมีประโยชน์: https://porkyofthepine.org/blog/rice_sxmo_sway.html

    • เคยคิดไว้แล้วเรื่องรันเซสชัน Linux phone บนเซิร์ฟเวอร์ และตอนนี้ใช้แค่ tmux+mosh อยู่
      ถ้ามี display manager ที่ใช้งานบนโทรศัพท์ได้ดีจริง ๆ ก็น่าจะดีกว่ามาก และสิ่งนี้อาจช่วยให้ไปในทิศทางนั้นได้
    • ถ้ามีสกรีนช็อตก็คงดี
      ทุกอย่างที่เคยเห็นเกี่ยวกับ SXMO ให้ความรู้สึกว่าเป็นของสำหรับ แฮกเกอร์เครายาวสายช่างไม้ ที่ให้ความสำคัญกับเสรีภาพแบบ Stallman มากกว่าความสวยงามหรือความสะดวกในการใช้งาน
  • ข้อดีคือไม่จำเป็นต้องรันแอป Google
    แต่ถ้าเข้าถึงแอปบางตัวที่จำเป็นได้ เช่น แอปธนาคารหลัก ๆ หรือแอป home automation แม้จะไม่ค่อยชอบนัก ก็น่าจะช่วยได้มากจริง ๆ

    • มีซอฟต์แวร์ชื่อ Waydroid ที่ทำให้รันแอป Android บนแพลตฟอร์ม GNU/Linux รวมถึง PinePhone ได้
      Sxmo แม้ชื่อจะเหมือนอย่างนั้น แต่สามารถรันด้วย Wayland แทน X ได้ จึงรองรับ Waydroid
      โดยส่วนตัวไม่เคยทำให้ Waydroid ใช้งานได้สำเร็จ และยิ่งยากขึ้นเพราะต้องดาวน์โหลดไฟล์ขนาดใหญ่สำหรับการตั้งค่าเริ่มต้น แต่ก็ไม่ได้พยายามหนักขนาดนั้น และออนไลน์ก็มีวิดีโอของคนที่ทำสำเร็จอยู่
      [1]: https://waydro.id/
      [2]: https://tilvids.com/w/2b2f3a24-ae23-458e-a0fd-2f24a185a11b
    • แอปธนาคารมักไม่ชอบให้รันในสภาพแวดล้อมที่ root แล้ว ด้วยเหตุผลด้าน “ความปลอดภัย” สงสัยว่ามีวิธีเลี่ยงหรือไม่
  • ดูเหมือนว่า PmOS จะมี SXMO สองแบบ
    sxmo-de-dwm: สภาพแวดล้อมมือถือ Simple Mobile ที่อิง SXMO และรันบน dwm
    sxmo-de-sway: สภาพแวดล้อมมือถือ Simple Mobile ที่อิง SXMO และรันบน sway

  • สงสัยว่า SXMO มีอะไรใหม่บ้าง
    ไม่ได้ตามมาตั้งแต่ปี 2021 และอยากรู้ว่าตอนนี้มีโทรศัพท์ที่รันได้เสถียรพอหรือยัง

    • น่าจะเป็น PinePhone ที่เป็นตัวเลือกเสถียรที่สุด
      เคยเห็นหลายคนใช้บนอุปกรณ์นี้ และในเธรดเกี่ยวกับ PinePhone ช่วงหลัง ๆ ก็ถูกพูดถึงหลายครั้งว่าเป็นทางเลือกที่ดีแทน Plasma แบบพื้นฐาน