On Mon, 1 Sep 2014 10:44:32 -0700
"J. Liles" <malnourite(a)gmail.com> wrote:
  On Fri, Aug 29, 2014 at 4:01 PM, Harry van Haaren
 <harryhaaren(a)gmail.com> wrote:
  On Fri, Aug 29, 2014 at 8:32 PM, Philipp
Überbacher
 <murks(a)tuxfamily.org> wrote:
  Thanks a lot for your reply Harry. 
 Cheers,
be careful to not remove the list from replies: its good to
 keep everything in the archives for future reference :)
 
That's the correct way to handle this, as far as I know. Its
 useful to have different directories on one system: it allows
 subdiving your available sessions into groups like "albums" or
 "projects-with-certain-people". Although I agree it feels a
 little clunky, its quite powerful and useful. 
 There could also be a subdivision in the NSM GUI. Well, the
 current way is certainly the simpler implementation, not sure
 it's simpler for the users :) 
 
 Sure, and my original suggestion was a "stepping-stone" type idea,
 with hopes to improve the workflow furthur, once this has become the
 "biggest" issue NSM has :D
 
 One can also just create a symlink of ~/NSM Sessions to something
 else. That doesn't seem any more difficult to me than editing a
 configuration file. It would probably be nice do have this be
 configurable in the GUI, though, for non-cli types. However, keep in
 mind that the NSM GUI and daemon don't necessarily have to run on the
 same host, so things like this are always more complicated than they
 seem on the surface. So again, it seems that the existing methods are
 simpler. 
For me the symlink is not an option since I don't want to have yet
another directory hang around  in my home directory. Too many programs
still do that. I want to have some programs data directories somewhere
else, not in with my personal stuff.
The GUI could show different sessions, depending on to which nsmd it is
connected to. I see how this may complicate things a little, but I
don't see a big problem.
     > 2. Adding
programs to sessions through the GUI ("Add Client to
 > Session") is the only way? Is there no way to attach running
 > clients or at least have some comfort like tab completion to
 > add clients?
 NSM does not support this "attach" workflow, but tab completion
 or a list of available (fully supported) NSM clients would be a
 good improvement on workflow. This should be discussed as to how
 best implement it: i'm not sure. 
 Right, a list of supported Clients would also be nice, however, I
 see two problems:
 1. The list would need to be updated somehow, and even then it
 would be a bit problematic because different distributions ship
 different versions of the software. NSM might already list a
 program as supported while the installed version of the program
 does not yet support NSM. 2. The other programs, audio or just
 related, should ideally also be listed, and that task is
 impossible. 
 
 Actually this might be possible to solve with a "packaging" trick as
 such: have programs install a file into a specific location (that is
 currently *not* used by any program) to denote its NSM support. I'll
 suggest installing a file in /usr/share/nsm/ , and if there's a file
 there, then the filename without extension represents that a program
 is capable of NSM. This would require *all* NSM clients to
 explicitly add an NSM file.
 Perhaps other developers more involved in packaging /
 "feature-announcing" will have a better idea here, I'm all ears, my
 suggestion above is just that: a suggestion.
 
  This is something that would go into the .desktop files of
 applications as a capability. Unfortunately, it's a chicken and egg
 situation where there's no point in scanning .desktop files for NSM
 capability until applications provide it, and there's no point in
 applications providing it until other programs do something with the
 information. On top of that, scanning all the .desktop files on a
 system will take some time at startup. 
 
I like the desktop file idea a bit more, simply because it uses an
existing mechanism. I understand that scanning desktop files could
increase startup time, but I have no idea how long it would actually
take. On my machine I have around 180 files in /usr/share/applications,
but maybe another directory would also need to be scanned. In case it
takes significant time something like a simple cache could help to
speed things up on subsequent runs. I have no idea how long reading
those files takes.
I don't think that the chicken-egg problem is significant. You could
suggest to developers to add a desktop file with the necessary
information. I wouldn't require it but strongly suggest it. It is an
almost trivial amount of work.
     > 3. Jack
and NSM. How do you handle that? It is possible to
 > start jack through NSM proxy and I guess it is OK to do that
 > as long as jack reliably starts before jackpatch (something
 > I'm not sure of). First I had just jackpatch in there and it
 > started jack for me with a whole lot of options that are
 > unfamiliar to me and probably not needed.
 I imagine that NSM will launch said JACK apps, and if one is set
 to "start JACK" on jack_client_open() in its code, then it will
 start JACK with the settings in  ~/.jackdrc   Perhaps the
 inclusion of a "Start JACK" type client with particular settings
 can be implemented in order to handle this? I'm open for
 suggestions too. 
 That seems to be what happens, and its a race. In my experience
 jackpatch wins the race against jackd, so I have to start jack
 before the session.
 A start_jack client could be useful, but from what I have seen
 all we really need is the possibility to start a client before
 the others. The simple way would be a timeout, but you'd still
 have the race. Ideally there would be some way to tell NSM that
 jack has started and is ready. I have doubts that this is
 possible with plain jack1 and NSM proxy, maybe a special
 start_jack client could help here. 
 
 NSM doesn't *explicitly* require JACK to be running actually: its
 probably its most common use right now, but setting an explicit
 dependency on JACK should be avoided. Perhaps a flag could be
 introduce on a per-client basis, that represents
 "start-before-others". This way, a "jackd" or "start-jack"
client
 can be loaded before the rest. Or even two or more "before-others"
 clients could set up whatever needs setting up, before
 "normal-time" NSM clients are loaded.
 Again, welcome input from users / devs.
 
 
 The existing JACK autostart mechanism works fine as far as I know
 (although I don't use it personally), I don't see any need for
 additional support. Certainly I have no intention of adding any
 qjackctl like configuration features. Just create a ~/.jackdrc and
 you're done. 
 
Thanks for reminding me of the ~/.jackdrc. However, a simple jackstart
client (or a generic mechanism that can be used for this purpose) would
allow different sessions to use different jack settings. A simple
example: One session may require jack to run at 48 kHz, another at 44.1
kHz, a third might require jack to run at a very low latency setting.
~/.jackdrc does not help in this case.
Best regards,
Philipp