[Gambas-user] Help SystemTray gb-qt5 64 bits
herberth guzman
herberthguzman at gmail.com
Wed Apr 1 21:23:53 CEST 2020
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 ]----
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gambas-basic.org/pipermail/user/attachments/20200401/441f7e99/attachment-0001.html>
More information about the User
mailing list