我有以下环境:
- 一台运行 Windows 7 的笔记本电脑,我每天都会连接/断开与工作网络的连接
- 运行 Ubuntu 12.04 的桌面,永久连接到工作网络
我正在寻找一种方法来“统一”这两者。我花了一些时间从 Ubuntu 远程桌面进入 Windows,但遇到了一些小故障,让我放弃了它。我目前正在使用 Synergy,它运行得相当好,但也有自己的小故障(即复制/粘贴)。
我最近的实验是在笔记本电脑上运行 Cygwin X,并将我的所有 GVIM 窗口等转发到 Windows。这很有效,但每当我断开笔记本电脑与网络的连接时,所有这些窗口(以及 Ubuntu 上的相应进程)都会死机。当我重新连接时,我必须重新启动所有这些进程。
我的问题是:有没有办法像使用 tmux/screen 之类的程序一样使用 Cygwin X。例如:
- 我运行 Cygwin X 并设置我的工作环境,将所有 GUI 转发到 Windows
- 我断开了笔记本电脑与网络的连接——所有窗口都死机了,但进程本身仍在 Ubuntu 机器上运行
- 我将笔记本电脑重新连接到网络 - 将所有 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
。