[Gambas-user] Help SystemTray gb-qt5 64 bits

Jussi Lahtinen jussi.lahtinen at gmail.com
Fri Apr 3 15:30:24 CEST 2020


I think the answer to this question can be found easier from
https://www.freedesktop.org/wiki/ or similar.
I don't see how this is gambas related question per se, but of course
people here can help implement things in gambas, when you figure out what
exactly to do.

Jussi

On Thu, Apr 2, 2020 at 9:12 PM herberth guzman <herberthguzman at gmail.com>
wrote:

> I honestly have no idea how to make a new system tray.
>
> I need help please.
>
> I need help creating a new system tray that supports 64-bit gb-qt5.
>
> El mié., 1 abr. 2020 1:29 p. m., herberth guzman <herberthguzman at gmail.com>
> escribió:
>
>> but there's no desktop! i mean we want to create a new systray area! how
>> to do?
>>
>>
>>
>>> XDG_CURRENT_DESKTOP environment variable.
>>>
>> set to a custom openbox in my case! no panel or systray area was starte i
>> want to start by myselft!
>>
>> El mié., 1 abr. 2020 a las 13:24, herberth guzman (<
>> herberthguzman at gmail.com>) escribió:
>>
>>>
>>>
>>> El mié., 1 abr. 2020 a las 13:23, herberth guzman (<
>>> herberthguzman at gmail.com>) escribió:
>>>
>>>> New Systray
>>>> Fabien helped me with this example
>>>> but I'm still in trouble.
>>>>
>>>> Private $hTrayIcons As New TrayIcon[]
>>>>
>>>> Public Sub Form_Open()
>>>>
>>>>   Dim a As String[]
>>>>   Dim s As String
>>>>   Dim sIcon As String
>>>>   Dim hTray As TrayIcon
>>>>   Dim vIconPixmap As Variant
>>>>   Dim i As Integer
>>>>   Dim ii As Integer
>>>>   Dim hbut As New Button(Me)
>>>>   DBus.Debug = True
>>>>
>>>>    a = DBus["org.kde.StatusNotifierWatcher"]["/StatusNotifierWatcher",
>>>> "org.kde.StatusNotifierWatcher"].RegisteredStatusNotifierItems
>>>>
>>>>   For Each s In a
>>>>
>>>>     'sIcon = DBus[File.Dir(s)]["/" & File.Name(s),
>>>> "org.kde.StatusNotifierItem"].IconThemePath
>>>>     hTray = New TrayIcon
>>>>     hTray.Name = s
>>>>     hbut.Text = s
>>>>     'Print DBus[File.Dir(s)]["/" & File.Name(s),
>>>> "org.kde.StatusNotifierItem"].OverlayIconName
>>>>     sIcon = DBus[File.Dir(s)]["/" & File.Name(s),
>>>> "org.kde.StatusNotifierItem"].IconName
>>>>     hTray.IconName = sIcon
>>>>
>>>> '    Print sIcon
>>>> '    Print hTray.IconName
>>>>     vIconPixmap = DBus[File.Dir(s)]["/" & File.Name(s),
>>>> "org.kde.StatusNotifierItem"].IconPixmap
>>>>     If vIconPixmap Then
>>>>       Try hTray.Icon = GetPictureFromAVariant(vIconPixmap)
>>>>     Endif
>>>>
>>>>     $hTrayIcons.Add(hTray)
>>>>
>>>>      For ii = 0 To $hTrayIcons.Max
>>>>        hbut.H = 48
>>>>      hbut.w = 48
>>>>      hbut.Picture = $hTrayIcons[i].GetIcon(32)
>>>>
>>>>      Next
>>>> '    Paint.DrawPicture($hTrayIcons[i].GetIcon(32), i * 32, 5)
>>>>
>>>>
>>>>   Next
>>>>
>>>>   DrawingArea1.Refresh
>>>>
>>>>   'Me.Picture = hDBusPixmap.GetPicture()
>>>> End
>>>>
>>>> Private Sub GetPictureFromAVariant(hValue As Variant[]) As Picture
>>>>
>>>>   Dim H, W As Integer
>>>>   Dim hData As Byte[]
>>>>   Dim hFile As File
>>>>   Dim hPic As Image
>>>>
>>>>   W = hValue[0][0]
>>>>   H = hValue[0][1]
>>>>   hData = hValue[0][2]
>>>>
>>>>   hPic = New Image(W, H, Color.Transparent)
>>>>   hPic.Format = "ARGB"
>>>>   hFile = Memory hPic.Data For Write
>>>>   hData.Write(hFile)
>>>>   hFile.Close
>>>>   Return hPic.picture
>>>>
>>>> End
>>>>
>>>> Public Sub DrawingArea1_Draw()
>>>>
>>>>   Dim i As Integer
>>>>
>>>>   For i = 0 To $hTrayIcons.Max
>>>>     Paint.DrawPicture($hTrayIcons[i].GetIcon(32), i * 32, 5)
>>>>   Next
>>>>
>>>> End
>>>>
>>>> [System]
>>>> Gambas=3.14.90 0714bf7 (master)
>>>> OperatingSystem=Linux
>>>> Kernel=5.4.0-18-generic
>>>> Architecture=x86_64
>>>> Distribution=Ubuntu Focal Fossa (development branch)
>>>> Desktop=INNOVA
>>>> Theme=Fusion
>>>> Language=es_GT.UTF-8
>>>> Memory=3735M
>>>>
>>>> [Libraries]
>>>> Cairo=libcairo.so.2.11600.0
>>>> Curl=libcurl.so.4.6.0
>>>> DBus=libdbus-1.so.3.19.11
>>>> GStreamer=libgstreamer-1.0.so.0.1602.0
>>>> GTK+2=libgtk-x11-2.0.so.0.2400.32
>>>> GTK+3=libgtk-3.so.0.2404.10
>>>> OpenGL=libGL.so.1.7.0
>>>> Poppler=libpoppler.so.95.0.0
>>>> Poppler=libpoppler.so.97.0.0
>>>> QT5=libQt5Core.so.5.12.5
>>>> SDL=libSDL-1.2.so.0.11.4
>>>> SQLite=libsqlite3.so.0.8.6
>>>>
>>>> [Environment]
>>>> CLUTTER_IM_MODULE=ibus
>>>> DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
>>>> DESKTOP_SESSION=Innova
>>>> DISPLAY=:0
>>>> GB_GUI=gb.qt5
>>>> GDMSESSION=Innova
>>>> GNOME_DESKTOP_SESSION_ID=this-is-deprecated
>>>> GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
>>>> GTK_IM_MODULE=ibus
>>>> GTK_MODULES=gail:atk-bridge
>>>> HOME=<home>
>>>> LANG=es_GT.UTF-8
>>>> LANGUAGE=es_GT.UTF-8
>>>> LOGNAME=<user>
>>>>
>>>> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
>>>> PWD=<home>
>>>> QT4_IM_MODULE=ibus
>>>> QT_ACCESSIBILITY=1
>>>> QT_IM_MODULE=ibus
>>>> QT_LOGGING_RULES=*.debug=false
>>>>
>>>> SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1740,unix/<hostname>:/tmp/.ICE-unix/1740
>>>> SHELL=/bin/bash
>>>> SHLVL=1
>>>> SSH_AGENT_PID=1692
>>>> SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
>>>> TZ=:/etc/localtime
>>>> USER=<user>
>>>> USERNAME=<user>
>>>> WINDOWPATH=2
>>>> XAUTHORITY=/run/user/1000/gdm/Xauthority
>>>> XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg/xdg-Innova:/etc/xdg
>>>> XDG_CONFIG_HOME=<home>/.config
>>>> XDG_CURRENT_DESKTOP=Innova
>>>>
>>>> XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/:/var/lib/menu-xdg/
>>>> XDG_MENU_PREFIX=innova-
>>>> XDG_RUNTIME_DIR=/run/user/1000
>>>> XDG_SEAT=seat0
>>>> XDG_SESSION_CLASS=user
>>>> XDG_SESSION_DESKTOP=Innova
>>>> XDG_SESSION_ID=10
>>>> XDG_SESSION_TYPE=x11
>>>> XDG_VTNR=2
>>>> XMODIFIERS=@im=ibus
>>>>
>>>> El mié., 1 abr. 2020 a las 13:21, herberth guzman (<
>>>> herberthguzman at gmail.com>) escribió:
>>>>
>>>>> X11 Classic
>>>>> gb-qt5 BAD
>>>>> gb-qt4 OK
>>>>>
>>>>> Public Sub _new()
>>>>>
>>>>> Shell "vlc"
>>>>> Shell "nm-applet"
>>>>>
>>>>> End
>>>>>
>>>>> Public Sub Form_Open()
>>>>>
>>>>>   X11Systray.Show(dwgSystemTray.Handle)
>>>>>
>>>>> End
>>>>>
>>>>> Static Public Sub X11Systray_Arrange()
>>>>>
>>>>>   FMain.ArrangeTray
>>>>>
>>>>> End
>>>>>
>>>>> Public Sub ArrangeTray()
>>>>>
>>>>>   Dim I As Integer
>>>>>   Dim X, Y, H As Integer
>>>>>
>>>>>   Debug
>>>>>   X = 2
>>>>>   Y = 2
>>>>>   For I = 0 To X11Systray.Count - 1
>>>>>     With X11Systray[I]
>>>>>       Debug I;; .IconW;; .IconH
>>>>>       If (X + .IconW) >= (Me.ClientW - 2) Then
>>>>>         X = 2
>>>>>         Y += H + 2
>>>>>         H = 0
>>>>>       Endif
>>>>>       .Move(X, Y, .IconW, .IconH)
>>>>>       H = Max(H, .IconH)
>>>>>       X += .IconW + 2
>>>>>     End With
>>>>>   Next
>>>>>
>>>>> End
>>>>>
>>>>> Public Sub Form_Resize()
>>>>>
>>>>>   ArrangeTray
>>>>>
>>>>> End
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> El mié., 1 abr. 2020 a las 13:13, Benoît Minisini (<g4mba5 at gmail.com>)
>>>>> escribió:
>>>>>
>>>>>> Le 01/04/2020 à 21:05, herberth guzman a écrit :
>>>>>> >
>>>>>> >>>What does not work exactly?
>>>>>> >
>>>>>> > I have a classic system tray (x11)
>>>>>> > with ubuntu 32 bits and gb-qt4 it works fine for me
>>>>>> >
>>>>>> > with ubuntu 64 bit and gb-qt5 it doesn't work
>>>>>> > does not show anything in the system tray
>>>>>> >
>>>>>> > Error:
>>>>>> > qt.qpa.xcb: Unhandled client message: "_NET_WM_DESKTOP"
>>>>>> > FMain.ArrangeTray.28:
>>>>>> >
>>>>>>
>>>>>> If you don't give more details, I can't help. Which system? Which
>>>>>> desktop? How do you implement the system tray? Did you implement X11
>>>>>> protocol, DBus protocol, both? And so on...
>>>>>>
>>>>>> --
>>>>>> Benoît Minisini
>>>>>>
>>>>>> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>>>>>>
>>>>>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gambas-basic.org/pipermail/user/attachments/20200403/f39d6964/attachment.html>


More information about the User mailing list