การทำสลับ Space แบบเนทีฟทันทีบน macOS
(arhan.sh)- macOS มีโครงสร้างที่ ไม่สามารถปิดแอนิเมชันการสลับ Space ได้ ทำให้เมื่อสลับบ่อย ๆ จะรู้สึกถึงความหน่วงได้
- โซลูชันเดิมอย่างการตั้งค่า “Reduce motion” หรือ yabai window manager ต่างก็มีข้อจำกัด เช่น ยังคงมีความหน่วง หรือ ต้องปิด SIP
- InstantSpaceSwitcher แก้ปัญหานี้โดยไม่มีข้อจำกัดดังกล่าว ด้วยการ จำลองการปัดแทร็กแพดความเร็วสูง เพื่อให้ สลับได้ทันที
- ทำงานในรูปแบบแอปแบบเนทีฟโดยไม่ต้องปิด SIP และยังรองรับฟังก์ชัน ย้ายไปยังหมายเลข Space ผ่าน CLI
- เป็น เครื่องมือเชิงปฏิบัติที่ช่วยให้สลับ Space ได้รวดเร็วในสภาพแวดล้อมมาตรฐานของ macOS โดยตัดความซับซ้อนของเครื่องมือภายนอกเดิมออกไป
ปัญหาการสลับ Space บน macOS และวิธีแก้เดิม
- macOS มี โครงสร้างที่ไม่สามารถปิดแอนิเมชันตอนสลับ Space ได้ ทำให้เมื่อสลับบ่อย ๆ จะเกิด ความรู้สึกหน่วงสะสมที่น่ารำคาญ
- Apple ยังคงไม่ตอบรับ คำขอให้ปิดแอนิเมชันมาโดยตลอด
- แม้เวลาในการสลับจะสั้น แต่ถ้าสลับบ่อยก็จะ รู้สึกว่าช้าลงอย่างชัดเจน
- วิธีแก้ที่มักถูกแนะนำคือการตั้งค่า “Reduce motion” แต่จะถูกแทนที่ด้วยแอนิเมชันแบบ fade-in จึงยังคงมีความหน่วงอยู่
- นอกจากนี้การตั้งค่านี้ยังเปิดใช้
prefers-reduced-motionmedia query ของเว็บเบราว์เซอร์ ทำให้เกิดผลข้างเคียงคือ ปิดการทำงานของเว็บแอนิเมชัน
- นอกจากนี้การตั้งค่านี้ยังเปิดใช้
- ฟังก์ชัน instant switcher ของ yabai tiling window manager ต้องการ แพตช์ไบนารีของระบบปฏิบัติการ จึงจำเป็นต้องปิด System Integrity Protection (SIP)
- เมื่อใช้ yabai จะต้อง แทนที่ window manager เริ่มต้น และ ไม่เข้ากัน กับ PaperWM.spoon เป็นต้น
- ตัวจัดการ virtual space ภายนอกอย่าง FlashSpace, AeroSpace virtual workspaces เป็น การทำงานแบบไม่เนทีฟที่เลียนแบบการสลับ ด้วยวิธีซ่อน/แสดงหน้าต่าง
- ยังมีวิธีใช้ฟีเจอร์แบบเสียเงินของ BetterTouchTool อย่าง “Move Right/Left Space (Without Animation)” ได้เช่นกัน แต่มีข้อจำกัดคือ ต้องซื้อไลเซนส์แบบเสียเงิน
InstantSpaceSwitcher — เครื่องมือสลับ Space แบบเนทีฟทันที
- InstantSpaceSwitcher ที่พัฒนาโดย jurplel บน GitHub ช่วยลบข้อจำกัดทั้งหมดข้างต้นและรองรับการ สลับ Space ได้ทันที
-
ให้มาในรูปแบบแอปบนแถบเมนู และทำงานได้โดยไม่ต้องปิด SIP
- ทำงานโดย จำลองการปัดแทร็กแพดความเร็วสูง เพื่อให้ สลับได้โดยแทบไม่มีความหน่วง
- มีทั้งฟังก์ชัน ย้ายไปยังหมายเลข Space โดยตรง และ command-line interface (CLI)
- ตัวอย่างการใช้ CLI:
.build/release/ISSCli [left|right|index <n>]- ขั้นตอนการติดตั้งมีดังนี้
-
- git clone https://github.com/jurplel/InstantSpaceSwitcher
- cd InstantSpaceSwitcher
- ./build.sh
-
- หลังจาก build แล้วสามารถรันเป็น แอปแบบเนทีฟ ได้
- ปัจจุบันใน GitHub repository มี ดาว 1 ดวง (ของผู้เขียนเอง) เท่านั้น และคาดหวังว่าจะมีผู้ใช้ค้นพบและนำเครื่องมือนี้ไปใช้มากขึ้น
-
ข้อมูลอ้างอิงเพิ่มเติม
- instantspaces เป็นความพยายามในการแยก instant switcher ของ yabai ออกมา แต่ ใช้งานไม่ได้บน macOS Tahoe
- แม้พยายามหลายครั้งก็ยังไม่สำเร็จ และ InstantSpaceSwitcher ทำงานได้เสถียรกว่า
- หากมีผู้ใช้อื่นที่ทำสำเร็จ ผู้เขียน ขอรับฟีดแบ็ก
1 ความคิดเห็น
ความเห็นจาก Hacker News
ตั้งแต่เด็กก็ชินกับ แอนิเมชันการสลับ Spaces นี้ เลยไม่เคยคิดว่ามันน่ารำคาญ
แต่พอซื้อ MacBook ใหม่ ก็เริ่มรู้สึกว่ามันรวนบ่อย เพราะกดคีย์ลัดได้เร็วกว่าการสลับโฟกัสของระบบ
พอค้นดูก็พบว่าไม่ใช่เพราะ muscle memory ของตัวเองผิด แต่เป็นเพราะบน Mac รุ่นใหม่ที่ใช้จอ 120Hz ความเร็วแอนิเมชันช้าลงจริง
ถ้าปรับหน้าจอกลับไปที่ 60Hz ก็จะกลับมาเร็วเท่าเดิม
เลยสงสัยว่าทำไมถึงเกิดการเปลี่ยนแปลงแบบนี้ขึ้นมา และทำไมผ่านไป 5 ปีแล้ว บริษัทมูลค่าตลาด 3.82 ล้านล้านดอลลาร์ ยังไม่แก้ไข
ดูการถกเถียงที่เกี่ยวข้องได้ใน ฟอรัม Apple และ วิดีโอ YouTube
ชวนให้สงสัยว่าวิศวกรของ Apple ใช้ macOS กันจริงหรือเปล่า
สุดท้ายมันมีประโยชน์แค่ เอฟเฟกต์ว้าวช่วงแรก เท่านั้น
น่าแปลกใจที่ฟังก์ชัน UI พื้นฐานแบบนี้ยังไม่ได้รับการแก้ไขจนถึงตอนนี้
มันน่าหงุดหงิดมากที่ระหว่างสลับ Spaces แล้วคีย์อินพุตไปลงหน้าต่างผิดบาน ตอนนี้เพิ่งรู้ว่าสาเหตุคือ MacBook ใหม่
โล่งใจจริง ๆ
คล้ายกับเกมที่ไม่จำกัดเฟรมเรตแล้วการเคลื่อนไหวเปลี่ยนไปตามอัตราเฟรม
คิดว่า Apple กำลังทำ ความผิดพลาดร้ายแรง จริง ๆ
Microsoft ก็เหมือนกัน
ควรออกแบบอินเทอร์เฟซที่ดีและค่าเริ่มต้นที่สมเหตุสมผล แต่ ไม่ควรมัดมือมัดเท้าผู้ใช้ระดับสูง
ผู้ใช้ระดับสูงอาจมีจำนวนน้อย แต่เป็นกลุ่มสำคัญที่ช่วยพัฒนาภาษาการออกแบบ ค้นหาบั๊ก และขับเคลื่อนชุมชน
แต่ Apple กับ Microsoft กลับปิดระบบนิเวศมากขึ้นภายใต้ข้ออ้างเรื่องการควบคุม
ผลลัพธ์คือผู้ใช้ยิ่งใช้งานได้ลำบากขึ้นเรื่อย ๆ
นั่นจึงเป็นเหตุผลว่าทำไม ความนิยมของ Linux ถึงกลับสูงขึ้น เพราะมันให้การควบคุมเต็มรูปแบบและอุปสรรคในการเริ่มใช้งานก็ลดลงแล้ว
Apple ในอดีตเคยรักษาสมดุลนี้ได้ดี แต่ตอนนี้ดูเหมือนเป็นแค่ความหมกมุ่นในการควบคุม
ดีไซน์ที่แย่มักไม่หายไปง่าย ๆ เลยอยู่ต่อเป็นสิบ ๆ ปี
เวลาที่เสียไปกับแอนิเมชันไม่ใช่แค่ผู้ใช้ระดับสูงที่เสีย แต่ทุกคนเสียหมด
พูดถึง yabai แล้ว ขอแนะนำให้ลอง Aerospace จริง ๆ
ผมใช้ WM มาหลายตัว แต่นี่เสถียรที่สุดแล้ว
Aerospace GitHub
ค่าเริ่มต้นก็ดีมาก จนหลายปีมานี้แทบไม่ได้ไปแตะอะไรเลย
แต่ผมก็ไม่ใช่ ผู้ใช้ระดับสูงของ tiling WM นะ
เคยพิจารณา Yabai เหมือนกัน แต่มีฟีเจอร์ที่ต้องปิด SIP (System Integrity Protection) เลยไม่เอา
ช่วงหลังย้ายมาใช้ macOS เพราะงาน แต่นี่ไม่ใช่ จุดสูงสุดของงานวิศวกรรม เลยจริง ๆ
อาจเพราะคุ้นกับ Linux desktop ที่ตั้งค่าเองมา พอมาใช้ macOS ก็รู้สึกว่ามันช้า ตั้งค่ายาก และ ไม่เป็นมิตรกับคีย์บอร์ด
ก่อนหน้านี้ไม่เคยรู้มาก่อน แต่ตอนนี้เพิ่งรู้ว่า แอนิเมชันการสลับ Spaces ของ macOS น่ารำคาญขนาดนี้
เพราะบั๊กนี้ของ macOS เลยย้ายไปใช้ Fedora Asahi Remix
Asahi Remix ใช้ Gnome เป็นฐาน และจัดการหน้าต่างได้สมเหตุสมผลกว่ามาก
วิดีโอบั๊กอยู่ที่นี่
เป็นผู้ใช้ Mac มาตั้งแต่ยุค System 6 ช่วงต้นยุค 90 แต่ตอนนี้ไม่แน่ใจแล้วว่าจะซื้อฮาร์ดแวร์ชิ้นต่อไปจาก Apple หรือไม่
เปลี่ยนทันทีหลังจาก macOS บังคับอัปเดตโดยไม่สนใจว่าผมต้องการหรือไม่
ไอเดียในการ สังเคราะห์การปัดอย่างรวดเร็ว เพื่อกำจัดแอนิเมชันการสลับนั้นอัจฉริยะจริง ๆ
เป็นเรื่องที่เกี่ยวกันนิดหน่อย แต่เวลาหลังรีบูตแล้ว Finder กู้คืนหลายแท็บ
ถ้าคลิกแท็บ หน้าต่างจะ ย้ายไปอีก Space แบบฉับพลัน
เหมือนระบบคิดผิดว่าแท็บในหน้าต่างเดียวกันอยู่คนละ Space
บั๊กในซอฟต์แวร์ของ Apple ช่วงนี้ดูไม่ใช่แค่กรณียกเว้นธรรมดา แต่เหมือนเกิดจาก โครงสร้างการจำลองโมเดลที่ผิดตั้งแต่ต้น
แฮ็กการสลับ Spaces นี้ก็เจ๋งดี แต่ถ้ามีวิธีคืน กริด Spaces แบบ 2D ของ OS X 10.5/10.6 ได้ก็คงดีมาก
ดีไซน์แบบเชิงเส้นหลัง 10.7 มันเรียบง่ายเกินไป
พอย้ายจาก macOS ไป KDE ก็ได้ กริด virtual desktop 3x3 กลับมาอีกครั้ง และมันสะดวกมาก
สามารถตรึงแต่ละเดสก์ท็อปไว้ตามการใช้งานได้ และแอนิเมชันสลับก็ปรับได้อิสระทั้ง เฟด·สไลด์·ความเร็ว
ความสามารถในการปรับแต่งที่ ยืดหยุ่น แบบนี้คือเสน่ห์ของ KDE จริง ๆ
หลังจากคุ้นกับตัวเลือกอย่าง Hyperland และ Niri บน Linux แล้ว ช่วงนี้ผมกำลังลองใช้ OmniWM อยู่
เวลาจำเป็นต้องใช้ macOS, OmniWM ช่วยให้พอทนได้มากขึ้น
หรือมันอาจเป็นประสบการณ์ที่เปลี่ยนชีวิตก็ได้?