我目前正在为 Ubuntu 编写一个登录时运行的背景更改器。经过多次思考,我最终决定使用自动启动应用程序来实现这一点。
但是,我没有在启动应用程序 GUI 中创建的自动启动应用程序将无法运行即使是复制粘贴的。(我的意思是,当通过编程或手动复制粘贴时,它们将不起作用。)我尽力复制 GUI 的文件输出,但无论我怎么尝试,它就是不起作用。当保存为 python.desktop 时,它们将不起作用。当保存为 时,它们将不起作用desktop_changer.desktop
。但是,手动和编程插入的文件将出现在 GUI 中,如果我在 GUI 中稍作调整(例如更改名称或添加空格),它们就会立即起作用!我是否遗漏了某些明显的东西?
Python:
with open(os.path.expanduser("~/.config/autostart/python.desktop"), "w") as file:
command = "[Desktop Entry] \nType=Application \nExec=python {}/main.py {} {}\nName=Desktop Changer\n".format(path, arg, minutes)
file.write(command)
主要方法:
if __name__ == "__main__":
time.sleep(10)
os.chdir(os.path.dirname(os.path.realpath(__file__)))
while True:
#Set pic, set timer, run continously
for img in os.listdir('pics/'):
print(os.path.abspath('pics/' + img))
set_gnome_wallpaper(os.path.abspath('pics/' + img))
time.sleep(10)
和set_gnome_wallpaper()
:
def set_gnome_wallpaper(file_path):
command = "gsettings set org.gnome.desktop.background picture-options 'zoom' && gsettings set org.gnome.desktop.background picture-uri file://'%s'" % file_path
subprocess.call(command, shell=True)
文件输出(~/.config/autostart/python.desktop
):
[Desktop Entry]
Type=Application
Exec=python /home/chessie/program/python/desktop_changer/main.py SPE 60.0
Name=Desktop Changer
当我通过 GUI 执行此操作并删除多余的部分(~/.config/autostart/python.desktop)时:
[Desktop Entry]
Type=Application
Exec=python /home/chessie/program/python/desktop_changer/main.py SPE 60.0
Name=Desktop Changer
我无法想象是什么导致了这种差异。有人知道吗?