yabridge icon indicating copy to clipboard operation
yabridge copied to clipboard

New gui project for yabridgectl.

Open geekositalia opened this issue 3 years ago • 12 comments

Hi, jo boschetti from geekosdaw, our team (fabio pesari is the developer of this tool) we are creating a simple python gui for yabridge which we will then report to you. We are interested in knowing if yabridge gives priority to binary files in .local, or in system bin. if there is both the binary distributed by you and the server in bin, where is the .so file executed?

geekositalia avatar May 24 '21 13:05 geekositalia

Hi Jo!

Yabridgectl searches the system for the libyabridge-*.so files in this order. ~/.local/share/yabridge is only really meant as a convenient way to use yabridge when your distro doesn't package it for you, and it's only used as a fallback when the files cannot be found in the usual system wide locations. Similarly, both yabridge and yabridgectl will look for the yabridge-*.exe{,.so} files in the search PATH like any other executable binary, and they will only fall back to looking in ~/.local/share/yabridge when they cannot be found in the search path. This happens here in yabridgectl, and in yabridge itself we simply append ~/.local/share/yabridge to the search path before searching for the host binaries here.

And I don't know if you're interesting in collaborating on this with others, but Glen from AVLinux may also be interesetd in this since he also has a control panel for most of the things he packages. I once proposed a simple proof of concept KDialog based wrapper here, but he does not yet ship yabridge in AVLinux.

robbert-vdh avatar May 24 '21 13:05 robbert-vdh

the gui will then be on git, and we will also send you the link if after an evaluation you want to propose it. We in opensuse have yabridge, and I personally take care of publishing the version of wine that you recommend according to the problems that come out. The information was needed to understand in the gui what to prioritize if a person has both installed. okay let's put local / share as fallback :) thanks!

geekositalia avatar May 24 '21 14:05 geekositalia

Hi robbert, first release of gui is out (is out packaged on opensuse on geekosdaw project), this is a link for gitlab https://gitlab.com/fpesari/yabridget

It a python qt gui for simple add remove folders, scan, and prune :) it search on systemwide for yabridge, and as fallback on ./local/share/yabridge

Screenshot_20210525_164910

geekositalia avatar May 25 '21 14:05 geekositalia

@geekositalia Looks nice, good work! Do you also have a way to parse the plugin list in yabridgectl status?

robbert-vdh avatar May 25 '21 15:05 robbert-vdh

we are evaluating for future versions, now the priority was to give easy access to yabridge users as soon as possible

geekositalia avatar May 25 '21 15:05 geekositalia

i robbert, we have a problem with plugin sforzando, in gui, there is a crash due to the plugin name. I'll bring you what our developer said:

In order for the output of "yabridgectl status" to be properly parsed, it would be better if when a comma (,) is present in the path of a plugin, it is escaped.

In other word, this:

CommonVST2/Plogue Art et Technologie, Inc/sforzando VST_x64.dll :: VST2, 64-bit, copy

Becomes

CommonVST2/Plogue Art et Technologie\, Inc/sforzando VST_x64.dll :: VST2, 64-bit, copy

the problem is filtering this is a large amount of work. Thanks for now! Screenshot_20210526_164352

geekositalia avatar May 26 '21 14:05 geekositalia

Can't you just split on " :: " first? I doubt any plugins have that in their name.

So then you'd end up with this (didn't test this):

--- a/yabridgectl.py
+++ b/yabridgectl.py
@@ -67,12 +67,14 @@ def status():
         if not i.startswith(' '):
             _last_path = i.strip()
             continue
-        line = tuple(j.strip() for j in i.split(','))
-        plugin, kind = tuple(j.strip() for j in line[0].split('::'))
-        legacy = ''
-        if line[1] == 'legacy':
-            legacy = '✓'
-        arch = line[-2]
-        method = line[-1]
+
+        plugin, info = i.split(" :: ")
+        info = list(info.split(", "))
+
+        kind = info[0]
+        legacy = "✓" if info[1] == "legacy" else ""
+        arch = info[-2]
+        method = info[-1]
+
         result.append((plugin, kind, legacy, arch, method, _last_path))
     return locals()

robbert-vdh avatar May 26 '21 15:05 robbert-vdh

thaks, tomorrow developer try this solution... only one plugin have this in their name... sforzando plogue...

geekositalia avatar May 26 '21 15:05 geekositalia

I also added a comment to the commit that added this with the same patch. (and a small fix because I made a typo, also changed the diff here)

robbert-vdh avatar May 26 '21 15:05 robbert-vdh

thanks for your collaboration :)

geekositalia avatar May 26 '21 15:05 geekositalia

hi, problem solved, gui is out stable :) Screenshot_20210527_154426

we would be happy if you want to quote the gui, and test it yourself :D

geekositalia avatar May 27 '21 13:05 geekositalia

unfortunately in Italian https://www.youtube.com/watch?v=_l6jW_6_dus

geekositalia avatar May 27 '21 23:05 geekositalia