在启动时启动 python 脚本

在启动时启动 python 脚本

我想在启动时启动 python 脚本。脚本使用 每小时自动更改壁纸feh --bg-max PATH/to/bg。使用 Arch linux 和 qtile 窗口管理器。我曾尝试在.xinitrcbefore中执行它exec qtile start,但它使 qtile 崩溃。然后,如果我把它放在它后面,脚本就不会被执行。我还设置了 startx 在登录时自动运行。如果从终端正常执行,Python 脚本可以正常工作

这是startx脚本:

#
# ~/.bash_profile
#
#Autostart x
[[ -f ~/.bashrc ]] && . ~/.bashrc
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
    exec startx
fi




编辑:我想运行的脚本:


import os
import time
import ctypes
import platform
import random


pictures = ["chemical_nord.png","ign_zorin.png","Nordic-Heroin.png","gnu-linux.png","linux-tux.png","nordtheme.png","Abstract-Nord.png","ign_nordhills.png","Minimal-Nord.png","qyqj7y34hlp31.png","archlinux.png","ign_unsplash10.png","nixos.png","waves.jpg"]


def get_wallpaper():
    number = random.randint(0,13)
    return number




def set_wallpaper():
    system_name = platform.system().lower()
    path = ''
    if system_name == "linux":
        number = get_wallpaper()
        path = "/home/My_Username/Pictures/"+pictures[number]
        command = "feh --bg-max " + path
        os.system(command)


if __name__ == "__main__":
    while(True):
        time.sleep(3600)
        set_wallpaper()



如何让它发挥作用?

答案1

为了在启动时触发脚本,您可以通过转到/home/$USER/.config/autostart并创建一个.desktop包含以下内容的文件来手动添加它:

[Desktop Entry]
Type=Application
Exec=command you wish execute on startup
Name=Name you wish to provide
Comment=comment to describe what the command does

或者,您可以Startup Application在 Linux 发行版中打开应用程序(如果可用),并通过提供必要的详细信息来添加条目。

答案2

如果您的脚本依赖于 qtile,您需要在 qtile 之后运行它,并使用 qtile 自动启动。

https://docs.qtile.org/en/latest/manual/config/hooks.html?highlight=autostart#autostart

    import os
import subprocess

from libqtile import hook

@hook.subscribe.startup_once
def autostart():
    home = os.path.expanduser('~/.config/qtile/autostart.sh')
    subprocess.Popen([home])

.xinitrc 中的任何无限循环过程都需要在行尾添加 & ,以便 .xinitrc 无需等待其完成即可恢复。

例如~/.config/qtile/autostart.sh

        ~/.scripts/my_script.py &

相关内容