4 คะแนน โดย GN⁺ 2024-06-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

lsix: เครื่องมือแสดงภาพขนาดย่อในเทอร์มินัล

วิธีใช้งาน

  • ใช้งานได้ด้วยคำสั่ง lsix [ไฟล์ ...]
  • โดยค่าเริ่มต้นจะแสดงรูปภาพในไดเรกทอรีทำงานปัจจุบัน
  • สามารถระบุชื่อไฟล์หรือใช้ไวลด์การ์ดได้ (เช่น lsix *jpg*png)

ตัวอย่าง

การใช้งานพื้นฐาน

  • เมื่อพิมพ์คำสั่ง lsix จะแสดงรูปภาพในไดเรกทอรีปัจจุบัน
  • หากต้องการบังคับให้แสดงไฟล์ชนิดใดชนิดหนึ่ง ให้ระบุชื่อไฟล์หรือใช้ไวลด์การ์ด (เช่น lsix *.pdf)

การขยาย GIF

  • เมื่อระบุไฟล์ GIF ทุกเฟรมจะถูกขยายและแสดงเป็นมอนทาจ (เช่น lsix nyancat.gif)

การตรวจจับสีพื้นหลังของเทอร์มินัล

  • ไฟล์ PNG และ SVG จะแสดงอัลฟาแชนเนลได้อย่างถูกต้องให้เข้ากับสีพื้นหลังของเทอร์มินัล
  • ตรวจจับสีตัวอักษรและสีพื้นหลังของเทอร์มินัลแล้วปรับให้เหมาะสม

คุณสมบัติ

  • ตรวจจับได้ว่าเทอร์มินัลสามารถแสดงกราฟิก SIXEL ได้หรือไม่
  • ทำงานได้ดีบนเซิร์ฟเวอร์ระยะไกลผ่าน SSH
  • รองรับกราฟิกที่ไม่ใช่บิตแมปได้ดีด้วย (เช่น .svg, .eps, .pdf, .xcf)
  • ตรวจจับจำนวน color register ของเทอร์มินัลโดยอัตโนมัติและปรับปรุงคุณภาพของภาพ
  • ตรวจจับสีตัวอักษรและสีพื้นหลังของเทอร์มินัลโดยอัตโนมัติ
  • เมื่อมีรูปภาพจำนวนมาก จะแสดงทีละบรรทัด จึงไม่ต้องรอให้มอนทาจทั้งหมดเสร็จก่อน
  • แสดงชื่อไฟล์ยาว ๆ แบบตัดบรรทัดอย่างเหมาะสม
  • เปลี่ยนความกว้างของไทล์ในมอนทาจ, font family, point size ฯลฯ ได้อย่างง่ายดาย

การติดตั้ง

  • วางไฟล์ lsix ไว้ในพาธแล้วเรียกใช้งาน (เช่น /usr/local/bin)
  • ต้องใช้ ImageMagick และสามารถติดตั้งได้ง่ายผ่านตัวจัดการแพ็กเกจ (เช่น apt-get install imagemagick)
  • ผู้ใช้ MacOS สามารถติดตั้งด้วยคำสั่ง brew install lsix

การรองรับเทอร์มินัล

  • เทอร์มินัลที่รองรับกราฟิก SIXEL: XTerm, MLterm, foot, Wezterm, Contour, iTerm2, Konsole, yakuake, WSLtty, MinTTY, Yaft, VTE, sixel-tmux, ttyd
  • เทอร์มินัลที่ไม่รองรับกราฟิก SIXEL: MacOS Terminal, kitty, เทอร์มินัลมาตรฐานทั้งหมดที่ใช้ libvte เป็นฐาน (gnome-terminal, terminator, lxterm), Alacritty

การตั้งค่า

  • lsix ถูกออกแบบให้เรียบง่ายมาก จึงไม่มีไฟล์ตั้งค่าหรือแฟลกคำสั่งแยกต่างหาก
  • สามารถแก้ไขสคริปต์โดยตรงเพื่อปรับเปลี่ยนได้ง่าย

บั๊ก

  • สีพื้นหลังแสดงไม่ถูกต้องในโหมด reverse video ของ XTerm
  • ความกว้างหน้าจอของ XTerm ถูกจำกัดไว้ที่ 1000px
  • หากชื่อไฟล์ขึ้นต้นด้วย "@" จะทำให้ ImageMagick เกิดข้อผิดพลาด
  • หากกำหนดสตริงว่างเป็นชื่อไฟล์ ImageMagick จะค้าง
  • ชื่อไฟล์ยาวถูกตัดบรรทัดอย่างไม่มีประสิทธิภาพ
  • ไดเรกทอรีที่ระบุผ่านบรรทัดคำสั่งจะไม่ถูกประมวลผลแบบ recursive
  • อาจเกิดปัญหาเมื่อระบุไฟล์วิดีโอ

ปัญหาในอนาคต

  • มาตรฐาน SIXEL ไม่มีวิธี query ขนาดของหน้าจอกราฟิก
  • ไม่มีวิธี query จำนวน color register
  • เทอร์มินัลอีมูเลเตอร์บางตัวไม่เข้ากันกับ lsix

ความเห็นของ GN⁺

  • การดูภาพในเทอร์มินัล: lsix เป็นเครื่องมือที่มีประโยชน์สำหรับการดูรูปภาพในเทอร์มินัลได้อย่างง่ายดาย โดยเฉพาะเมื่อต้องตรวจสอบรูปภาพบนเซิร์ฟเวอร์ระยะไกล
  • ปัญหาความเข้ากันได้: ไม่ใช่ทุกเทอร์มินัลที่จะรองรับกราฟิก SIXEL จึงควรตรวจสอบความเข้ากันได้ก่อนใช้งาน
  • ติดตั้งง่าย: การติดตั้งทำได้ง่ายมาก และซอฟต์แวร์ที่ต้องใช้ก็หาได้ไม่ยาก
  • ปรับแต่งได้: สคริปต์มีความเรียบง่าย จึงทำให้ผู้ใช้แก้ไขและขยายความสามารถได้สะดวก
  • เครื่องมือทางเลือก: เครื่องมืออื่นที่ให้ความสามารถคล้ายกันมี img2sixel เป็นต้น

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

 
GN⁺ 2024-06-08
ความเห็นจาก Hacker News
  • สาขา sixel แบบทดลองของ Tmux ถูกรวมเข้ากับสาขาหลักเมื่อราว 10 เดือนก่อน ตอนนี้สามารถคอมไพล์ Tmux ด้วยตัวเลือก --enable-sixel และใช้เครื่องมืออย่าง lsix ได้แล้ว หากต้องการตรวจสอบว่าเทอร์มินัลหรือมัลติเพล็กเซอร์ที่คุณชอบรองรับ sixel หรือไม่ สามารถดูได้จากเว็บไซต์ "Are We Sixel Yet"
  • ฟีเจอร์ที่ชอบที่สุดในรีโพซิทอรีนี้คือไดเรกทอรี README.md.d คิดว่าเป็นไอเดียที่ดี และน่าจะตัด .md ออกไปได้ด้วย
  • ตรวจจับการรองรับ sixel โดยอัตโนมัติด้วย \e[c โดย \e[c คือฟังก์ชัน "Send Device Attributes"
  • ในแนวทางคล้ายกันก็มีเครื่องมือชื่อ timg เช่นกัน
  • เป็นไอเดียที่ดี แต่ใช้กับ PuTTY/ KiTTY ไม่ได้ ต้องใช้เทอร์มินัลที่รองรับกราฟิก sixel หากต้องการทดสอบว่าเทอร์มินัลรองรับ sixel หรือไม่ สามารถลองแปลงรูปภาพแล้วตรวจสอบได้ ถ้าไม่รองรับก็ส่งบั๊กรายงานได้
  • iTerm2 บน MacOS มีฟังก์ชันคล้ายกัน แต่มีภาระฝั่งเซิร์ฟเวอร์น้อยกว่า แทนที่จะเรนเดอร์รูปภาพเป็น sixel บนเซิร์ฟเวอร์ จะส่งภาพที่เข้ารหัสแบบ base64 ไปยังไคลเอนต์เพื่อเรนเดอร์ในเครื่อง
  • fzf รองรับรูปภาพ sixel แบบ (experimental) ในหน้าต่างพรีวิวตั้งแต่เวอร์ชัน 0.44.0 แต่ใช้งานบน Windows ไม่ได้
  • ฟอนต์ของ HN อาจทำให้เข้าใจผิดได้ กำลังรอพาดหัวถัดไปอยู่: 'Isis, like "ls", but for terrorists.'
  • ควรระวังเมื่อรันเครื่องมือนี้ในไดเรกทอรีที่ไม่น่าเชื่อถือ โดยเฉพาะเมื่อจัดการไฟล์อย่าง pdf หากใช้ ImageMagick ก็ยิ่งต้องระวัง
  • ตราบใดที่เทอร์มินัลรองรับกราฟิก sixel ก็ไม่มีปัญหา