windows 远程 archlinux + i3wm 最佳实践?

2022-07-22 10:03:13 +08:00
 975779964

背景

公司不让用虚拟机,要用 windows + 安全管理软件 ,但可以 申请 远程 虚拟机环境 ,我平时都是用 i3wm+ archlinux 开发 ,i3wm 切换程序 窗口很方便 ,所以想到 用 本机 win+ 远程 虚拟机 archlinux 的 开发模式

常用软件

alacritty , xkeysnail , webstorm , goland ,chrome 等等

xkeysnail 是用来映射按键的 ,好让我盲打 编程中常用的符号,现在 已经离不开了,具体可以看 V2EX 如何打符号的帖子

i3wm 配置

i3wm 基本没有配置 就配置了 个 i3 status bar ,改了 快捷键 也没有装 sddm 登录软件 ,目前 arch 的启动流程是

  1. 开机
  2. 进入命令行页面 ,输入 startx ,进入 i3wm 桌面环境
  3. 启动 alacritty ,chrome 等软件 ,在 alacritty 中 启动 xkeysnail 使用 自定义的 按键 映射 来快速打符号

远程软件安装

安装 了 xrdp tigervnc 两个软件 ,然后 启动 xrdp 服务

在 windows 下 打开 mstsc , 输入 linux 的 ip , 会进入一个 蓝色 的背景页面

会有 session , username ,和 password 三个 表格 字段

session 有 xorg , xvnc ,vnc-any , neutrinordp-any 4 个选项

其中 使用 xorg 选项 输入 用户名密码后 , 就还是一样的蓝背景 ,过一会 说 连接拒绝之类的 ,无法 远程

选择 xvnc 选项,输入用户名密码后, 可以 进 远程 的 i3wm 桌面

选择 vnc-any 和 neutrinordp-any 后 ,都提示要 输入 ip port 和 密码 ,但是我看 对应的端口号 我应该是没有起来 ,所以 输入了 也是黑屏 ,这两个方法 先放弃

使用 xvnc 的方式 远程连接 i3wm 遇到的问题

使用 xvnc 方式 远程连接 i3wm 后 ,正常的 webstorm , chrome 软件 都能打开 ,但是 alacritty 却打不开了 ,还好我还有别的 terminal 备用 , 我打开 了 cool-retro-term 终端 然后输入 alacritty

报错为

$ alacritty
thread 'main' panicked at 'Failed to initialize any backend! Wayland status: NoCompositorListening X11 status: XOpenDisplayFailed', /build/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/platform_impl/linux/mod.rs:619:9 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

然后 我又尝试启动 xkeysnail 按键 映射软件 ,也无法打开 ,报错为

Traceback (most recent call last): [8/4707] File "/usr/lib/python3.10/site-packages/Xlib/support/unix_connect.py", line 119, in get_socket
s = _get_unix_socket(address)
File "/usr/lib/python3.10/site-packages/Xlib/support/unix_connect.py", line 98, in _get_unix_socket
s.connect(address)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/usr/lib/python3.10/site-packages/Xlib/support/unix_connect.py", line 123, in get_socket s = _get_tcp_socket(host, dno) File "/usr/lib/python3.10/site-packages/Xlib/support/unix_connect.py", line 93, in _get_tcp_socket s.connect((host, 6000 + dno)) ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/usr/bin/xkeysnail", line 6, in <module> cli_main() File "/usr/lib/python3.10/site-packages/xkeysnail/init.py", line 62, in cli_main eval_file(args.config) File "/usr/lib/python3.10/site-packages/xkeysnail/init.py", line 6, in eval_file exec(compile(file.read(), path, 'exec'), globals()) File ".config.py", line 4, in <module> from xkeysnail.transform import * File "/usr/lib/python3.10/site-packages/xkeysnail/transform.py", line 16, in <module> def get_active_window_wm_class(display=Xlib.display.Display()): File "/usr/lib/python3.10/site-packages/Xlib/display.py", line 89, in init self.display = _BaseDisplay(display) File "/usr/lib/python3.10/site-packages/Xlib/display.py", line 71, in init protocol_display.Display.init(self, *args, **keys) File "/usr/lib/python3.10/site-packages/Xlib/protocol/display.py", line 89, in init self.socket = connect.get_socket(name, protocol, host, displayno)

File "/usr/lib/python3.10/site-packages/Xlib/support/connect.py", line 87, in get_socket return mod.get_socket(dname, protocol, host, dno) File "/usr/lib/python3.10/site-packages/Xlib/support/unix_connect.py", line 127, in get_socket raise error.DisplayConnectionError(dname, str(val)) Xlib.error.DisplayConnectionError: Can't connect to display ":0": [Errno 111] Connection refused

问题原因猜测

alacritty 和 xkeysnail 在正常的 linux + i3wm 都能打开的

远程 使用 xvnc 的方式 却打不开 ,感觉是 因为 xserver 的环境 变了么 ?

问题

  1. 现在大家都是怎么用 win 远程 i3wm 桌面环境 的呢 ? 需要安装哪些软件
  2. 有在 远程环境下 启动 xkeysnail 和 alacritty 成功的么 ?或者 说 这两个软件 限制如此 ,那么 ,linux 下还有没有其他 按键映射软件 是能在 远程环境下 能 正常工作的 ?
6255 次点击
所在节点    Linux
41 条回复
secondwtq
2022-07-23 12:25:24 +08:00
VNC 连接如果是用 VNC 自己的 X Server 的话,是不能使用 GPU 的,alacritty 整个就是绕着 GPU 加速做的,自然不能用
basncy
2022-07-26 12:32:39 +08:00
1. xrdp xvnc 前端 rdp(对应 mstsc), 后端 vncserver(比如 127.0.0.1:5900)
2. xrdp xorg 前端 rdp(对应 mstsc), 后端是 /usr/lib/Xorg. 跟那些半吊子教程讲的 ssh Xforward 有半毛钱关系.
3. anydesk, 有人试过吗?效果怎样.
whitegerry
2022-08-20 10:30:14 +08:00
@beginor xrdp 的硬件加速几乎等于没有,还是靠 cpu 。现在主力 nomachine ,因为笔记本是 hidpi 的屏,i3 设置好 hidpi ,又能 gpu 加速,使用体验比 xrdp 好多了。
whitegerry
2022-08-20 10:32:11 +08:00
一台物理机和一个 pve 的虚拟机都是 arch+i3 ,都有显卡加速,主力 nomachine ,备用 xrdp 。
whitegerry
2022-09-08 13:34:41 +08:00
@beginor xrdp 也可以用 gpu 加速,这两天弄出来了
975779964
2022-09-08 21:48:37 +08:00
@whitegerry 我现在尝试了 nomachine ,他也不能 转发 我的 按键呢, 导致 xkeysnail 映射不成功

https://bbs.archlinuxcn.org/viewtopic.php?id=12716

我现在 特别 想要一个能 支持 xkeysnail 映射的 远程 软件
beginor
2022-09-09 09:07:20 +08:00
@whitegerry 怎么弄,有教程么?
whitegerry
2022-09-09 09:20:42 +08:00
@beginor 也不需要什么教程,arch 安装 xrdp 和 xorgxrdp-glamor 或者 nvidia 那个包就好了,client 可以用 freerdp 测试,参数 /gfx:AVC444
beginor
2022-09-09 14:42:37 +08:00
可惜 Ubuntu 没有这个包,另外这样能用微软远程桌面么?
whitegerry
2022-09-23 09:35:40 +08:00
@beginor 这两天又试了一下,linux 做 host, 核显 uhd610, 没有 parsec, 就用的 sunshine, 客户端安装 moonlight, 体验下来确实非常丝滑,就像在本机一样,比 parsec 的体验还好一点,这是没想到的。一直喜欢用的 nomachine 瞬间感觉就差了一大截。

我在办公室连家里,带宽设置 8Mbps, 画面质量和锐利度都很稳定。之前在家局域网用 windows 测试 parsec 的时候画面颜色和锐利度质量都会变。
beginor
2022-09-23 21:59:00 +08:00
@whitegerry 好吧,老哥你真能折腾。我还是 xrdp 凑合用吧
hanssx
2022-10-13 09:41:57 +08:00
@975779964 楼主搞定了没,nomachine 有个问题是快捷键优先使用 host(控制端)的,好像还没办法设置

@whitegerry linux 做 host 是作为控制端吗? xrdp 用 gpu 加速能用 windows 的 mstsc.exe 连接吗?
whitegerry
2022-10-13 14:24:31 +08:00
@hanssx mstsc.exe 链接也可以用 gpu 加速,建议关闭 linux 端的 composer ,不然会有延时。
linux 做 host 指它作为服务端,控制端在客户机这边。
975779964
2022-10-13 19:13:45 +08:00
@hanssx 搞定不了 ,这几款 远程快捷键应该都是用的 host(控制端) 的, 导致我 xkeysnail 按键映射不了 ,我现在放弃 了,我 目前的方案是 使用 win10 安装 虚拟机 linux , 然后 另一台电脑 win10 用 mstsc ,远程 这台 win10 ,然后 使用 虚拟机 linux 写代码, 这样他的按键 映射是 好用的
hanssx
2022-10-13 21:44:57 +08:00
@whitegerry linux 的 composer 不会是 php 那个 composer 吧? sunshine 就是 moonlight 吧,有空试试。

@975779964 这样有点难受,我是用 nomachine ,也就 windows 那几个快捷键会占用,实在冲突的改一下也能用。
hanssx
2022-10-13 23:42:11 +08:00
刚试了下,用 vnc 5900 端口那个作为 xrdp 是可以全局在 linux 下操作的,但是画面流畅度太低,应该是没法用或者没开硬件加速的原因。
whitegerry
2022-10-14 06:15:18 +08:00
@hanssx 不是,是合成器,比如 i3 用的 picom 那种。
whitegerry
2022-10-14 06:16:40 +08:00
@hanssx linux host 用 sunshine ,客户端用 moonlight 。
whitegerry
2022-10-14 06:19:47 +08:00
@hanssx xrdp 硬件加速是走 xorg 的,如果走 vnc 不如直接 realvnc ,那个是硬件加速的,效果跟 nomachine 类似,快捷键的问题我忘了 realvnc 是什么情况。
975779964
2023-12-09 17:49:15 +08:00
@whitegerry 我 arch i3wm 下载了 sunshine ,然后 sudo sunshine ,配置好后,win10 下载了 moonlight 远程过去发现鼠标键盘都不能动是为什么呀? 你有没有遇到过,是怎么解决的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867916

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX