没有一种“安全”的方法不会冒无限期禁用用户热点的风险。 如果您的程序崩溃或以其他方式意外终止,您绝对应该确保将这些键重置为原始值。我什至会说这绝对是不推荐的方法,而且这些类型的 UX 修改黑客方式并不理想。
如果你必须这样做,你可以通过node-applescript 做一些事情:
const applescript = require('applescript');
var hotCorners = {
'wvous-bl-corner': null,
'wvous-bl-corner-modifier': null,
'wvous-br-corner': null,
'wvous-br-modifier': null,
'wvous-tl-corner': null,
'wvous-tl-modifier': null,
'wvous-tr-corner': null,
'wvous-tr-modifier': null
}
// read current default values first
Object.keys(hotCorners).forEach(key => hotCorners[key] = applescript.execString(`do shell script "defaults read com.apple.Dock ${key}"`));
// overwrite with zeros to disable hot corner functionality
Object.keys(hotCorners).forEach(key => applescript.execString(`do shell script "defaults write com.apple.Dock ${key} -int 0"`));
当你想写回这些配置时:
Object.keys(hotCorners).forEach(key => applescript.execString(`do shell script "defaults write com.apple.Dock ${key} -int ${hotCorners[key] ?? 0}"`));
您还应该注意将当前配置写入比 RAM 更短暂的存储介质;最简单的方法是将 JSON 结构写入 Electron 应用程序中的文件(或存储在客户端设备上的其他位置)。
此方法的成功将取决于与 macOS 版本和客户端设备的安全状况以及用户本身相关的几个因素(他们是否接受任何与 macOS 更高版本中的此功能相关的安全提示)。因此,您还应该使用此类功能实现错误检查,以确保您能够正确应对意外情况。
为了全面披露,我不再可以使用 macOS 机器进行测试;因此,此代码未经测试,我不保证它在任何方面都能成功 - 使用本指南后果自负。