Confirming, I just need headless so that I have access to the AppKit functions I call.
I don’t need any output whatsoever. On Tue, Nov 3, 2020, at 5:22 PM, Gregory Casamento wrote: > > Gustavo, > > What is your true aim here? If having a "headless" application is all you > really need, so that you have access to AppKit functions then that is pretty > easy. You don't need to have a gui model (xib, nib, gorm, etc) attached to > the application. > > I like the idea of a no-op or null backend as this might allow us some other > freedoms with respect to testing. > > On Tue, Nov 3, 2020 at 3:53 PM Gustavo Tavares <muchol...@fastmail.com> wrote: >> __ >> Yes, Fred, Greg, >> >> This is exactly what I need and was looking at doing just that. I did some >> no-op classes but I have very little experience with there system to do so >> immediately. >> >> It doesn’t look like a lot of files but I might be wrong. There are a lot of >> subtle interactions that I have already bumped into. >> >> For example, right now, I’m still working through the call to >> +[NSProcessInfo initalizeWithArguments:count:environment:] (I think I have >> the name right but I didn’t look it up on my phone. >> >> Calling this didn’t solve my problem immediately. >> >> As for testing it’s pretty wonderful. I already have some tests running by >> enclosing them in a framework (Marcel WeiHer does this in MPWTest) >> >> The use case as a server backend is compelling too because you can save and >> interact with User preferences for Font, Color, Theme, etc on the backend >> just as you would on a frontend. >> >> >> On Tue, Nov 3, 2020, at 4:19 PM, Gregory Casamento wrote: >>> This is a really interesting notion. Would the no-op backend (I think we >>> need a better name) be able to print, or output postscript? Would it be >>> possible to use it for testing GUI in some way? >>> >>> GC >>> >>> >>> On Tue, Nov 3, 2020 at 12:06 PM Fred Kiefer <fredkie...@gmx.de> wrote: >>>> Your problem got me thinking. Would it help you if we offered a „no-op“ >>>> backend for GNUstep? That is a backend where both the window and the >>>> drawing system would be implemented as no-operations. >>>> >>>> We could try to get this done as a special GNUstep back configuration. >>>> Most likely we could cheat here by reusing the gsc classes as a real >>>> drawing backend, which of course would not draw but raise >>>> subclassResponsibility:. That means we only need code for the window/event >>>> part and a lot of configuration to switch all the extra libraries off. >>>> >>>> Cheers, >>>> Fred >>>> >>>> >>>> > Am 03.11.2020 um 16:02 schrieb Gustavo Tavares <muchol...@fastmail.com>: >>>> > >>>> > Thank you! This is great. >>>> > >>>> > I think I'm going to make some sort of subclass—NSCommandLineApplication. >>>> > >>>> > I did implement some of the backend classes in a -doNothingMethod { ; } >>>> > style: GSFontInfo / GSFontEnumerator. >>>> > >>>> > Previously I just tried running X11 and calling it a day—but that didn't >>>> > work. So goes the rabbit hole... >>>> > >>>> > Looks like it will be fun though. Just gotta love Objective-C :) >>>> > >>>> > Gustabo >>>> > >>>> > >>>> > On Mon, Nov 2, 2020, at 11:20 PM, Ivan Vučica wrote: >>>> >> Based on >>>> >> https://github.com/gnustep/libs-base/blob/3752016/Source/NSProcessInfo.m#L140-L154, >>>> >> this comes from >>>> >> https://github.com/gnustep/libs-base/blob/3752016/Source/NSProcessInfo.m#L919 >>>> >> or >>>> >> https://github.com/gnustep/libs-base/blob/3752016/Source/NSProcessInfo.m#L1021. >>>> >> >>>> >> If these were GUI apps, I’d recommend calling NSApplicationMain which >>>> >> takes argc and argv and sorts this out for you – in fact, that’s >>>> >> ideally exactly what you should do if you’re using any GUI methods. >>>> >> You’re saying you’re using certain GUI classes on the server; if you >>>> >> believe they will actually behave correctly in a server environment >>>> >> without gnustep-back (not a given; hypothetically, NSColor could >>>> >> heavily depend on Opal’s CGColorRef), you may be able to call >>>> >> NSProcessInfo +initializeWithArguments:..., too. >>>> >> >>>> >> Otherwise study >>>> >> https://github.com/gnustep/libs-gui/blob/0ccdb278d4cc8ad60f033892a5105e0532261838/Source/Functions.m#L63 >>>> >> carefully, but don’t be surprised if lack of x11 breaks GUI classes. >>>> >> You break it (into pieces), you get to pick up those pieces and glue >>>> >> them together :) >>>> >> >>>> >> (Yes, I noticed you said you went ahead and removed some >>>> >> backend-dependent code. This sounds like it’ll be a lot of fun…) >>>> >> >>>> >> Ivan Vučica >>>> >> >>>> >> From: Gustavo Tavares >>>> >> Sent: Tuesday 3 November 2020 02:13 >>>> >> To: GNUstep Discuss >>>> >> Subject: What function sets up the GNUstep environment? >>>> >> >>>> >> >>>> >> Hi! >>>> >> >>>> >> Was wondering what function sets up a GNUstep environemtnt? >>>> >> >>>> >> Getting this error: >>>> >> >>>> >> GNUSTEP Internal Error: >>>> >> The private GNUstep function to establish the argv and environment >>>> >> variables was not called. >>>> >> >>>> >> Mismatched library versions between GNUstep Foundation (base) and AppKit >>>> >> (gui) is most often the cause of this message. Please be sure you >>>> >> are using known compatible versions and not a mismatched set. Generally, >>>> >> we recommend you use versions of base and gui which were released >>>> >> together. >>>> >> >>>> >> For more detailed assistance, please report the error to >>>> >> bug-gnus...@gnu.org. >>>> >> >>>> >> --- >>>> >> >>>> >> For context—I built a seperate framework that extracts some "GUI" >>>> >> classes with the intention to use them semantically on a server. (Such >>>> >> as NSImage, NSColor, NSFont...) >>>> >> I already went through the business of overriding / deleting some of >>>> >> the backend functions so that the classes would be "initalized" and >>>> >> wouldn't need to be rendered to screen. >>>> >> >>>> >> Stuck here. >>>> >> >>>> >> Where should I look? >>>> >> >>>> >> >>>> >> Thank you, >>>> >> G >>>> >>>> >>> >>> >>> -- >>> Gregory Casamento >>> GNUstep Lead Developer / OLC, Principal Consultant >>> http://www.gnustep.org - http://heronsperch.blogspot.com >>> https://www.patreon.com/bePatron?u=352392 - Become a Patron >>> https://gf.me/u/x8m3sx - My GNUstep GoFundMe >>> https://teespring.com/stores/gnustep - Store >> > > > -- > Gregory Casamento > GNUstep Lead Developer / OLC, Principal Consultant > http://www.gnustep.org - http://heronsperch.blogspot.com > https://www.patreon.com/bePatron?u=352392 - Become a Patron > https://gf.me/u/x8m3sx - My GNUstep GoFundMe > https://teespring.com/stores/gnustep - Store