轶哥

妄图改变世界的全栈程序员。

在MacOS中运行Linux图形程序
  •   更新:2022-06-23 13:12:23
  •   首发:2022-06-23 13:12:23
  •   教程
  •   563

近期分享了《从SSH远程唤起本地浏览器打开URL》,其实从远程SSH也可以直接打开带GUI的Linux应用程序的。之前分享过《Win10中通过WSL2开发基于Electron的Ubuntu应用程序》,原理上其实是一样的。

都是通过安装X11服务来实现。

此方法和虚拟机以及Wine有本质区别。应用程序可以运行在远程服务器,这样是不占用系统内存和CPU的。

本文介绍的方法是从MacOS中SSH远程到服务器调试和开发Linux平台的GUI应用程序

在MacOS中运行Linux的GUI程序需要借助开源软件XQuartz

安装命令(支持ARM64和x86_64,即M1、M2、Intel芯片都可以正常运行):

brew install --cask xquartz

更推荐直接到https://github.com/XQuartz/XQuartz/releases安装最新的测试版。

安装完成后,务必重启一次计算机,只需要在运行SSH命令的时候增加参数-Y即可(iTerm2,其它终端程序自行测试)。XQuartz会自动启动(如果没有启动,需要先启动XQuartz再开启终端执行SSH命令)。

例如:

ssh -Y root@192.168.1.1

在服务器中执行经典的GUI程序xclock可以看到:

xclock.png

同理,尝试运行X11其它GUI程序也是正常的:

sudo apt install x11-apps
xcalc

xcalc.png

我们可以看到Calculator明显比xclock清晰得多,不是因为XQuartz支持高DPI屏幕缩放(Retina屏),而是因为Calculator使用了点阵字体。

目前XQuartz属于社区驱动项目,还存在一些尚未实现的功能,在最新的MacOS(13.0 Beta 22A5266r)版本中也存在一些小问题,暂时不支持Retina缩放、调用摄像头和麦克风等功能。

很多在维护开源项目的工程师令人敬佩。例如XQuartz的维护者,大部分科学界软件都依赖X11,XQuartz对应用程序开发人员和研究人员至关重要,例如美国宇航局正在使用XQuartz进行火星试飞。XQuartz使得二十多年前甚至四十多年前为Linux开发的应用程序能够在MacOS正常运行,要知道开发这些应用程序的人很多都是世界顶尖的科学家。

XQuartz支持运行Electron开发的应用程序,也支持从MacOS中SSH远程到服务器调试和开发Electron应用程序。但是不支持使用root用户运行。切换为普通用户即可正常运行。

打赏
交流区

暂无内容

尚未登陆
发布
  上一篇 (解决VSCode中Github登录状态无法保存的异常)
下一篇 (从SSH远程唤起本地浏览器打开URL)  

评论回复提醒