以类似 screen/tmux 的方式使用 Cygwin X

以类似 screen/tmux 的方式使用 Cygwin X

我有以下环境:

  1. 一台运行 Windows 7 的笔记本电脑,我每天都会连接/断开与工作网络的连接
  2. 运行 Ubuntu 12.04 的桌面,永久连接到工作网络

我正在寻找一种方法来“统一”这两者。我花了一些时间从 Ubuntu 远程桌面进入 Windows,但遇到了一些小故障,让我放弃了它。我目前正在使用 Synergy,它运行得相当好,但也有自己的小故障(即复制/粘贴)。

我最近的实验是在笔记本电脑上运行 Cygwin X,并将我的所有 GVIM 窗口等转发到 Windows。这很有效,但每当我断开笔记本电脑与网络的连接时,所有这些窗口(以及 Ubuntu 上的相应进程)都会死机。当我重新连接时,我必须重新启动所有这些进程。

我的问题是:有没有办法像使用 tmux/screen 之类的程序一样使用 Cygwin X。例如:

  1. 我运行 Cygwin X 并设置我的工作环境,将所有 GUI 转发到 Windows
  2. 我断开了笔记本电脑与网络的连接——所有窗口都死机了,但进程本身仍在 Ubuntu 机器上运行
  3. 我将笔记本电脑重新连接到网络 - 将所有 Ubuntu GUI 重新转发到我的 Cygwin X,然后继续我之前的操作

这可能吗?

答案1

讨论了一系列可以实现此目的的程序这里。提到了Xmove、Xpra 和Guievct。

西普拉看起来维护得很好(比 xmove 更好),并且是 Windows 构建的。Guievct 似乎用于保存程序的状态,似乎与您的用例不符。Xpra 以与 tmux/screen 类似的方式“代理”X 服务器,用法也非常相似。

在 Ubuntu 桌面上:

xpra start :100
DISPLAY=:100 gvim

当您使用笔记本电脑时:

xpra attach ssh:desktop-hostname:100

当你在桌面上时,只需

xpra attach :100

现在,如果你想gvim从笔记本电脑启动,你需要通过 SSH 执行命令。例如

ssh user@desktop-hostname xpra start :100

Cygwin 中的 就可以完成这项工作。您甚至可以使用 Cygwin 的 将其制作成 Windows 快捷方式run.exe

相关内容