我有这样的脚本,它的工作:
#!/bin/bash
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/last-image \
-s /home/user/Pictures/wallpaper.png
但是密友不想执行它(notify-send工作良好)。
日志中存在错误:
CMDOUT (Failed to init libxfconf: Using X11 for dbus-daemon autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead.)
我尝试在我的**.bashrc**中使用export $(dbus-launch)
,但这并没有解决问题。
3条答案
按热度按时间2admgd591#
使用cron和访问X display/cookie文件时存在一些问题。
有一个名为"$machine_id-$display_number"的文件,其中
这个文件(我们称之为"dbus文件")存储在~/. dbus/session-bus中,包含有关DBUS_SESSION_BUS_ADDRESS和DBUS_SESSION_BUS_PID的信息(它是一个文本文件)。
您需要从文件中导出这两个变量。
注:
1.我假设您没有以root身份登录(并且您的cron具有root权限)。
1.请注意,不能保证用户仍处于登录状态。如果用户注销,dbus守护程序将不可用。
1.我想解释一下后台发生了什么,但是有更简单的方法可以在桌面会话中找到进程的PID,并从其环境中获得dbus地址
导出$(〈/proc/$pid/环境文件\0\n|grep-E '^数据库总线会话总线地址=')
vojdkbi02#
我也通过Arch上的Cronie使用
feh
我使用的是一个单行程序,它从给定文件夹中随机获取一张图片,并使用
DISPLAY:=0
将其寻址到当前显示器#!/bin/bash file=$(find ~/Pictures/.wallpaper/ -type f | shuf -n1) && DISPLAY=:0 feh --bg-scale $file
4dc9hkyq3#
在bash脚本中执行以下操作(以便在crontab中成功):
来自www.example.comhttps://bbs.archlinux.org/viewtopic.php?pid=1706208#p1706208