通过命令行启用 Gnome 屏幕共享?

n-t*_*hen 5 gnome remote vnc remote-desktop remote-control

我为基于 Fedora 30(即将 32)的“数字标牌客户端”设置了自动启动安装,现在我想在安装中添加“Gnome 屏幕共享”的启用,以便能够获得实际的视觉反馈现在屏幕上的内容。我通过 GUI 中的设置(设置 - 共享 - 屏幕共享)让它工作,我也可以通过 gesettings 设置“子设置”,例如

gsettings set org.gnome.desktop.remote-desktop.vnc view-only false
gsettings set org.gnome.desktop.remote-desktop.vnc auth-method 'password'
Run Code Online (Sandbox Code Playgroud)

但我无法找到启用“屏幕共享”本身的设置。当我通过 GUI 启用它时,我可以看到systemctl status

systemctl status | grep gnome-remote | grep -v grep
           ?   ? ??gnome-remote-desktop.service
           ?   ? ? ??5572 /usr/libexec/gnome-remote-desktop-daemon
Run Code Online (Sandbox Code Playgroud)

我试图用 systemctl start 直接启动这个服务和“守护进程”,但它只会导致 Failed to start gnome-remote-desktop-daemon.service: Unit gnome-remote-desktop-daemon.service not found.

有两个非常相似的问题,但似乎已经过时,因为我没有架构“org.gnome.Vino”:

那么:如何通过命令行启用 Gnome 屏幕共享?

添加:

我已经投入了大量时间来让它发挥作用,并且可以解决除一个问题之外的所有问题。我现在知道,我必须以用户身份启动服务,所以我的整个过程是:

# Configuration
gsettings set org.gnome.desktop.remote-desktop.vnc auth-method 'password'
gsettings set org.gnome.desktop.remote-desktop.vnc view-only false
gsettings set org.gnome.settings-daemon.plugins.sharing.service:/org/gnome/settings-daemon/plugins/sharing/gnome-remote-desktop/ enabled-connections "['$( grep UUID /etc/sysconfig/network-scripts/ifcfg-enp1s0 | cut -d= -f2)']"

# Start the Remote-Desktop-Service
systemctl start --user gnome-remote-desktop
Run Code Online (Sandbox Code Playgroud)

我将它设置为“密码”以防止有人点击“接受”,“仅查看”设置为“假”以便能够控制它并设置我的网络接口的 UUID。之后我可以启动正确配置的服务。

所以最后一个缺失的步骤是,我无法通过命令行设置密码。我尝试过像葡萄酒和秘密工具一样,但它不起作用

gsettings set org.gnome.Vino vnc-password $(echo -n "myPassword"|base64)
secret-tool store --label='Label' {attribute} {value}
Run Code Online (Sandbox Code Playgroud)

秘密工具的问题可能是,Gnome 密钥环中的原始条目没有“属性”和“值”,但这些是秘密工具所必需的,因此我无法以 1:1 的比例重现条目.

所以:有人知道如何通过 cli 正确设置 gnome-screen-sharing 的密码吗?

Isk*_*ren 6

所以我在研究了几个小时后做到了。

你的指示是正确的。但是,如果您的屏幕被锁定, GNOME 将不允许 VNC 连接。因此,使用loginctl list-sessionsyou 可以列出你的会话。找到图形化的(应该有一个标识符seat0或类似的)并使用loginctl unlock-session Xwhere Xcomes fromID列解锁它list-sessions。为了验证,您可以loginctl show-session X而且应该拥有LockedHint=no。完成后,尝试通过 VNC 登录。对我来说,它立即起作用了。

回顾一下,以下是所有步骤:

gsettings set org.gnome.desktop.remote-desktop.vnc auth-method 'password'
gsettings set org.gnome.desktop.remote-desktop.vnc view-only false
echo -n 'password' | secret-tool store --label="GNOME Remote Desktop VNC password" "xdg:schema" "org.gnome.RemoteDesktop.VncPassword"
systemctl --user start gnome-remote-desktop.service
loginctl unlock-session $(loginctl --no-legend --value list-sessions | awk '/seat/ { print $1}')
Run Code Online (Sandbox Code Playgroud)

不需要允许网络接口或其他任何东西