13 คะแนน โดย GN⁺ 2025-10-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น ตัวจัดการหน้าต่างแบบไทล์ แบบโอเพนซอร์สที่ใช้งานบน macOS ซึ่งกำลังพัฒนาโดยเน้นที่ ประสิทธิภาพ และ การใช้งาน
  • ทำงานได้โดย ไม่ต้องปิดใช้งาน System Integrity Protection (SIP) และเป็นหนึ่งในตัวจัดการหน้าต่างไม่กี่ตัวที่เข้ากันได้กับตัวเลือก "Displays have separate Spaces" ของ macOS
  • รองรับรูปแบบเลย์เอาต์หลากหลายที่คล้ายกับ i3/sway และ bspwm
  • มอบการเชื่อมต่ออย่างเป็นธรรมชาติกับประสบการณ์เนทีฟของ macOS เช่น การท่องเวิร์กสเปซแบบ Mission Control และท่าทางบนแทร็กแพด
  • เน้น ประสิทธิภาพของแอนิเมชัน และประสบการณ์ผู้ใช้ โดยมีจุดเด่นที่ hot reload ของการตั้งค่า และความสามารถในการเชื่อมต่อกับโปรแกรมภายนอก
  • สืบทอดข้อดีบางส่วนของตัวจัดการหน้าต่างแบบไทล์บน macOS อย่าง Aerospace (เช่น ประสิทธิภาพและความยืดหยุ่น) พร้อมตั้งเป้าเพิ่มฟีเจอร์อย่างการรองรับ แอนิเมชัน และการใช้เต็มหน้าจอเฉพาะหนึ่งจอในสภาพแวดล้อมหลายจอแสดงผล

ฟีเจอร์หลัก

  • รูปแบบเลย์เอาต์หลายแบบ: รองรับการจัดวางหน้าต่างแบบกริดเหมือน i3 หรือ sway รวมถึงวิธีแบ่งพื้นที่แบบไบนารีสไตล์ bspwm
  • ไอคอนแถบเมนู: แสดงทุกเวิร์กสเปซและสถานะเลย์เอาต์ภายในเวิร์กสเปซนั้นแบบภาพรวม
  • การนำทางสไตล์ Mission Control ของ macOS: จัดการการสลับระหว่างเวิร์กสเปซได้ง่ายในแบบภาพ
  • มีฟีเจอร์ สลับโฟกัสตามเมาส์อัตโนมัติ และ ยกหน้าต่างขึ้นอัตโนมัติ
  • สามารถ สลับตำแหน่งเมื่อทำการลากหน้าต่าง ได้ และ แอนิเมชันทำงานได้ลื่นไหล
  • เมื่อใช้ ท่าทางบนแทร็กแพด สามารถสลับเวิร์กสเปซได้เหมือนกับ macOS เนทีฟ
  • รองรับ การเปลี่ยนการตั้งค่าระหว่างทำงาน (hot reload) ทำให้ปรับแต่งแบบเรียลไทม์ได้สะดวกมาก
  • รองรับการเชื่อมต่อกับโปรแกรมภายนอก เช่น Sketchybar และการผสานงานผ่าน CLI หรือ mach port
  • สามารถส่ง สัญญาณ (Signals) ออกไปภายนอกเมื่อมีการเปลี่ยนเวิร์กสเปซหรือหน้าต่างเปลี่ยนแปลง โดยส่งสัญญาณผ่าน CLI หรือการเชื่อมต่อ mach ได้
  • พัฒนาด้วยภาษา Rust 100%

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

 
GN⁺ 2025-10-14
ความเห็นจาก Hacker News
  • เมื่อก่อนฉันใช้ i3 หนักมาก i3 ยืดหยุ่นสุด ๆ และตั้งค่าได้อิสระ จึงทำอะไรได้มากกว่าแค่ย้ายหน้าต่าง แต่พอย้ายมาใช้ Mac ก็ยังหา tiling window manager ที่ทั้งฟีเจอร์เยอะและเสถียรไม่ได้ ลองมาหลายตัวแล้วตอนนี้ก็เลยใช้ Rectangle ไปก่อน Rectangle ไม่ใช่ window manager จริง ๆ แต่มันมีแค่คีย์ลัดไว้ย้ายหน้าต่างไปซ้าย/ขวา/บน/ล่าง หรือแบ่งแบบ 3/4/6 ส่วนได้ง่าย ๆ มันครอบคลุมรูปแบบการใช้งานของฉันประมาณ 80% ไม่ต้องตั้งค่าเพิ่ม และไม่มีพฤติกรรมแปลก ๆ เลยใช้อย่างพอใจ พออายุมากขึ้นก็เริ่มไม่ไหวจะเสียเวลากับการปรับแต่งเยอะ ๆ แล้ว เว็บไซต์ทางการของ Rectangle

    • ฟีเจอร์ที่ชอบมากใน Rectangle คือโหมด todo ไม่ได้ใช้จัดการงานจริง ๆ แต่ใช้ปักหน้าต่างบางบานให้แสดงอยู่ตลอด และคีย์ลัดสำหรับหน้าต่างทั้งหมดก็จะปรับตามนั้นอัตโนมัติ สะดวกมาก
    • ขอบคุณมากที่ Rectangle รองรับตัวเลือกคีย์ลัดแบบ Spectacle ไม่รู้ว่าสักวันจะชินกับคีย์ลัดค่าเริ่มต้นไหม แต่ตอนนี้นิ้วจำแบบเดิมไปแล้วเลยยังใช้ต่อ
    • การจับคู่ Rectangle กับ Apptivate ทำให้การตามหาตัวแทน i3 ที่ทำมาหลายปีจบลงเสียที ใช้ Rectangle ย้ายหน้าต่าง ใช้ Apptivate สลับหน้าต่างด้วย super+ตัวเลข—ได้ฟีลการใช้งานแบบเดียวกับที่เคยใช้ใน i3 เลย
    • ประสบการณ์คล้ายกัน แต่ฉันใช้ Divvy แทน Rectangle เว็บไซต์ทางการของ Divvy
    • ขอแนะนำ Rectangle เลย มันช่วยให้การย้ายจาก Linux มา Mac ปรับตัวง่ายขึ้นมาก
  • บนจอ 5k/6k การทำ tiling แบบทั่วไปมีข้อจำกัด—หน้าต่างมันใหญ่เกินไป ฉันเลยคิดว่าแอปอย่าง Moom ดีกว่ามาก บน Windows ไม่มีแอปแบบ Moom ก็เลยใช้ tiling manager อย่าง komorebi แทน ในฐานะคนที่สลับไปมาระหว่างหลายระบบปฏิบัติการและหลายอุปกรณ์ รู้สึกเสียดายที่ rift ไม่รองรับคีย์ไบน์ดสากลอย่าง alt+hjkl บนจอความละเอียดสูงมากหรือจอ ultra-wide รูปแบบการจัดวางหน้าต่างแบบนี้ถือว่าจำเป็นเลย (komorebi รองรับ)

    • ถ้าแผนภาพ ASCII ที่แปะไว้ดูไม่ชัด ให้ย่อหน้าโค้ดด้วยการเว้นวรรค 4 ช่อง HN จะเรนเดอร์เป็นโค้ดให้
    • เห็นว่า komorebi กำลังจะมาลง macOS ด้วย วิดีโอแนะนำ komorebi บน macOS
  • สำหรับหลายคนอาจไม่พอ แต่ถ้าเป็นคนแบบฉันที่บน Mac มักใช้หน้าต่างเดียวเป็นหลัก หรือใช้สองจอก็ตอนต่อจอนอกเท่านั้น ฟีเจอร์พื้นฐานนี้ก็พอแล้ว คู่มือแบ่งหน้าต่างอย่างเป็นทางการของ macOS (ฉันไม่ใช่สาย tiling หนัก)

    • สงสัยว่าฟีเจอร์นี้ใช้ได้เฉพาะบน Mac Tahoe หรือเปล่า ไม่เคยรู้มาก่อนเลย
    • ไม่รู้มาก่อนเลยว่ามีฟีเจอร์แบบนี้—ขอบคุณสำหรับข้อมูล
  • เหตุผลที่โหมดเต็มจอและ gesture บน trackpad ของ macOS ดูน่าดึงดูดมาก ก็เพราะในกรณีส่วนใหญ่เราทำงานอยู่ในหน้าต่างเดียว แต่พอเป็นงานที่ต้องเปิดหลายหน้าต่างพร้อมกัน เช่น terminal, editor, browser DevTools, log, เอกสาร การคาดเดา layout ได้ล่วงหน้าจะสำคัญมาก เครื่องมือ tiling ไม่ได้มีดีแค่เอาหน้าต่างสองบานมาวางข้างกัน แต่ยัง

    • ลด overhead จากการสลับ context ได้มาก (สลับ/จัดเรียงหน้าต่างด้วยคีย์บอร์ดอย่างเดียว)
    • ทำสำเนา layout งานที่ใช้บ่อยแยกตามโปรเจกต์ได้
    • บนหน้าจอความละเอียดสูงมาก การแบ่งพื้นที่อย่างแม่นยำมีประโยชน์กว่ามาก
      สำหรับฉันบน Mac ใช้ Rectangle หรือ Moom แก้ได้ประมาณ 80% และที่เหลือใช้ Aerospace หรือ Rift พอจำนวนหน้าต่างเยอะหรือสลับบ่อย ประโยชน์ของ tiling window manager จะชัดเจนมาก
  • ครั้งหนึ่งฉันเคยพยายามทำ window manager ของตัวเอง แต่บน macOS ไม่มี API ที่ดีพอเลยยอมแพ้เร็วมาก ในทางปฏิบัติต้องไปแฮ็กใช้ accessibility API เอา โปรเจกต์นี้ก็ใช้ Objective C binding และ accessibility API เหมือนกัน เลยอยากรู้ว่าใช้เครื่องมืออะไรเป็นหลักสำหรับดีบักหรือทำฟีเจอร์

    • ผมคิดว่า accessibility framework ถูกออกแบบมาดีเกินกว่าจะเรียกแค่ว่า "แฮ็ก" ตลอดเดือนที่ผ่านมา ผมทำโปรเจกต์คล้ายกันด้วย Rust และต้องจับ binding ของหลาย macOS framework ก็ไม่ได้ได้น่ากลัวขนาดนั้น สภาพแวดล้อมพัฒนามีแค่ Rust กับ rust-analyzer แล้วก็เปิดเอกสารของ Apple กับเอกสาร objc2 ไว้ก็พอ ไม่ต้องมีการตั้งค่าซับซ้อนแบบ XCode เลย
  • ไม่นานมานี้ฉันก็เพิ่งผ่านช่วง yak shaving แบบหนัก ๆ เพื่อเซ็ต Aerospace ให้เข้ามือจริง ๆ เลยอยากรู้ว่าถ้ามีคีย์ลัดชนกันเยอะ ๆ คนอื่นแก้กันยังไง ฉันชินกับชุด hjkl มากจนอยากแมปแทบทุกอย่างเป็นปุ่มพวกนี้ ซึ่งฟีเจอร์ modal ของ Aerospace ก็ช่วยเรื่องคีย์ลัดชนได้ระดับหนึ่ง สุดท้ายแล้วแต่ละคนเซ็ตกันยังไงบ้าง?

    • ปกติดูเหมือนจะใช้กันไปแบบไม่มีทางออกพิเศษอะไรนะ ฉันเองพอใช้ในชีวิตประจำวันไม่นานก็เจอคีย์ลัดชนโผล่มาเหมือนกัน ใช้ Aerospace มาราว 1 ปี โดยตั้ง alt+space เป็น leader key แล้วซ่อนทุกอย่างไว้ข้างใต้ ใน normal mode ของ Aerospace มี alt-shortcut ไม่กี่ตัว ใช้ {hjkl} ย้ายหน้าต่าง ที่เหลือไปทำในโหมดแยกต่างหาก (เช่นโหมด ‘go-to’, ‘move-to’ สำหรับย้ายหน้าต่างอย่างรวดเร็วตามตัวอักษร/ตัวเลข) มันให้ความรู้สึกเหมือนขยายแนวคิดการใช้งาน leader key จาก zellij/tmux ใน terminal เลยค่อนข้างชอบอยู่ จุดที่ลำบากอย่างหนึ่งคือ Aerospace ชอบซ่อนหน้าต่างไว้หลังเปลี่ยนจอ ทำให้ต้องไปงมหาที่มุมล่างอยู่บ่อย ๆ
    • เคยลอง Aerospace แล้ว แต่ค่าเริ่มต้นมันเอา alt+ตัวอักษรทั้งหมด (26 ตัว) ไปผูกกับ workspace คนละอันจนคีย์ลัดสาย emacs ที่ใช้ในแต่ละแอปใช้ไม่ได้หมด แถมไม่มีแม้แต่ tutorial อธิบายคีย์แมปหรือวิธีใช้ มีแต่รายการคำสั่งยาวเหยียด ช่วงหลังฉันก็เพิ่งเจอเรื่องยุ่งกับสภาพแวดล้อม Linux อย่าง sway, hyprland มาพอสมควร (รวมถึงงานเกี่ยวกับ bootloader/disk encryption ด้วย) แต่ก็ยังรู้สึกว่าซอฟต์แวร์ที่ไม่เป็นมิตรขนาดนี้หาได้ยาก เลยลบ Aerospace ทิ้งและกำลังมอง Rift เป็นตัวเลือกถัดไป หรือไม่ก็อาจทำ window manager เองไปเลย—เพราะสุดท้ายแล้ว tiling window manager ก็เป็นเรื่องประนีประนอมตามรสนิยมแบบ "สร้างสิ่งที่ตัวเองต้องการใช้" อยู่แล้ว
    • ฉันก็ใช้แนวทางคล้ายกัน โดยตั้ง Karabiner ให้ปุ่ม Option ขวาบนคีย์บอร์ดนอกเป็น Option+Shift (A1) และ Control ขวาเป็น Control+Option+Shift (A2) ในคอนฟิก Aerospace ก็ใช้ A1+hjkl สำหรับย้ายโฟกัส A2+hjkl สำหรับย้ายหน้าต่าง สลับ workspace ใช้ A1+ui ย้ายหน้าต่างไป workspace ใช้ A2+ui สลับหน้าจอ (monitor) ใช้ A1+m ย้ายหน้าต่างไปอีกหน้าจอใช้ A2+m พวกนี้คือชุดคีย์ลัดที่ใช้บ่อยที่สุดจริง ๆ และถ้ามีคีย์ลัดชนกับแอปอื่น ก็เปลี่ยนคีย์ลัดของแอปนั้นเพื่อเลี่ยงการชน ยังขยายต่อได้อีกแต่รูปแบบปัจจุบันก็ทำงานดีพอมากแล้ว
    • ฉันใช้คีย์ลัด meh (control+alt+shift) และ hyper (control+alt+shift+command) โดยแมป caps lock ให้กดค้างเป็น meh และแตะสั้น ๆ เป็น esc แบบนี้ทำให้คีย์ลัดจำนวนมากกลายเป็นสิ่งที่กดด้วยมือเดียวได้ง่ายมาก เช่น meh+ตัวเลขสำหรับสลับ space, meh+space สำหรับ terminal hot window และ meh+hjkl สำหรับย้ายโฟกัสหน้าต่าง
  • ถ้าใช้ Hammerspoon ก็ทำ window manager เองได้ ฉันชอบแนว modal ของ Divvy (สลับ layout ด้วยปุ่มคำสั่งเดี่ยว) แต่เสียดายที่มันไม่ถูกดูแลต่อแล้ว เลยลองใช้ OpenAI Codex ทำ modal window manager ขึ้นมาเอง ซอร์สโค้ด window manager สำหรับ hammerspoon ถ้าเอาแนวทางแบบนี้มาแชร์กันก็น่าจะสนุกดี!

    • ฉันก็ใช้ divvy มาตลอด แต่ไม่รู้เลยว่ามันหยุดพัฒนาแล้ว… ถึงอย่างนั้นมันก็มีทุกอย่างที่ต้องใช้แล้ว เลยไม่ได้ลำบากอะไร ถ้ามีฟีเจอร์ที่อยากให้เพิ่มขึ้นมาจริง ๆ ก็อยากรู้เหมือนกันว่ามีอะไรบ้าง
    • ฉันใช้ MiroWindowsManager (ปลั๊กอิน Hammerspoon) แล้วได้ฟังก์ชันทั้งหมดที่ต้องการ มันมีวิธีแบ่งแบบ chord division อยู่ 3 แบบ ทำให้วางหน้าต่างไหนก็ได้ลงในสัดส่วนที่ต้องการด้วย hotkey อย่างรวดเร็ว จัดหน้าต่างได้ตามใจในไม่กี่วินาทีจริง ๆ
  • ถ้าเป็นผู้ใช้แทร็กแพด MacBook ล่ะก็ ไม่มีแอปไหนสู้ Swish ได้เลย เว็บไซต์ทางการของ Swish

    • ก็สมชื่อ "highly opinionated" จริง ๆ ;). แต่เหตุผลที่ฉันยังชอบ Divvy มากกว่าเสมอคือ คีย์ลัดคีย์บอร์ดที่ตั้งเองจะทำงานเหมือนกันเป๊ะ ไม่ว่าจะใช้ trackpad หรือคีย์บอร์ดนอก เว็บไซต์ทางการของ Divvy
  • มีใครเคยเซ็ตตัวนี้ด้วย nix flake ไหม? หลังจาก yabai ฉันก็กำลังทดสอบ window manager หลายตัวอยู่ แต่ Aerospace บางทีก็หน่วงนิด ๆ น่าจะเพราะการจัดการ event ตอนใช้คู่กับ sketchybar เพื่อทำตัวแสดง workspace สวย ๆ ตัวต่อไปอาจลองอันนี้ (rift) ดูบ้าง

  • ไม่ค่อยเข้าใจว่าทำไม macOS ถึงต้องมี tiling window manager ด้วย ต้องวางหน้าต่างเรียงข้างกันบ่อยขนาดนั้นเลยเหรอ? ปกติเปิดแอปเต็มจอแล้วปัดสี่นิ้วสลับหน้าต่างก็พอไม่ใช่หรือ? ใครช่วยโน้มน้าวที

    • ฉันใช้บ่อยมาก วาง Slack ไว้ด้านขวา 1/4 ที่เหลือก็สลับระหว่าง browser/terminal/IDE ตามงาน บ่อยครั้งก็เปิด browser คู่กับ tail log หรือแม้แต่ในแต่ละแอปเองก็แบ่งหลายมุมมอง/terminal อีกที ใน browser ก็ชอบเปิดหน้าเว็บดูเทียบกันข้าง ๆ เหมือนกัน
    • จะไม่บอกว่า tiling window manager เป็นสิ่งที่ "จำเป็น" หรอก แต่ไอเดียว่า "ก็แค่เปิดเต็มจอแล้วปัดสี่นิ้ว" อาจจะเหมาะกับคุณคนเดียวก็ได้ ฉันปิด gesture, animation และหลาย desktop (spaces) แทบทั้งหมดไปเลย การสลับระหว่างแอปเต็มจอมันช้าเกินไป และถ้าจะไปหาแอปที่ต้องการตรง ๆ ก็ต้องปัดหลายครั้งซ้อนกัน ฉันไม่ชอบต้องคำนวณในหัวว่าต้องเลื่อนไปอีกกี่ทีตามลำดับแอป แค่อยากเปิดแอปที่ต้องการขึ้นมาทันที
    • ถึงจะไม่ใช่ macOS แต่คิดว่าเหตุผลที่ใช้ tiling บน Linux ก็น่าจะคล้ายกัน บนหน้าจอแล็ปท็อปอย่างเดียวโหมดเต็มจออาจดีกว่า แต่ยิ่งจอใหญ่ขึ้น ก็ยิ่งมีเหตุผลที่จะวางหน้าต่างไว้ข้างกันมากขึ้น ไม่ว่าจะเอกสาร/อีเมล, editor/terminal/VCS, โค้ด/เอกสาร, template/เว็บ, บัญชี/ธนาคาร, จัดการไฟล์ ฯลฯ งานหลายอย่างต้องดูหลายแอปพร้อมกัน ทำให้การทำ tiling มีประสิทธิภาพกว่ามาก
    • ก็มีหลายครั้งที่การมีหลายหน้าต่างเปิดเรียงกันด้านข้างมันดีกว่า เช่น เวลาทำหลายอย่างพร้อมกันอย่างเว็บเบราว์เซอร์/เอกสาร/IDE หรือเวลางานในแอปเดียวไม่ได้ต้องใช้ทั้งจอ แอปส่วนใหญ่จริง ๆ ก็ไม่จำเป็นต้องใช้ขนาดเต็มจอ และบางครั้ง tile แค่ 1/4 กลับสะดวกกว่า ฉันเองปกติใช้เต็มจอ+virtual desktop บ่อย แต่สุดท้ายก็ขึ้นกับงาน
    • เมื่อก่อนฉันใช้ spaces (สลับ desktop) เยอะมาก แต่บนจอใหญ่กลับรู้สึกว่าการเปิดทุกอย่างไว้ในหน้าจอเดียวสะดวกกว่า ฉันใช้จอ 32 นิ้ว 3 ตัว (ซ้ายขวาหมุนแนวตั้ง) และแทบไม่ใช้โหมดเต็มจอเลยนอกจาก IDE การแบ่งหน้าจอหมายถึงมีหลายจอเล็ก ๆ อยู่พร้อมกันตลอด จึงทั้งเรียบง่ายและมีประสิทธิภาพ เพราะไม่ต้องคอยหาว่าหน้าต่างไหนอยู่ desktop ไหน แค่ Chrome เปิดหลาย space ก็ทำให้ cmd-tab เลือกหน้าต่างที่ต้องการไม่ได้บ่อยแล้ว สุดท้ายก็ต้องไล่หาเองซึ่งน่ารำคาญ ตรงกันข้าม ตอนใช้แล็ปท็อปอย่างเดียวจอมันเล็ก ก็จะจัดการหน้าต่างด้วย virtual spaces เป็นหลัก แต่พอเป็น Slack, Chrome หลายหน้าต่าง, terminal, IDE, Postman, DataGrip และแอปอื่น ๆ ทั้งหมด การสลับแต่ละแอปด้วยคีย์ลัดครั้งเดียวโดยไม่ต้องเปลี่ยนทั้งหน้าจอมันสะดวกมาก เหมือนมีจอจริง 8 จอเปิดค้างไว้ตลอด ผลิตภาพสูงขึ้นมาก และใช้ r-cmd โฟกัสแต่ละแอปได้ทำให้สลับเร็วมากด้วย ไม่ต้องวนหาใน virtual desktop อีกต่อไป