大家好...作为一名开发人员,我经常更换主题,白天和晚上,我有 2 个主题“Light & Dark”。我编写了一个 bash 脚本来从 cli 更改 gtk 主题和 shell 主题,它运行良好。但是,当我通过 crontab 发布脚本时,它无法运行并报告无法连接到显示器和 Dbus 问题
这是我的 crontab
* * * * * DISPLAY=:0.0 /home/newton/scripts/dark-mode.sh
这是我的脚本
#!/bin/bash
export DISPLAY=:0.0
export WAYLAND_DISPLAY=wayland-0
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Vimix-Dark-Laptop-Ruby'
/usr/bin/gsettings set org.gnome.shell.extensions.user-theme name 'Vimix-Dark-Laptop-Ruby'
请帮我解决这个问题,我认为这对很多人都有帮助。问候 Mohammed Gritli
答案1
谢谢@Kristopher Ives
我之前尝试过这个答案,但是 PID 作为目录出现并且 DBUS_SESSION_BUS_ADDRESS 再次变空。
我和朋友想出了一个解决方法,在 crontab 文件顶部添加以下内容:
DISPLAY=:0
WAYLAND_DISPLAY=wayland-0
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
我从环境输出中获取了变量
之后,一切都很顺利,我还设法通过“sed”命令更改了我的“vscode 主题”,方法是将主题名称替换为
这是我的完整文件“crontab -e”
#changing theme based on day-light
DISPLAY=:0
GNOME_SHELL_SESSION_MODE=ubuntu
USER=newton
DESKTOP_SESSION=ubuntu-wayland
WAYLAND_DISPLAY=wayland-0
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XAUTHORITY=/home/newton/.Xauthority
# m h dom mon dow command
*/5 19-05 * * * DISPLAY=:0.0 /home/newton/scripts/dark-mode.sh
*/5 06-18 * * * DISPLAY=:0.0 /home/newton/scripts/light-mode.sh
“dark-mode.sh 的内容”
#!/bin/bash
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Vimix-Dark-Laptop-Ruby'
/usr/bin/gsettings set org.gnome.shell.extensions.user-theme name 'Vimix-Dark-Laptop-Ruby'
sed -i 's/Atom One Light/Ubuntu Style Theme/g' /home/newton/.config/Code/User/settings.json
“light-mode.sh 的内容”
#!/bin/bash
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Vimix-Light-Laptop-Ruby'
/usr/bin/gsettings set org.gnome.shell.extensions.user-theme name 'Vimix-Light-Laptop-Ruby'
sed -i 's/Ubuntu Style Theme/Atom One Light/g' /home/newton/.config/Code/User/settings.json
问候 Mohammed Gritli
答案2
请参阅有关更改桌面背景以及如何连接到的答案DBUS_SESSION_BUS_ADDRESS