View Issue Details

IDProjectCategoryView StatusLast Update
0035723LazarusLCLpublic2019-10-18 21:39
ReporterDavidAssigned ToJuha Manninen 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionreopened 
Product Version2.0.3 (SVN)Product Build 
Target VersionFixed in Version 
Summary0035723: System Tray Icon must use libappindicator3
DescriptionA year or so ago I submitted (and had accepted) a patch that allowed a Linux box to use the Unity inspired libappindicator3 if the more generic libappindicator1 is not present. Canonical have been shipping (and using) libappindicator3 on its newer Ubuntu (and friends) systems even after dropping Unity. New Ubuntus such as 19.04 do not ship libappindicator1 anymore (and cannot use it) so that patch is fine. However, older systems that have been updated to (eg) 19.04 may have an old version of libappindicator1 lying around so preferring it is a bad thing now.

So, the attached patch now chooses to use libappindicator3 even if libappindicator1 is present.

This has been tested successfully on a number of linux platforms - Unbuntu 16.04 and 18.04, 19.04 Debian 9.8 and 9.9, Mageia 6 ICEwm (but not Plasma), Fedora, openSUSE.

In some of the above cases, extra steps are required, https://wiki.freepascal.org/How_to_use_a_TrayIcon#Problems_with_newer_Gnome_based_Linux
Steps To ReproduceOn, for example a Ubuntu 19.04 install that has been upgraded from an older version of Ubuntu, run an app that has a System Tray Icon.

Alternatively, on U19.04, manually install libappindicator1.

In both cases, as both libappindicator1 and libappindicator3 is present, current LCL policy is to prefer libappindicator1 and it does not work !
Additional InformationAs noted in https://wiki.freepascal.org/How_to_use_a_TrayIcon#Problems_with_newer_Gnome_based_Linux even with this patch, getting a System Tray Icon working on Fedora and openSUSE is not as easy as it should be. Ubuntu and its friends are a lot better !
TagsNo tags attached.
Fixed in Revisionr61621, r62003, r62062
LazTarget-
WidgetsetGTK 2
Attached Files
  • use_AppInd_3.patch (2,362 bytes)
    --- unitywsctrls.pas-ref	2019-06-03 20:22:52.640356117 +1000
    +++ unitywsctrls.pas	2019-06-03 22:34:45.668285649 +1000
    @@ -12,10 +12,12 @@
       Classes, SysUtils, dynlibs,
       Graphics, Controls, Forms, ExtCtrls, WSExtCtrls, LCLType, LazUTF8;
     
    -{ Very minor changes suggested May 2018 so that -
    -  1. Tries a later version of libappindicator library if old one not present
    -  2. Now defaults to try and use this unit if above lib is present.
    -  3. Still resorts to System Tray model if all else fails.
    +{ Changed priority, now use libappindicator_3 if available.  ~_3 is, nominally
    +  a Unity thing but Ubuntu and several other distros ship it (and support it) with
    +  Gnome desktops.
    +
    +  As of U19.04, libappindicator_1, even if present, does not seem to work.
    +
       DRB
     }
     
    @@ -49,14 +51,13 @@
         class function GetPosition(const {%H-}ATrayIcon: TCustomTrayIcon): TPoint; override;
       end;
     
    -{ UnityAppIndicatorInit returns true if appindicator libraries can be loaded }
    +{ UnityAppIndicatorInit returns true if libappindicator_3 library can be loaded }
     
     function UnityAppIndicatorInit: Boolean;
     
     implementation
     
     const
    -  libappindicator_1 = 'libappindicator.so.1';
       libappindicator_3 = 'libappindicator3.so.1';
     
     {const
    @@ -266,20 +267,11 @@
       if Loaded then
         Exit(Initialized);
       Loaded:= True;
    -{  if GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP') <> 'Unity' then
    -  begin
    -    Initialized := False;
    -    Exit;
    -  end;        }
       if Initialized then
         Exit(True);
    -  // we'll reject if _3 not present or if both present, accept if ONLY _3 is present.
    -  Module := LoadLibrary(libappindicator_1);
    -  if Module <> 0 then       // if _1 present, will probably work with old SystemTray
    -     exit;                  // and may not work with this Unit. So let SystemTray do it.
       Module := LoadLibrary(libappindicator_3);        // thats the one we want here.
    -  if Module = 0 then                               // no libappindicator ....
    -     Exit;                                         // hope SystemTray can help you ....
    +  if Module = 0 then                               // no libappindicator_3
    +     Exit;                                         // hope libappindicator_1 can help you ....
       Result :=
         TryLoad('app_indicator_get_type', @app_indicator_get_type) and
         TryLoad('app_indicator_new', @app_indicator_new) and
    
    use_AppInd_3.patch (2,362 bytes)
  • use_AppInd_3.txt (381 bytes)
    This patch builds on previous appindicator patch.
    It now forces LCL to use the libappindicator_3 if its available. Even
    if libappindicator_1 is present. It seem that at least U19.04 cannot
    use libappindicator_1 (maybe its only present because of a OS upgrade?).
    
    To apply, cd to YourLazDir/lcl/interfaces/gtk2 and type 
    patch < PATH_TO_Patchfile/use_AppInd_3.patch
    
    Davo, May 2019
    
    use_AppInd_3.txt (381 bytes)
  • SystemTray.zip (207,616 bytes)
  • SysTray_Latest.patch (5,190 bytes)
    Index: lcl/interfaces/gtk2/unitywsctrls.pas
    ===================================================================
    --- lcl/interfaces/gtk2/unitywsctrls.pas	(revision 62061)
    +++ lcl/interfaces/gtk2/unitywsctrls.pas	(working copy)
    @@ -10,14 +10,21 @@
     uses
       GLib2, Gtk2, Gdk2Pixbuf,
       Classes, SysUtils, dynlibs,
    -  Graphics, Controls, Forms, ExtCtrls, WSExtCtrls, LCLType, LazUTF8;
    +  Graphics, Controls, Forms, ExtCtrls, WSExtCtrls, LCLType, LazUTF8,
    +  FileUtil;
     
    -{ Changed priority, now use libappindicator_3 if available.  ~_3 is, nominally
    -  a Unity thing but Ubuntu and several other distros ship it (and support it) with
    -  Gnome desktops.
    +{ Changed October 2019, we now try and identify those Linux distributions that
    +  need to use LibAppIndicator3 and allow the remainder to use the older and
    +  more functional SystemTray. Only a few old distributions can use LibAppIndicator_1
    +  so don't bother to try it, rely, here on LibAppIndicator3
     
    -  As of U19.04, libappindicator_1, even if present, does not seem to work.
    +  The 'look up table' in NeedAppIndicator() can be overridden.
    +  Introduce an optional env var, LAZUSEAPPIND that can be unset or set to
    +  YES, NO or INFO - YES forces an attempt to use LibAppIndicator3, NO prevents
    +  an attempt, any non blank value (eg INFO) displays to std out what is happening.
     
    +  Note we assume this env var will only be used in Linux were its always safe to
    +  write to stdout.
       DRB
     }
     
    @@ -252,36 +259,42 @@
       Loaded: Boolean;
       Initialized: Boolean;
     
    -function NeedAppIndicator: boolean;
    -var
    -  DeskTop,  VersionSt : String;
    -  ProcFile: TextFile;
    -begin
    -  DeskTop := GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP');
    -  if DeskTop = 'Unity' then exit(True);
    -  // GNOME needs AppIndicator lib only with some distros. Check them.
    -  if (DeskTop = 'GNOME') then
    -  begin
    -    AssignFile(ProcFile, '/proc/version');
    -    try
    -      reset(ProcFile);
    -      readln(ProcFile, VersionSt);
    -    finally
    -      CloseFile(ProcFile);
    +function UnityAppIndicatorInit: Boolean;
    +  var
    +    Module: HModule;
    +    UseAppInd : string;
    +
    +    function NeedAppIndicator: boolean;
    +    var
    +      DeskTop,  VersionSt : String;
    +      ProcFile: TextFile;
    +    begin
    +      DeskTop := GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP');
    +      // See the wiki for details of what extras these desktops require !!
    +      if (DeskTop = 'Unity')
    +         or (Desktop = 'Enlightenment')
    +            then exit(True);
    +      if (DeskTop = 'GNOME') then begin
    +          {$PUSH}
    +          {$IOChecks off}
    +          AssignFile(ProcFile, '/proc/version');
    +          reset(ProcFile);
    +          if IOResult<>0 then exit(false);
    +          {$POP}
    +          readln(ProcFile, VersionSt);
    +          CloseFile(ProcFile);
    +          if ( (pos('mageia', VersionSt) > 0) or
    +            (pos('Debian', VersionSt) > 0) or
    +            (pos('Red Hat', VersionSt) > 0) or
    +            (pos('SUSE', VersionSt) > 0) )
    +            // 19.04 and earlier Ubuntu Gnome does not need LibAppIndicator3
    +            then exit(True);
    +      end;
    +      Result := False;
         end;
    -    if (pos('Debian', VersionSt) > 0)
    -    or (pos('mageia', VersionSt) > 0)
    -    or (pos('Red Hat', VersionSt) > 0)
    -    or (pos('SUSE', VersionSt) > 0)
    -    then exit(True);
    -  end;
    -  Result := False;
    -end;
     
    -function UnityAppIndicatorInit: Boolean;
    -var
    -  Module: HModule;
     
    +
       function TryLoad(const ProcName: string; var Proc: Pointer): Boolean;
       begin
         Proc := GetProcAddress(Module, ProcName);
    @@ -293,15 +306,28 @@
       if Loaded then
         Exit(Initialized);
       Loaded := True;
    -  if not NeedAppIndicator then
    +  if Initialized then
    +    Exit(True);
    +  UseAppInd := getEnvironmentVariable('LAZUSEAPPIND');
    +  if UseAppInd = 'NO' then
    +    begin
    +    Initialized := False;
    +    writeln('APPIND Debug : Choosing to not try AppIndicator3');
    +    Exit;
    +  end;
    +  if (UseAppInd <> 'YES') and (not NeedAppIndicator()) then    // ie its NO or blank or INFO
       begin
         Initialized := False;
    +    if UseAppInd <> '' then
    +       writeln('APPIND Debug : Will not use AppIndicator3');
         Exit;
       end;
    -  if Initialized then
    -    Exit(True);
    -  Module := LoadLibrary(libappindicator_3);        // libappindicator v. 3
    -  if Module = 0 then                               // no libappindicator_3
    +  if UseAppInd = 'YES' then                                    // either a YES or OS needs it
    +     writeln('APPIND Debug : Will try to force AppIndicator3')
    +  else
    +     if UseAppInd <> '' then writeln('APPIND Debug : OS and Desktop request AppIndicator3');
    +  Module := LoadLibrary(libappindicator_3);        // might have several package names, see wiki
    +  if Module = 0 then
          Exit;
       Result :=
         TryLoad('app_indicator_get_type', @app_indicator_get_type) and
    @@ -324,6 +350,8 @@
         TryLoad('app_indicator_get_label', @app_indicator_get_label) and
         TryLoad('app_indicator_get_label_guide', @app_indicator_get_label_guide) and
         TryLoad('app_indicator_get_ordering_index', @app_indicator_get_ordering_index);
    +  if UseAppInd <> '' then
    +     writeln('APPIND Debug : AppIndicator3 has loaded ' + booltostr(Result, True));
       Initialized := Result;
     end;
     
    
    SysTray_Latest.patch (5,190 bytes)

Relationships

related to 0033778 closedJuha Manninen With recent releases of Ubuntu (in particular) the TrayIcon no longer works. 
related to 0035983 closedJuha Manninen TrayIcon.OnClick fires right click 

Activities

David

2019-06-16 12:18

reporter  

use_AppInd_3.patch (2,362 bytes)
--- unitywsctrls.pas-ref	2019-06-03 20:22:52.640356117 +1000
+++ unitywsctrls.pas	2019-06-03 22:34:45.668285649 +1000
@@ -12,10 +12,12 @@
   Classes, SysUtils, dynlibs,
   Graphics, Controls, Forms, ExtCtrls, WSExtCtrls, LCLType, LazUTF8;
 
-{ Very minor changes suggested May 2018 so that -
-  1. Tries a later version of libappindicator library if old one not present
-  2. Now defaults to try and use this unit if above lib is present.
-  3. Still resorts to System Tray model if all else fails.
+{ Changed priority, now use libappindicator_3 if available.  ~_3 is, nominally
+  a Unity thing but Ubuntu and several other distros ship it (and support it) with
+  Gnome desktops.
+
+  As of U19.04, libappindicator_1, even if present, does not seem to work.
+
   DRB
 }
 
@@ -49,14 +51,13 @@
     class function GetPosition(const {%H-}ATrayIcon: TCustomTrayIcon): TPoint; override;
   end;
 
-{ UnityAppIndicatorInit returns true if appindicator libraries can be loaded }
+{ UnityAppIndicatorInit returns true if libappindicator_3 library can be loaded }
 
 function UnityAppIndicatorInit: Boolean;
 
 implementation
 
 const
-  libappindicator_1 = 'libappindicator.so.1';
   libappindicator_3 = 'libappindicator3.so.1';
 
 {const
@@ -266,20 +267,11 @@
   if Loaded then
     Exit(Initialized);
   Loaded:= True;
-{  if GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP') <> 'Unity' then
-  begin
-    Initialized := False;
-    Exit;
-  end;        }
   if Initialized then
     Exit(True);
-  // we'll reject if _3 not present or if both present, accept if ONLY _3 is present.
-  Module := LoadLibrary(libappindicator_1);
-  if Module <> 0 then       // if _1 present, will probably work with old SystemTray
-     exit;                  // and may not work with this Unit. So let SystemTray do it.
   Module := LoadLibrary(libappindicator_3);        // thats the one we want here.
-  if Module = 0 then                               // no libappindicator ....
-     Exit;                                         // hope SystemTray can help you ....
+  if Module = 0 then                               // no libappindicator_3
+     Exit;                                         // hope libappindicator_1 can help you ....
   Result :=
     TryLoad('app_indicator_get_type', @app_indicator_get_type) and
     TryLoad('app_indicator_new', @app_indicator_new) and
use_AppInd_3.patch (2,362 bytes)
use_AppInd_3.txt (381 bytes)
This patch builds on previous appindicator patch.
It now forces LCL to use the libappindicator_3 if its available. Even
if libappindicator_1 is present. It seem that at least U19.04 cannot
use libappindicator_1 (maybe its only present because of a OS upgrade?).

To apply, cd to YourLazDir/lcl/interfaces/gtk2 and type 
patch < PATH_TO_Patchfile/use_AppInd_3.patch

Davo, May 2019
use_AppInd_3.txt (381 bytes)

Juha Manninen

2019-07-25 22:52

developer   ~0117399

Applied, thanks.

David

2019-07-26 00:56

reporter   ~0117402

Thanks Juha, do you think this will this be merged into fixes in time for 2.0.4 ?

Juha Manninen

2019-07-26 08:46

developer   ~0117404

Ok, I added it to the merge list. Apparently it does not break anything even on older Linux distros.

Mario Bonati

2019-08-20 20:15

reporter   ~0117751

Hi,
with revision 61620 all is ok.
With revision 61621, there is this bug: https://bugs.freepascal.org/view.php?id=35983

Thanks, Mario

David

2019-09-29 13:29

reporter   ~0118185

Unfortunatly, the transition from 61820 to 61821 is a reversion that breaks the SystemTray icon on many system.
Around 0000267 of unitywsctrls.pas we again have a test to see if we are, in fact running Unity and, if not, exit without loading the libappindicator3.
However, libappindicator3 is no longer unique to Unity, Ubuntu 18.04 and later all have it as do many derivatives of Ubuntu and even Debian. Its the only way that these systems will display a SystemTrayIcon.
I note that Mario mentions, in bug 35983 that (Mint ?) Cinnamon, I have not been able to get a current version of Cinnamon to install in VirtualBox to test but I suspect Mario may be using quite an old version, one that supported by the old SystemModel.
The problem we have here is which group do we want to disable ? Its (I think) old Cinnamon users who may not get one particular type of mouse click OR Ubuntu et al users who do not get to see any AppIndicator Icon at all !
(Truth is the SystemTray/AppIndicator model is on its way out anyway, we really have to move over to statusnotifier but thats not easy, I have been looking at it recently.)
I am afraid the fix mentioned in 35983 needs to be reverted.

Mario Bonati

2019-09-29 16:00

reporter   ~0118186

Hi, i'm using Ubuntu 19.04 64 bit, with Cinnamon 3.8.8.
This is the release distributed in the Ubuntu repositories.

Hi, Mario

David

2019-09-30 00:52

reporter   ~0118197

Last edited: 2019-09-30 04:14

View 2 revisions

Ah, thanks Mario. I tested against so many Distros, I did not even know that Ubuntu made a Cinnamon one. What is it called ?
Mario, can you please tell me if it has libappindicator.so or libappindicator3.so installed ?
Prior to 61621, if it does have libappindicator3.so, it uses it, else it falls back to either libappindicator.so or even the old real SystemTray. Most newer distros ignore libappindicator.so or old SystemTray, even if the libraries are present.
I am unsure of the behavior you are looking for, most common use of this unit is to popup a menu, are you trying to hook into other events ? Mark Shuttleworth stated libappindicator was a deliberate dumbing down of the oldsystem tray, people were trying to do too much in it.
You might like to test your code on, for example, a RedHat distro, think you may be a bit disappointed.
Mario, do you use the Forum, be easier to discuss there ....
Davo

David

2019-09-30 02:56

reporter   ~0118198

Last edited: 2019-09-30 04:15

View 2 revisions

I have just tested several key distros and results are in a table in the Talk or Discussion page of the Wiki, TrayIcon. https://wiki.freepascal.org/Talk:How_to_use_a_TrayIcon



SystemTray.zip (207,616 bytes)

Mario Bonati

2019-09-30 19:55

reporter   ~0118220

Hi,
i've opened a thread in the Forum: https://forum.lazarus.freepascal.org/index.php/topic,46912.0.html

Mario

Juha Manninen

2019-10-01 16:18

developer   ~0118235

Last edited: 2019-10-01 16:26

View 2 revisions

> I am afraid the fix mentioned in 0035983 needs to be reverted.

r61758 in 0035983 solved the issue on my Manjaro Linux with KDE. It now works with both GTK2 and QT(5) bindings.
What should be tested in function UnityAppIndicatorInit to make it work in every distro?
Now it tests for "GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP') <> 'Unity' ".
Should we test for Cinnamon?
My Manjaro has libappindicator3.so installed but apparently it is not needed with KDE. Instead, loading it screws things up.

Juha Manninen

2019-10-06 17:33

developer   ~0118381

Resolving. Please reopen for possible future patches.

David

2019-10-15 07:22

reporter   ~0118613

As discussed on Forum, here is an SVN style patch that forces all the Linux systems I can find that need LibAppIndicator3 to so use it.
It does look like a lot of changes but most is just tidying up. We now -
* Include Debian Gnome and Enlightenment on list of "must use"
* read an env var LAZUSEAPPIND at run time that forces a system to either use it, not use it or just report on what its doing. If nothing is set for that var, the UnityWsCtrls will just make its best guess at what it should do, that will be right for a lot of cases.
This patch affects on GTK2 and, warning, does write to stdout when using that env var.

SysTray_Latest.patch (5,190 bytes)
Index: lcl/interfaces/gtk2/unitywsctrls.pas
===================================================================
--- lcl/interfaces/gtk2/unitywsctrls.pas	(revision 62061)
+++ lcl/interfaces/gtk2/unitywsctrls.pas	(working copy)
@@ -10,14 +10,21 @@
 uses
   GLib2, Gtk2, Gdk2Pixbuf,
   Classes, SysUtils, dynlibs,
-  Graphics, Controls, Forms, ExtCtrls, WSExtCtrls, LCLType, LazUTF8;
+  Graphics, Controls, Forms, ExtCtrls, WSExtCtrls, LCLType, LazUTF8,
+  FileUtil;
 
-{ Changed priority, now use libappindicator_3 if available.  ~_3 is, nominally
-  a Unity thing but Ubuntu and several other distros ship it (and support it) with
-  Gnome desktops.
+{ Changed October 2019, we now try and identify those Linux distributions that
+  need to use LibAppIndicator3 and allow the remainder to use the older and
+  more functional SystemTray. Only a few old distributions can use LibAppIndicator_1
+  so don't bother to try it, rely, here on LibAppIndicator3
 
-  As of U19.04, libappindicator_1, even if present, does not seem to work.
+  The 'look up table' in NeedAppIndicator() can be overridden.
+  Introduce an optional env var, LAZUSEAPPIND that can be unset or set to
+  YES, NO or INFO - YES forces an attempt to use LibAppIndicator3, NO prevents
+  an attempt, any non blank value (eg INFO) displays to std out what is happening.
 
+  Note we assume this env var will only be used in Linux were its always safe to
+  write to stdout.
   DRB
 }
 
@@ -252,36 +259,42 @@
   Loaded: Boolean;
   Initialized: Boolean;
 
-function NeedAppIndicator: boolean;
-var
-  DeskTop,  VersionSt : String;
-  ProcFile: TextFile;
-begin
-  DeskTop := GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP');
-  if DeskTop = 'Unity' then exit(True);
-  // GNOME needs AppIndicator lib only with some distros. Check them.
-  if (DeskTop = 'GNOME') then
-  begin
-    AssignFile(ProcFile, '/proc/version');
-    try
-      reset(ProcFile);
-      readln(ProcFile, VersionSt);
-    finally
-      CloseFile(ProcFile);
+function UnityAppIndicatorInit: Boolean;
+  var
+    Module: HModule;
+    UseAppInd : string;
+
+    function NeedAppIndicator: boolean;
+    var
+      DeskTop,  VersionSt : String;
+      ProcFile: TextFile;
+    begin
+      DeskTop := GetEnvironmentVariableUTF8('XDG_CURRENT_DESKTOP');
+      // See the wiki for details of what extras these desktops require !!
+      if (DeskTop = 'Unity')
+         or (Desktop = 'Enlightenment')
+            then exit(True);
+      if (DeskTop = 'GNOME') then begin
+          {$PUSH}
+          {$IOChecks off}
+          AssignFile(ProcFile, '/proc/version');
+          reset(ProcFile);
+          if IOResult<>0 then exit(false);
+          {$POP}
+          readln(ProcFile, VersionSt);
+          CloseFile(ProcFile);
+          if ( (pos('mageia', VersionSt) > 0) or
+            (pos('Debian', VersionSt) > 0) or
+            (pos('Red Hat', VersionSt) > 0) or
+            (pos('SUSE', VersionSt) > 0) )
+            // 19.04 and earlier Ubuntu Gnome does not need LibAppIndicator3
+            then exit(True);
+      end;
+      Result := False;
     end;
-    if (pos('Debian', VersionSt) > 0)
-    or (pos('mageia', VersionSt) > 0)
-    or (pos('Red Hat', VersionSt) > 0)
-    or (pos('SUSE', VersionSt) > 0)
-    then exit(True);
-  end;
-  Result := False;
-end;
 
-function UnityAppIndicatorInit: Boolean;
-var
-  Module: HModule;
 
+
   function TryLoad(const ProcName: string; var Proc: Pointer): Boolean;
   begin
     Proc := GetProcAddress(Module, ProcName);
@@ -293,15 +306,28 @@
   if Loaded then
     Exit(Initialized);
   Loaded := True;
-  if not NeedAppIndicator then
+  if Initialized then
+    Exit(True);
+  UseAppInd := getEnvironmentVariable('LAZUSEAPPIND');
+  if UseAppInd = 'NO' then
+    begin
+    Initialized := False;
+    writeln('APPIND Debug : Choosing to not try AppIndicator3');
+    Exit;
+  end;
+  if (UseAppInd <> 'YES') and (not NeedAppIndicator()) then    // ie its NO or blank or INFO
   begin
     Initialized := False;
+    if UseAppInd <> '' then
+       writeln('APPIND Debug : Will not use AppIndicator3');
     Exit;
   end;
-  if Initialized then
-    Exit(True);
-  Module := LoadLibrary(libappindicator_3);        // libappindicator v. 3
-  if Module = 0 then                               // no libappindicator_3
+  if UseAppInd = 'YES' then                                    // either a YES or OS needs it
+     writeln('APPIND Debug : Will try to force AppIndicator3')
+  else
+     if UseAppInd <> '' then writeln('APPIND Debug : OS and Desktop request AppIndicator3');
+  Module := LoadLibrary(libappindicator_3);        // might have several package names, see wiki
+  if Module = 0 then
      Exit;
   Result :=
     TryLoad('app_indicator_get_type', @app_indicator_get_type) and
@@ -324,6 +350,8 @@
     TryLoad('app_indicator_get_label', @app_indicator_get_label) and
     TryLoad('app_indicator_get_label_guide', @app_indicator_get_label_guide) and
     TryLoad('app_indicator_get_ordering_index', @app_indicator_get_ordering_index);
+  if UseAppInd <> '' then
+     writeln('APPIND Debug : AppIndicator3 has loaded ' + booltostr(Result, True));
   Initialized := Result;
 end;
 
SysTray_Latest.patch (5,190 bytes)

Juha Manninen

2019-10-15 14:44

developer   ~0118618

I applied the latest patch in r62062. Will be merged to fixes_2_0 branch.

Issue History

Date Modified Username Field Change
2019-06-16 12:18 David New Issue
2019-06-16 12:18 David File Added: use_AppInd_3.patch
2019-06-16 12:18 David File Added: use_AppInd_3.txt
2019-07-25 22:39 Juha Manninen Assigned To => Juha Manninen
2019-07-25 22:39 Juha Manninen Status new => assigned
2019-07-25 22:52 Juha Manninen Status assigned => resolved
2019-07-25 22:52 Juha Manninen Resolution open => fixed
2019-07-25 22:52 Juha Manninen Fixed in Revision => r61621
2019-07-25 22:52 Juha Manninen LazTarget => -
2019-07-25 22:52 Juha Manninen Widgetset GTK 2 => GTK 2
2019-07-25 22:52 Juha Manninen Note Added: 0117399
2019-07-25 22:58 Juha Manninen Relationship added related to 0033778
2019-07-26 00:56 David Note Added: 0117402
2019-07-26 08:46 Juha Manninen Note Added: 0117404
2019-08-20 20:15 Mario Bonati Note Added: 0117751
2019-08-23 19:39 Juha Manninen Relationship added related to 0035983
2019-09-29 13:29 David Status resolved => assigned
2019-09-29 13:29 David Resolution fixed => reopened
2019-09-29 13:29 David Note Added: 0118185
2019-09-29 16:00 Mario Bonati Note Added: 0118186
2019-09-30 00:52 David Note Added: 0118197
2019-09-30 02:56 David File Added: SystemTray.zip
2019-09-30 02:56 David Note Added: 0118198
2019-09-30 04:14 David Note Edited: 0118197 View Revisions
2019-09-30 04:15 David Note Edited: 0118198 View Revisions
2019-09-30 19:55 Mario Bonati Note Added: 0118220
2019-10-01 16:18 Juha Manninen Note Added: 0118235
2019-10-01 16:26 Juha Manninen Note Edited: 0118235 View Revisions
2019-10-06 17:33 Juha Manninen Status assigned => resolved
2019-10-06 17:33 Juha Manninen Fixed in Revision r61621 => r61621, r62003
2019-10-06 17:33 Juha Manninen Widgetset GTK 2 => GTK 2
2019-10-06 17:33 Juha Manninen Note Added: 0118381
2019-10-15 07:22 David File Added: SysTray_Latest.patch
2019-10-15 07:22 David Note Added: 0118613
2019-10-15 14:04 Juha Manninen Status resolved => assigned
2019-10-15 14:44 Juha Manninen Note Added: 0118618
2019-10-15 14:44 Juha Manninen Fixed in Revision r61621, r62003 => r61621, r62003, r62062
2019-10-15 14:44 Juha Manninen Widgetset GTK 2 => GTK 2
2019-10-18 21:39 Juha Manninen Status assigned => resolved
2019-10-18 21:39 Juha Manninen Widgetset GTK 2 => GTK 2