使用通知发送的脚本从启动应用程序运行时拒绝

使用通知发送的脚本从启动应用程序运行时拒绝

我想运行一个 Python 脚本,在 Ubuntu 12.04 启动时生成桌面通知。我该怎么做?

我尝试了一些常用的方法。在启动时,在“辅助“命令我的程序已列出,但没有看到图形界面。正常脚本运行,但带有图形/网络界面的脚本会带来问题。

  • 我的 bash 脚本本质上是运行一个回显系统命令的 Python 脚本。
  • 如果我稍后手动启动该程序,它就能正常运行。

import codecs
import time
import urllib2
import os
st = "NULL"
date = time.strftime("%d-%m")
try:
    st = urllib2.urlopen("XYZ.html").read()
except:
    pass
if st != "NULL":
    st.split("XYZ")[0].split("</table>")[0]
    if date in st:
        new = st.split(date)[1:]
        events = ""
        for j in new:
            events += (j.split("</td><td>")[1].split("</td></tr>")[0] + "\n")
        events = events[:-1]
    else:
        events = "Nothing special"
    to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' '" + events +"'"
    os.system(to_send)
else:
    to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' 'Check Internet connection'"
    os.system(to_send)
exit(0)

答案1

登录时运行命令

这通常是命令在登录过程中运行过早而中断的情况之一。桌面尚未完全加载,命令无法运行。

在脚本启动之前将一个中断添加到启动应用程序中,它将正常运行:

在此处输入图片描述

/bin/bash -c "sleep 15 && python2 /path/to/script.py"

我在有和没有中断的情况下测试了你的脚本,如果不中断的话,运行它确实会失败,但有中断的话会成功。

几点说明

  • 请注意,如果你不使用shebang(#!/usr/bin/env python)你必须在脚本路径前加上python来运行它。无论它是否可执行。

  • 在较慢的系统(或虚拟机)上,15 秒的休息时间可能不够。如果是这样,请尝试从相对较长的休息时间开始,尝试“缩短”到极限。

  • 关于脚本;并没有真正研究过它,但我绝对不会os.system再使用任何脚本,subprocess.Popen()而是使用,哦,你可以通过删除第一行并取消缩进第二行来保存一行,因为你将在/os.system(to_send)路由之后在两种情况下运行该命令。:)ifelse

相关内容