#กลุ่มเวิร์กสเปซ

กลุ่มเวิร์กสเปซช่วยให้คุณซ้อนเวิร์กสเปซเป็นส่วนที่มีชื่อและยุบ-ขยายได้ในแถบด้านข้าง แต่ละกลุ่มมีเวิร์กสเปซแองเคอร์โดยปริยาย มีปุ่ม + ที่ปรับแต่งได้สำหรับสร้างเวิร์กสเปซใหม่ภายในกลุ่ม และมีการกระทำจากการคลิกขวาสำหรับเปลี่ยนชื่อ ปักหมุด ยกเลิกการจัดกลุ่ม และแก้ไขการตั้งค่าของกลุ่ม

#แนวคิด

#เวิร์กสเปซแองเคอร์

ทุกกลุ่มมีเวิร์กสเปซเพียงหนึ่งเดียวเป็นเจ้าของ เรียกว่าแองเคอร์ ส่วนหัวของกลุ่มในแถบด้านข้างคือตัวแทนของแองเคอร์ — ไม่มีแถวแยกต่างหากสำหรับมัน การคลิกที่บริเวณชื่อในส่วนหัวจะโฟกัสไปยังแผงของแองเคอร์ ส่วนการคลิกที่ลูกศรชี้จะสลับการยุบ-ขยาย

แองเคอร์จะเป็นเวิร์กสเปซใหม่เอี่ยมเสมอเมื่อมีการสร้างกลุ่ม โดยจะไม่ถูกเลื่อนขึ้นมาจากเวิร์กสเปซที่มีอยู่เดิม ไดเรกทอรีการทำงานของแองเคอร์จะสืบทอดมาจากเวิร์กสเปซแรกที่เลือกเมื่อจัดกลุ่มจากการเลือกหลายรายการ หรือจากเวิร์กสเปซที่กำลังใช้งานอยู่เมื่อสร้างผ่าน CLI โดยไม่ระบุ --cwd

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

#อัตลักษณ์ของกลุ่ม

กลุ่มมีชื่อ ไอคอน (เป็น SF Symbol โดยค่าเริ่มต้นคือ folder.fill) และสีกำหนดเองที่ใส่หรือไม่ใส่ก็ได้ สิ่งเหล่านี้เป็นอิสระจากการปรับแต่งของเวิร์กสเปซแองเคอร์เอง สีและไอคอนของแองเคอร์จะถูกตั้งค่าเริ่มต้นจากกลุ่มเมื่อสร้าง แต่หลังจากนั้นสามารถแยกต่างกันได้

#การปักหมุด

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

แถบด้านข้างจัดวางแถวระดับบนสุดจากบนลงล่างดังนี้:

  1. แถวระดับบนสุดที่ปักหมุดไว้ (เวิร์กสเปซและกลุ่ม)
  2. แถวระดับบนสุดที่ไม่ได้ปักหมุด (เวิร์กสเปซและกลุ่ม)

#การสร้างกลุ่ม

กลุ่มสามารถสร้างได้สองวิธี ได้แก่ แป้นพิมพ์ลัดหรือเมนูบริบทของ workspace ทั้งสองวิธีจะแทรก workspace ที่เป็นจุดยึดใหม่ไว้เหนือรายการที่เลือก และย้าย workspace ที่เลือกเข้าไปในกลุ่ม เมื่อมีกลุ่มแล้ว คุณสามารถจัดการกลุ่มและเพิ่ม workspace เข้าไปได้จากส่วนหัวของกลุ่ม (ดูที่ การจัดการกลุ่ม ด้านล่าง)

#จากแป้นพิมพ์ (⌘⇧G)

เลือกเวิร์กสเปซตั้งแต่สองตัวขึ้นไปในแถบด้านข้าง แล้วกด ⌘⇧G เวิร์กสเปซแองเคอร์ใหม่จะถูกแทรกไว้เหนือรายการที่เลือก และเวิร์กสเปซที่เลือกทั้งหมดจะกลายเป็นสมาชิกย่อย กลุ่มจะถูกตั้งชื่ออัตโนมัติเป็น Group 1, Group 2 และต่อไปเรื่อย ๆ — เปลี่ยนชื่อได้ทุกเมื่อผ่านเมนูบริบทของส่วนหัว

⌘⇧G ชนกับค่าเริ่มต้นของ React Grab ตัวจัดการกลุ่มจะใช้คอร์ดนี้เฉพาะเมื่อมีการเลือกหลายรายการในแถบด้านข้างอย่างชัดเจนตั้งแต่สองเวิร์กสเปซขึ้นไป ดังนั้น React Grab จึงยังคงทำงานในการเลือกรายการเดียว และในบริบทของเบราว์เซอร์หรือเทอร์มินัล ปรับการผูกปุ่มใหม่ได้ใน Settings → Keyboard หากคุณไม่ต้องการให้ทั้งสองใช้ปุ่มร่วมกัน

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

#จากเมนูบริบทของเวิร์กสเปซ

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

#การจัดการกลุ่ม

เมื่อมีกลุ่มแล้ว เมนูบริบทที่ส่วนหัวและปุ่ม + บนส่วนหัวจะช่วยให้คุณจัดการกลุ่มและเพิ่ม workspace เข้าไปได้ ทั้งสองอย่างนี้ไม่ได้สร้างกลุ่มใหม่

#จากเมนูบริบทของส่วนหัวกลุ่ม

คลิกขวาที่ส่วนหัวของกลุ่มที่มีอยู่เพื่อใช้ เปลี่ยนชื่อกลุ่ม… ปักหมุดกลุ่ม / เลิกปักหมุดกลุ่ม แก้ไขการตั้งค่ากลุ่ม… (ซึ่งจะเปิด ~/.config/cmux/cmux.json) เปิดเอกสารกลุ่มเวิร์กสเปซ เลิกจัดกลุ่ม (เก็บเวิร์กสเปซไว้) และ ลบกลุ่ม (ปิดเวิร์กสเปซ) การลบเป็นการกระทำที่ทำลายข้อมูลและจะถามยืนยัน ส่วนการเลิกจัดกลุ่มจะเก็บเวิร์กสเปซไว้และเพียงนำคอนเทนเนอร์ออกเท่านั้น

#จากปุ่ม + บนส่วนหัวของกลุ่ม

วางเมาส์เหนือส่วนหัวของกลุ่มเพื่อแสดงปุ่ม + ที่ท้ายรายการ คลิกเพื่อสร้างเวิร์กสเปซใหม่ในกลุ่มที่ไดเรกทอรีทำงานของแองเคอร์ คลิกขวาที่ปุ่มนี้เพื่อใช้ เวิร์กสเปซใหม่ในกลุ่ม แก้ไขการตั้งค่ากลุ่ม… และ เปิดเอกสารกลุ่มเวิร์กสเปซ

การกด ⌘N ขณะที่เวิร์กสเปซที่กำลังใช้งานอยู่เป็นแองเคอร์หรือสมาชิกของกลุ่ม จะสร้างเวิร์กสเปซใหม่ภายในกลุ่มนั้นด้วยเช่นกัน ตำแหน่งวางเริ่มต้นคือ After current: จากสมาชิกกลุ่มทั่วไป เวิร์กสเปซใหม่จะอยู่ถัดจากสมาชิกที่กำลังใช้งานทันที และจากแองเคอร์หรือส่วนหัว มันจะอยู่ที่ด้านบนสุดของกลุ่ม

#CLI

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

#คำสั่งย่อย

cmux workspace-group list [--json]
cmux workspace-group create --name "manaflow" [--cwd ~/projects/manaflow] [--from <id>,<id>]
cmux workspace-group ungroup <group-id>
cmux workspace-group delete  <group-id>
cmux workspace-group rename <group-id> --name "new name"
cmux workspace-group collapse <group-id>
cmux workspace-group expand <group-id>
cmux workspace-group pin <group-id>
cmux workspace-group unpin <group-id>
cmux workspace-group add --group <group-id> --workspace <workspace-id>
cmux workspace-group remove --workspace <workspace-id>
cmux workspace-group set-anchor --group <group-id> --workspace <workspace-id>
cmux workspace-group new-workspace <group-id> [--placement afterCurrent|top|end]
cmux workspace-group set-color <group-id> --hex "#7A4FD8"
cmux workspace-group set-icon  <group-id> --symbol ladybug.fill
cmux workspace-group move <group-id> (--to-index <n> | --before <group-id> | --after <group-id>)
cmux workspace-group focus <group-id>

create จะคืนค่าแฮนเดิลของกลุ่ม (workspace_group:N โดยค่าเริ่มต้น) ส่ง --json เพื่อรับเพย์โหลดแบบมีโครงสร้างฉบับเต็ม

ส่งค่าว่างให้ set-color หรือ set-icon เพื่อล้างสีหรือไอคอนของกลุ่ม คำสั่ง delete ไม่สามารถย้อนกลับได้ เพราะจะปิดเวิร์กสเปซสมาชิกทุกรายการ

#ตัวอย่าง

จัดกลุ่มเวิร์กสเปซที่เลือกอยู่ในปัจจุบันภายใต้ชื่อหนึ่ง:

cmux workspace-group create --name manaflow

สร้างเวิร์กสเปซใหม่ภายในกลุ่มที่มีอยู่ ตัวอย่างเช่น เชื่อมต่อกับสคริปต์ worktree:

cmux workspace-group new-workspace workspace_group:1

แสดงรายการกลุ่มในหน้าต่างที่โฟกัสอยู่:

cmux workspace-group list

#การตั้งค่า

การกำหนดค่าของแต่ละกลุ่มอยู่ภายใต้คีย์ workspaceGroups ใน ~/.config/cmux/cmux.json โดยใช้ไดเรกทอรีทำงานของ workspace หลักเป็นคีย์ ดูคีย์ที่รองรับได้ที่เอกสารอ้างอิงการกำหนดค่า ซึ่งรวมถึงตำแหน่งวางสำหรับ workspace ใหม่แบบรวม และสี ไอคอน ตำแหน่งวาง และการดำเนินการของเมนูคลิกขวาในแต่ละไดเรกทอรี

เอกสารอ้างอิงการกำหนดค่า workspaceGroups

#การคงอยู่ของข้อมูล

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