3 คะแนน โดย GN⁺ 2025-02-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • FlashSpace คือ ตัวจัดการพื้นที่ทำงานเสมือน ที่ออกแบบมาเพื่อเสริมและแทนที่ Spaces พื้นฐานของ macOS โดยมีเป้าหมายให้สลับพื้นที่ทำงานได้รวดเร็วโดยไม่ต้องรอแอนิเมชันของ macOS
  • สามารถกำหนดแอปและจอแสดงผลให้กับแต่ละพื้นที่ทำงานได้ และเมื่อสลับ พื้นที่ทำงานจะแสดงแอปที่กำหนดไว้บนจอนั้นพร้อมซ่อนแอปอื่น ๆ ทำให้รองรับ การสลับหลายจอแบบอิสระ
  • มีฟีเจอร์ Space Control, Workspace Switcher ที่ใช้ Option + Tab, Focus Manager, โปรไฟล์, ท่าทางปัด, Floating Apps, การตั้งค่าแบบ JSON/YAML/TOML, CLI และการเชื่อมต่อกับ SketchyBar และ Raycast
  • ต้องใช้ macOS 14.0 ขึ้นไป และเปิดการตั้งค่า “Displays have separate Spaces” พร้อมรองรับการติดตั้งผ่าน Homebrew, ดาวน์โหลดไบนารี หรือคอมไพล์จากซอร์ส
  • ไม่รองรับพื้นที่ทำงานระดับหน้าต่างรายบานหรือการจัดเลย์เอาต์ และยังคงออกแบบโดยยึดแนวทางแสดง/ซ่อนแอปเป็นหลัก เนื่องจาก macOS ไม่มี public API สำหรับซ่อนหน้าต่างเฉพาะบาน และเพื่อคงไว้ซึ่ง ความเรียบง่ายและประสิทธิภาพ

FlashSpace ทำอะไรได้บ้าง

  • FlashSpace เป็น ตัวจัดการพื้นที่ทำงานเสมือน สำหรับ macOS ที่ออกแบบมาเพื่อเสริมและแทนที่ macOS Spaces แบบเดิม
  • เป้าหมายคือ การสลับพื้นที่ทำงานที่รวดเร็ว โดยไม่ต้องรอแอนิเมชันของ macOS
  • แต่ละพื้นที่ทำงานสามารถกำหนดแอปได้ และตัวพื้นที่ทำงานเองก็สามารถกำหนดให้กับจอแสดงผลเฉพาะได้
  • เมื่อสลับไปยังพื้นที่ทำงาน แอปที่กำหนดไว้จะถูกแสดงโดยอัตโนมัติ และแอปอื่นบนจอเดียวกันจะถูกซ่อน
  • สามารถ สลับพื้นที่ทำงานแยกกันอย่างอิสระ บนหลายจอแสดงผลได้

การติดตั้งและลำดับการใช้งานพื้นฐาน

  • ความต้องการของระบบคือ macOS 14.0 ขึ้นไป และต้องเปิด “Displays have separate Spaces” ในการตั้งค่าระบบ Desktop & Dock
  • รองรับการติดตั้งผ่าน Homebrew, ดาวน์โหลดรีลีสไบนารี และคอมไพล์จากซอร์ส
    • คำสั่งติดตั้งผ่าน Homebrew คือ brew install flashspace
    • สามารถดาวน์โหลดไบนารีได้จาก Releases Page
  • ลำดับการใช้งานพื้นฐานมีดังนี้
    • ย้ายทุกแอปไปยัง macOS Space เดียวของแต่ละจอแสดงผล
    • สร้างพื้นที่ทำงาน
    • กำหนดแอป
    • กำหนดจอแสดงผลให้พื้นที่ทำงาน หรือใช้โหมดไดนามิก
    • ตั้งค่าคีย์ลัดเพื่อให้เรียกใช้งานได้รวดเร็ว
    • ทำขั้นตอนเดียวกันกับพื้นที่ทำงานอื่น
    • สลับไปยังพื้นที่ทำงานที่ตั้งไว้ด้วยคีย์ลัด
  • หากต้องการให้แอปเดียวกันอยู่ในหลายพื้นที่ทำงาน สามารถใช้ฟีเจอร์ Floating Apps ในการตั้งค่าแอป หรือเพิ่มแอปเข้าไปในหลายพื้นที่ทำงานจากหน้าต่างหลักของแอปได้

ฟีเจอร์หลัก

  • มีทั้ง การสลับพื้นที่ทำงานอย่างรวดเร็ว และการรองรับหลายจอแสดงผล
  • Space Control เป็นฟีเจอร์สำหรับพรีวิวพื้นที่ทำงานทั้งหมดในรูปแบบกริดและสลับไปยังพื้นที่ที่ต้องการ
    • สามารถสลับพื้นที่ทำงานได้ด้วย 0-9 และปุ่มลูกศร
  • Workspace Switcher โดยค่าเริ่มต้นใช้ Option + Tab เพื่อเปิดรายการพื้นที่ทำงานและสลับใช้งาน
    • ทำงานคล้ายกับตัวสลับแอปของ macOS อย่าง CMD + Tab
  • Focus Manager รองรับการย้ายโฟกัสระหว่างหน้าต่างไปตามทิศทางที่ต้องการด้วยคีย์ลัด และยังรองรับการข้ามระหว่างจอแสดงผล
  • ฟีเจอร์อื่น ๆ ได้แก่
    • เปิดใช้งานพื้นที่ทำงานหลังตรวจจับการโฟกัสของแอป
    • Cursor manager ที่จัดเคอร์เซอร์ให้อยู่กึ่งกลางหน้าต่างที่ใช้งานโดยอัตโนมัติ
    • Profiles สำหรับสลับการตั้งค่าหลายชุดอย่างรวดเร็ว
    • เมนูบาร์ที่ตั้งค่าไอคอนและข้อความแยกตามพื้นที่ทำงานได้
    • ปรับแต่งการทำงานของท่าทางปัดบนแทร็กแพด
    • การตั้งค่าผ่าน GUI และไฟล์คอนฟิก
    • รองรับไฟล์คอนฟิกแบบ JSON, YAML, TOML
    • ควบคุมแอปผ่าน CLI
    • รองรับ Picture-in-Picture
    • เชื่อมต่อกับ SketchyBar
    • รองรับ Raycast extension

วิธีการกำหนดจอแสดงผล

  • FlashSpace รองรับการกำหนดจอแสดงผล 2 แบบ คือ โหมดคงที่ และ โหมดไดนามิก
  • โหมดคงที่เป็นค่าเริ่มต้น โดยจะกำหนดแต่ละพื้นที่ทำงานให้กับจอแสดงผลเฉพาะ
    • เหมาะกับผู้ใช้ที่ต้องการพื้นที่ทำงานประจำสำหรับแต่ละจอแบบเดียวกับ macOS Spaces
    • หากใช้หลายจอและสลับการจัดวางบ่อย อาจใช้งานได้ลำบาก
  • โหมดไดนามิกจะกำหนดแต่ละพื้นที่ทำงานไปยังจอที่มีแอปของพื้นที่ทำงานนั้นอยู่โดยอัตโนมัติ
    • สามารถแสดงพื้นที่ทำงานเดียวกันพร้อมกันบนหลายจอได้
    • มีประโยชน์เมื่ออยากย้ายแอประหว่างจอเพื่อจัดพื้นที่ทำงานใหม่
    • ในโหมดนี้จะไม่สามารถแสดง พื้นที่ทำงานว่าง ได้
  • สามารถเปลี่ยนโหมดการกำหนดจอแสดงผลได้ใน Workspaces ของการตั้งค่าแอป

การรองรับ Picture-in-Picture และข้อจำกัด

  • FlashSpace รองรับโหมด Picture-in-Picture แต่ยังเป็นฟีเจอร์ทดลอง
  • สามารถปิดฟีเจอร์นี้ได้ที่ App Settings -> Workspaces
  • macOS ไม่มี public API สำหรับซ่อนเฉพาะบางหน้าต่าง และเมื่อซ่อนแอป หน้าต่าง PiP ก็จะถูกซ่อนไปด้วย
  • เพื่อแก้ปัญหานี้ FlashSpace จะตรวจจับว่าแอปรองรับ PiP หรือไม่ แล้ว ซ่อนหน้าต่างทั้งหมดไว้ที่มุมจอ ยกเว้นหน้าต่าง PiP
  • หากไม่พบหน้าต่าง PiP ที่มองเห็นได้ จะกลับไปใช้พฤติกรรมมาตรฐาน
  • เบราว์เซอร์ที่รองรับได้แก่ Safari, Zen Browser, Chrome, Firefox, Brave, Vivaldi, Arc, Dia, Opera, Microsoft Edge และ Comet
  • หากภาษาของเบราว์เซอร์ไม่ได้ตั้งเป็น English ฟีเจอร์นี้อาจไม่ทำงาน

หลักการออกแบบและสิ่งที่ตั้งใจไม่รองรับ

  • คุณค่าของโปรเจกต์นี้คือ ประสิทธิภาพ, ความเรียบง่าย, ความเสถียร, การไม่รบกวนการทำงาน และปรัชญาแบบ UNIX
  • FlashSpace มองว่าการจัดการพื้นที่ทำงานเป็นงานอย่างหนึ่ง และมุ่งทำงานนั้นให้ดี
  • การทำงานแบบไม่รบกวน

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

    • FlashSpace ไม่รองรับแนวคิดการแยกหน้าต่างแต่ละบานของแอปตามพื้นที่ทำงาน
    • นี่เป็นการตัดสินใจโดยตั้งใจเพื่อคงความเรียบง่ายและความเร็ว
    • มันพึ่งพาความสามารถแสดง/ซ่อนแบบเนทีฟ เพื่อให้จัดการและสลับพื้นที่ทำงานได้อย่างมีประสิทธิภาพ
    • วิธีนี้ช่วยประหยัดแบตเตอรี่และไม่ทำให้ฟีเจอร์ระบบอย่าง Mission Control เสียไป
    • การรองรับระดับหน้าต่างรายบานจะเพิ่มความซับซ้อนอย่างมากและอาจกระทบต่อประสิทธิภาพ
    • macOS ไม่มี public API สำหรับซ่อนหน้าต่างเฉพาะบาน และทางเลือกตอนนี้มีเพียงย้ายหน้าต่างไปที่มุมจอหรือย่อหน้าต่าง ซึ่งทั้งสองแบบไม่ใช่ประสบการณ์ใช้งานที่ดีนัก
  • ไม่รองรับเลย์เอาต์

    • FlashSpace ไม่รองรับการย้ายหน้าต่าง ปรับขนาด หรือเปลี่ยนเลย์เอาต์
    • ฟีเจอร์เหล่านี้เพิ่มความซับซ้อนอย่างมากและอาจส่งผลเสียต่อประสิทธิภาพ
    • การรองรับทุก edge case และกลิทช์ต้องใช้ความพยายามอย่างมาก
    • สามารถใช้ร่วมกับแอปจัดการหน้าต่างอย่าง Magnet, Rectangle, Raycast ฯลฯ ได้อยู่แล้ว จึงไม่ทำฟังก์ชันนี้ซ้ำ

การเชื่อมต่อ, CLI, การคอมไพล์

  • สามารถเชื่อมต่อกับ SketchyBar และเครื่องมืออื่น ๆ ได้ และจะรันสคริปต์ที่ตั้งค่าไว้เมื่อมีการเปลี่ยนพื้นที่ทำงาน
  • CLI รองรับการจัดการพื้นที่ทำงาน แอป และโปรไฟล์
    • ต้องติดตั้งก่อนจากส่วน CLI ในการตั้งค่าแอป
    • สามารถดูคำสั่งที่ใช้งานได้ด้วย flashspace --help
  • การคอมไพล์จากซอร์สใช้ XcodeGen เพื่อสร้างโปรเจกต์ Xcode จาก project.yml
    • หลังโคลนรีโพแล้ว ให้ติดตั้ง dependency ด้วย brew bundle
    • จากนั้นรัน xcodegen generate แล้วเปิด FlashSpace.xcodeproj ใน Xcode เพื่อคอมไพล์
    • ทุกครั้งที่สลับ branch หรือ pull การเปลี่ยนแปลงใหม่ ต้องรัน xcodegen generate อีกครั้ง
    • หากต้องการสร้างโปรเจกต์พร้อมการตั้งค่าการเซ็นโค้ด สามารถใช้ XCODE_DEVELOPMENT_TEAM=YOUR_TEAM_ID xcodegen generate

เคล็ดลับการใช้งาน

  • macOS มีบั๊กที่ทำให้แอปไปโผล่บนจอผิดหลังปลุกเครื่องจากโหมดพัก
    • จะเกิดขึ้นเมื่อแอปถูกซ่อนไว้ระหว่างที่เครื่องพัก
    • หากเปิดจอทุกจอก่อนล็อกอินหลังปลุกเครื่อง แอปอาจกลับไปแสดงบนจอที่ถูกต้องได้
  • macOS 15 มีฟีเจอร์ย้ายและปรับขนาดหน้าต่างได้โดยไม่ต้องใช้แอปจากภายนอก
    • สามารถดูเมนูย่อย Move & Resize ได้จาก Window บนเมนูบาร์
    • การปรับแต่งคีย์ลัดยังค่อนข้างจำกัด และหากต้องการความยืดหยุ่นมากกว่านั้น การใช้แอปจัดการหน้าต่างอย่าง Raycast หรือ Magnet จะเหมาะกว่า
  • การสลับโฟกัสระหว่างหน้าต่างของแอปเดียวกันทำได้ด้วยคีย์ลัด Cmd + ` ของ macOS
  • SKHD คือเครื่องมือ CLI สำหรับกำหนดคีย์ลัดโกลบอลแบบกำหนดเอง และสามารถใช้ร่วมกับ FlashSpace CLI ได้
  • ผู้ใช้ Raycast สามารถจัดการ FlashSpace ได้โดยไม่ต้องละมือจากคีย์บอร์ดผ่าน Raycast extension

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

 
GN⁺ 2025-02-10
  • สงสัยว่าใช้งานร่วมกับ Amethyst ได้ไหม อยากได้หน้าต่างแบบไทล์ แต่ไม่อยากได้อาการหน่วงตอนสลับสเปซ

  • ดีมาก! หวังว่าจะเพิ่มมุมมองแบบกริดของเวิร์กสเปซได้ คิดถึง TotalSpaces

  • มาถูกจังหวะมาก ตอนนี้กำลังสำรวจตัวเลือกในพื้นที่นี้อีกครั้งและตัดสินใจเลือก AeroSpace ไว้แล้ว จะลองใช้ตัวนี้ดู

  • ขอบคุณ! เพิ่งติดตั้งเมื่อกี้และจนถึงตอนนี้ก็ทำงานได้ดี

  • ใช้ AeroSpace เพื่อจุดประสงค์นี้มานานกว่าหนึ่งปีแล้ว ปิดความสามารถด้านไทล์ทั้งหมดในการตั้งค่า และใช้คีย์ลัดอยู่แค่สองอย่าง: สลับไปยังเวิร์กสเปซ และย้ายหน้าต่างปัจจุบันไปยังเวิร์กสเปซ จำเป็นมากเวลาทำงานบนหน้าจอเล็ก

    • AeroSpace มีปัญหาด้านประสิทธิภาพอยู่ แต่ดูเหมือนว่านี่เป็นปัญหาที่ติดมากับ macOS API ที่มีให้ใช้
    • ดูเหมือนว่า FlashSpace ก็มีปัญหานี้เหมือนกัน
    • ในแง่การตั้งค่า ฉันรู้สึกว่าการตั้งคีย์ลัดแยกตามแต่ละเวิร์กสเปซนั้นยุ่งยาก ใน AeroSpace ตัวอักษรและตัวเลขทั้งหมดบนคีย์บอร์ดจะกลายเป็นเวิร์กสเปซโดยอัตโนมัติ และคีย์ลัดเป็นแบบโกลบอล
    • เมื่อพิจารณาทั้งหมดนี้แล้ว ฉันชอบเครื่องมือที่มีเป้าหมายหลักคือแก้ปัญหาเรื่องเวิร์กสเปซของ macOS
    • จากการทดสอบเพิ่มเติม FlashSpace ไม่รองรับหน้าต่างคนละบานของแอปเดียวกันให้อยู่คนละเวิร์กสเปซได้ ซึ่งเป็นปัญหาใหญ่กับเวิร์กโฟลว์ของฉัน