Ubuntu - PHP |通过 PHP 调用时通知发送看起来不同
Ubuntu - PHP | notify-send looks different when called through PHP
我目前正在构建一个 php 命令行应用程序,我利用 notify-send
在我的 Ubuntu 17.10
中发送通知,它现在随 gnome 一起提供。
通知看起来不错,当我手动 运行 终端中的 cli 应用程序时,它们应该如此。 (在顶部,在通知中心)
但是当通过 cron 作业 运行 相同的应用程序时,通知看起来完全不同并且显示在不同的位置! (右上角)
我正在使用 exec('notify-send tas)
在我的应用程序中调用通知发送
对于外观略有不同的通知,我遇到的问题是我无法点击超链接!而另一个支持点击超链接打开网页。
这里出了什么问题?
经过大量研究、试验和错误。我找到了以下解决方案!
PHP 代码将调用 shell 脚本,该脚本将实际发送 libnotify
消息。
bash脚本:
#!/bin/bash
#
# This script shows how to send a libnotify message
# to a specific user.
#
# It looks for a process that was started by the user and is connected to dbus.
# process to determine DBUS_SESSION_BUS_ADDRESS
USER_DBUS_PROCESS_NAME="gconfd-2"
NOTIFY_SEND_BIN="/usr/bin/notify-send"
TITLE=
MESSAGE=
# get pid of user dbus process
DBUS_PID=`ps ax | grep gconfd-2 | grep -v grep | awk '{ print }'`
# get DBUS_SESSION_BUS_ADDRESS variable
DBUS_SESSION=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$DBUS_PID/environ | sed -e s/DBUS_SESSION_BUS_ADDRESS=//`
# echo $DBUS_SESSION;
# send notify
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION $NOTIFY_SEND_BIN "$TITLE" "$MESSAGE"
PHP代码:
$command = sprintf('/path/to/bash_script.sh "%s" "%s" 2> /dev/null', $title, $message);
system($command);
P.S: 这用于命令行应用程序,只要在 whosebug.com 上发布新问题,它就会发送系统通知! (符合您标签的问题)
您可以在这里查看:https://kerneldev.com/2017/12/27/so-notify-a-stack-overflow-question-notifier/
我目前正在构建一个 php 命令行应用程序,我利用 notify-send
在我的 Ubuntu 17.10
中发送通知,它现在随 gnome 一起提供。
通知看起来不错,当我手动 运行 终端中的 cli 应用程序时,它们应该如此。 (在顶部,在通知中心)
但是当通过 cron 作业 运行 相同的应用程序时,通知看起来完全不同并且显示在不同的位置! (右上角)
我正在使用 exec('notify-send tas)
对于外观略有不同的通知,我遇到的问题是我无法点击超链接!而另一个支持点击超链接打开网页。
这里出了什么问题?
经过大量研究、试验和错误。我找到了以下解决方案!
PHP 代码将调用 shell 脚本,该脚本将实际发送 libnotify
消息。
bash脚本:
#!/bin/bash
#
# This script shows how to send a libnotify message
# to a specific user.
#
# It looks for a process that was started by the user and is connected to dbus.
# process to determine DBUS_SESSION_BUS_ADDRESS
USER_DBUS_PROCESS_NAME="gconfd-2"
NOTIFY_SEND_BIN="/usr/bin/notify-send"
TITLE=
MESSAGE=
# get pid of user dbus process
DBUS_PID=`ps ax | grep gconfd-2 | grep -v grep | awk '{ print }'`
# get DBUS_SESSION_BUS_ADDRESS variable
DBUS_SESSION=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$DBUS_PID/environ | sed -e s/DBUS_SESSION_BUS_ADDRESS=//`
# echo $DBUS_SESSION;
# send notify
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION $NOTIFY_SEND_BIN "$TITLE" "$MESSAGE"
PHP代码:
$command = sprintf('/path/to/bash_script.sh "%s" "%s" 2> /dev/null', $title, $message);
system($command);
P.S: 这用于命令行应用程序,只要在 whosebug.com 上发布新问题,它就会发送系统通知! (符合您标签的问题)
您可以在这里查看:https://kerneldev.com/2017/12/27/so-notify-a-stack-overflow-question-notifier/