关于Weylus
Weylus将您的平板电脑或智能手机变成您计算机的图形输入板/触摸屏!
特征
- 使用平板电脑控制鼠标
- 将屏幕镜像到平板电脑
- 使用物理键盘发送键盘输入
- 硬件加速视频编码
上述功能在所有操作系统上都可用,但 Weylus 在 Linux 上效果最好。Linux 上的其他功能包括:
- 支持手写笔/笔(支持压力和倾斜)
- 多点触控:尝试使用支持多点触控的软件,如 Krita,亲眼看看!
- 捕获特定窗口并仅绘制到它们
- 更快的屏幕镜像
- 平板电脑作为第二个屏幕
跑步
启动Weylus,最好在访问密码框中设置访问密码,然后按启动按钮。这将启动在您的计算机上运行的网络服务器。要使用平板电脑控制您的计算机,您需要打开 url http://<address of your computer>:<port set in the menu, default is 1701>
,如果可能,Weylus 会向您显示您需要打开的 url,并显示带有编码地址的 QR 码。如果您正在运行防火墙,请确保为 web 服务器打开 TCP 端口(默认为 1701)和 websocket 连接(默认为 9001)。
在许多 Linux 发行版上,这是使用 ufw 完成的:
sudo ufw allow 1701/tcp
sudo ufw allow 9001/tcp
请仅在您信任的网络中运行 Weylus,因为没有加密可实现最小延迟。
全屏
您可能希望在平板电脑的主屏幕上添加书签,因为这样可以在全屏模式下运行 Weylus(在 iOS/iPadOS 上,这需要使用 Safari 完成)。如果您不在 iOS/iPadOS 上,则有一个按钮可以切换全屏模式。
键盘输入
Weylus 支持物理键盘的键盘输入,因此如果您有蓝牙键盘,只需将其连接到平板电脑并开始输入即可。由于技术限制,不支持屏幕键盘。
自动化
Weylus 提供了一些功能,使自动化尽可能方便。有命令行界面;--no-gui
例如在没有 gui 的情况下以无头模式启动 Weylus。有关更多选项,请参阅 weylus --help
。如果您想运行特定的脚本,例如,一旦客户端连接到您的计算机,您可以通过解析 Weylus 生成的日志来实现。您可能希望通过将环境变量设置WEYLUS_LOG_LEVEL
为DEBUG
或启用更详细TRACE
的 日志记录WEYLUS_LOG_JSON
来true
启用易于解析的 JSON 日志记录。
Linux
Weylus 使用该uinput
接口在 Linux 上模拟输入事件。要启用手写笔和多点触控支持/dev/uinput
,需要 Weylus 可写。要使/dev/uinput
您的用户永久可写,请运行:
sudo groupadd -r uinput
sudo usermod -aG uinput $USER
echo ' KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput" ' \
| sudo tee /etc/udev/rules.d/60-weylus.rules
然后,要么重新启动,要么运行
sudo udevadm control --reload
sudo udevadm 触发器
然后注销并重新登录。要撤消此操作,请运行:
sudo rm /etc/udev/rules.d/60-weylus.rules
这允许您的用户在系统范围内合成输入事件,即使在另一个用户登录时也是如此。因此,不应将不受信任的用户添加到 uinput 组中。
韦兰
Weylus 为 Wayland 提供实验性支持。安装pipewire
以及xdg-desktop-portal
以下之一:
xdg-desktop-portal-gtk
用于 GNOMExdg-desktop-portal-kde
用于 KDExdg-desktop-portal-wlr
对于像 Sway 这样的基于 wlroots 的合成器是必需的。
仍然有一些事情不起作用:
- 窗口的输入映射
- 显示正确的窗口名称
- 捕获光标
硬件加速
在 Linux 上,Weylus 通过视频加速 API (VAAPI) 或 Nvidia 的 NVENC 支持硬件加速视频编码。默认情况下,硬件加速被禁用,因为硬件编码视频流的质量和稳定性在不同硬件之间差异很大,并且无法保证足够的质量。如果使用 VAAPI,则可以通过设置环境变量来选择特定的驱动程序LIBVA_DRIVER_NAME
。您可以使用命令找到可能的值 ls /usr/lib/dri/ | sed -n 's/^\(\S*\)_drv_video.so$/\1/p'
。在某些发行版中,驱动程序可能不在其中,/usr/lib/dri
但例如在Weylus 中/usr/lib/x86_64-linux-gnu/dri
并且可能不会被 Weylus 找到。要强制 Weylus 在另一个目录中搜索驱动程序, LIBVA_DRIVERS_PATH
可以设置环境变量。此外,您可以通过设置指定要使用的 VAAPI 设备WEYLUS_VAAPI_DEVICE
;默认情况下,设备可以在/dev/dri
. 在某些系统上,这不是可选的,必须设置此变量。如果 VAAPI 无法为您提供开箱即用的功能,请查看/dev/dri
,通常设置 WEYLUS_VAAPI_DEVICE=/dev/dri/renderD129
已经是解决方案。请注意,您可能需要先安装驱动程序。
Nvidia 的 NVENC 速度非常快,但提供的视频流质量明显较低(至少在我的 GeForce GTX 1050 移动 GPU 上),但更新的 GPU 应该提供更高的质量。为此,需要安装 nvidia 驱动程序。
Weylus 作为第二个屏幕
使用 Weylus 将您的平板电脑变成第二个屏幕有几种可能性。
带有 Intel 驱动程序的 Xorg 上的 Intel GPU
英特尔的驱动程序支持创建可通过 xrandr 配置的虚拟输出。
但首先要警告一句:以下配置可能会破坏启动 X 服务器。这意味着您可能最终没有图形登录,或者 X 可能会卡住并只显示黑屏。因此,请确保您知道自己在做什么,或者至少能够从损坏的 X 服务器中恢复。
您将需要安装xf86-video-intel
驱动程序并创建 /etc/X11/xorg.conf.d/20-intel.conf
包含以下内容的文件:
Section "Device"
Identifier "intelgpu0"
Driver "intel"
# this adds two virtual monitors / devices
Option "VirtualHeads" "2"
# if your screen is flickering one of the following options might help
# Option "TripleBuffer" "true"
# Option "TearFree" "true"
# Option "DRI" "false"
EndSection
重新启动xrandr
后将显示两个额外的监视器VIRTUAL1
,VIRTUAL2
并且可用于配置它们。要VIRTUAL1
以 1112×834 的屏幕尺寸和 60 fps 的刷新率激活,可以使用以下命令:
> #这会生成 xrandr 需要的所有输入参数
> #从给定的屏幕分辨率和刷新率
> gtf 1112 834 60
# 1112x834 @ 60.00 Hz (GTF) 同步:51.78 kHz;PCLK:75.81 MHz
MEDENINE“1112X834_60.00”75.81 1112 1168 1288 1464 834 835 838 863 -HSYNC + vsync
> #seatup监视器
> xrandr --newmode “ 1112x834_60.00 ” 75.81 1112 1168 1288 1464 834 835 838 863 -HSYNC + Vsync
> xrandr --addmode VIRTUAL1 1112x834_60.00
> xrandr --output VIRTUAL1 --mode 1112x834_60.00
> #检查一切是否正常
> xrandr
现在您应该能够在系统设置中配置此监视器,就像普通的第二个监视器一样,例如设置它相对于您的主监视器的位置。
设置虚拟监视器后,启动 Weylus 并在捕获菜单中选择它。在这种情况下,您可能希望启用显示光标。这就对了!
假插头
Weylus 会检测您是否使用多台显示器,您可以选择要镜像的一台。因此,如果您想将 Weylus 用作第二个屏幕,您可以购买另一台显示器。显然这是没有意义的,好像你已经买了那个显示器,没有必要使用 Weylus!这就是所谓的HDMI/Displayport/VGA 虚拟插头派上用场的地方。这些是伪装成显示器的小型设备,但价格仅为实际显示器的一小部分。
一旦您购买了一个并将其插入您的计算机,您就可以配置一个额外的屏幕,就像您对实际屏幕所做的那样,然后使用 Weylus 来镜像这个虚拟屏幕。
其他选项
以下内容未经测试/不完整,请随时进行更多研究并打开拉取请求以扩展相关文档!
- 在带有 sway 的 Wayland 上
create_output
,可以使用它来创建无头输出,不幸的是,它没有记录如何实际做到这一点:swaywm/sway#5553 - 最近在带有 GNOME 的 Wayland 上,添加了一个选项来创建带有 mutter 的虚拟监视器
加密
默认情况下,Weylus 没有加密,只能在您信任的网络上运行。如果不是这种情况,强烈建议设置 TLS 代理。一种选择是使用 hitch,设置加密的示例脚本位于 weylus_tls.sh
。但是任何 TLS 代理都应该可以正常工作。
请注意,上述脚本通过创建自签名证书来工作。这意味着您的浏览器很可能会显示一条看起来很吓人但完全没有根据的消息,告诉您信任自己刚刚创建的证书是多么危险;这可以安全地忽略!
如果您使用的是 Firefox:有一个错误 会阻止用户接受用于 websocket 连接的自签名证书。一种解决方法是通过 URL 栏直接打开 websocket 连接并在那里接受证书。接受连接后当然会失败,因为浏览器期望 https 而不是 wss 作为协议。
可悲的是,这个解决方案绝不是无摩擦的,我对目前的事态不满意。这也是默认情况下不启用加密的另一个原因,自签名证书现在处理起来太痛苦了。我很乐意欢迎任何改善这种情况的建议!
苹果系统
Weylus 需要一些权限才能正常工作,请确保启用:
- 传入连接
- 屏幕截图
- 控制您的桌面
硬件加速
Weylus 可以利用 macOS 上的 Videotoolbox 框架进行硬件加速。在我的测试中,视频质量比使用软件编码要差得多,因此默认情况下 Videotoolbox 是禁用的。
视窗
硬件加速
Weylus 可以利用 Nvidia 的 NVENC 以及 Microsoft 的 MediaFoundation 进行硬件加速视频编码。由于质量差异很大,默认情况下它被禁用。
建筑
要构建 Weylus,您需要安装 Rust、Typescript、make、git、C 编译器、nasm 和 bash。cargo build
构建项目。默认情况下,Weylus 在调试模式下构建,如果您想要发布构建运行 cargo build --release
。在 Linux 上,构建 Weylus 需要一些额外的依赖项。在 Debian 或 Ubuntu 上,它们可以通过以下方式安装:
apt-get install -y libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev \
libxfixes-dev libxtst-dev libxrandr-dev libxcomposite-dev libxi-dev libxv-dev autoconf libtool-bin \
nvidia-cuda-dev pkg-config libdrm-dev libpango1.0-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libdbus-1-dev
请注意,第一次构建可能需要一段时间,因为默认情况下需要构建 ffmpeg。在 Windows 上,仅支持 msvc 作为 C 编译器;但是,可以使用 minGW 在 Linux for Windows 上进行交叉编译。
如果您不想通过提供的构建脚本构建 ffmpeg 和 libx264,您可以自己创建目录deps/dist
并将支持 libx264 和静态版本的 libx264 构建的静态 ffmpeg 库复制到deps/dist/lib
. 额外deps/dist/include
需要填写 ffmpeg 的 include 头文件。要使硬件加速工作 ffmpeg 需要根据您的操作系统使用其他标志构建:请参阅变量FFMPEG_EXTRA_ARGS
以deps/build.sh
获取详细信息。此外,对于 Linux 上的 VAAPI,还需要静态版本的 libva。
deps/dist
如果目录不存在,构建脚本只会尝试构建 ffmpeg 。
或者传递--features ffmpeg-system
给 cargo 将使用系统版本的 ffmpeg 构建 Weylus。出于兼容性原因,默认情况下禁用此功能,在较新的系统上这不会造成问题,建议使用系统库。