“通知发送”命令在主管中不起作用

时间:2018-09-24 03:51:56

标签: supervisor notify-send

我的操作系统是Manjora17.1.12,Python版本是3.7.0,主管的版本是3.3.4。 我有一个python脚本,它只显示一个通知。代码是:

import os

os.system('notify-send hello')

主管配置为:

[program:test_notify]
directory=/home/zz
command=python -u test_notify.py
stdout_logfile = /home/zz/supervisord.d/log/test_notify.log
stderr_logfile = /home/zz/supervisord.d/log/test_notify.log

但是当我与主管一起执行python脚本时,它不显示通知。

1 个答案:

答案 0 :(得分:0)

需要设置适当的环境变量(DISPLAY和DBUS_SESSION_BUS_ADDRESS)。您可以根据自己的需求以多种不同方式进行操作,例如

a)每个子流程

import os

os.system('DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send hello')

b)全局脚本中

import os

os.environ['DISPLAY'] = ':0'
os.environ['DBUS_SESSION_BUS_ADDRESS'] = 'unix:path=/run/user/1000/bus'
os.system('notify-send hello')

c)每个程序的主管配置中

[program:test_notify]
;
; your variables
;
user=john
environment=DISPLAY=":0",DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"

以上示例有两个假设(您可能需要相应地更改这些设置):

  • 脚本以用户john
  • 的身份运行
  • 用户john的UID为1000
  • 通知出现在显示屏:0

要以root用户身份运行脚本并向普通用户显示通知,请按照Arch Wiki Desktop_notifications中的说明使用sudo。