【问题标题】:How to set the wallpaper using cron如何使用cron设置壁纸
【发布时间】:2017-04-22 07:36:32
【问题描述】:

我有这个脚本,它可以工作:

#!/bin/bash
xfconf-query -c xfce4-desktop \
-p /backdrop/screen0/monitor0/workspace0/last-image \
-s /home/user/Pictures/wallpaper.png

cronie 不想执行它(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),但这并没有解决问题。

【问题讨论】:

    标签: linux cron archlinux xfce


    【解决方案1】:

    我也通过 Arch 上的 cronie 使用 feh 进行操作

    我正在使用单衬,它从给定文件夹中随机拍摄一张照片,并使用DISPLAY:=0 将其寻址到当前显示

    #!/bin/bash file=$(find ~/Pictures/.wallpaper/ -type f | shuf -n1) && DISPLAY=:0 feh --bg-scale $file

    【讨论】:

    • Feh 不工作。我不知道为什么。沉默的。通过终端也
    • 命令feh --bg-scale path/to/example/pic.jpg 不起作用?
    【解决方案2】:

    使用 cron 和访问 X 显示/cookie 文件存在一些问题。

    有一个名为“$machine_id-$display_number”的文件,其中

    • $machine_id 是存储在 /var/lib/dbus/machine-id 中的随机数
    • $display_number 是 X 显示器编号,即 $DISPLAY(即 :$display_number 或 :$display_number.$screen_number)。

    这个文件(我们称之为“dbus 文件”),存储在 ~/.dbus/session-bus 并包含有关 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
    

    注意事项:

    1. 我假设您没有以 root 身份登录(并且您的 cron 处于 root 权限下)。

    2. 请注意,不能保证用户仍处于登录状态。如果用户退出,dbus 守护程序将不可用。

    3. 我想解释在后台发生了什么。但是有更简单的方法可以在桌面会话中找到进程的 PID,并从其环境中获取 dbus 地址

      export $(

    【讨论】:

    • 我的/var/lib/dbus 目录为空,我运行此命令:dbus-uuidgen > /var/lib/dbus/machine-id 但我的主目录中没有~/.dbus。有问题吗?
    • 我只是在寻找一个快速的解决方案,而不是潜入 d-bus )))
    • 你能把这个 'echo $DBUS_SESSION_BUS_ADDRESS > ~/a.txt' 添加到 cron 吗?告诉我那里写的是什么?
    • {start_crontab} @reboot echo $DBUS_SESSION_BUS_ADDRESS > ~/dbus.txt {\n} @reboot echo 'test' >> ~/dbus.txt {end_crontab} ... 重启 cron 后打印只有test字符串
    • Dbus-launch 使用 ~/.dbus 目录或 X 显示来获取其会话的配置。如果不是从这个隐藏的目录中获取,我不确定你是从哪里获取的..
    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多