2 คะแนน โดย GN⁺ 2025-06-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Chawan เป็น เว็บเบราว์เซอร์ TUI แบบใหม่ที่ทำงานบนเทอร์มินัลแบบข้อความ
  • เวอร์ชัน 0.2.0 นี้มี ฟีเจอร์จำเป็นทั้งหมดของขั้น MVP ครบถ้วน และอยู่ในสถานะที่ไม่มีบั๊กร้ายแรง
  • ต้องใช้ไลบรารี libssh2, libbrotli, OpenSSL/LibreSSL เท่านั้นเป็นข้อกำหนดหลัก และได้ตัด dependency จำนวนมากจากเวอร์ชันก่อนหน้าออกแล้ว
  • มีให้ใช้งานทั้ง static binary และแพ็กเกจ .deb สำหรับ amd64 Linux ทำให้แจกจ่ายและติดตั้งได้สะดวก
  • เวอร์ชันถัดไปตั้งเป้าไปที่ การปรับปรุงประสิทธิภาพของโมดูล layout และประสบการณ์ UI ที่ดียิ่งขึ้น

แนะนำ Chawan 0.2.0

Chawan เป็นโปรเจ็กต์โอเพนซอร์สของเว็บเบราว์เซอร์ขนาดเบาที่ใช้เทอร์มินัลยูสเซอร์อินเทอร์เฟซ (TUI) ออกแบบมาเพื่อให้ท่องเว็บได้อย่างสะดวกในสภาพแวดล้อมแบบข้อความ โดยเวอร์ชัน 0.2.0 นี้เป็นรีลีสเสถียรตัวแรกที่มีฟีเจอร์หลักครบถ้วนในระดับ Minimum Viable Product (MVP) และยังไม่มีรายงานบั๊กร้ายแรงสำคัญ

การแจกจ่ายและการติดตั้ง

  • มี tarball ของ source tree ให้ใช้งาน และหากต้องการคอมไพล์เองสามารถทำตามคำแนะนำใน README ได้
  • มีดิสทริบิวชัน static binary สำหรับ amd64 Linux ให้ใช้งาน สามารถแตกไฟล์อาร์ไคฟ์แล้วติดตั้งได้ง่ายด้วยคำสั่ง make install
    • การลบออกทำได้ด้วย make uninstall
  • ดิสทริบิวชันเดียวกันนี้ยังมีในรูปแบบ แพ็กเกจ .deb ทำให้ติดตั้งได้ทันทีบนระบบที่ใช้ Debian เป็นฐาน

ข้อมูลสำหรับผู้ดูแลแพ็กเกจ

  • runtime dependency ที่จำเป็นของ Chawan มีดังนี้:
    • libssh2
    • libbrotli (รวม libbrotlicommon และ libbrotlidec)
    • OpenSSL (3.0 ขึ้นไป) หรือ LibreSSL (ทดสอบแล้วบน OpenBSD 7.7)
  • ไลบรารีอย่าง zlib, libseccomp, termcap/ncurses, libcurl ที่เคยใช้ในเวอร์ชันพัฒนาก่อนหน้านี้ ไม่จำเป็นอีกต่อไปแล้ว จึงถูกนำออกจาก dependency
  • หากเกิดปัญหาระหว่างการทำแพ็กเกจ ควรติดต่อผู้พัฒนาก่อนทำการแพตช์ เพราะมีโอกาสสูงที่จะสามารถแก้ปัญหาที่ต้นทางได้โดยตรง

แผนในอนาคต

  • แม้รีลีส 0.2.0 นี้จะใช้เวลานานกว่าที่คาดไว้ แต่ก็เป็นเวอร์ชันที่ตัดสินใจปล่อยอย่างเป็นทางการหลังจากมีฟีเจอร์ MVP ครบถ้วนแล้ว
  • สาขา v0.2 จากนี้จะเน้นเฉพาะ การแก้บั๊ก ส่วนการเพิ่มฟีเจอร์ใหม่จะดำเนินต่อบนสาขา master
  • รีลีสถัดไปจะมุ่งเน้นที่ การปรับปรุงประสิทธิภาพและความแม่นยำของโมดูล layout และ การยกระดับความเป็นมิตรต่อผู้ใช้ของ UI

ความสำคัญและข้อดีของโปรเจ็กต์

  • Chawan เป็นเว็บเบราว์เซอร์ที่ ปรับแต่งมาเพื่อสภาพแวดล้อมเทอร์มินัล ทำให้เข้าถึงเนื้อหาเว็บได้ในเซิร์ฟเวอร์และสภาพแวดล้อมที่มีทรัพยากรจำกัด
  • แตกต่างจากเว็บเบราว์เซอร์แบบข้อความรุ่นเดิมด้วยการรองรับโปรโตคอลการเข้ารหัสและการบีบอัดสมัยใหม่ รวมถึงการลด dependency ให้เหลือน้อยที่สุด
  • ด้วยความเป็นโอเพนซอร์ส จึงเหมาะต่อการขยายความสามารถเพิ่มเติมและการปรับแต่งให้ตรงความต้องการ

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

 
GN⁺ 2025-06-17
ความคิดเห็นจาก Hacker News
  • ทุกครั้งที่เห็นโปรเจกต์ที่เขียนด้วย nim ก็รู้สึกดีเสมอ ให้ความรู้สึกว่า nim เป็นภาษาที่น่าสนใจที่สุดภาษาหนึ่ง อยู่กึ่งกลางระหว่าง C/C++ กับ python ประทับใจว่าผู้ใช้ในชุมชน nim มีผลิตภาพสูงมากเมื่อเทียบกับขนาดชุมชน ทำให้ยิ่งรู้สึกมั่นใจว่าความคิดที่มีต่อ nim น่าจะไม่ผิดนัก น่าเสียดายที่ nim ยังไม่เติบโตจนเป็นที่นิยมในวงกว้าง

  • คุณ shiomiru อยากทราบว่าแหล่งเรียนรู้ที่ดีที่สุดสำหรับทำความเข้าใจแนวคิดเกี่ยวกับ TTY คืออะไร ขอคำแนะนำได้ทั้งแบบฟรีและเสียเงิน รู้จัก บทความแนะนำ TTY ของ linusakesson.net อยู่แล้ว แต่ก็ตระหนักว่ามันไม่ได้อธิบายไปถึง termcap/terminfo/curses ในคอมเมนต์อื่นมีการพูดถึงหนังสือ O'Reilly's Termcap & Terminfo (อ่านออนไลน์ได้ที่นี่)

    • chawan ใช้โมดูลเทอร์มินัลแบบคัสตอมของตัวเอง เลยไม่ได้มีความเข้าใจเชิงลึกเกี่ยวกับ X/Open curses มาตรฐานมากนัก สำหรับเรื่อง escape sequence เอกสาร ctlseqs.ms ของ XTerm เป็นแหล่งข้อมูลที่มีประโยชน์มาก ได้ไอเดียจากโปรเจกต์ notcurses ของ nick black เยอะเหมือนกัน และขอแนะนำอย่างยิ่งโดยเฉพาะ โน้ตของเขา เกี่ยวกับ "sprixels"
  • รู้สึกยินดีเสมอที่ได้เห็นแนวทางใหม่ ๆ สำหรับใช้ทดลองเล่นชั่วคราว โดยไม่ต้องไปใช้เอนจินอีกตัวที่อิง Chrome วันนี้ที่ได้เห็นอันนี้ก็เลยตื่นเต้นว่าจะลองทดสอบเองหลังเลิกเรียน ขอแนะนำ terminal port ของ chromium: carbonyl ว่าเป็นทางเลือกที่เจ๋งมาก โดยเฉพาะในสภาพแวดล้อมที่ไม่มี sixel ผู้สร้างต้นฉบับไม่ได้พัฒนาอย่างจริงจังต่อแล้ว ฟีเจอร์เลยยังจำกัดมาก และยังไม่รองรับหลายอย่าง เช่น คีย์ลัด การบันทึกไฟล์ ฯลฯ แต่ความเข้ากันได้กับ Web และความสดใหม่ของมันน่าประทับใจมาก หวังว่าจะมีคนที่ถนัด rust มาสานต่อโปรเจกต์นี้ ตอนที่ดูเมื่อไม่กี่เดือนก่อนก็ยังไม่มี fork ยอดนิยม

  • ชอบโปรเจกต์แบบนี้มาก อยากให้มีลิสต์รวมเว็บไซต์ที่เป็น text-based ส่วนตัวมีสองเว็บที่ชอบคือ plaintextsports.com กับ lite.cnn.com

  • เจ๋งมาก ลองคอมไพล์จากซอร์สบน Lenovo M8 Gen 4 ด้วย termux แล้ว ต้องติดตั้งแค่ nim เท่านั้น ประทับใจที่ติดตั้งได้เรียบร้อยโดยไม่ต้องใช้ผู้ใช้ root

  • เป็นงานที่สวยงามมาก อยากลองใช้งานจริงกับงานหลายแบบเพื่อดูว่ามันไปได้ไกลแค่ไหน HN อ่านง่ายมาก

  • ผมพยายามทำให้เว็บไซต์ของตัวเองดูดีใน Links อยู่เสมอ และตอนนี้ก็ดูเหมือนจะมีตัวเลือกใหม่เพิ่มมาให้ลุ้น ด้วยการรองรับ CSS บางส่วน ทำให้มีเรื่องต้องคิดเพิ่ม เช่น การจัดระยะห่างระหว่างองค์ประกอบ ใน Links นั้น margin/padding จะถูกมองข้ามทั้งหมด เลยจัดเมนูและอะไรต่าง ๆ ให้อยู่เรียงบนบรรทัดเดียวได้ง่าย แต่ตอนนี้สถานการณ์เริ่มซับซ้อนขึ้นแล้ว

    • โดยหลักแล้วเป้าหมายคือให้มัน "ใช้งานได้เลย" โดยไม่ต้องตั้งค่าเพิ่ม แต่ในความเป็นจริงก็มีบางครั้งที่ไม่เป็นแบบนั้น ถ้าเจอกรณีนั้นก็ถือเป็นบั๊กได้เลย และถ้าจำเป็นต้องใช้ CSS แบบคัสตอมสำหรับ grid layout จริง ๆ chawan ก็รองรับ grid media query มาตรฐาน
  • โปรเจกต์นี้เจ๋งมาก และยิ่งชื่นชมที่ทำด้วย nim แต่พอลองพิมพ์ cha example.com กลับงงมากเพราะไม่รู้วิธีใช้คำสั่งพื้นฐานอย่าง hjkl เลย กดตัวเลขแล้วมีแสดงที่มุมซ้ายล่าง แต่ก็นอกนั้นไม่มีอะไรตอบสนองเลย ลองคอมไพล์เองบน MacOS Sequoia 15.5 Apple Silicon กับ Nim 2.24 หน้าเว็บโหลดได้ปกติ แต่คำสั่งไม่ทำงาน ไม่แน่ใจว่าตัวเองพลาดอะไรไปหรือว่านี่คือบั๊ก

    • เจออาการเดียวกันใน Ghostty, iTerm2 และ Terminal.app
  • รู้สึกว่าน่าสนใจที่เลิกใช้ termcap/ncurses แล้ว หมายความว่าจัดการเทอร์มินัลเองทั้งหมดใช่ไหม

    • chawan อธิบายว่าในความเป็นจริงแทบไม่ได้ใช้ ncurses เลย ใช้แค่ termcap ต่างหาก ซึ่งอาจทำให้สับสนได้เพราะ ncurses มี termcap รวมอยู่ใน implementation ภายใน ตอนแรกเริ่มจากการลองใช้ w3m เลยเริ่มด้วย termcap แต่ termcap ตอนนี้แทบเป็นอินเทอร์เฟซที่ไร้ประโยชน์แล้ว และยังแสดง true color ที่เทอร์มินัลสมัยใหม่ต้องการไม่ได้ด้วย ข้อดีอย่างเดียวคือมันอาจ "ฟลุ๊ก" ใช้งานได้บนเทอร์มินัลโบราณจากยุค 80s บางตัว แต่ก็แทบไม่มีคุณค่าอะไร เลยไม่เปลี่ยนไปใช้ terminfo แต่เลือกตัดสินใจข้ามมันไปเลยและใช้วิธี query เทอร์มินัลแทน อีกทั้งยังมีฐานข้อมูลเทอร์มินัลฝังมาในตัว ใช้แค่เพื่อระบุค่า TERM บางตัวที่ไม่เข้ากันกับ XTerm ถ้าเป็นเทอร์มินัลที่ตอบ query ได้อย่างถูกต้อง ก็ทำงานได้ดีโดยไม่สนค่า TERM
  • ประทับใจที่บน macOS สั่ง make แค่ครั้งเดียวก็ build ได้ง่าย ๆ ดีใจที่มีตัวแทนสมัยใหม่ของ elinks