- AeroSpace เป็นตัวจัดการหน้าต่างแบบไทล์ที่อยู่ในช่วงเบต้าสำหรับ macOS ซึ่งมอบรูปแบบการใช้งานคล้าย i3 โดยเน้นการจัดวางแบบต้นไม้และเวิร์กโฟลว์ที่ขับเคลื่อนด้วยคีย์บอร์ด
- ไม่พึ่งพา Spaces พื้นฐานของ macOS แต่ใช้ การจำลองเวิร์กสเปซเสมือน ของตัวเอง โดยชูจุดเด่นเรื่องการสลับเวิร์กสเปซที่รวดเร็วแบบไม่มีแอนิเมชัน และทำงานได้โดยไม่ต้องปิด SIP
- การตั้งค่าใช้ TOML แบบข้อความล้วน ออกแบบโดยให้ความสำคัญกับ CLI เป็นหลัก พร้อม manpage และ shell autocompletion และรองรับหลายจอด้วยแนวคิดคล้าย i3
- ขณะนี้อยู่ในสถานะ Public Beta ใช้งานประจำวันได้แล้ว แต่คาดว่าจะมี breaking change ก่อนถึงเวอร์ชัน 1.0 และก่อน 1.0 ยังมีงานใหญ่เหลือ เช่น การรีแฟกเตอร์ครั้งใหญ่, ตัวประกอบคำสั่งแบบเชลล์ และการสำรวจ API สำหรับ global hotkey
- คุณค่าของโครงการมุ่งไปที่ผู้ใช้ระดับสูงและนักพัฒนา การใช้งานผ่านคีย์บอร์ด ฟีเจอร์เชิงปฏิบัติ และการดูแลรักษาบนพื้นฐาน accessibility API แบบสาธารณะ ขณะที่ GUI สำหรับตั้งค่า การทำงานร่วมกับ macOS Spaces และ ricing มีลำดับความสำคัญต่ำ
สภาพแวดล้อมการจัดหน้าต่างแบบไทล์บน macOS ที่ AeroSpace มอบให้
- AeroSpace เป็นตัวจัดการหน้าต่างแบบไทล์สไตล์ i3 สำหรับ macOS
- มีเดโมและเอกสารแยกไว้ให้
ฟีเจอร์หลักและการออกแบบ
- การจัดวางหน้าต่างประกอบขึ้นเป็นตัวจัดการหน้าต่างแบบไทล์บนพื้นฐานของ แนวคิดแบบต้นไม้
- ประสบการณ์การใช้งานได้รับแรงบันดาลใจจาก i3
- การสลับเวิร์กสเปซทำได้รวดเร็วโดยไม่มีแอนิเมชัน และไม่จำเป็นต้อง ปิด SIP
- เนื่องจาก Spaces พื้นฐานของ macOS มีข้อจำกัดมาก จึงไม่ใช้ และ AeroSpace จะจำลอง เวิร์กสเปซเสมือน ของตัวเอง
- การตั้งค่าเป็นข้อความล้วนที่เหมาะกับ dotfiles และสามารถดูตัวอย่างการตั้งค่าเริ่มต้นได้ที่ default-config.toml
- ออกแบบโดยให้ความสำคัญกับ CLI เป็นหลัก และมี manpage กับ shell autocompletion มาให้
- รองรับหลายจอด้วยแนวคิดคล้าย i3
การติดตั้งและเงื่อนไขด้านความปลอดภัย
- วิธีติดตั้งที่แนะนำคือ Homebrew cask และจะได้รับการอัปเดตอัตโนมัติ
brew install --cask nikitabobko/tap/aerospace
- ในสภาพแวดล้อมหลายจอ ต้องตรวจสอบว่ามีการจัดวางจออย่างถูกต้อง
- วิธีติดตั้งอื่น ๆ อยู่ใน คู่มือการติดตั้ง
- AeroSpace ยังไม่ได้อยู่ในสถานะ notarized
- สคริปต์ติดตั้งของ Homebrew ถูกตั้งค่าให้ลบแอตทริบิวต์
com.apple.quarantine โดยอัตโนมัติ
- ด้วยการตั้งค่านี้ แอปควรทำงานได้ทันทีโดยไม่ขึ้นคำเตือน “Apple cannot check AeroSpace for malicious software”
สถานะโครงการและงานก่อน 1.0
- สถานะปัจจุบันคือ Public Beta
- ใช้งานในชีวิตประจำวันได้ แต่ควรคาดว่าจะมี breaking change จนกว่าจะถึง 1.0
- งานที่ยังขวางการออกเวอร์ชัน 1.0 มีดังนี้
- ปัญหาด้านประสิทธิภาพ: งานทำ thread แยกต่อแอปพลิเคชันเพื่อหลบเลี่ยง blocking AX API ของ macOS เสร็จแล้ว
- การรีแฟกเตอร์ครั้งใหญ่: เขียนโครงสร้างข้อมูล core tree แบบ mutable double-linked ใหม่ให้เป็น immutable single-linked persistent tree
- สำคัญต่อความเสถียรและประสิทธิภาพที่อาจดีขึ้น
- ช่วยแก้ปัญหาความเสถียรที่หน้าต่างอาจย้ายแบบสุ่มไปยังเวิร์กสเปซที่กำลังโฟกัส
- ช่วยรองรับ macOS native tabs
- การทำตัวประกอบคำสั่งแบบเชลล์
- แนวทางขั้นต่ำที่มีแนวโน้มคือเพิ่ม
||, &&, ; และคำสั่ง eval สำหรับส่งหลายคำสั่งพร้อมกัน
- การสำรวจความเป็นไปได้ในการใช้ API
CGEvent.tapCreate กับ global hotkey
- อาจแยก left/right modifier ได้ หรืออาจทำไม่ได้
- ประเด็นใหญ่ที่วางแผนไว้หลัง 1.0 ได้แก่ sticky windows และ Dynamic TWM
คุณค่าของโครงการและสิ่งที่ไม่ใช่เป้าหมาย
- AeroSpace มุ่งเป้าไปที่ ผู้ใช้ระดับสูงและนักพัฒนา
- มุ่งเน้นการใช้งานผ่านคีย์บอร์ด
- พยายามหลีกเลี่ยง breaking change ของไฟล์ตั้งค่า CLI และพฤติกรรม แต่เพื่อไม่ให้ซอฟต์แวร์หยุดนิ่ง ก็อาจมี breaking change ที่ไตร่ตรองแล้วได้
- หลัง 1.0 หากมี breaking change จะรับประกันการเพิ่ม Semver major version
- ก่อน 1.0 breaking change อาจเกิดขึ้นได้เลย
- จะไม่ใช้ GUI หากไม่จำเป็นจริง ๆ
- ไม่มีแผนจะมี GUI สำหรับตั้งค่า
- อนุญาตให้มีไอคอนใน status menu เพื่อแสดงผลตอบกลับเชิงภาพ
- ฟีเจอร์จะยึด การใช้งานจริง เป็นเกณฑ์ และไม่มองฟีเจอร์ด้านรูปลักษณ์อย่างขอบหน้าต่าง ความโปร่งใส หรือแอนิเมชันว่าเป็นฟีเจอร์เชิงปฏิบัติ
- พยายามหลีกเลี่ยง “dark magic” อย่าง private API หรือการฉีดโค้ดเท่าที่ทำได้
- ปัจจุบันใช้ private API
_AXUIElementGetWindow เพียงตัวเดียวเพื่อดึง window ID จาก accessibility object
- นอกเหนือจากนั้นใช้ macOS public accessibility API
- ไม่ต้องปิด SIP
- มุ่งไปที่โครงสร้างที่ทนต่อการอัปเดตของ macOS และดูแลรักษาได้ง่าย
- การทำงานร่วมกับฟีเจอร์เดิมของ macOS อย่างกลมกลืนไม่ใช่เป้าหมาย
- ไม่ยอมรับการมีอยู่ของ macOS Spaces และใช้การจำลองเวิร์กสเปซของตัวเอง
- ricing มีลำดับความสำคัญต่ำ
- รองรับขั้นต่ำเพียง callback ไม่กี่ตัวสำหรับ gaps และการรวม bar
- maintainer ปัจจุบันไม่สนใจ ricing และ issue ที่เกี่ยวข้องส่วนใหญ่จะมีลำดับความสำคัญต่ำหรือถูกมองข้าม
- หากมี maintainer เพิ่มขึ้น ท่าทีต่อ ricing อาจเปลี่ยนได้
ความเข้ากันได้ ชุมชน และโครงการที่เกี่ยวข้อง
- ความเข้ากันได้กับ macOS แตกต่างกันตามวิธี build
- รันไบนารี AeroSpace: macOS 13+
- debug build จากซอร์ส: macOS 14+
- release build จากซอร์ส: macOS 15+ และต้องใช้ Xcode 26+
- ไม่รับ issue ทันที แต่ขอให้สร้าง Discussion ก่อน
- ใน GitHub Discussions มีช่องสำหรับทั้งหมด ประกาศ แจ้งออกเวอร์ชัน ไอเดียฟีเจอร์ ทั่วไป บั๊กที่อาจเกิดขึ้น และถาม-ตอบ
- โครงการที่เกี่ยวข้องมีดังนี้
- Amethyst: ตัวจัดการหน้าต่างแบบไทล์สไตล์ xmonad
- InstantSpaceSwitcher: สลับ space ทันทีด้วยการสังเคราะห์ท่าทาง trackpad ที่เร็วผิดธรรมชาติ
- yabai: ตัวจัดการหน้าต่างแบบไทล์สำหรับ macOS ที่ใช้แนวคิด binary space partitioning
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ฉันใช้สิ่งนี้ทุกวัน และสรุปคือมันเป็นวิธีจัดการหน้าต่างบน Mac ที่ดีที่สุด แต่ก็ยังสู้ i3/sway ไม่ได้
โดยเฉพาะการรองรับการลากหน้าต่างไปจัดเรียงใหม่ตามตำแหน่งสัมพัทธ์ของกันและกันยังมีจำกัดมาก จึงไม่สามารถสร้างการแบ่งแนวตั้ง/แนวนอนใหม่แบบ sway ได้ ดังนั้นถ้าอยากได้เลย์เอาต์หน้าต่างตามต้องการ ส่วนใหญ่ต้องอ้อมไปใช้คำสั่งคีย์บอร์ดแบบค่อนข้างฝืน
ตัวอย่างเช่น ถ้ามีหน้าต่างสองบานวางซ้ายขวาและอยากแบ่งบานหนึ่งในแนวตั้ง ใน sway ก็แค่เปิดหน้าต่างใหม่แล้วลากไปวางที่ครึ่งบน/ล่างของหน้าต่างเดิมก็จบ สำหรับ AeroSpace วิธีที่ดีที่สุดที่ฉันเจอคือเปิดหน้าต่างใหม่ เปลี่ยนทั้งสามหน้าต่างให้เป็นสแตกแนวตั้ง แล้วโฟกัสหน้าต่างที่เดิมอยู่ซ้ายและสั่ง
move leftถ้าเปิด normalization ไว้ ก็ไม่จำเป็นต้อง “เปลี่ยนเป็นสแตกแนวตั้ง”
จากเลย์เอาต์นี้:
h_tiles
├── window1 (focused)
├── window2
└── window3
เมื่อสั่ง
move leftจะกลายเป็นแบบนี้:h_tiles
├── window1 (focused)
└── v_tiles
├── window2
└── window3
ฉันไม่รู้มาก่อนเลยว่าใน sway ลากแล้ววางหน้าต่างได้ ฉันเลือกหน้าต่างที่อยากแบ่งแล้วกด
Command + vเพื่อตั้งเป็นการแบ่งแนวตั้ง จากนั้นก็สร้างหน้าต่างใหม่ ซึ่งปกติก็เป็นเทอร์มินัลหรือไม่ก็ย้ายหน้าต่างด้วย
Command + Shift + [hjkl]ฉันวางแผนจะลองใช้เพื่อดูว่าปัญหาหลักของฉันจะแก้ได้ก่อนหรือไม่ กำลังหาวิธีบน Mac ที่ช่วยจำการจัดวางหน้าจอได้พอใช้
ทุกครั้งที่ตื่นจากการบูต เดสก์ท็อปที่ใช้ 3 จอก็เหมือนความจำเสื่อมสนิท
ตามอุดมคติแล้ว ฉันอยากจัดการ workspace เองได้ และสลับไปใช้แค่หน้าจอโน้ตบุ๊ก หรือใช้จอนอก 2-3 จอที่โต๊ะทำงาน/ที่บ้านคนละชุดได้
ฉันใช้ Spectacle อยู่ แต่ไม่รองรับแล้ว
อันนี้ยังไม่เคยใช้ แต่ฉันใช้ yabai อยู่ และมันทำงานตรงตามที่อธิบายไว้ทุกอย่าง
ตรงที่ไม่ต้องปิด
SIPนี่น่าสนใจมาก ตัวจัดการหน้าต่างแนวนี้แทบทั้งหมดจริง ๆ แล้วต้องปิดการใช้งาน SIP เลยทำให้ฉันลังเลอยากรู้ว่า AeroSpace ทำอะไรต่างออกไปถึงทำงานร่วมกับ SIP ได้
เจอข้อความนี้ใน README:
AeroSpace ไม่ได้ขอให้ปิด SIP (System Integrity Protection) ตัวอย่างเช่น yabai ต้องปิด SIP เพื่อใช้บางฟีเจอร์ AeroSpace หาวิธีอื่น หรือเช่นจำลอง workspace ขึ้นมาเอง หรือไม่ก็ไม่ทำฟีเจอร์นั้นไปเลย ความโปร่งใสของหน้าต่างและเงาหน้าต่างไม่ใช่ฟีเจอร์ที่ใช้งานจริงจัง
แต่ฟีเจอร์โฟกัสตามเมาส์ของ yabai นั้นดีมากจริง ๆ เลยสงสัยว่าจะใช้ yabai แค่ฟีเจอร์นั้น พร้อมให้ AeroSpace ทำหน้าที่แบบ i3 ได้หรือไม่
ยอดเยี่ยมมาก ก่อนหน้านี้ฉันใช้ Amethyst มาตลอด แต่ชอบ AeroSpace มากกว่าทันที
สิ่งที่ไม่พอใจที่สุดใน Amethyst คือมันโยนหน้าต่างแบบหน่วงและไม่เสถียรมาก ใน AeroSpace หน้าต่างย้ายไป workspace/จออื่นได้ทันทีและไม่ล้มเหลว
ฉันยังชอบที่มันทิ้ง workspace แบบฝังใน macOS ไปเลย แล้วใช้virtual workspaceของตัวเอง อย่างที่ผู้เขียนบอก วิธีในตัวนั้นไม่น่าพอใจพอสมควร และแนวทางนี้ทำให้การตั้งค่าหลายจอพอทนและออกจะใช้งานสนุกขึ้นเล็กน้อย
บนคอมพิวเตอร์ที่ใช้ทำงาน ฉันใช้ yabai ไม่ได้เพราะต้องปิด SIP แต่ผู้เขียน AeroSpace คัดค้านเรื่องนี้อย่างชัดเจน และก็ดูเป็นการตัดสินใจที่สมเหตุสมผล
ตอนใช้ Linux ฉันย้ายจาก i3 ไป xmonad แต่บน macOS นี่ AeroSpace รู้สึกดีกว่าชัดเจน ตัวจัดการหน้าต่างทั้งสามตัวบน macOS ยังสู้ตัวจัดการหน้าต่างจริง ๆ บน Linux ไม่ได้ แต่ AeroSpace ก็ดูใกล้เคียงคำว่า “ดีที่สุดเท่าที่เป็นไปได้” มากที่สุด
ฉันชอบแนวทางแบบ Spaces ปลอม
เคยคิดว่าจะลองทำให้คล้ายกันด้วยการย่อหน้าต่าง แต่ก็ไม่ได้ทำจริง
บน macOS การทำ tiling มักชวนหดหู่เพราะขาด API ที่จำเป็น ถึงอย่างนั้นวิธีนี้ก็น่าจะเป็นแนวทางที่มีประสิทธิภาพที่สุด
ฉันเคยใช้ yabai แต่ใช้แค่ย้ายหน้าต่างและฟีเจอร์โฟกัสตามเมาส์ ไม่ได้ใช้ทำ tiling เพราะมันไม่เสถียร ซึ่งไม่ใช่ความผิดของ yabai
ขอบคุณ nikitabobko
ตอนนี้ถ้าหาวิธีปรับให้ alt-tab มองข้ามหน้าต่างของ workspace ปลอมทั้งหมดที่ถูกกองไว้ตามมุมได้ ฉันก็คงจะลองใช้ทันที
JankyBorders ที่ลิงก์ในเอกสารก็ดีเหมือนกัน
https://github.com/koekeishiya/yabai
https://github.com/lwouis/alt-tab-macos
https://github.com/FelixKratz/JankyBorders
alt+h/alt+jCommand+Tabเป็นการสลับหน้าต่างแบบ global ส่วนคีย์ลัดข้างต้นใช้สำหรับการสลับภายในบริบทของ workspaceฉันเริ่มคุ้นกับเครื่องมือจัดการหน้าต่างของ Raycast พอสมควรแล้ว แต่ในทางปฏิบัติแทบใช้ร่วมกับ AeroSpace ไม่ได้
ตัวอย่างเช่น ใน Raycast สามารถใช้ตัวเลือก
reasonable sizeเพื่อเปิดหน้าต่างขนาดพอดีและจัดให้อยู่กึ่งกลางได้ จะแบ่งครึ่งซ้าย/ขวา ขยายเต็มจอ หรือจัดเป็น 4 ช่อง/3 ส่วนก็ได้แต่ใน AeroSpace ต่อให้พยายามย้ายหน้าต่างใน tile ไปครึ่งซ้าย ครึ่งขวา ซ้าย 2/3 หรือทำให้เป็น floating ด้วย
reasonable sizeก็ไม่ทำงานนอกจากนี้ยังมีบั๊กเวลาเอาแอปไปที่ “next desktop” และ “previous desktop” ด้วย ดูเหมือนว่า AeroSpace จะทำเดสก์ท็อปหลายอันของ Mac ขึ้นมาเป็น workspace ของตัวเอง ดังนั้นวิดีโอแนะนำจึงแสดงการสลับระหว่าง workspace คนละอัน ไม่ใช่การสลับระหว่างเดสก์ท็อปคนละอันจริง ๆ
ผลก็คือพอใช้ “next desktop” กับ “previous desktop” แล้ว tiling จะพังหมด น่าเสียดายว่าถ้า workspace ถูกผูกตรงกับแต่ละเดสก์ท็อปของ Mac และการย้าย workspace เท่ากับการย้ายเดสก์ท็อป ก็น่าจะพอเข้ากันได้กับ Raycast และฟีเจอร์พื้นฐานของ macOS มากกว่านี้
Raycast ดีมากจริง ๆ
คิดว่าในอนาคตน่าจะกลายเป็น แอปมาตรฐาน สำหรับสาย power user บน Mac
มีฟีเจอร์ที่มีประโยชน์เยอะมากจนต้องหาเวลาศึกษาจริงจัง ฉันใช้การเชื่อมต่อกับ Linear.app มากที่สุด
ตลอด 5 เวอร์ชันหลังของ macOS ผมใช้ yabai บนเครื่องทำงานมาพอสมควรโดยไม่ปิด SIP
ชอบมาก และระบบ tiling จะมีอาการไม่เสถียรแค่ประมาณไม่กี่วันครั้ง ถึงอย่างนั้นเพราะผมรันคำสั่ง yabai อย่างน้อยนาทีละครั้ง ก็เลยผูก
yabai --restart-serviceไว้กับคีย์ลัด และพอกดก็กลับมาทำงานทันทีเสมอดังนั้นผมเลยมองว่ามันค่อนข้างเสถียรและยอดเยี่ยม เรื่องหลายจอนั้นยากและผมไม่ได้ใช้เยอะ แต่ stack กับการย่อแบบ “เต็มจอ” อย่างรวดเร็วนั้นดีมาก
บางครั้งตอนอัปเกรดเวอร์ชัน แอนติไวรัสของบริษัทจะมองว่าเป็นไวรัสแล้วปิดใช้งานไป 24 ชั่วโมง ซึ่งวันนั้นจะรู้สึกหน่วงและหดหู่จนไม่อยากใช้คอมเลย
ใช้มาหลายเดือนแล้ว i3 แทบจะสมบูรณ์แบบ ส่วน AeroSpace เป็นความพยายามที่ดี แต่ยังห่างจาก i3 มากพอสมควรและค่อนข้างไม่เสถียร
น่าจะเป็นเพราะ Mac OS X ไม่ได้เปิดให้ควบคุมได้เต็มที่เหมือนตัวจัดการหน้าต่างบน Unix
ถึงอย่างนั้นก็ยังหาอะไรที่ดีกว่านี้ไม่ได้ ถ้า Linux บน Apple Silicon ใช้งานได้ดีเมื่อไรผมจะติดตั้งเลย อย่างน้อยสำหรับผม แค่ i3 อย่างเดียวก็เป็นเหตุผลเพียงพอที่จะใช้ Linux แล้ว และ Mac OS X ในแง่ตัวจัดการหน้าต่างนั้นแย่มากจริง ๆ
ผมเคยลองแตะ ๆ งานอดิเรกในพื้นที่ใกล้เคียงนี้มาบ้าง สาเหตุก็เพราะ API ทางการมีข้อจำกัด
สุดท้ายเลยต้องพึ่ง private API ที่ไม่ได้มีเอกสารและการแฮ็กพอสมควร สิ่งพวกนี้เป็นของใช้ภายในจึงไม่เสถียร และตัวระบบปฏิบัติการเองก็ไม่ได้ออกแบบมาให้ทำงานร่วมกับสถานการณ์ที่มันเข้าไปแทรกแซงการจัดการหน้าต่าง/โปรเซสมากขนาดนี้ได้ดีนัก เลยกลายเป็นว่าระบบปฏิบัติการกับแอปของ third-party มักเหยียบเท้ากันบ่อย ๆ
ผมก็มีปัญหาเดียวกัน ยังหาตัวจัดการหน้าต่างที่จัดการ โหมดเต็มจอแบบค่าเริ่มต้นของ OSX ได้ดีจริง ๆ ไม่เจอ
AeroSpace จะรวนเมื่อใช้โหมดเต็มจอแบบปกติ มันสับสนว่าจะโฟกัสไว้ที่ไหน
กรณีของผม:
Workspace 1: terminal
Workspace 2: slack app
Open chrome in native full screen
ตอนนี้ลองสลับกลับไป workspace 1 แล้วจะเจอปัญหา
ช่วงนี้ผมคงจะลองใช้ต่อโดยไม่มีแอปที่เป็น native full screen หวังว่ามันจะทำงานดีขึ้น
อยากรู้ความต่างของประสบการณ์ใช้งานระหว่างตัวนี้กับ Yabai สำหรับผมปัญหาเรื่อง SIP ของ Yabai ไม่นับว่าใหญ่ คนที่ผมรู้จักซึ่งใช้ Yabai ไม่มีใครปิด SIP เลย และดูเหมือนทุกคนก็ใช้งานกันได้ดี
เลยสงสัยว่าความต่างอยู่ที่ความเป็น สไตล์ i3 หรือเปล่า
ส่วนตัวผมใช้ยูทิลิตีที่ทำให้สามารถกดปุ่ม modifier ค้างไว้แล้วใช้เมาส์ปรับขนาดและย้ายหน้าต่างจากตรงไหนของหน้าต่างก็ได้ แบบ Fluxbox มันไม่อัตโนมัติ แต่ก็ไม่ไม่เสถียรเช่นกัน มันใกล้เคียงกับการทำให้การใช้งานแบบ floating ง่ายขึ้นมากด้วยการลดการขยับเมาส์ มากกว่าจะไปทางระบบที่ถูกจัดการเต็มรูปแบบ
ผมใช้ทั้งคู่มาเยอะ และชอบ AeroSpace มากกว่า
สิ่งที่ชี้ขาดสำหรับผมคือ การรองรับหลายจอ และนอกจากนี้ก็ยังมีข้อดีเล็ก ๆ น้อย ๆ อีก
ใน Yabai ถ้าย้าย workspace ไปยังจอใหม่ ID จะเปลี่ยน ทำให้เข้าถึงด้วยคีย์ลัดเดิมไม่ได้อีกแล้ว สาเหตุที่
alt+2ใช้ไม่ได้ก็เพราะมันไม่ใช่ workspace 2 อีกต่อไป แต่อาจกลายเป็น 11 หรือเลขอื่นแทน ใน AeroSpace สามารถย้าย workspace ข้ามจอได้ง่ายด้วยalt+mและalt+shift+mอีกฟีเจอร์หนึ่งคือหน้าต่างจะเข้าที่ทันทีโดยไม่มีแอนิเมชัน Mission Control ซึ่งเป็นจุดที่กวนใจผมมากจริง ๆ
สำหรับผม มีอยู่สองอย่างนี้ที่แทบต้องใช้ทุกวัน และเพราะการรองรับ workspace ยังไม่ดีพอ Yabai จึงเกือบจะเป็นของที่ผมใช้ไม่ได้เลย
ถ้าจะจัดการ Spaces ใน Yabai ไม่ว่าทางใดก็ตาม หรือเปลี่ยนลำดับการซ้อนของหน้าต่าง หรือใช้ความสามารถอื่น ๆ อีกมาก ต้องปิด SIP [0]
ถ้าไม่ใช้ฟีเจอร์พวกนั้นก็แล้วแต่แต่ละคน แต่สำหรับผู้ใช้จำนวนมาก นี่คือฟีเจอร์หลัก
[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
อยากรู้ว่าต่างจาก Amethyst อย่างไร Amethyst ช่วงหลังเสถียรขึ้นมากและผมก็ใช้อย่างมีความสุข
การตั้งค่าแบบข้อความดูน่าสนใจทีเดียวในความประทับใจแรก แต่ยังไม่แน่ใจว่าคุ้มพอจะย้ายไหม
จนถึงตอนนี้ผมใช้ Amethyst มา แต่พอเจอ AeroSpace ก็ชอบมากกว่าทันที
สิ่งที่ผมหงุดหงิดที่สุดใน Amethyst คือมันโยนหน้าต่างได้อืดและไม่เสถียรมาก ใน AeroSpace หน้าต่างจะย้ายไป workspace/monitor อื่นได้ทันทีและไม่ล้มเหลว
ผมยังชอบที่มันทิ้งระบบ workspace ในตัวของ macOS ไปเลย แล้วใช้ virtual workspace ของตัวเองแทน ทำให้การตั้งค่าหลายจอพอทนและออกจะสนุกขึ้นนิดหน่อยด้วย
ตอนใช้ Linux ผมย้ายจาก i3 ไป xmonad แต่บน macOS ผมรู้สึกว่า AeroSpace ดีกว่าอย่างชัดเจน ตัวจัดการหน้าต่างบน macOS ทั้งสามตัวยังสู้ตัวจัดการหน้าต่างของจริงบน Linux ไม่ได้ แต่เท่าที่เป็นไปได้ AeroSpace ก็ดูใกล้เคียงที่สุดแล้ว
จากประสบการณ์ของผม AeroSpace ดีกว่าในแทบทุกด้าน
มันมีจุดแปลก ๆ และผมน่าจะต้องส่งบั๊กรายงานอีกสองสามอัน แต่ก็ทำให้ macOS ใช้งานได้ทนมือกว่าตอนใช้ Amethyst มาก
ใน Amethyst ก็ทำ การตั้งค่าแบบข้อความ ได้เหมือนกัน
https://github.com/ianyh/Amethyst/blob/development/docs/conf...
ฉันใช้สิ่งนี้มาได้หลายเดือนแล้ว และโดยรวมก็ชอบมาก จุดที่ดีคือมันตั้งค่าทุกอย่างได้ในไฟล์เดียว หรือก็คือไม่มี GUI
ปัญหาอย่างหนึ่งคือถ้าแอปใช้แท็บแบบพื้นฐานของ Mac, AeroSpace จะมองแต่ละแท็บเป็นหน้าต่าง ทำให้ฟีเจอร์ เต็มหน้าจอ ใช้งานพังไปเลย ตัวอย่างหนึ่งคือ Alacritty ซึ่งค่อนข้างแปลก
มีการเปิด issue ที่เกี่ยวข้องไว้แล้ว:
https://github.com/nikitabobko/AeroSpace/issues/68