使用 Cygwin X 作为 screen/tmux-like 时尚

dan*_*s87 1 networking cygwin x11-forwarding ubuntu

我有以下环境:

  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. 我断开了我的笔记本电脑与网络的连接 - 所有的 Windows 都死了,但进程本身继续在 Ubuntu 机器上运行
  3. 我将我的笔记本电脑重新连接到网络 - 我将所有 Ubuntu GUI 重新转发到我的 Cygwin X 并继续我离开的地方

这可能吗?

小智 5

此处讨论了执行此操作的相当不错的程序列表。提到的是 Xmove、Xpra 和 Guievict。

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

在 Ubuntu 桌面上:

xpra start :100
DISPLAY=:100 gvim
Run Code Online (Sandbox Code Playgroud)

当你在笔记本电脑上时:

xpra attach ssh:desktop-hostname:100
Run Code Online (Sandbox Code Playgroud)

当你在桌面上时,只需

xpra attach :100
Run Code Online (Sandbox Code Playgroud)

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

ssh user@desktop-hostname xpra start :100
Run Code Online (Sandbox Code Playgroud)

Cygwin 将完成工作。您甚至可以使用 Cygwin 的run.exe.