[Seek Help] 如何获取当前桌面壁纸?
Tofloor
poster avatar
yjmthu
deepin
2022-04-14 02:40
Author

想做一个跨平台的壁纸小工具,在windows上可以通过读取注册表获取当前壁纸路径,在deepin上有没有什么方法可以做到?

Reply Favorite View the author
All Replies
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 02:56
#1

/var/lib/AccountsService/deepin/user

Reply View the author
yjmthu
deepin
2022-04-14 03:02
#2
神末shenmo

/var/lib/AccountsService/deepin/user

找到了,不过好像是一个临时的图片文件,能获取图片原来的位置吗?

Reply View the author
doctor
deepin
2022-04-14 03:05
#3

可以通过com.deepin.wm的D-Bus接口的GetCurrentWorkspaceBackgroundForMonitor方法获取到壁纸,参数strMonitorName 为显示器名字,如"HDMI-0",显示器名称可从com.deepin.daemon.Display服务列表中/com/deepin/daemon/Display/Monitor_×(×表示编号)的com.deepin.daemon.Display.Monitor接口中的"Name"属性获取

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 03:06
#4
yjmthu

找到了,不过好像是一个临时的图片文件,能获取图片原来的位置吗?

并不是临时的图片文件

emmmm

/usr/share/wallpaper?

好像新版本会在这里有一份


题外话,似乎可以用gsettings指定壁纸

Reply View the author
delsin
deepin
2022-04-14 03:24
#5

截图_选择区域_20220413192426.png

图片——Wallpapers——选中一张图片的快捷文件——右键——属性——在位置那里单击一下,就会跳转到壁纸图片真实的保存位置。

Reply View the author
yjmthu
deepin
2022-04-14 03:39
#6
doctor

可以通过com.deepin.wm的D-Bus接口的GetCurrentWorkspaceBackgroundForMonitor方法获取到壁纸,参数strMonitorName 为显示器名字,如"HDMI-0",显示器名称可从com.deepin.daemon.Display服务列表中/com/deepin/daemon/Display/Monitor_×(×表示编号)的com.deepin.daemon.Display.Monitor接口中的"Name"属性获取

这个接口怎么通过c/c++调用呢?命令行可以吗?

Reply View the author
liwl
deepin
2022-04-14 03:41
#7
神末shenmo

并不是临时的图片文件

emmmm

/usr/share/wallpaper?

好像新版本会在这里有一份


题外话,似乎可以用gsettings指定壁纸

请问如何通过gsettings设置壁纸,正需要

Reply View the author
yjmthu
deepin
2022-04-14 03:46
#8
doctor

可以通过com.deepin.wm的D-Bus接口的GetCurrentWorkspaceBackgroundForMonitor方法获取到壁纸,参数strMonitorName 为显示器名字,如"HDMI-0",显示器名称可从com.deepin.daemon.Display服务列表中/com/deepin/daemon/Display/Monitor_×(×表示编号)的com.deepin.daemon.Display.Monitor接口中的"Name"属性获取

这个命令得到的还是一个临时文件的路径。

截图_deepin-terminal_20220413194533.png

Reply View the author
yjmthu
deepin
2022-04-14 03:49
#9
神末shenmo

并不是临时的图片文件

emmmm

/usr/share/wallpaper?

好像新版本会在这里有一份


题外话,似乎可以用gsettings指定壁纸

deepin v20用gsettings似乎无效?

Reply View the author
yjmthu
deepin
2022-04-14 06:54
#10
delsin

截图_选择区域_20220413192426.png

图片——Wallpapers——选中一张图片的快捷文件——右键——属性——在位置那里单击一下,就会跳转到壁纸图片真实的保存位置。

我的是deepin20.5,这个文件夹里面没有我自己的壁纸,只有系统自带的壁纸。

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 07:00
#11
yjmthu

这个命令得到的还是一个临时文件的路径。

截图_deepin-terminal_20220413194533.png

这不是临时文件路径,里面确实是壁纸文件

设置壁纸操作应该就是把壁纸复制过去

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 07:03
#12
yjmthu

deepin v20用gsettings似乎无效?

https://bbs.deepin.org/phone/zh/post/201696

用qdbus吧

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 07:04
#13
liwl

请问如何通过gsettings设置壁纸,正需要

https://bbs.deepin.org/phone/zh/post/201696

Reply View the author
delsin
deepin
2022-04-14 07:07
#14
It has been deleted!
yjmthu
deepin
2022-04-14 07:45
#15
神末shenmo

这不是临时文件路径,里面确实是壁纸文件

设置壁纸操作应该就是把壁纸复制过去

好的,感谢。研究了一会,没有找到其他方法。

  • /usr/share/wallpapers 里面的壁纸确实是临时的,永远只有最近的四张壁纸,多换几张的话以前壁纸的就被删除没有了。
  • 看来deepin里面没有像windows一样记录壁纸原始路径的功能,所以我打算自己弄一个拖放功能来记录原始地址。
Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 09:46
#16
yjmthu

好的,感谢。研究了一会,没有找到其他方法。

  • /usr/share/wallpapers 里面的壁纸确实是临时的,永远只有最近的四张壁纸,多换几张的话以前壁纸的就被删除没有了。
  • 看来deepin里面没有像windows一样记录壁纸原始路径的功能,所以我打算自己弄一个拖放功能来记录原始地址。

emm也许换个思路,接管系统壁纸?

目前deepin的自定义壁纸稀烂,只能全扔进去,想要排除官方内置的还只能删掉

把自己的放进去之后也是没法分组,比如这些循环一组,另一些一组

播放也不能随机

那你倒是不如直接用自己的来管理,用户直接用你的软件管理壁纸,比如定时更换,播放顺序,分组壁纸什么的都用你的软件内部来实现,跟系统交互只需要用dbus更换壁纸

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-04-14 09:47
#17
yjmthu

好的,感谢。研究了一会,没有找到其他方法。

  • /usr/share/wallpapers 里面的壁纸确实是临时的,永远只有最近的四张壁纸,多换几张的话以前壁纸的就被删除没有了。
  • 看来deepin里面没有像windows一样记录壁纸原始路径的功能,所以我打算自己弄一个拖放功能来记录原始地址。

把官方的壁纸切换功能设置为不自动切换,而自动切换等功能都直接在软件里实现

Reply View the author
liwl
deepin
2022-04-14 19:37
#18
神末shenmo

https://bbs.deepin.org/phone/zh/post/201696

帖子内容dbus-send有效,感谢

Reply View the author
yjmthu
deepin
2022-04-15 01:49
#19
神末shenmo

把官方的壁纸切换功能设置为不自动切换,而自动切换等功能都直接在软件里实现

好的,非常感谢。

Reply View the author