udda / multiload-ng

Modern graphical system monitor for any panel
http://udda.github.io/multiload-ng
GNU General Public License v2.0
147 stars 22 forks source link

Gnome 3 "Flashback" session, with gnome-panel #52

Open ndorf opened 7 years ago

ndorf commented 7 years ago

Is it possible to get this to work with Gnome 3's gnome-session-flashback, which runs gnome-panel?

I'm using the latest Debian stretch (testing), with gnome-panel 3.20.1. I simply built against gtk3 and ran it, but it comes up in its own standalone window rather than in the panel.

It does work in systray mode, but that's not ideal. The flashback session also still includes the classic gnome multiload, which still works in the same way: it can be added by alt-right-clicking and selecting "Add to panel...," along with all the other old applets from gnome2. Is this supported in multiload-ng?

On Ubuntu, flashback runs an indicator-applet-complete in the gnome-panel, so multiload-ng works that way. It'd be nice to have it work on Debian, as well.

udda commented 7 years ago

Hello's​, sorry for the delay.

Native support for GNOME Shell/GNOME Flashback is planned for Multiload-ng 2.x (maybe around 2.2 or 2.4).

Internal architecture of Multiload-ng 1.x is too tightly tied to classic plugins, whereas porting to GNOME 3 requires the ability to export the widget from C code to GJS environment (using so-called GObject introspection). This is simply not possible in 1.x.

You could try these steps:

Please let me know whether you manage to make it work.

ndorf commented 7 years ago

On Sat, Mar 25, 2017 at 04:49:27PM -0700, Mario Cianciolo wrote:

Hello, sorry for the delay.

No worries! Thanks for the response.

Native support for GNOME Shell/GNOME Flashback is planned for Multiload-ng 2.x (maybe around 2.2 or 2.4).

Internal architecture of Multiload-ng 1.x is too tightly tied to classic plugins, whereas porting to GNOME 3 requires the ability to export the widget from C code to GJS environment (so called GObject introspection). This is simply not possible in 1.x.

Well, if by "classic plugins" you mean Gnome2 panel applets, I was hoping multiload-ng could still work as one of those. All of the old ones are working, including the original multiload-applet-2, as well as the useless stuff like geyes-applet2 and modem_applet.

They come from https://git.gnome.org/browse/gnome-applets but AFAIK they only work with Flashback and gnome-panel, not Gnome Shell. Given all that, I assumed that they were working as classic Gnome2 applets. It seems hard to believe that someone actually sat there and ported geyes-applet2 and modem_applet to Gnome3, just to have them work in the barely supported Flashback session only, anyway.

You could try these steps:

  • since GNOME 2 plugins are supported, you could try to build against GTK2
  • if the plugin is still missing, maybe it's a location problem. Find where other plugins are stored, and move libmultiload-ng.la there

I did try both gtk2 and 3 builds, but I think I'm a step or two away from that mattering yet. First, I need gnome-panel to even the applet.

The other applets are all executables, not libraries, but unlike multiload-ng, they don't do anything when run directly, only through gnome-panel's "Add to panel..." dialog. So, I think I'd need to get multiload-ng to appear there, and then I could see if it actually works...

Copying the multiload-ng executable, and multiload-ng-core.la (is that what you meant? I didn't see any other .la files built) to that directory (/usr/lib/gnome-applets) seems to have no effect. There's probably something else going on, as the panel's dialog has pretty names and descriptions for all the applets that do work, and I can't tell where those come from. The hunt continues.

  • otherwise, until Multiload-ng has full GNOME 3 support, you'll have to run the plugin inside an indicator, like Ubuntu does.

Yep, I am trying that too. Right now I can't get ./configure to even find APPINDICATOR, but I'll have to poke around a bit more before bugging you about that.

-nd.

udda commented 7 years ago

You are correct, current Multiload-ng plugins don't work with GNOME Flashback. As you pointed out, applets come out as executable files.

This surprised me too, but geyes applet was actually ported to GTK3, along with other GNOME 2 applets. Flashback session is still a GNOME 3 variant, so old applets simply won't work.

Looking​ at the source code you linked, it seems that build model follows the one of MATE applets, which also outputs executables (and unlike full GNOME 3, doesn't need introspection stuff). So I think it will be pretty easy to port.

Unfortunately, development of 1.x branch is limited to serious bug fixes, as I'm currently focusing to upcoming major release 2.0, so you will have to wait a while.

About indicator, many distros (like Ubuntu and probably Debian) ship with two separate packages for GTK3 indicators and GTK2 indicators. I don't remember the actual names of the libraries, but I can find them if needed.

rilian-la-te commented 6 years ago

About Gnome-Shell - you can use SNI here with https://github.com/Ubuntu/gnome-shell-extension-appindicator

But with issues - it will not show an oversized icon.

So, I think it can be solved temporarily)