[Lubuntu] Capture "wall" messages for display on desktop?
John Hupp
lubuntu at prpcompany.com
Wed Oct 31 16:36:12 UTC 2012
On 10/30/2012 4:42 PM, John Hupp wrote:
>
> On 10/27/2012 5:06 PM, John Hupp wrote:
>>
>> On 10/27/2012 3:50 PM, John Hupp wrote:
>>>
>>> On 10/27/2012 1:36 AM, Jonathan Marsden wrote:
>>>> John,
>>>>
>>>> On 10/26/2012 04:52 PM, John Hupp wrote:
>>>>
>>>>> The only problem is that it only posts warning messages to the
>>>>> wall command, which outputs only to console sessions. ...
>>>> In my experience, apcupsd is a *lot* more configurable than that -- did
>>>> you read its documentation or its scripts before posting?
>>>>
>>>> You can create scripts for each class of event (onbattery, offbattery,
>>>> etc.) handled by /etc/apcupsd/apccontrol that do *whatever* you want
>>>> them to do -- turn the message into audio and speak it using a speech
>>>> synth, if you really want :)
>>>>
>>>> You don't even need to edit /etc/apcupsd/apccontrol to do this, it will
>>>> notice that your custom scripts exist, and use them instead of its
>>>> internal default actions.
>>>>
>>>> Jonathan
>>>>
>>>>
>>> [Newbie sent scurrying to dig into the "Customizing Event Handling"
>>> section of the apcupsd manual, and for some general research on
>>> desktop notificationmethods.]
>>>
>>> OK, I found out that notify-send is a common desktop notification
>>> tool, and that one installs the libnotify-bin package to get it. I
>>> did so.
>>>
>>> I have now also created the shell script /etc/apcupsd/annoyme. It is
>>> owned by root. I used the Properties: Permissions sheet to give
>>> everyone Read & Write permission, and marked it executable.
>>>
>>> The contents of annoyme:
>>> #!/bin/sh
>>> notify-send -u critical -t 5000 "The computer is running on
>>> battery." "It will shut down shortly. Please save your work and log
>>> off."
>>> exit 0
>>>
>>> Running this script manually pops up a nice warning on the desktop
>>> for 5 seconds.
>>>
>>> But when I pull the plug for a UPS test, I do not get any desktop
>>> warnings, though apcupsd powers down the PC when expected. But if I
>>> log into a console during that time, I see the default onbattery and
>>> annoyme wall messages. As I understand it, apccontrol should run my
>>> custom annoyme script before running its own default annoyme command.
>>>
>>> I have not modified apccontrol.
>>>
>>> Anyone recognize what the problem is?
>>>
>>> --------------------------
>>> I could add parameters from my current configured-for-testing
>>> apcupsd.conf:
>>>
>>> UPSCABLE usb
>>> UPSTYPE usb
>>> DEVICE
>>> LOCKFILE /var/lock
>>> SCRIPTDIR /etc/apcupsd
>>> PWRFAILDIR /etc/apcupsd
>>> NOLOGINDIR /etc
>>>
>>> ONBATTERYDELAY 6
>>> BATTERYLEVEL 5
>>> MINUTES 3
>>> TIMEOUT 60
>>> ANNOY 10
>>> ANNOYDELAY 20
>>> NOLOGON always
>>> KILLDELAY 0
>>>
>>> NETSERVER on
>>> NISIP 0.0.0.0
>>> NISPORT 3551
>>> EVENTSFILE /var/log/apcupsd.events
>>> EVENTSFILEMAX 10
>>>
>>> UPSCLASS standalone
>>> UPSMODE disable
>>>
>>> STATTIME 0
>>> STATFILE /var/log/apcupsd.status
>>> LOGSTATS off
>>> DATATIME 0
>>
>> A further test: From a terminal command line I ran:
>>
>> /etc/apcupsd/apccontrol "annoyme" "" 1 0
>>
>> And my notify-send desktop notification displayed as envisioned.
>
> I found out that the issue is related to the fact that the apccontrol
> script called by the apcupsd daemon runs as root, and
> DBUS_SESSION_BUS_ADDRESS is not available to root, which means that
> the script does not know where the notify-send output should be displayed.
>
> There are work-arounds, but I did not understand how to use them in
> Lubuntu. The more elaborate solutions use functions that sift for the
> current user information and then effectively run the command of
> interest (notify-send) as that user.
>
> The simplest looking solution, if it works, relies on the procedure
> for running GUI apps via cronjobs. The reference is to
> https://help.ubuntu.com/community/CronHowto#GUI%20Applications. But
> even though the information is there in black-and-white, I didn't
> understand how to do it.
>
>
Per the CronHowto link above (or at least as I understood it), in my
script I ran:
xhost +local:
xhost
env DESKTOP=:0 notify-send <rest of command>
But that did not work.
I also tried prepending just "DESKTOP=:0" to the notify-send command,
but that did not work either.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/lubuntu-users/attachments/20121031/495df27b/attachment-0001.html>
More information about the Lubuntu-users
mailing list