Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

AphoticD

macrumors 68020
Original poster
Feb 17, 2017
2,287
3,475
As a proof of concept to create an app spanning a wide range of OS X versions, I cleaned up a simple WebKit browser project in my dev library and packaged it up with source code onto Github...

Introducing OneWindowBrowser - https://github.com/aphoticd/onewindowbrowser

*** Download Links Updated for Version 1.1 (6th, Feb, 2018) ***

OneWindowBrowser1-1ScreenShot.jpg



History of changes
Version 1.1 - February 6th, 2018
  • Added option to set "Custom User Agent" string.
  • Added option to disable Javascript with keyboard shortcut (cmd-J).
  • Added options for Default Landing Page.
  • Added option to "Clear History". Browsing History is limited to 100 links.
  • Made browsing history persist between app launches.
  • New icon!
  • Signed 64-bit build with Apple Developer ID.
  • Other minor improvements.
Version 1.0 - February 4th, 2018
  • Initial release;
Features:
  • Java and plugins are disabled.
  • Defaults to iPad OS 3.2.2 User Agent (speeds up loading via delivery of mobile sites).
  • History menu remains persistent between launches.
  • Window can be faded in or out (alpha transparency).
  • Last visited URL persists between app launches.
  • Text size and window frame (and transparency) persists between launches.
Note: Although this browser may run on your system, it doesn't introduce anything new in terms of capability or compatibility. If a website doesn't load in Safari, it probably won't load in this browser.

-------------------

Source and builds (.zip) available on the Github page for;
- 10.2.7 through to 10.5.8 (PowerPC) - compiled on Xcode 2.5
- 10.6.x through to 10.13.x (x86_64) - compiled on Xcode 8.2.1
- 10.4.4 through to 10.6.8 (i386) - compiled on Xcode 3.1.4

With one codebase, this browser will compile across a range of Mac OS X systems spanning from 2003 to 2018.

The simple browser features window transparency (Fade in / Fade out options), basic history menu and text zoom. Although it is a proof of concept, it may be useful for running a single website in the background (such as a web cam or stock ticker) within a super lightweight app.

Tests perfectly in Tiger & Leopard (PPC), Snow Leopard, Lion, Mountain Lion, Mavericks, Yosemite, El Capitan, Sierra and High Sierra.

Works in Panther and Jaguar, but as the built-in WebKit (Safari) is massively dated, it is still limited by the older system's compatibility and capabilities.


-AphoticD :apple:

--------------------

Addendum: Jaguar doesn't appear to like the app's standard resolution icon which was composed in Leopard (for 512x512 max). I have included a Jaguar-specific .icns file which can be manually loaded into the app on 10.2.
  1. Download OWBIcon-Jaguar.icns.
  2. Rename to "OWBIcon.icns".
  3. Ctrl-click on the OneWindowBrowser.app and choose "Show Package Contents".
  4. Navigate to Contents/Resources/
  5. Drop the downloaded OWBIcon.icns file into this folder, replacing the existing.
  6. The icon should now appear on the App when you drag it to the Dock.
If the app still has a generic icon, select it then File -> Get Info and click on the icon image in the info window. Copy (cmd-c) and Paste (cmd-v), then hit delete to force Finder to recache the App's icon from file.
 
Last edited:
OneWindowBrowser-XcodeADCRef.jpg

Another simple use-case;

Open the folder /Developer/ADC Reference Library/ (on Tiger), drag and drop the index.html file onto the OneWindowBrowser window for a lightweight Xcode documentation viewer.

(The Xcode .docsets on Leopard and up can be right-clicked to reveal the Contents dir which will have the index.html file within.)

The last viewed page is saved between app relaunches. The OneWindowBrowser is more lightweight as a documentation viewer than Safari, WebKit, TFF or within Xcode directly.
 
t may be useful for running a single website in the background (such as a web cam or stock ticker) within a super lightweight app.

You're not kidding ;)

OWB.jpg

Not working on my Core Duo iMac though - 64bit only?
[doublepost=1517744899][/doublepost]
You might be interested in looking at Nagara Browser.

That's very interesting...bit like the old Windows active desktop.
 
  • Like
Reactions: eyoungren
You're not kidding ;)

View attachment 749859
Not working on my Core Duo iMac though - 64bit only?

Nice one. Yes, the compiled binary for 10.6+ is x86_64 . It’s a cinch to recompile for i386. I’ll put up a 32-bit 10.4+ build in a minute and that should cover every Mac OS version from 10.2.7 through to 10.13.4(?) on any conceivable hardware configuration (possibly even including AppleTV 1,1).

In my efforts to code for this kind of OS range I have found Tiger with Xcode 2.5 has been the best platform to work from as I can build .nib (pre-.xib and storyboard format) files in Interface Builder and they still compile perfectly in Xcode 8.2.1 on El Capitan for distribution all the way up to High Sierra. Despite all of Apple’s efforts to convince people to buy new hardware, they have left a healthy number of breadcrumbs for people to follow to make early OS X and current macOS compatible.
[doublepost=1517750253][/doublepost]** 32-bit Intel (i386) download link added to OP. **

Suitable for 10.4.4 through to 10.6.8. Will run on Lion and up, but the 64-bit version is more appropriate. From what I understand, High Sierra will be the last macOS to support 32-bit apps.
 
on any conceivable hardware configuration

cant help my self but mention the DTK and the special 10.4.1 builds it ran :D while it could run PPC apps fine in Rosetta, the only intel binaries you can run on it where ones compiled specify for it/using its special build of xcode. :)

regular intel binaries will however run fine on the 10.4.3 DTK builds :)

upload_2018-2-4_14-52-15.png
 
cant help my self but mention the DTK and the special 10.4.1 builds it ran :D while it could run PPC apps fine in Rosetta, the only intel binaries you can run on it where ones compiled specify for it/using its special build of xcode. :)

regular intel binaries will however run fine on the 10.4.3 DTK builds :)

View attachment 749874

Nice work. Well the source code is there to compile for 10.4.1 DTK if one were so inclined :)

10.4.4 was the official first release for IA-32 / i386, right?

This has been a good test case for me to learn more about how I will release the builds of my upcoming apps. I don’t intend to support Panther and Jaguar though. Unfortunately they just lack way too many of the foundation frameworks which I have come to depend on. Whereas Tiger and Leopard can be wrangled into cooperating with El Cap, Sierra and HiSi without too many compromises. I just had to train myself to code with this mobility first, which means ignoring many of the niceties that make modern app development easier and sticking to the traditional Cocoa core. While also being mindful of finding alternatives for deprecated APIs and occasionally writing in longer workarounds for an older OS to achieve the same thing as a newer OS.

If anything, at least writing apps for PowerPC was easier in that you didn’t need to worry about Mac App Store regulations, app sandboxing, Apple Transport Security, app signing, and many more added layers of complexity in the name of security.

There was once an understanding between third party developers and users in that the devs would uphold their end of the deal by doing everything in their power to write quality, reliable and responsible code and the users were responsible for ensuring they had backups. it was our choice to download and install any kind of software we pleased (dodgy or legit).

I can see Apple locking down 10.14 to only allowing signed apps, which puts any developer who is not paying Apple a yearly $99 subscription out in the cold.
 
I'm curious if it's possible to make a Carbon app that will run on Mac OS 9 systems as well as as an Intel-native app?

This guy appears to have the idea covered:
http://blog.steventroughtonsmith.co...carbon-and-building-classic-mac-os-apps-in-os

He has compiled apps using the mpw compatibility layer using the same codebase (with some compiler conditional statements) to run on System 1.0 - 7.6, Mac OS 8, 9 and then PPC OS X, up to 10.10 Yosemite. I just downloaded his Lights Off game and it runs well on El Cap and HiSi no problems. I then dropped it over into BasiliskII to run the 68k build and it plays just the same.

Apple announced 10.13 will be the last version of macOS to support 32-bit apps "Without compromise", so 10.14 (with compromises), or 10.15 will mark the end of any Carbon compatibility.

LightsOff-HighSierra.jpg


LightsOff-System755.jpg
 
Terrible... Can't even load MacRumors!
LOL!

I didn't make the app. I just found it a very long time ago. It's probably 2001-2003 vintage.

If you can't use it that's fine. I was just putting it up for the users and in case @AphoticD wanted to look at it.

I suppose you could probably relink it to LWK, but I haven't tried. I don't use the app at all really.
 
LOL!

I didn't make the app. I just found it a very long time ago. It's probably 2001-2003 vintage.

If you can't use it that's fine. I was just putting it up for the users and in case @AphoticD wanted to look at it.

I suppose you could probably relink it to LWK, but I haven't tried. I don't use the app at all really.

Thanks @eyoungren , I like the idea. Late last year I began working on a SIMBL plugin which could bring these kinds of features to any Cocoa App (dropping windows behind the desktop, making any window transparent, fading windows in/out on open/close, hiding the dock and menu, etc). I should polish it up and release it on Github. It will probably work with MySIMBL on post-Lion OSes too, but I hadn't gotten that far.
 
  • Like
Reactions: eyoungren
Terrible... Can't even load MacRumors!

ALSO! OneWindow Browsee doesn't work on OS X 10.3 at all.
https://cdn.discordapp.com/attachments/326817457853693953/410158188630114304/image.jpg

I have tried on 10.3.9 with Safari 1.3.2 (v312.6) and could log on MacRumors/PowerPC, the link to the GitThing doesn't work due to old certificates... Classilla on Classic back to rescue.

From Classilla I could go the GitHub link and it uncompressed flawlessly. I took that to /Applications and from there it opened and froze /my host in a endless loop. Tried with macrumors link and the same endless loop. Then typed "www.google.es" and it worked fine. Went to MacOS9Lives! and it rendered it fine. Only trouble were to log here.
[doublepost=1517880080][/doublepost]I would say it is the fastest browser for Panther.
 
cant help my self but mention the DTK and the special 10.4.1 builds it ran :D while it could run PPC apps fine in Rosetta, the only intel binaries you can run on it where ones compiled specify for it/using its special build of xcode. :)

regular intel binaries will however run fine on the 10.4.3 DTK builds :)

View attachment 749874
Does it really matter? I mean, OP did a fantastic job getting this working on whatever normal people use.
 
  • Like
Reactions: AphoticD
Does it really matter? I mean, OP did a fantastic job getting this working on whatever normal people use.

LOL "normal people". @LightBulbFun is always bucking the norm. :)
[doublepost=1517892767][/doublepost]
I have tried on 10.3.9 with Safari 1.3.2 (v312.6) and could log on MacRumors/PowerPC, the link to the GitThing doesn't work due to old certificates... Classilla on Classic back to rescue.

From Classilla I could go the GitHub link and it uncompressed flawlessly. I took that to /Applications and from there it opened and froze /my host in a endless loop. Tried with macrumors link and the same endless loop. Then typed "www.google.es" and it worked fine. Went to MacOS9Lives! and it rendered it fine. Only trouble were to log here.
[doublepost=1517880080][/doublepost]I would say it is the fastest browser for Panther.

I set the browser to default to "http://localhost" because I was using it that way and if there is no local server, it will load for eternity. Should it load Google or some other page by default?

I had a few thoughts for minor improvements;

1. Add an option to choose from a short list of user agents, or enter a custom User Agent string in a dialog window.
2. Would anyone want tabs? To keep it simple and still lightweight, a limit of maybe 4 tabs?
3. I was thinking of putting in an option for "Disable Stylesheets", which can help older systems cope.
4. I'll put a "Disable Javascript" option in the menu bar too.

Any other suggestions? Remembering it's not exactly a "Real" browser, more of a simplified extension of WebKit / Safari.
 

Interesting. Good to know that the same basic codebase can be compiled across that range - although I was wondering specifically about a single .app bundle running on both OS 9 and Intel. I'm imagining not, it looks like you can't build targeting both Intel and OS 9 at the same time, even though you can target OS 9 and PPC OS X OR PPC OS X plus Intel OS X.
 
  • Like
Reactions: AphoticD
Interesting. Good to know that the same basic codebase can be compiled across that range - although I was wondering specifically about a single .app bundle running on both OS 9 and Intel. I'm imagining not, it looks like you can't build targeting both Intel and OS 9 at the same time, even though you can target OS 9 and PPC OS X OR PPC OS X plus Intel OS X.

I remember trialing out a copy of Realbasic years ago (maybe v5.5?) which I believe wrapped up the various binaries into a single .app package for a product built with their IDE to run on OS 9 or OS X. I'm not sure if UB was a thing at that time, but perhaps one could dissect their method and then replace the ppc-only binary with a UB ppc/i386/x86_64 binary, so that on OSX, the appropriate arch binary executes and on OS9, the classic Carbon APPL executes...

I suppose anything is possible, really.
 
I’m proud to report an actual real-world use case today. My wife has been working on her Wordpress based website using Safari as her main browser while being logged into the site’s admin account and then running 1WB on the side for viewing the website without being logged in (as a visitor would see it). It is certainly lighter than running a full instance of Firefox, Chrome, etc.
 
  • Like
Reactions: philgxxd
I remember trialing out a copy of Realbasic years ago (maybe v5.5?) which I believe wrapped up the various binaries into a single .app package for a product built with their IDE to run on OS 9 or OS X. I'm not sure if UB was a thing at that time, but perhaps one could dissect their method and then replace the ppc-only binary with a UB ppc/i386/x86_64 binary, so that on OSX, the appropriate arch binary executes and on OS9, the classic Carbon APPL executes...

I suppose anything is possible, really.

That's an interesting idea - could theoretically mix a Cocoa x86_64 binary in to the same app bundle as a PPC OS 9 Carbon! (There is no Carbon x86_64. Carbon was always 32-bit only, even on PowerPC G5 systems before Carbon was considered obsolete.)
 
  • Like
Reactions: AphoticD
I'd welcome a user assignable home/landing page and a custom user agent field but that's about it - less is more :)

@Dronecatcher What do you recommend as the most compatible and lightweight default user agent string? I copied the iPad 3.2.2 string from TenFourKit because I figured it would default to mobile sites for most, but in cases where a website serves iPad-specific content it will take that, and being dated, it should bypass any "modern" demands which current iPads can easily tackle.

What are your thoughts?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.