Deskflow 在 Ubuntu 上的锁屏控制与开机自动连接配置
使用环境与故障现象
两台电脑共用一套键鼠,键盘和鼠标实际连接在 Windows 上。Windows 运行 Deskflow 服务端,Ubuntu 运行客户端,通过局域网接收键鼠操作。
本次配置环境:
| 项目 | 版本或状态 |
|---|---|
| Linux | Ubuntu 26.04.1 LTS |
| 桌面 | GNOME Shell 50.1、Wayland |
| Linux Deskflow | Flatpak 版 1.27.0 |
| Windows Deskflow | 系统服务已运行,启动类型为自动 |
| 锁屏扩展 | Allow Locked Remote Desktop 17 |
桌面正常使用时,键鼠可以跨电脑操作,但遇到了两个问题:
- Ubuntu 锁屏后,无法通过 Deskflow 输入密码,必须在 Linux 本机解锁才能恢复控制。
- Ubuntu 重启后停在首次登录界面,登录后自启动的 Deskflow 尚未运行。
这两种情况分别通过允许锁屏远程控制、自动登录后启动 Deskflow 处理。配置完成后的日常使用测试正常。
锁屏时远程输入被 GNOME 阻止
检查用户会话日志:
1 | journalctl --user --since '1 hour ago' --no-pager \ |
故障期间反复出现:
1 | Failed to create remote desktop session: |
Deskflow 在当前 Wayland 环境中通过桌面的远程控制接口接收输入。GNOME 锁屏时会限制远程访问,导致键鼠控制中断。Deskflow 项目记录了相同现象,参见锁屏后无法控制客户端的问题记录。
安装允许锁屏远程控制的扩展
Allow Locked Remote Desktop 用于允许 GNOME 在锁屏期间继续接受远程连接。本次安装的是支持 GNOME 50 的 17 版。
扩展调整的是 GNOME 的远程访问限制,影响范围包括使用相关接口的其他远程控制程序。锁屏仍然保留,解锁仍需输入系统密码。实现可查看扩展源码。
安装与启用
在 Ubuntu 已登录且未锁屏时,以当前桌面用户运行,不加 sudo:
1 | gdbus call --session \ |
桌面出现安装确认后完成安装。检查扩展状态:
1 | gnome-extensions info allowlockedremotedesktop@kamens.us |
本次安装后显示:
1 | Version: 17 |
若已安装但尚未启用,执行:
1 | gnome-extensions enable allowlockedremotedesktop@kamens.us |
安装调用本次返回过 NoReply,但扩展实际已安装并启用。遇到此提示时,先检查扩展状态,再判断安装结果。
日志中可检查启用记录:
1 | journalctl --user --since '10 minutes ago' --no-pager \ |
启用成功时出现:
1 | Remote desktop connections while screen is locked are now ENABLED |
测试锁屏控制
在 Linux 桌面中触发锁屏,再从 Windows 将鼠标移入 Linux 屏幕,唤出密码框并输入 Linux 登录密码。Linux 的锁屏快捷键为 Super+L,普通 Windows 键盘上的 Super 对应 Win 键;若 Windows 截获 Win+L,可以从 Linux 桌面菜单锁屏。
首次测试应保留本机解锁手段,例如必要时临时接入现有键盘。扩展启用后的功能以实际输入密码测试为准。
配置重启后的自动连接
首次登录界面由 GDM 管理,GDM 是显示登录页面、启动用户桌面的程序。登录后的锁屏仍运行在用户桌面中,因此 Deskflow 和扩展可以继续工作;重启后的 GDM 登录界面尚未加载这些用户程序。
本次采用以下启动流程:
1 | Ubuntu 开机 |
自动登录会让开机后的桌面直接可用,适用于能够接受这一访问方式的环境。本次未配置“自动登录后立即锁屏”脚本,也未修改既有锁屏策略。若磁盘加密要求在开机时输入解密密码,这套设置不能跳过磁盘解密。
启用 GDM 自动登录
先备份配置:
1 | sudo cp -a /etc/gdm3/custom.conf \ |
编辑文件:
1 | sudoedit /etc/gdm3/custom.conf |
在已有的 [daemon] 段中设置以下两项,将 your_username 替换为实际登录用户名,可用 whoami 查询:
1 | [daemon] |
已有同名配置时修改原项,保留其他内容,避免重复添加 [daemon] 段或同名键。
保存后在下次启动生效。当前正在工作时无需重启 GDM;重启显示管理器会中断桌面会话。
确认 Deskflow 登录后自启动
本次使用 Flatpak 版,先确认安装信息:
1 | flatpak info org.deskflow.deskflow |
在 Deskflow 中选择客户端模式,填写 Windows 服务端地址,并启用随图形界面启动核心进程的设置。先确认手动启动时能够连接,再配置登录自启动。
用户自启动文件位于:
1 | ~/.config/autostart/deskflow.desktop |
本次使用的内容:
1 | [Desktop Entry] |
目录不存在时先创建,然后使用文本编辑器保存上述文件:
1 | mkdir -p ~/.config/autostart |
已有自启动项时检查并沿用,避免另建第二个启动相同程序的条目。本次检查确认已有条目有效,没有重复新增。
核查 Windows 服务
在 Windows PowerShell 中执行:
1 | Get-Service -Name Deskflow | |
本次 Windows 端核查结果为运行中、自动启动,系统服务程序为 deskflow-daemon.exe。Windows 服务机制说明参见 Deskflow 官方文档。
Windows 服务端运行和网络可达是 Linux 自动连接的前提。两台电脑同时冷启动、Windows 保持锁屏时的跨屏操作,需要按实际环境另外验证;本次结果不作这些场景的保证。
验证结果与适用范围
配置检查已确认:
- GNOME 扩展为 17 版,已启用且状态为
ACTIVE。 - GDM 自动登录已开启,账户设置正确。
- Linux Deskflow 登录自启动项已启用,使用现有客户端连接配置。
- Windows Deskflow 服务正在运行,启动类型为自动。
配置后的实际使用反馈为测试正常。此次方案覆盖登录后锁屏的远程解锁,以及自动进入桌面后启动 Deskflow 的流程。断电恢复还取决于电脑是否自动开机;磁盘解密、网络尚未建立等阶段不在这套桌面配置的控制范围内。
当前环境的空闲超时为 0,不会因闲置自动触发锁屏。可以通过以下命令检查本机值,按需要在系统设置中调整:
1 | gsettings get org.gnome.desktop.session idle-delay |
自动登录与自动锁屏是独立设置。开启自动登录后,应确认实际的锁屏行为符合使用要求。
恢复原设置
停止允许锁屏远程控制:
1 | gnome-extensions disable allowlockedremotedesktop@kamens.us |
关闭自动登录时,在 /etc/gdm3/custom.conf 的 [daemon] 段中设置:
1 | AutomaticLoginEnable = false |
也可根据备份恢复原配置,恢复前核对备份之后是否还有其他需要保留的改动。关闭自动登录后,重启将重新停留在 GDM 登录界面,Deskflow 仍需进入用户桌面后启动。