如何使用cron的
我有这样的脚本,它的工作原理设置壁纸。如何使用cron的
没有在日志中的错误:
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)
,但这并没有解决问题。
使用cron和访问X显示/ cookie文件有一些问题。
有一个名为 “$ machine_id- $ display_number随后” 文件,其中
- $ machine_id是存储在/ var/lib中/ DBUS /机器ID
- $ display_number随后被X显示一个随机数数字,这意味着$ DISPLAY(即:$ display_number或:$ display_number。$ screen_number)。
此文件(让我们指其为“DBUS文件”),存储在〜/ .dbus /会话总线 ,并包含DBUS_SESSION_BUS_ADDRESS和DBUS_SESSION_BUS_PID(这是一个文本文件)的信息。
您将需要从文件中导出这两个变量。
dbus_session_file=~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0
if [ -e "$dbus_session_file" ]; then
. "$dbus_session_file"
export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
xconf-query ...
fi
注:
我假设你没有登录为根(和你的cron是下root权限)。
请注意,无法保证用户仍然登录。如果他已注销,dbus守护程序将不可用。
-
我想解释在后台发生了什么。但有更简单的方法可以在桌面会话中找到进程的PID,并从其环境中获取dbus地址
export $(</proc/$ pid/environ tr \ 0 \ n | grep -E'^DBUS_SESSION_BUS_ADDRESS =')
我feh
做通过cronie上拱以及
我使用的是一个衬里,这需要从给定文件夹的随机图像和后DISPLAY:=0
地址它当前显示
#!/bin/bash file=$(find ~/Pictures/.wallpaper/ -type f | shuf -n1) && DISPLAY=:0 feh --bg-scale $file
Feh无法正常工作。我不知道为什么。无声。通过终端也 – DopustimVladimir
命令'feh --bg-scale path/to/example/pic.jpg'不起作用? – Revo86er
是的。没有错误。没有变化 – DopustimVladimir
我的'/ var/lib/dbus'目录是空的,我运行这个命令:'dbus -uuidgen>/var/lib/dbus/machine-id'但是我没有'〜/ .dbus'我的家庭目录。这是个问题吗? – DopustimVladimir
我只是寻找一个快速的解决方案,而不会潜入d-bus))) – DopustimVladimir
您可以将这个'echo $ DBUS_SESSION_BUS_ADDRESS>〜/ a.txt'添加到cron中吗?并告诉我在那里写什么? –