From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mimir.eigenstate.org ([206.124.132.107]) by ewsd; Wed Jan 1 17:57:17 EST 2020 Received: from abbatoir.fios-router.home (pool-96-239-17-137.nycmny.fios.verizon.net [96.239.17.137]) by mimir.eigenstate.org (OpenSMTPD) with ESMTPSA id 441718d4 (TLSv1.2:ECDHE-RSA-AES256-SHA:256:NO); Wed, 1 Jan 2020 14:57:08 -0800 (PST) Message-ID: <1DCB150A539D8B14987387850715D909@eigenstate.org> To: jamos@oboj.net, 9front@9front.org Subject: Re: [9front] Netsurf 3.9 for Plan 9 (work in progress) Date: Wed, 1 Jan 2020 14:57:07 -0800 From: ori@eigenstate.org In-Reply-To: <30b184ac47ef349337078b6caee9c0c4@oboj.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="upas-riqjzmgjijpjejdriqwtnltmjd" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: framework AJAX session session-based persistence-based extension controller This is a multi-part message in MIME format. --upas-riqjzmgjijpjejdriqwtnltmjd Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit > Hello everyone, > > As some of you know from the 9fans discord channels, I am trying to port > the web browser Netsurf to Plan9 (9front). > My port is still very much work in progress, but I wanted to publish a > first version for the ones that might find it interesting to compile and > run. I started out with the prior work of Jens Staal and AAP that I > found in different contrib directories, but my port is based on the > latest stable version. > > My port so far uses the 'framebuffer' driver, which means that the > browser draws in a memory bitmap, than then is copied to a Plan 9 Image > using loadimage(). It does not work to snarf or paste. If I get good > success with the framebuffer frontend, I will try to write a native > frontend for Plan 9 there is already ones for amiga, atari, beos, gtk, > riscos and windows present. Well, that's definitely progress -- and I'm definitely interested in enough browser to get me past captive portals and such. For me, though -- it builds, and it runs, but the image that Well, it builds, at least. But when I try to run it, I get a garbled image (see attached). The garbled image doesn't change with respect to window size. > There is a lot of functionality lacking currently, but it is possible to > load local web pages, even if they don't display so nicely. There are > many things to figure out. I have not given fonts any thoughts. It is > little endian (as I commented out the code that checked for endianess). > In reality not so much works, but it compiles and something shows... :-) > There is a lot of README files though, and I am open to all kinds of > input. > > You can the source code here: > https://webbkurs.ei.hv.se/~imjam/plan9/netsurf-3.9-2020-01-01.tgz > > //Jonas Amoson > > Ps. Oh, and the port relies heavily on APE-shit, and being a browser it > also supports a lot of WEB-shit ;-) --upas-riqjzmgjijpjejdriqwtnltmjd Content-Type: image/png Content-Disposition: inline Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAvMAAAIKCAIAAAAh+ldRAAAgAElEQVR42u3de2xc9YHo8eOJ 41dsJ3beD5JgQohjYpJQSBoQlPJoUaFSlUUqUG3LvRdKqURptYU+gvZui+gFqbsEaXe7VAXu UnqvxE17dWGlClCLKVvSBNubB07iBOM868aOx/E4jWfsmbl/HDo79SvjpIR4/PmIP8zMmUl8 koy/5/c753cKjqfTAefmlWg08/W+J56wQwDgoxKxCwAAZQMAoGwAAJQNAICyAQCUDQDABFQw 2lXf2VcyAwBcaEZcacWYDQCQP5QNAKBsAAAuPIWzc9joeufcAAAXgIaqqjOUTaedBADki0K7 AIAPySWXXGIn8Jf1bHf3R1k2qVSqo6NjxowZZWVl5+cbHhwc7OjomDVrVklJiU8KgI9WepSF ReCsPXemM2RyKhs/SvmovPfee7l8dPb19QVBUF5eXlBQMFG+tf7+/qampp6enuLi4nXr1pWX lw/ZoLW1tXvYocm8efOWLl06fC91dg6dWJ49e/aQf7nJZHLbtm3RaLS4uHj16tUzZ8489++i paWlsrJy0aJFZ9zyyJEjvb29K1eu/Ivsva1bt65fv360zys/TWEyy2mlvnvOdLYOAOf747ug 4DykfzweT6VSpaWluWwZBEFxcXH2gzU1Nf6k+MvKHrMZcaW+nMZs2trazuLX7urqam5uDoLg 0ksv3b9//4IFC+rq6oYckt52++3JwcEhLywtK3uzoaG6ujr7aO+WW24J/9lkKyoufu3VV7OP Fzs6OpqamlasWHH06NG+vr7ly5ef44DTli1bHn744cqKik2PPrpx48axt3zs+9/vjcWefPLJ sbfM5dg3/HU3btz45JNPOioFRkwWOwFGiH5jNkzoo9J0Ov3ee+91dXWFn/IFBQUzZ85ctmxZ 7semnZ2dTU1NkUhkzZo1s2bNOmOsJ5PJK6+8cvbs2Wf9TaXT6QMHDhw4cKCiomLVqlUlJSXb tm2bPn16fX199mZbt269++67b3z88bKZM4MgSAwOJgYGOvft2/3P/9zQ0JAd9C0tLbfffvt1 mzaVzp+fGBhIDA7GBwZOHj68/5/+6eWXX86eADpy5MjOnTs/8YlPRCKRffv2HT16dO7cufX1 9VOnTj3r7l8xe3YQBHs7O7/2ta89+OCDI2759NNPb968+bKZM4N0el93d47139LS8vzzz+/Z s6elpSV8ZOHCRevXr1u0aNGzzz4Xi/UGQTBkV0h/MGajbADyLf2TyWR3d3dFRcXAwMDu3buH PFtbW1taWtrb21tdXT1lypQzdn9FRUU6ne7t7a2trR1+mleovb19z549FRUVBQUFsVgsU/9m o7hAy2a8K/XF4/GdO3d2dnYuWrRo+fLl4dHzGEeld778csX8+YnBwf54vD+RONrYuP1b31q1 atW0adMyW546dWrXrl2ffeGFssWL+xOJ04lEfyLR3dq665FHRjsqLSwsDILg2LFj+/btKy4u XrNmzfTp08/ukPSFz3wmCIJvv/HG6+3tGzdu3LRpU2VlZWaz3t7exx57bMuWLZ9ctOh7V12V Sib/229+0xqNjn1g2tvb+/zzz2/evDkIgrlz68L/+vt7Dx787aFDbwdBUFJSeeut//KLX9w5 4pyUo1IAlM1Zlo0xGy60o9ITJ060t7cnEolIJFJfX//uu+8ODAxknp0yZUp9ff2OHTtSqdTU qVOXLFky2uRR5pB0zZo1BQUFLS0tHR0dixcvrqury57PSqfT77777qFDh+bOnXvZZZelUqld u3ZlH5jmrqenp7m5OZFIrFixYv78+Zk8HTv9S+fM6U8kwqbvaGpq/u53ly5dev/990ciH9wg 5dixY0899dStzz5bumRJ2P398XjPe+/t+fa3x07/dDodi8V2794dj8dra2sXL16c4zcSToGF 3V9ZVBQ++Pjbb//PXbtWrlz54osvhvXf29t79913t7S0fOGyy755xRWpZDKdTJ7s779v69b9 PT1Dfm/Zb37//V85evTI8uWfvu22p0pKPjiQSKXSyWQqmUx1dLxbVragsLD8V796uLX158Pn pKQ/KBtlA5AP6d/d3b1v377M/65YsSKVSrW2tmYeWbZsWUlJSfYs1bJly4Y3ejwef+ONN8Lu Dyet0ul0e3t7W1tbdXX1mjVrioqKgiBIJBLNzc3d3d1Lly5dsmRJGJTJZDKs/wceeMCfERdi 2azv6BhyId8YDh48uGfPntLS0iHTSel0evv27aMdlV58442R4uJkMjmYSiVTqf4TJ6L/8R91 dXWXX375448/nn2MuGDDhsi0aclUKplKJZPJ5KlTPY2NYxyVhv/M0un04ODgnj17Ojs7Fy5c ePnll489u5x5n9tvu21BSUn2UWkQBL9obf3WG29UVlS8+LOfBUFw91139cZij61ff/vixeEh aSqZPHn69P3bt3ekUq+88srwMxx7e3tvu+327u7YZz7zD8uXfzrzeHhIOjiYCg9Mk8n04GDq 5MnDL7104/A5KUelACgbYzZM+KPSVCoVTuhkHqmpqZk7d24ikThx4kQ6nZ45c2ZxcXFnZ+eB Awcy20ydOjVz6Jl9VPrmm29OmzZt7dq1kUgkU4rHjx9vaWkpLi7+2Mc+FgTBO++8E07WzJo1 K7NNKpXasWPH6dOnr7vuulzSf3BwcPfu3ceOHZs7d25tbW327yR8zxHTv7u7+7/ee+/whfgu qan5weOP33333Xfeeed9990XBEEsFrv3vvuOHD06ZMtFCxf++JlnKioqhqT/9ddfn5mQyvw2 Dh061NbWVl5evmbNmuGLBw4Xnot209Kl/3jLLdmP7zlx4q//7d+C8JKrROInN9ywvLIy0/2p wcFvNjY2HD8+2rloDz/88JYtW77whS2LF388fKS/v/f3v9918ODbFRULq6tXVFWtyK7/f//3 77S1/d8hc1LSH5SNsgGY8Ok/ZDaqsLBw7dq1w0epk8lkU1PTYNaKYsuXLx++MnVXV9f27dvn zZuXGRcPezEWi+3cuTOVSgVBEIlEVq1aFaZwpib37t17/Pjxr371q/6AuBDLpm7//rHX+Qj1 9fU1NTWdOnXq0ksvXbx4cfaBYGabEY9Kx7Z///7Pf/7zjz322K233pr7q7KPSof/Tnp6elpa WpLJZH19/bx58874buFqHF9cteo7H/949uOHT5789m9+0xuPP33NNfNKSrIPSf++peV/Hzw4 2gofr7766le+8pWrrrr35pv/LnyktfWXr7/+tz09hzPbbNjw3drav84cmHZ17Xn11TuGzEk5 KgVA2Yy7bIzZcKEdlSYSiR07doSHm4WFhUuXLh3tGqWurq729vbwyqlIJLJ69eoRZ47a29tb WlqWLVuWOQUyTOFEIrF3795UKlVbWxueL5l59tChQ++///7KlStHW+Ej27Fjx3bv3l1YWLhq 1arp06eP2P3huWgzZswYV/oHQfD2229/+ctffuGFF6644orxpn/mUH7IbymRSLS0tPT09Fx8 8cUrVqw448qH4fzR//jEJz63fHn4SCb00386cSzT/a8cPvy93btHW2I7CIL777//rbe2ff3r ez748Nr3yy1b/svChYs2bfruypUrf/7zn2/evHn+/Kvnzr36xIk98Xjv8ePbwy0XLlz05psN 0h+UjbIByJP0D1fVKyoqGhwcjMfjVVVVY18wkUqluru7i4uLp06d2t/fP3369BFDdvfu3YcP H161alU4hD8kyod80dXV1dLSctFFF332s5/1p8N5LpsP8b5Rw1mMkrz/obJt27ZkMhl+vXbt 2lzOLE4kEo2NjeHXkUjk6quvHv5zJZ1Ob9u2raenZ+3ateElh8N/loRfnDp1aseOHVVVVVdd dVWOt5gIx5OmTJly+eWXZ5agHP7+jY2NI44ndXd3//GPfxzyYGVlZWVlZUNDw0MPPfTiiy+G p2j09PSEt2bMVl5ePmPGjOxHwvGka6+9dozxpH379o13PGnI1YupwcH0n48khV/88sSJJ9rb RxtPCq/lDL8uLq6srl4xbdrCsrIFe/f+ayIRe/nll3t7e7dt27Z58+apUys++cn/N3VqRRAE HR1vvPPO3ww5XfovO550HoamxvsBfsMNN/hw4KP5TB7tiWe7uzNfj3cNYmUD4+qh9vb23//+ 91OmTKmpqcnlnLZMUrS1tQ0MDMyZM2fEO7+GB9l1dXVDDrJHnAvr6urau3fvkiVLRlw6b0SZ U+uWLVu2aNGiEd92tB4a209/+tMf/ehHL7300vz583N8SdhD11xzzfALvoIgOHnyZDirOK5T 67JXFwzr51hf3zd37qwoLPxOTc2cwsLw8fAl/3j48P85fnzEU+t6e3uvu+76IKj8/Od/9adl HdLJZOrVV/+qu/s/T/WdOfPK1av/e2np/CAIBgZib71194wZkVdeeTl7xXPza3Dm2ajR/pE8 dw53V1A2cB56KAiCWCwWziDE4/GZM2eGP9RHMzg4eOLEiaKiotLS0oGBgfLy8uGjHeH5RjU1 NeFixJnPh3g8vm/fvkgkcumll2Zunxk+e+TIkfb29rq6uiVLluT4XWQugJ8zZ85ll102ZcqU ISHS1NR0Fj0UBMHjjz/+9ttv/+QnP3nwoYeOHjkSBEH2B9xoF8CHPZRZ+yrzVHt7+3gvgP/k okX/sGFDdgzt6+l5oLExKC4OgiB9+vTmFStq/nwk79H33nurp2fEC+DDwLr11n+dPftjmSTq 7z8Zje7t7HynrGxBaen8mTOvzGz/zjt/09Hxxosvvrh+/frs99FDTK6y+TDuG6Vs4ELuoXg8 vmPHjnDWLBKJLFmyZLRhjM7Ozvfffz/csqCgYPXq1SUlJUO2Ca8Knjt37ooVK7LLoK+vb/fu 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 9IkAAAAASUVORK5CYII= --upas-riqjzmgjijpjejdriqwtnltmjd--