MuteIt ปิด/เปิดไมค์ใน “คลิกเดียว”

ช่วงนี้ Work From Home กันแบบยาวๆ การสื่อสารจึงต้องพึ่งพาการคุยผ่านลำโพงและไมโครโฟนคอมพิวเตอร์เป็นหลัก ซึ่งบางครั้งเราก็ต้องการปิด/เปิดไมค์แบบด่วนๆ แต่ก็ไม่เข้าใจทำไม Mac ไม่ทำปุ่ม Mute/Unmute Mic มาให้เลย ต้องคอยควานหาปุ่มของแต่ละ App เอา ซึ่งตำแหน่งก็อยู่แตกต่างกันไป ไม่ว่าจะเป็น MS Team, Zoom, LINE Meeting, Discord, Slack ทีนี้ลองหา Mute/Unmute Mic Appในท้องตลาดก็ไม่ถูกใจ เช่น ต้องกดหลายคลิกบ้าง, เสียตังค์บ้าง

ทางออกง่ายๆเลยคือทำ App ผ่าน Automator ที่เขียนด้วย AppleScript ซึ่งสามารถสั่ง Mute/Unmute ผ่าน script ข้างล่างนี้ได้เลย

on run {input, parameters}	
    set volume input volume 0
    return input
end run

แต่ข้อจำกัดของ Automator มีหลายอย่าง เช่น มันจะทำงานครั้งเดียวจบ และไม่เก็บ State ใดๆ ดังนั้นจะไม่สามารถแสดงผล State ปัจจุบันได้ และถ้าต้องการทำให้สามารถ Toggle Mute/Unmute ได้ก็ต้องหาที่เก็บ State หลังจาก App ทำงานเสร็จ ไม่ก็ต้องอ่านค่า Mic Volume ทุกครั้ง (AppleScript ทำได้), แต่ที่สำคัญมากๆคือมันเข้าถึง Framework ของ macOS ค่อนข้างยาก ไม่ว่าจะการทำ StatusBar, การเปลี่ยน Button Image ตาม State

ดังนั้น Solution ที่ดูน่าจะดีในระยะยาวคือทำ Native macOS App ซึ่งก็เคยเขียนมาบ้างด้วย Objective-C (สมัยหัดเขียน iOS App) กับ Java ซึ่งก็จะมีข้อจำกัดอีกเช่นกัน ดังนั้นเป็นโอกาสอันดีที่จะได้ใช้ Swift ภาษาแห่งปัจจุบันและอนาคตของ Apple

UI ของ App ก็สุดแสนจะเรียบง่าย มีรูปไมโครโฟนที่สามารถ Toggle Mute/Unmute Mic ใน “คลิกเดียว” เลยตั้งชื่อมันว่า “MuteIt”

หากใครใช้ Mac สนใจจะลองใช้สามารถ Download Appได้ที่ Github หรือถ้าใครสนใจศึกษา Source Code จะเอาไปพัฒนาต่อก็มีเช่นกัน

ส่วนด้านล่างนี่ขอจดไว้ก่อน เป็นไอเดียต่อยอดที่อยากจะทำ:

  1. ใส่ปุ่มใน Touch Bar (ตอนนี้ทำผ่าน Automator Quick Action ได้ แต่ State มันจะไม่ Sync กับ App ไว้มีโอกาสจะมาแชร์ทำ Quick Action ด้วย Automator ดูภาพประกอบท้ายบทความ)
  2. สามารถ Config ให้ปิด/เปิดตาม Output Volume ได้
  3. ทำ Menu เวลาคลิกขวาที่ไอคอน แล้วกด Quit App ได้ (ตอนนี้ถ้าจะ Quite ต้องไป Quit ใน Activity Monitor)
  4. Auto start at Login (ตอนนี้สามารถทำเองได้ผ่าน User > Login Items)

สุดท้ายอย่าลืม “ชอบกดไลค์ ใช่กดแชร์”

Leave a Reply

Your email address will not be published. Required fields are marked *