[13:21] Is there a way to send a dbus message that'll trigger msg_cb_new? There appears to be a bug in it, but it's hard to check because I need to wait for it to happen [13:37] Oh, I think I got it [13:37] JACK was getting set to False and not starting [13:38] so tweaked that and now it's good [13:38] It's all pushed up [13:38] and as far as I can currently tell (unless an error pops up while it's running) it should be good to go. [13:40] https://code.launchpad.net/~ubuntustudio-dev/ubuntustudio-controls/+git/ubuntustudio-controls/+merge/374143 [13:41] We can start tracking stuff here [15:12] wonko: I didn't get a chance to pull it yesterday, will do so now. [15:27] No worries [15:27] Merge request in [15:27] Think I got everything sorted [15:29] autojack line 304 looks wrong. [15:32] Ok, I'll take a look when I get home in a few [15:32] I will look further too. [15:32] I am not sure if it is a mistake from before. [15:42] Ok I know what and why that line does what it does... [15:43] It compares the PID using the capture device to the PID using playback device and if they are the same... then jack owns it. [15:45] This may not be strictly true and it may be better in the long run to actually check if that PID belongs to jackdbus. [15:48] In this context it probably doesn't matter or is a good test anyway. If some other program is using it other than jack... we should probably leave it alone rather than killing the pid (someone's project?) and starting zita-ajbridge :) [16:14] Yeah, that's not a line I touched so I'm claiming not my problem> :) [16:30] I have found some other things... likely my own logic and have made some changes. I am now looking through connect_pa and wondering where my head was that day... [16:32] but there were some places where we were not replacing the old config with the new soon enough :P so I have fixed that. [16:34] The layout of device is in notes.txt in the main directory, but is not clear enough for someone else to understand well and I am thinking it should be right in the autojack file. [16:58] Let's not get too ahead of ourselves [16:59] is a re-write something to be seriously considered? [16:59] if so we should definitely plan that out [17:11] I would like a c++ like struct for each device so I could do device.name device.is_usb device.sub_no device.sub(1).name device.sub(1).has_play etc. [17:11] I supose I could have global name = 0 global is_usb =1 etc :P [17:12] but an object would be much nicer and much more readable. [17:13] even enums would be better... lets rewrite in c++ :) [17:13] we could use waf to build it... Eickmeyer would like that :) [17:19] I'm down for C++ or Go or whatever. I really dislike Python. :) [17:21] packaging anything that needs compiling is at a whole other level. it means learning autobuild or something so it can be multi arch. [17:22] It would mean we can use fltk instead of gtk.... which does mean not having to worry about gtk 4 when it shows up. [17:22] That is how we lost GCDMaster. [17:22] I do DevOps for a living. autobuild is my thing. :) [17:23] Of course I'd have to learn whatever janky shit Launchpad uses, but that shouldn't be so bad. [17:24] The other part of c++ vs python is that are likely to be people around who can maintain python in the Studio dev group, c++ is less certain [17:25] I do totally get that point. I just don't like it. It seems like an artifical limitation [17:25] "Write it in whatever language you like, as long as it's Python" [17:25] sounds Ford-ish. :) [17:26] wonko: in some ways I would like to make controls more generic to work outside of ubuntu as well, but I have looked at what Cadence had to do to make it generic... more if statements than I want to think about. [17:27] The joys of cross-distro [17:27] wonko: any time one deals with system stuff it gets that way. [17:28] Yeah, but it's worse in the Linux world than anywhere else. [17:28] is there anything else? [17:28] That people use on their desktops other than Windows, OSX or Linux? Yes. [17:28] Large market share? Nope. [17:29] windows is just that example you get with the computer so it looks like it works, its meant to be removed before the computer is actually used. [17:30] hahahahahaha. That++ [17:31] OSX? out of my price range, maybe corperations can afford that stuff, not me. [17:31] But the point I was making is, to be truly cross-compatible (ignoring windows for the time being) you have to port to 3 or 4 versions of unix and like 47 versions of linux. [17:32] yup. [17:33] It's frustrating to me because what is the point? Why muddy the waters just because you think things belong somewhere else? [17:33] Anyway, enough of that. :) [17:34] well there is systemd and initv, upstart has gone. [17:34] Which is unfortunate [17:34] I liked it a lot better than systemd [17:34] systemd is pretty standard these days [17:34] that doesn't make it not horrible [17:35] anyone who uses an init v system is not going to use controls anyway, cause they have their own script in sh (not bash) [17:35] heh [17:35] (its called slackware) [17:38] Anyway, for now I am going to make things work. connect_pa() looks wrong to me. I think it has been working because my system is sane with my thinking. [17:40] co-worker tried to get me to run slackware a couple years ago. Two days of that was enough for me. [17:40] The configparser branch is a mess... I may compress it. [17:40] (once it is working) [17:41] * OvenWerks ran slackware for over 10 years from 1995 till mid 2000s [17:44] yeah, I recommend rebasing it down to a single commit [17:45] Old me would have loved slackware. New me has better things to do with his time. [17:45] I was on Solaris back then. :) [17:45] I still like a lot about fvwm [17:46] I'm an OpenLook kinda guy [17:47] Although I did use fvwm for a long while after switching away from Solaris [17:48] Anyway, no more talking until you've reviewed and approved the merge request. :) [17:48] My main thing is A) the window with focus should be obvious... like a whole different contrasting colour. B) the window handles should be easy to find and grab [17:49] I'm all for A. I never know which window is active in xfce. :) [17:49] That is the first thing I change. [17:50] gnome is worse... they take away the title bar. [17:50] I stuck with gnome for a while when installing 18.04 [17:50] but then I remembered xfce was better. :) [17:51] While you do that I'm going to beat my face into kubernetes [18:26] wonko, Eickmeyer: with regard to policy for controls, right now whichever device the user chooses for pulse to connect it's outputs to is used as the input to connect to pulse as well. I am thinking that probably this shouold not be true. [18:27] OvenWerks: Agreed. It's an OK default, but to have an option to connect the outputs to a different device as inputs isn't a bad idea. [18:28] The gui lists it as output device so the user would not expect inputs to follow. [18:28] I thnk for now I will set input to system capture [18:29] Eickmeyer: but yes in future they will be totally separate... I can't change that now though because the config option is not there yet :) [18:31] The main reason for letting the outputs be settable is that the user probably has only one set of physical outputs connected to amp and speakers. So the sound shouold always go there from pulse regardless of what else is set up [18:32] So if the user selects their usb mic as system, the output can remain through internal speakers/phones [18:49] wonko: I have looked through the code and made some changes (mostly to my own code) but I can't test it just now as I am not at the right computer. [18:50] OvenWerks: Understood. [18:50] It will be probably another 3 hours before I can do that after the Yf leaves for work. [19:37] Yf? [19:38] No worries, I've got things to do. Like my job and stuff. 🤣 [22:06] something with xdev is not working [22:08] changing other internal devices and hitting apply (reconfig) does not change that. But if I then change the usb bridge setting and reconfig, then the xdev setting is picked up and of course restart jack works too. [22:13] Hmm line 312 in autojack [22:18] Fixed. [22:42] ewyuck... [22:43] my logic is weird [22:43] Yes [22:43] :-P [22:44] wonko: in config chnage we really should be doing oldconfig as a save of the old and writing the new config to config. [22:45] in reconfig [22:45] that is [22:45] Yeah, I wanted to do that but I felt it better to leave it alone for now [22:46] You should be able to do oldconfig = config and then instantiate a new config. [22:46] can we do a oldconfig = config, get config? [22:46] How hard is it to copy the whole config? [22:47] wonko: either i need to change it now or I have to make a bunch of old_param things to make it work. [22:48] if I add the first internal audio device as an XDEV it works, but if I add any other it doesn't [22:49] We should be able to but I'll need to look at the code. [22:49] Xdev is probably wonky as hell if I'm guessing right [22:50] This is where it would be nice if the config file supported complex data so we could just store a list instead of this back and forth to a string nonsense [22:51] Actually it is the pulse_in/out as well [22:51] or it will be. [22:52] The problem is that I have to have both the old and new, but at the same time have set the main to the new. [22:52] because we call other bits that read config. [22:54] wonko: does the config handle more than one line with the same name? like: [22:54] xdev=0,0,0 [22:54] xdev=2,1,0 [22:55] or will it just save the last one? [22:55] I don't believe it does that nicely [22:55] Never tried. :-) [22:55] probably just save the last one. [22:55] I figured it out [22:56] I know you hate the idea but what about json or yaml for the config file? Would make us spend less time chasing our tails. [22:56] we could split it each time... [22:56] or not use the config parser... [22:57] The proper way is probably to split it each time we use it. [23:00] I had considered switch to that [23:00] All let's do it [23:00] So* [23:00] I really have too much time helping people fix tings already without have them send me a config file in paste that is a pain to read. [23:02] but if I can old_dev_config = dev_config and still read all the params that would work fine. [23:03] That would get rid of all the param=newparam as well [23:11] oldconfig = config doesn't seem to work [23:13] This is where python gets weird for me [23:14] That's an object so is that a pointer or a copy? [23:14] it probably needs to be a copy [23:16] https://docs.python.org/3/library/copy.html [23:16] You'll be wanting that then [23:17] Or a real language. Your choice. :-P [23:18] I hate python docs.. allmost every one of them does not have just a few examples of anything. [23:19] Or they have examples that make no sense [23:19] And no explanation as to what is going on [23:23] nope, those don't work either (copy deepcopy) [23:24] those work for lists, not objects [23:26] wonko: https://stackoverflow.com/questions/23416370/manually-building-a-deep-copy-of-a-configparser-in-python-2-7 [23:27] all the answers say the same thing, save the original config as a string then read that string in as if it was a file to the copy... [23:29] Oh FFS [23:32] And... they are python2 so look up what I do to do the same in 3