Ngăn ứng dụng Apple Music tự chạy
(lowtechguys.com)- Music Decoy là một ứng dụng tồn tại dưới dạng tiến trình đang chạy, giúp ngăn ứng dụng Music của hệ thống mở lên khi vô tình nhấn ▶ Play
- Ứng dụng không làm gì cả ở chế độ nền, mà dùng cùng bundle identifier với ứng dụng Music để hệ thống nhận diện rằng Music đã chạy sẵn
- Từ v1.1, có thể cấu hình bằng thiết lập mediaAppPath để khi nhấn ▶ Play sẽ mở ứng dụng khác như Spotify
- Việc Music tự chạy xảy ra khi nhấn ▶ Play trên bàn phím, gửi lệnh phát sau khi kết nối tai nghe Bluetooth, hoặc khi tai nghe chuyển từ chế độ cuộc gọi sang chế độ nhạc sau khi kết thúc cuộc gọi
rcdkhi có sự kiện phát sẽ gửi lệnh đến ứng dụng đang phát âm thanh nếu có, còn nếu không thì sẽ mở ứng dụng Music của hệ thống; việc vô hiệu hóa daemon này cũng sẽ tắt luôn điều khiển phát media bằng bàn phím
Music Decoy
-
Tải xuống, Xem mã nguồn, có cung cấp lệnh cài đặt
$brew install music-decoy -
Ngăn ứng dụng Music khởi chạy
- Khi Music Decoy đang chạy, dù vô tình nhấn ▶ Play thì ứng dụng Music của hệ thống cũng sẽ không mở
- Ứng dụng hoàn toàn không làm gì ở chế độ nền, mà chỉ tồn tại như một tiến trình đang chạy với cùng bundle identifier như ứng dụng Music
-
Cách hoạt động
- Dùng bundle identifier
com.apple.Musicđể khiến hệ thống cho rằng ứng dụng Music đã chạy sẵn
- Dùng bundle identifier
-
Cấu hình
- Từ v1.1, có thể cấu hình Music Decoy để mở ứng dụng khác khi nhấn nút ▶ Play
- Lệnh cấu hình ví dụ cho Spotify:
defaults write com.lowtechguys.MusicDecoy mediaAppPath /Applications/Spotify.app - Lệnh đặt lại cấu hình:
defaults delete com.lowtechguys.MusicDecoy mediaAppPath
-
Cách thoát
- Vì không có biểu tượng trên Dock hay thanh menu, cần thoát bằng một trong các cách sau
- Mở Activity Monitor, tìm Music Decoy rồi chọn nút ❌ ở phía trên
- Chạy
killall 'Music Decoy'trong Terminal
- Vì không có biểu tượng trên Dock hay thanh menu, cần thoát bằng một trong các cách sau
Điều kiện tự khởi chạy, nguyên nhân và giải pháp thay thế
-
Khi nào Music tự chạy?
- Xảy ra khi nhấn phím ▶ Play trên bàn phím mà không có ứng dụng nào khác đang phát âm thanh
- Xảy ra khi tai nghe Bluetooth được kết nối và gửi lệnh phát
- Xảy ra khi tai nghe Bluetooth chuyển từ chế độ cuộc gọi sang chế độ nhạc do cuộc gọi kết thúc
-
Vì sao điều này xảy ra?
rcdlà viết tắt của Remote Control Daemon, daemon phụ trách xử lý các phím media- Khi có sự kiện phát,
rcdsẽ kiểm tra xem hiện có ứng dụng nào đang phát âm thanh hay không - Nếu có ứng dụng phát âm thanh, nó sẽ gửi lệnh phát đến ứng dụng đó; nếu không, nó sẽ mở ứng dụng Music của hệ thống
- Có cách vô hiệu hóa daemon này, nhưng đồng thời cũng sẽ vô hiệu hóa luôn tính năng điều khiển phát media bằng bàn phím
-
Giải pháp thay thế
- Theo câu trả lời trên StackExchange, có một vài cách để đạt hiệu quả tương tự
launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist- Vấn đề: vô hiệu hóa hoàn toàn nút Play
- noTunes dùng cách phát hiện ứng dụng đã chạy và đóng Music ngay khi nó khởi chạy
- Vấn đề: có dùng một lượng CPU rất nhỏ ở chế độ nền, nhưng việc phát hiện ứng dụng đang chạy là tác vụ rất nhẹ
1 bình luận
Ý kiến trên Hacker News
Thật sự rất thông minh ở chỗ ứng dụng này hoạt động chỉ bằng cách tồn tại như một tiến trình đang chạy có bundle identifier giống với app Music, mà không làm gì cả ở chế độ nền
Kiểu giải pháp low-code/no-code này có một sự thanh nhã chỉ có thể xuất hiện khi bạn hiểu hệ thống ở mức rất sâu. Phải biết chính xác điều gì xảy ra trên macOS khi nhấn nút phát, bundle identifier hoạt động ra sao, và kết quả cuối cùng lại đẹp ở chỗ gần như chỉ là một “xung đột” không có mấy dòng mã
Nói thêm thì các coding agent lại khá yếu với kiểu vấn đề này. Codex hiện tại nhiều khả năng sẽ tạo ra một ứng dụng quá tay, cứ giám sát vòng lặp rồi giết app Music mỗi khi nó chạy lên
Nếu bảo nó “hãy chặn app Apple Music chạy lên”, nhiều khả năng nó sẽ làm theo cách mà đa số con người cũng nghĩ tới: giám sát rồi tắt. Nhưng nếu bảo “hãy điều tra vì sao Apple Music lại chạy”, thì từ kết quả điều tra, người dùng có thể nhanh chóng đi đến kết luận rằng cách tốt nhất là tạo một ứng dụng không cần code xung đột với Music
info.plistcủa game thànhcom.apple.systempreferencesrồi ký.appbằng chứng chỉ nhà phát triển của mìnhKhá vui cho tới khi bị phát hiện
Tôi vẫn không thể tin là Apple đã khai tử iTunes
Ngày trước tôi để cả thư viện nhạc số của mình trong iTunes, phần lớn là nhạc rip trực tiếp từ CD, nhưng cũng có album và chương trình TV mua từ iTunes. Khi Apple vứt bỏ hoàn toàn iTunes, xóa nó khỏi Mac OS và thay bằng thứ như Apple Music, tôi đã nghĩ là sẽ không bao giờ tin họ nữa
Tôi đã tìm một MP3 player tử tế một thời gian, cũng từng dùng AIMP, nhưng giờ đang nghĩ tới việc tự làm một trình phát dựa trên file cục bộ với giao diện của riêng mình bằng AI. Tôi không cần và cũng không muốn streaming. Có lẽ tôi đã tiếp tục mua album trên iTunes, nhưng giờ mua CD còn tốt hơn
Tôi đã dùng như vậy trong phần lớn năm ngoái, tắt hết tính năng cloud, nạp toàn bộ nhạc cục bộ vào Apple Music rồi đồng bộ sang iPhone bằng cáp như thời iPod cũ, và nó vẫn hoạt động tốt
Dù không đăng ký Apple Music, tôi vẫn để toàn bộ thư viện nhạc số của mình trong iTunes/Music và dùng như ngày xưa
Tôi dùng tiện ích tích hợp
hidutilđể remap các phím F3~F9 thành những phím mình muốnTôi đổi F3/F4 thành chỉnh độ sáng đèn nền bàn phím, còn F5~F9 thành các phím chức năng thông thường. Bài này có nhiều thông tin hữu ích: https://news.ycombinator.com/item?id=35555475
Trên M1 MacBook, cách làm là dùng
hidutil property --setvớiUserKeyMappingđể chỉ định các giá trịHIDKeyboardModifierMappingSrc/HIDKeyboardModifierMappingDstTôi từng cần thứ như thế này vài tháng trước. Tôi chạy keyboard rig bằng MacBook trong một buổi diễn live và dùng tai nghe không dây độ trễ thấp để monitor
Tôi cắm dongle phát của tai nghe vào laptop, và khi nhấn nút trên tai nghe thì dongle gửi lệnh “play/pause”, khiến Music chạy lên và bắt đầu phát âm thanh qua thiết bị xuất mặc định. Nó thậm chí còn không quan tâm xem bộ phát tai nghe có đang được chọn làm đầu ra mặc định hay không, nên trong cấu hình đa thiết bị phức tạp, âm thanh hoàn toàn có thể phát ra từ một thiết bị khác
Nếu lỡ bấm nhầm giữa buổi diễn mà mặc định đang là interface nối với hệ thống P.A., thì một bài nhạc ngẫu nhiên có thể nổ ra khắp cả venue ở âm lượng tối đa
Giờ thì tôi đã đổi cấu hình phần cứng để cắm dongle vào audio interface thay vì laptop, nên trước mắt không còn là vấn đề nữa, nhưng việc ngăn kiểu kích hoạt lỗi này cũng là một phần lý do tôi phải cấu hình lại. Một hành vi không thể cấu hình như thế này quá không phù hợp với môi trường biểu diễn live đối với một thiết bị premium dành cho giới sáng tạo chuyên nghiệp
Thật chán khi thấy Apple dùng những chiêu trò kiểu Microsoft cấp thấp như thế. Cưỡng ép người dùng sang sản phẩm khác là tự ăn mòn thương hiệu
Nó khá giống thế đối đầu Microsoft và Netscape ngày xưa
Tôi không hiểu vì sao lại không có một cách đơn giản để tắt hành vi hung hăng này. Nó trông như được cố ý thiết kế để ép buộc và gây khó chịu, và nếu không cắt từ sớm thì sau này nó sẽ lan rộng hơn nữa để siết người dùng
Không chỉ riêng Apple, rất nhiều product designer đang chấp nhận kiểu thái độ ngạo mạn này
Tôi ghét việc mở file âm thanh không chỉ làm Music tự chạy mà còn thêm luôn file đó vào thư viện nhạc
Sau đó lại phải tự tay xóa đi và chọn “giữ lại file”
Lâu đến mức tôi còn quên mất mặc định vốn là app Music. Việc phát một file không có nghĩa là tôi muốn thêm nó vào thư viện
.mp3, mở Get Info, đổi ứng dụng mặc định sang app bạn muốn rồi nhấn “Change all...”Phải làm một lần cho mỗi định dạng file, nhưng xong một lần là xong
Việc bấm nhầm AirPods rồi một app mình không dùng cũng không muốn dùng đột nhiên bật lên thật sự rất khó chịu
Tôi dùng https://github.com/tombonez/noTunes
Tôi cũng thích việc nó không dùng icon trên thanh menu, giúp tiết kiệm không gian vốn đã hạn chế
Tôi thật sự thích cách tiếp cận này. Rất thông minh. Tuy vậy cá nhân tôi lại thích việc nhấn nút PLAY trên bàn phím thì Apple Music mở ra
Trước đây tôi từng tìm cách chặn chuyện này nhưng không ra kết quả tốt, nên đã tạo một Shortcut để đóng lại app Music mỗi khi nó mở
Thực tế nó hoạt động khá ổn, nhưng lại thành vấn đề khi tôi thực sự muốn dùng app Music. Xét về trải nghiệm người dùng của Apple thì khá tệ và gây bực mình