BTW the attached code is not fully functional. It tries to listen for a
signal on both the system bus (Udisks2 signal) and the session bus
(Notifications). Unfortunately, Gambas can only listen to one bus at a
time, the second declared bus is ignored. As a result, the code that
responds to the Notifications signal is never called.
I've opened a bug report (1132) on this issue.
On 2017-08-18 10:05 AM, Tony Morehen wrote:
Gambas can talk to the notifications daemon via Dbus. I use this code:
Private NotifyInterface As String = "org.freedesktop.Notifications"
Private NotifyApp As String = "session://" & NotifyInterface
Private NotifyPath As String = "/" & Replace(NotifyInterface, ".", "/")
'does the daemon support icon, body, button to click etc
Dim sArray As String[] = Dbus[NotifyApp][NotifyPath,
NotifyInterface].GetCapabilities()
'popup (the hintsCollection is an empty collection, iDuration = -1,
use default)
notifyID = Dbus[NotifyApp][NotifyPath,
NotifyInterface].Notify(AppName, notifyID, IconPath,SummaryText,
BodyText, [TextToSignal, ButtonText], hintsCollection, iDuration)
'setup dbussignal to get popup closed and and buttonpressed notifications
Private NotifySignal as New DbusSignal(Dbus.Session,NotifyInterface,
True) As "NotifyDbusSignal"
'signal handler
Public Sub NotifyDbusSignal_Signal(Signal As String, Arguments As
Variant[])
Select Case Signal
Case "NotificationClosed"
Case "ActionInvoked"
'Arguments[0] contains TextToSignal from above
End Select
End
You can see the code in action in the attached gbAutoMount code. This
app uses Udisks2 to automatically mount usb drives when plugged in.
On 2017-08-18 09:28 AM, Tobias Boege wrote:
On Fri, 18 Aug 2017, adamn...@gmail.com wrote:
Probably obscure, but I'll give it a go anyway...
This project has about 80 or so Timers running at any given time,
when they fire some stuff is updated and then a balloon pops up to
alert the user that some update has happened. All fantastic.
And an added bonus is that the balloon pops up on any virtual
desktop. Which is even more fantastic as far as I am concerned and
exactly what I have been looking for for some years.
What is not so great is that when this happens on the desktop where
the app is running, not only does the balloon appear, but the actual
form that produces the balloon gets popped up to the top of the
desktop. Which is infuriating if the user is actually in another app
on that desktop. Even further, the project itself has a bunch of
popup forms where the user can enter manual updates of some data.
When the balloon appears (and the main form) the popup is lowered
and you cannot bring it back to the top layer.
I'll try a more concrete example (or two), to see if I can explain
what I am trying to do a bit more clearly.
I have my email client (sylpheed) running, every so often it goes
and checks for incoming mail. If there is some new mail a boxy
looking thing appears at the bottom right corner of the screen
telling me I have new mail. No matter which desktop I am actually on
at the time. A bit later that boxy thing fades away. It doesn't
interrupt what I am doing in any way, nor does it pop up the main
email client screen.
Similarly, on my laptop I have Batti running which when I'm getting
a bit low on battery power pops up a message in the desktop panel
telling me to plug the damn thing in. Again this does not interrupt
what I'm doing.
So, how can I achieve the same effect in gambas?
Sounds like a feature of your DE (and I'm not good with DEs) but a quick
search suggests something called libnotify for sending desktop
notifications.
It is said to be toolkit- and desktop-independent, but you need a
conforming
notification daemon running -- which you may already have, if you can
see
notifications from other programs (assuming they use the same
machinery).
So, I guess you would need a gb.libnotify component (it really
doesn't look
hard to do, there's only maybe 3 dozen functions in the library and
it seems
you only need as few as 5 of them to show your first notification).
If you can't do that, there seems to be a tool called "notify-send"
which
looks like it lets you access all the library features via the
command-line.
That said, notify-send does nothing on my desktop, probably because I
don't
run a fancy notification server...
Regards,
Tobi
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user