[17:01:33] * saurik has the category overlay stuff in place for WinterBoard, and just needs to fill out the functionality [17:01:37] heh thatd be great news if installer became pay only [17:01:49] lol [17:01:52] installer wont, its nullriver's honeypot of donations [17:01:53] <_BigBoss_> not intsaller, summerboard [17:01:58] ohh [17:02:03] but bigboss [17:02:07] with customize 2.0 [17:02:13] * saurik (also has a slightly better attack at redirecting methods than he believes summerboard was capable of, which should make development easier) [17:02:14] how can a non-free summerboard compete? [17:02:32] <_BigBoss_> francis easy when there's nothing else and only pay ver [17:02:40] customize 2.0 [17:02:40] (like, as far as being able to rapidly attack catepiller/kate features) [17:02:46] and winterboard soon [17:02:49] <_BigBoss_> customize isnt a summerboard replacement [17:02:57] <_BigBoss_> and will those solve 80 app limit? [17:03:09] ask saurik :P [17:03:12] what is the 80 app limit, btw? [17:03:22] springboard doesnt like having more than 80apps [17:03:28] it does not start [17:03:30] does anything currently solve that? [17:03:33] <_BigBoss_> put 80 apps on yoru phone and springboard goes into a crash loop [17:03:34] summerboard [17:03:37] interesting [17:03:43] heh [17:03:52] fail [17:03:55] so winterboard will have to fix that too [17:03:57] ok, if summerboard does it, then it should be easy to resolve [17:04:11] yep cant be that hard [17:04:49] <_BigBoss_> "cant be that hard" does anyone know where to start? [17:04:55] <_BigBoss_> If not, it's infinitely difficult [17:05:19] if they did it we know it can be done [17:05:34] <_BigBoss_> it doesnt matter if it was done. If you dont know how to do it you cant say "it cant be that hard" [17:06:07] yes your correct but at least we know its possible [17:06:25] <_BigBoss_> then say "its possible" not "it cant be that hard". That's a big peeve of mine [17:06:28] LuLz [17:06:37] <_BigBoss_> I get app req's "can yo umake this, it cant be that hard" by someone that cant even code [17:06:38] _BigBoss_: summerboard overrides like 15 methods [17:06:40] k sorry [17:06:43] _BigBoss_: it has to be one of those [17:07:02] <_BigBoss_> ok [17:07:04] _BigBoss_: it can't be hard to avoid saying it cant be hard [17:07:27] Quit Lazarus has left this server (Ping timeout). [17:07:30] <_BigBoss_> how does summerboard insert itself? [17:07:52] it uses a category [17:07:55] http://svn.saurik.com/repos/menes/trunk/winterboard/ [17:08:16] that does the same thing, right now to override something in the bluetooth manager for one of Okori's clients (won't be in an actual released WinterBoard) [17:08:15] <_BigBoss_> what is "a category"? [17:08:31] it's an objective-c feature that lets you extend an existing class by providing new messages [17:08:45] if you have a message with the same name, the last category to get added wins [17:08:56] so winterboard/summerboard compile two files [17:08:58] a dylib and a bundle [17:09:07] the dylib is inserted using DYLIB_INSERT_LIBRARIES [17:09:13] here is the code for my dylib: [17:09:14] http://svn.saurik.com/repos/menes/trunk/winterboard/Initialization.m [17:09:30] it just verifies it is in springboard, disables itself for it's children (removes from DYLIB_...) [17:09:35] and then loads the bundle [17:09:46] I also take the time in there to rename some existing messages [17:09:50] as categories really _replace_ [17:09:53] they don't just overlap [17:09:56] the original is gone [17:10:12] currently my bundle just has that aforementioned bluetooth hack [17:10:21] (make a file on the filesystem if a bluetooth headset is connected) [17:10:24] http://svn.saurik.com/repos/menes/trunk/winterboard/DevEngine.mm [17:10:46] the first @interface is just to name the renamed method (as I needed to be able to call through to the original) [17:10:50] it doesn't do anything [17:10:56] <_BigBoss_> sounds cool. I didnt know about categories or insert libraries [17:10:58] the latter @implementation block overrides the method [17:11:15] the fact that it is a "category" is due to the name in () after the class name [17:11:51] all summerboard is then doing is replacing some simple methods [17:11:52] example: [17:11:58] [SBApplicationIcon(SummerBoard) icon] [17:12:11] that is probably some accessor that probably returns a UIImage * or something for the icon [17:12:56] all you then have to do is classdump springboard [17:13:19] and it's actually a pretty simple/fun party to start hacking the existing application [17:13:49] (the latest include- contains my class dump of springboard which has some fixes for the #include paths, but you can do that yourself pretty quickly) [17:15:55] <_BigBoss_> cool it does sound fun [17:15:57] oh, and you have to compile your .dylib with a "module initializer" [17:16:06] you can see that in the makefile [17:16:44] and the bundle needs to be compiled with a fairly standard (for bundles) -flat_namespace -undefined suppress in order to let it bind to the objective-c symbols exported by the executable [17:16:52] (as you can't pass springboard back into the link line to link against it) [...] [17:20:56] _BigBoss_: well, I'm definitely not attached to being "the guy" for winterboard, so if you'd like to work on that with me, I'd love that (and can give you svn commit access); also, if you'd like to use that setup code in your own programs, go ahead (in case that wasn't obvious, as I think I haven't put my standard BSD license at the top of those files yet) [17:21:20] <_BigBoss_> saurik i may be interested in that task [...] [18:01:02] the way summerboard works isn't to attach to an existing process [18:01:16] (which is possible, but /is/ somewhat hard if you don't know enough assembly) [18:01:28] but instead to insert the dylib using DYLD_INSERT_LIBRARIES [18:01:51] yeah, so I was working on it both ways [18:03:17] so what does the code you have now *do*? [18:03:40] it injects itself into springboard; i.e., all the bootstrapping parrts [18:04:41] right now the only thing it's replacing is something temporary: a hack to detect that a bluetooth headset is attached, for one of my clienets [18:04:45] clienets -> clients [18:06:38] * saurik (needed, last thursday or something, on very short notice that feature, so he spent the hour to write the .dylib/bundle injection as WinterBoard and then used it for his client by adding the bluetooth code) [18:07:20] nice