KDEConnect
概览
这是 KDEConnect 的文档页面。如果你希望自行开发改进、调试或构建特殊的发行版,请查看社区说明页面
KDE Connect 由两部分组成。桌面程序和手机应用程序。
什么是 KDE Connect?
KDE Connect 是一个能够让你的各种设备交互通信的方案。 这里有一些 KDE Connect 能做的事:
- 在电脑上接收手机通知并回复消息
- 在手机端控制电脑播放音乐
- 把你的手机当作电脑的遥控器
- 从连接的设备在你的电脑上运行预定义的命令。更多细节请见命令示例。
- 在电脑上查看你的手机的电量
- 通过响铃来寻找手机
- 在设备之间分享文件和链接
- 在电脑上浏览你的手机
- 用你的手机控制桌面音量
- 从你的电脑上发短信
安装
你将会在你的发行版仓库中找到 KDE Connect 桌面组件的软件包。如果没有,你可以要求他们把它打包。
您可以在几乎所有的桌面环境中使用 KDE Connect 。由于大多数开发者都在使用Plasma,因此部分新功能可能因为更新不及时而在其他桌面环境下失效。在这种情况下,请提交一份 错误报告 。
有多种方法可以在非Plasma的桌面环境上增强 KDE Connect 的体验。 如果您是 GNOME 用户,您可能更喜欢 GSConnect 扩展以更好的适配该类型的系统。对于支持 AppIndicator 的系统(如 Budgie, Cinnamon, LXDE, Pantheon, Unity 等),KDE Connect 提供了kdeconnect-indicator 文件,以在上述各环境中帮助用户设置软件自启动。
Android 版应用程序可以在 Google Play 应用商店 和开源应用商店 F-Droid 中找到。
iOS版请在App Store下载; iOS的Pre-release版本请在TestFlight下载,详情信息可查看iOS README。
KDE Connect 也可以通过sailfish connect在 SailfishOS使用 。我们也正在努力使它搭载到其他基于Linux的手机上(Plasma Mobile, PostmarketOS等)。
设备配对
首先,你需要在你的电脑和手机上都打开 KDE Connect。然后,你就可以在每个设备上看到你希望配对的设备名称。如果失败,请确保这两台设备连接到了同一个网络,并且没有任何防火墙阻止这两台设备互相看到对方。(参见故障排除部分)
![](/images.userbase/thumb/3/3a/KDE_Connect_computer_sync.png/700px-KDE_Connect_computer_sync.png)
![](/images.userbase/thumb/3/3d/KDE_Connect_android_sync.jpg/300px-KDE_Connect_android_sync.jpg)
现在你可以在任意一台设备上请求配对,另一台设备将显示一个提示,要求接受配对请求。点击“确认”就可以了!你的设备现在已经配对了。
尽管典型的配置会是一台电脑和一部手机,但也可以用两台电脑来代替。
浏览器集成
Plasma浏览器集成使KDE Connect更加强大。它允许你从手机上控制Youtube或Netflix等内容,并将浏览器标签页发送到你的手机上。尽管名字是这样,它也可以在非Plasma桌面上使用。
改变设备名
你只能在一台设备上改变这台设备的名称。所以,如果你想改变你电脑的设备名,你必须使用桌面程序,如果你想改变你的手机或平板电脑的名称,你必须在 KDE Connect APP 中进行更改。一旦某个设备被重命名,它将自动与所有连接的设备同步。
通过 OpenVPN 运行 KDE Connect
配合VPN使用KDE Connect的原因可能有很多种。也许你离开家后,想运行一个命令,或者你在一个公共WiFi网络上,你的设备不允许通信,你想用远程控制来做一个演讲。
设置 OpenVPN
如果你有自己的服务器和一个公网IP地址,你可以自己设置OpenVPN 。这不是一个很容易设置的软件,但通过遵循像这样的设置教程,你应该能够解决。
为了允许UDP广播包,也就是KDE Connect用来自动发现网络设备的东西,OpenVPN需要被设置为桥接(TAP设备)。如果你使用一个tun设备,你仍然可以通过IP地址手动连接。
如果你想租一个预先配置好的 OpenVPN 服务,而不是自己设置,应该可行,但同样需要考虑服务器设置的问题。
一旦服务器运行,你可以使用官方的 OpenVPN 客户端来连接桌面和服务器。安卓没有官方的 OpenVPN 客户端,但 OpenVPN for Android 客户端运行良好。Openvpn Google play
一旦两台设备都连接好了,尝试在它们之间进行网络ping,以测试它们能否通过VPN进行通信。
配置 KDE Connect
如果 OpenVPN 实例已经设置好桥接(bridging),KDE Connect 应该能像在局域网中一样运行。
如果你同时使用 OpenVPN和tun设备,你将不得不通过IP手动添加你的设备。然后,一旦你连接到VPN,KDE Connect应该自动检测到你的设备,并连接或准备配对
可用插件
电量显示
"在你电脑电量旁显示手机电量"
启用它,KDE Connect组件将会在系统托盘显示你的手机电量
![](/images.userbase/1/1f/KDEConnectBattery.png)
剪贴板
"在设备间分享剪贴板"
有了剪贴板,你可以简单地从电脑上复制文本,它将立即可以粘贴到你的手机上,反之亦然。不过,这对复制的图片不起作用。
在Android 10上自动同步+=
Android 10阻止应用程序访问剪贴板,以防止恶意应用程序访问您的数据。这使得KDE Connect中的剪贴板插件使用起来很不协调。
Magisk模块(仅限root用户)
如果您是root用户,您可以使用Magisk模块来删除此限制。
日志读取
如果您有一个包含提交的生成edc655da5ac1eb5c3027c8556cc62037a1d4c5ac,您可以启用READ_LOGS权限,以便启用剪贴板同步的解决方法。
运行这些命令:
adb -d shell pm grant org.kde.kdeconnect_tp android.permission.READ_LOGS;
adb -d shell appops set org.kde.kdeconnect_tp SYSTEM_ALERT_WINDOW allow;
adb -d shell am force-stop org.kde.kdeconnect_tp;
它是如何工作的?
启用日志读取后,KDE Connect会监视自己的日志。如果它发现它被拒绝读取剪贴板,KDE Connect将在前台弹出一个不可见的窗口,以获取剪贴板内容,然后关闭该窗口。
联系人
"在设备之间同步联系人"
此插件以vcard格式将联系人从手机静默同步到桌面。
截至本文撰写之时,同步是单向的,仅允许数据从Android发送到桌面,由任何使用带有KPeopleVCard插件的KPeople库的应用程序提供支持,如KDE Connect SMS应用程序。
=VCard位置
在非Windows平台上,Vcards 在QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/kpeoplevcard"。这可能根据系统有所不同,但一般是 ~/.local/share/kpeoplevcard.
在Windows上,路径为%LocalAppData%.
禁用屏幕保护程序
"当设备连接的时候禁用屏保"
这个插件将在设备连接的时候阻止屏保程序运行
多媒体控制
"远程控制音乐和视频"
有了这个功能,你可以远程控制你的音乐和视频,有 暂停/播放 , 上一个/下一个 , 前进5秒/后退5秒 。你还可以切换控制哪个媒体播放器,此外还可以控制应用程序音量和系统音量。
![在Android中使用KDE Connect的多媒体控制器](/images.userbase/thumb/7/71/KDEConnectMultimediaControlReceiverAndroid.png/300px-KDEConnectMultimediaControlReceiverAndroid.png)
接听电话时暂停媒体
"打电话时暂停音乐/视频播放"
在通话中暂停音乐/视频。这个功能如果与Plasma 浏览器集成结合起来,就会很强大。例如,当你在Peertube或Youtube上听一些音乐时,只要你接到一个电话,视频就会暂停。
你可以把这个选项配置成只在你拿起电话时暂停,或在你的电话开始响起时直接暂停。您还可以决定是否只暂停媒体播放器或/和静音系统的声音。
发送 Ping
"发送和接受 ping."
这有助于测试你与一个特定设备的连接。一旦选择,"Ping!"将作为通知出现在你的接收设备上。
在你的桌面上,你可以通过KDE连接设置或通过托盘上的小工具发送一个ping。
在手机 KDE Connect APP上可以从顶部菜单发送ping
![在Android上给电脑发送ping](/images.userbase/thumb/8/88/KDE_Connect_ping_android.jpg/300px-KDE_Connect_ping_android.jpg)
接收应用通知
"在电脑上接收并同步手机通知"
这使你与你的手机上发生的事情保持联系! 你在手机上收到的任何通知都会显示在你的电脑上。一些通知,如Telegram等即时通讯工具(IM)的通知,可以通过电脑通知本身进行即时回复。
远程文件系统浏览器
"使用SFTP远程浏览设备的文件系统"
这让你能够访问你的手机存储! 启用后,一个设备会出现在Dolphin程序中,你可以用它来浏览你的外部存储。
![](/images.userbase/c/c3/KDEConnectViewBrowser.png)
控制手机响铃
"通过响铃寻找手机"
这也是为了测试你与特定设备的连接情况,通过远程响铃,你可以快速找到它的位置!
![](/images.userbase/4/46/KDEConnectRing.png)
执行命令
"直接执行终端命令"
使用 你可以通过手机上点下按钮,在电脑上执行预定义的命令!怎么添加命令的教程在 userbase 一系列有用的命令也可以在这里找到。一些指令样例,例如暂停和锁屏,也可用。
如果您的设备支持设备控制(Android 11+),KDE Connect将在那里显示配置的命令。然后,您可以快速控制远程设备,例如锁定屏幕。有关设备控件的更多描述,请参阅谷歌的文档:https://developer.android.com/develop/ui/views/device-control
![Screenshot of the device controls pane on a Samsung device, showing two configured commands, "Suspend" and "Lock Screen". In each device control tool is the command it will execute, and a prompt which says "Tap to execute".](/images.userbase/thumb/8/8c/20231023-KDE_Connect_Device_Controls_Screenshot_Samsung.jpg/300px-20231023-KDE_Connect_Device_Controls_Screenshot_Samsung.jpg)
发送通知
"广播这台设备的通知,它们可以在其他设备上显示"
这一点不言自明:来自电脑的通知将显示在你的手机上。
你可以配置是否要发送通知描述、与应用程序有关的图标以及持续的或非常重要的通知。 这使你与你的电脑上发生的事情保持联系! 你在电脑上收到的任何通知都会在你的手机上显示。
分享和接收文件
"轻松接收和发送文件、URL或纯文本。"
这将你的桌面和浏览器集成,这样你就可以在文件或链接上点击右键,并立即发送到你的手机上!
文件的右键菜单 "通过 KDE Connect 发送至手机",并将直接发送文件,在你的通知中显示它。
链接显示右键选项 "在手机上打开",并将自动打开手机默认浏览器访问该链接。真的很方便!
当你的电脑从手机接收文件时,它们默认会下载到你的"下载"文件夹。如果你愿意,你也可以改变默认下载路径。
电话集成
"来电时显示提示"
当你的手机接到电话,就会显示通知,告诉你哪个号码来电。与 "通话时暂停媒体 "搭配使用,你肯定能够及时接听电话,并且不会错过任何一个来电!
虚拟输入=
"把你的手机当作触摸板和键盘。"
启用这个功能后,通过进入你的手机应用程序并选择远程输入,一个触摸屏将立即为你提供控制电脑鼠标的功能,类似于触摸板。一次触摸就等于一次点击。
右上方的键盘图标允许你在手机上打字,并在电脑上也能看到结果。
如果你按下汉堡包菜单的右边,你就可以发送右键和中键点击。
演示文稿控制=
可以用上一个/下一个幻灯片按钮来控制演示。当设备被锁定时,你可以用音量加/减按钮来做。你也可以使用激光笔来突出某些东西。只要移动你的手机,蓝色的圆圈就会跟着出现 使用汉堡包菜单,你可以切换全屏(F5)或退出演示(Esc)。
=权限说明和教程视频
谷歌将不时要求提交视频,以证明我们以Play Store政策允许的方式使用权限。这些视频收集在这里以供将来参考,但也因为它们提供了如何使用某些功能的良好教程,并且对于向更广泛的受众演示权限使用也很有用。
Android鼠标接收器(辅助访问权限)
为了成为一个伪造的输入设备,Android要求我们获得无障碍权限。鼠标接收器插件在下面的视频中演示。
其他权限
此视频演示了KDE Connect的几个功能,特别是它演示了KDE-Connect如何使用某些影响隐私的权限,例如SMS权限。
某些平台上缺少或功能有限
由于技术限制或其他原因,一些平台缺少一些功能。
iOS
缺失
- 通知同步
- 短信
- 应用程序不在屏幕上时保持连接有效
- 虚拟显示器
单向(仅针对从iOS到桌面)=
- 远程输入
- Run命令
- 远程幻灯片放映
- 共享剪贴板(有限,需要点击应用程序上的“推送剪贴板”才能将剪贴板推送到电脑)
Android
缺失
- 虚拟显示器
单向(仅针对从Android到桌面)=
- Run命令
- 远程幻灯片放映
- SMS(将消息传送到桌面并处理发送)
- 联系人
单向(仅针对桌面到Android)
- 短信(从手机中检索并向手机发送发送请求)
故障处理
我有两个设备运行 KDE Connect 但他们不能发现对方
KDE Connect 在 1714-1764 内的动态端口使用UDP和TCP协议 。因此,如果你在防火墙后面,确保为TCP和UDP打开这个端口范围。否则,请确保你的网络没有阻挡UDP广播数据包。
检查进程是否正在网络上侦听:
sudo netstat -tunelp | grep -i kdeconnect
端口是否开启或阻塞?
netcat -z -v <your-phones-ip> 1714-1764
示例输出:
Connection to <your -phones-ip> 1716 port [tcp/*] succeeded!
你可能会收到很多“拒绝”的提示,但你只需要发现一个“succeeded”即可成功
如果网络连接不是问题所在,您可以尝试再次从干净的配置启动:
killall kdeconnectd
mv ~/.config/kdeconnect ~/.config/kdeconnect.bak
ufw防火墙
如果你使用ufw防火墙,你可以通过如下指令打开必要的端口:
sudo ufw allow 1714:1764/udp
sudo ufw allow 1714:1764/tcp
sudo ufw reload
防火墙
如果你使用 firewalld防火墙,你可以通过如下指令打开必要的端口:
sudo firewall-cmd --permanent --zone=public --add-service=kdeconnect
sudo firewall-cmd --reload
防火墙配置 (firewall-config)
打开 防火墙配置 (firewall-config
). 在 分区(Zones) ➔ 服务(Services), 选中 kde-connect 服务.
确保你在顶部的下拉菜单中选中了"持久的" 配置: 选项,否则重启后会丢弃你的更改。
iptables
如果你使用 firewalld 防火墙,你可以通过如下指令打开必要的端口:
sudo iptables -I INPUT -i <yourinterface> -p udp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT -i <yourinterface> -p tcp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
</div>
<syntaxhighlight lang="bash">
sudo iptables -I INPUT -i <yourinterface> -p udp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT -i <yourinterface> -p tcp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o <yourinterface> -p udp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o <yourinterface> -p tcp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
当与另一个设备配对时 KDE Connect 崩溃或重启
有时,错误的配置文件可能在设备配对时导致 KDE Connect 软件崩溃,如果是这样,试试删除 ~/.config/kdeconnect 的配置文件
KDE Connect Android 崩溃
如果KDE Connect Android应用程序崩溃,您可以使用 adb logcat.
在Google adb学习与下载adb
以下命令应列出与崩溃相关的所有信息。adb logcat在崩溃触发 *之前* 。
adb logcat --pid=$(adb shell pidof -s org.kde.kdeconnect_tp)
没有显示服务器我能运行KDE Connect吗?
得确,你可以通过使用 -platform offscreen
参数传递给守护进程 (例如: killall -9 kdeconnectd; /usr/lib/libexec/kdeconnectd -platform offscreen
)
GSConnect
GSConnect是一个独立的项目,它将KDE Connect协议引入GNOME实现,并使用相同的Android应用。如果你正在运行GSConnect,请先访问该项目GitHub页面以获得支持。如果你和GSConnect团队确定问题出在安卓应用或协议上,请随时在KDE Connect错误跟踪器中报告这些问题。
列表中没有我遇到的问题 :(
如果你想提交并报告一个BUG,你可以在KDE bug tracker 报告。