Logo

修复 NoMachine 在 macOS 26 上的菜单无响应问题

Published on
...
Authors

如果你在 macOS 26 (Tahoe) 系统上使用 NoMachine 9.2.14 时遇到无法点击二级菜单下拉菜单无响应的问题,本文将手把手教你通过修改配置文件来彻底解决这个 Bug。

问题描述

症状表现

在 NoMachine 9.2.14 版本运行于 macOS 26 (Tahoe) 系统时,用户会遇到以下问题:

  • 无法展开应用程序的二级菜单(如"文件"、"编辑"等菜单栏下的子菜单)
  • 右键菜单无法弹出或点击无效
  • 下拉菜单显示后无法选择其中的选项
  • 菜单项悬停高亮正常,但点击无反应

这个问题严重影响了远程桌面的正常使用体验,特别是需要频繁使用菜单操作的用户。

问题原因

该问题是由于 NoMachine 9.2.14 在 macOS Tahoe (macOS 26) 上的事件 API 兼容性问题导致的。新版本的事件处理机制与 macOS 26 系统的某些底层改动存在冲突,导致鼠标点击事件无法正确传递到二级菜单。

⚠️

特定影响范围: 此问题主要出现在 macOS 26 (Tahoe) 系统上。如果你使用的是 macOS 15 (Sequoia) 或更早版本,通常不会遇到此问题。

解决方案

通过在 NoMachine 配置文件中启用旧版事件 API-oldeventapi 1),可以回退到兼容性更好的事件处理模式,从而解决菜单无法点击的问题。

ℹ️

适用版本: NoMachine 9.2.14 及类似版本 适用系统: macOS 26 (Tahoe) 修复难度: ⭐⭐ (需要使用终端命令,约 5 分钟)


修复步骤

由于配置文件位于系统受保护的目录中,我们需要使用终端和管理员权限来进行修改。整个过程大约需要 5 分钟。

步骤一:打开终端 (Terminal)

有两种方式可以打开终端:

方法一:通过访达打开

  1. 打开 "访达" (Finder)
  2. 进入 "应用程序" (Applications) 文件夹
  3. 进入 "实用工具" (Utilities) 文件夹
  4. 找到并打开 "终端" (Terminal.app)

方法二:使用 Spotlight 快速打开(推荐)

  1. Command + 空格键 打开 Spotlight 搜索
  2. 输入 "终端" 或 "Terminal"
  3. 回车键 打开

步骤二:使用命令行编辑器打开配置文件

  1. 我们将使用 nano 文本编辑器,并配合 sudo 命令获取管理员权限。

  2. 在终端窗口中,复制并粘贴以下命令,然后按 回车键

sudo nano /Applications/NoMachine.app/Contents/Frameworks/etc/node.cfg
  1. 执行命令后,终端会提示输入密码:

    [sudo] password for ...:
    
  2. 输入你的 macOS 登录密码,然后按 回车键

⚠️

重要提示: 当你输入密码时,屏幕上不会显示任何字符(没有星号 *,光标也不会移动),这是正常的安全设置。只需盲打输入完毕后按回车即可。

步骤三:添加配置内容

  1. 输入正确密码后,你将进入 nano 文本编辑器界面,看到 node.cfg 文件的内容。

  2. 使用键盘的 向下箭头 ,将光标移动到文件的 最末尾

  3. 在文件的最后另起一个新行,然后输入以下内容:

DisplayServerExtraOptions "-oldeventapi 1"

步骤四:保存并退出文件

  1. 添加配置内容后,按 Control + O(按住 Control 键不放,再按 O 键)。

  2. 屏幕底部会显示:

    File Name to Write: /Applications/NoMachine.app/Contents/Frameworks/etc/node.cfg
    
  3. 不需要修改文件名,直接按 回车键 确认保存。

  4. 保存成功后,按 Control + X(按住 Control 键不放,再按 X 键)退出编辑器。

步骤五:重启 NoMachine 服务

配置文件修改完成后,需要重启 NoMachine 服务来使更改生效。

  1. 在终端中,复制并粘贴以下命令,然后按 回车键
sudo /etc/NX/nxserver --restart
  1. 如果系统再次要求输入密码,请输入你的 macOS 登录密码并按回车。

  2. 终端会显示服务重启的消息,例如:

    NX> 162 Service stopped.
    NX> 162 Service started.
    

验证修复效果

配置修改并重启服务后,请按以下步骤验证问题是否已解决:

  1. 重新连接 NoMachine

    • 如果当前有活动连接,断开并重新连接
    • 或者完全退出 NoMachine 应用后重新打开
  2. 测试菜单功能

    • 打开任意应用程序(如访达、Safari 等)
    • 点击菜单栏中的"文件"、"编辑"等菜单
    • 尝试点击二级菜单中的选项
    • 测试右键菜单是否正常弹出和响应
  3. 确认修复成功

    • ✅ 菜单能够正常展开
    • ✅ 可以点击并执行菜单项
    • ✅ 右键菜单功能恢复正常

修复成功! 如果所有菜单交互都恢复正常,说明配置已生效。你可以关闭终端窗口,继续正常使用 NoMachine。

常见问题

Q: 为什么需要 sudo 命令?

A: sudo (SuperUser DO) 允许你以管理员权限执行命令。NoMachine 的配置文件位于系统受保护的目录中,普通用户没有权限修改。

Q: 如果输错密码怎么办?

A: 系统会提示 "Sorry, try again.",你可以重新输入。连续输错 3 次后,命令会被取消,你需要重新执行命令。

Q: 配置修改后二级菜单问题依然存在?

A: 请按以下步骤排查:

  1. 检查配置内容是否正确
    • 确保引号、空格都完全一致:DisplayServerExtraOptions "-oldeventapi 1"
    • 配置前后不要有多余的空格或特殊字符
  2. 确认服务已重启
    • 重新执行重启命令:sudo /etc/NX/nxserver --restart
    • 或者完全退出 NoMachine 应用后重新打开
  3. 重启电脑
    • 如果以上步骤都无效,尝试重启 Mac
  4. 检查 NoMachine 版本
    • 确认是否为 9.2.14 或相近版本
    • 过旧或过新的版本可能需要不同的解决方案

Q: 如何查看当前配置是否生效?

A: 可以使用以下命令查看配置文件内容:

cat /Applications/NoMachine.app/Contents/Frameworks/etc/node.cfg

检查文件末尾是否包含 DisplayServerExtraOptions "-oldeventapi 1" 这一行。

Q: 这个修改会影响性能吗?

A: -oldeventapi 1 参数只是使用旧版的事件处理 API,对性能影响微乎其微。实际使用中不会感觉到明显的性能下降,但可以完全解决菜单无法点击的问题。

Q: 未来更新 NoMachine 后配置会丢失吗?

A: 一般情况下,NoMachine 更新不会覆盖 node.cfg 配置文件。但为安全起见,建议在重大版本更新后检查一次配置是否还在。如果新版本已修复此问题,可以考虑移除此配置。

Q: 其他 macOS 远程桌面软件有类似问题吗?

A: 类似的菜单交互问题偶尔也会出现在其他远程桌面软件中(如 VNC、TeamViewer),通常都与事件 API 或输入法冲突有关。解决思路可以参考本文的排查方法。

技术原理

为什么 -oldeventapi 1 能解决问题?

NoMachine 在 9.x 版本中采用了新的 macOS 事件处理机制,目的是提供更好的输入响应和多显示器支持。但新 API 与 macOS 26 (Tahoe) 系统的底层改动产生了冲突,在某些场景下(特别是复杂的菜单嵌套和快速交互时)会出现事件丢失或传递延迟。

macOS 26 Tahoe 的变化:

  • Apple 在 macOS 26 中重构了部分窗口管理和事件分发机制
  • 对第三方远程桌面软件的事件传递路径进行了调整
  • 新的安全策略可能阻断某些事件 API 调用

-oldeventapi 1 参数强制 NoMachine 使用旧版的 Core Graphics Event API,这个 API:

  • ✅ 经过多年验证,稳定性更好
  • ✅ 对二级菜单、右键菜单的支持更完善
  • ✅ 与 macOS 26 的传统兼容层配合更好
  • ✅ 避开了 macOS 26 新事件系统的已知问题
  • ⚠️ 缺少一些新特性(但不影响日常使用)

配置文件位置说明

node.cfg 是 NoMachine 服务器端的核心配置文件,位于:

/Applications/NoMachine.app/Contents/Frameworks/etc/node.cfg

该文件控制着显示服务器、网络协议、安全策略等各种运行时行为。DisplayServerExtraOptions 参数专门用于向显示服务器传递额外的命令行参数。

相关资源

总结

NoMachine 9.2.14 在 macOS 26 (Tahoe) 上的二级菜单无法点击问题,是一个已知的事件 API 兼容性 Bug,特定于 macOS 26 系统。通过本文的方法修改配置文件启用旧版事件 API,可以完美解决这个问题。

关键要点:

  • 🔧 问题根源:NoMachine 新版事件 API 与 macOS 26 系统冲突
  • 🎯 影响范围:主要在 macOS 26 (Tahoe) 系统上出现
  • 💡 解决方案:添加 DisplayServerExtraOptions "-oldeventapi 1" 配置
  • ⏱ 操作时间:约 5 分钟
  • ✅ 修复效果:完全恢复菜单交互功能

注意事项:

  • 如果你使用的是 macOS 15 (Sequoia) 或更早版本,通常不需要此修复
  • 未来 NoMachine 可能会在新版本中原生解决此问题
  • 升级到新版 NoMachine 后建议测试是否还需要此配置

如果本文帮助你解决了 macOS 26 上的 NoMachine 问题,欢迎分享给遇到同样困扰的朋友。如有其他 NoMachine 或 macOS Tahoe 相关问题,也欢迎在评论区留言讨论!

修复 NoMachine 在 macOS 26 上的菜单无响应问题 | 原子比特之间