屏幕保护是为了保护显示器而设计的一种专门的程序。
通过Dbus com.deepin.ScreenSaver服务的下的属性currentScreenSaver保存了当前屏保的名字。
执行命令:
qdbus com.deepin.ScreenSaver /com/deepin/ScreenSaver com.deepin.ScreenSaver.currentScreenSaver
若出现报错,可在终端中下载qdbus,使用命令sudo apt install qdbus
。
通过Dbus com.deepin.ScreenSaver服务的下的属性 allScreenSaver 这个链表中保存了屏保名。使用 GetScreenSaverCover (String name) 方法,传入屏保名,可获取屏保路径。
DBus服务:
服务名:com.deepin.ScreenSaver
地址:/com/deepin/ScreenSaver
接口:com.deepin.ScreenSaver
DBus方法
GetScreenSaverCover (String name) ↦ (String imagePath)
参数:
@name 为屏保名字,如“flurry”
命令行:
dbus-send --session --type=method_call --print-reply --dest=com.deepin.ScreenSaver /com/deepin/ScreenSaver com.deepin.ScreenSaver.GetScreenSaverCover string:'@name'
通过Dbus org.freedesktop.DBus服务下的ListActivatableNames方法可以获得当前可用的服务列表 当服务列表中不存在屏保服务com.deepin.ScreenSave时 需要屏蔽屏保功能显示。
注意是Session Bus下的org.freedesktop.DBus服务
DBus服务:
服务名:org.freedesktop.DBus
地址:/org/freedesktop/DBus
接口:org.freedesktop.DBus
DBus方法
ListActivatableNames () ↦ (Array of [String] arg_0)
命令行:
dbus-send --session --type=method_call --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListActivatableNames
桌面提供三种方式禁用屏保:环境变量,卸载屏保,gsetting配置。
三种方式中任意一种设置为禁用屏保就会使得屏保被禁用。
在系统环境变量中添加下述值即可禁用屏保
DESKTOP_CAN_SCREENSAVER=N
sudo apt remove deepin-screensaver
使用gsettings设置show-screen-saver的值为false则禁用屏保,为true则为不禁用
gsettings set com.deepin.dde.filemanager.desktop show-screen-saver false