From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mimir.eigenstate.org ([206.124.132.107]) by ewsd; Sun Apr 12 15:21:16 EDT 2020 Received: from abbatoir.fios-router.home (pool-162-83-132-245.nycmny.fios.verizon.net [162.83.132.245]) by mimir.eigenstate.org (OpenSMTPD) with ESMTPSA id 91a0689f (TLSv1.2:ECDHE-RSA-AES256-SHA:256:NO); Sun, 12 Apr 2020 12:21:16 -0700 (PDT) Message-ID: To: sl@stanleylieber.com, 9front@9front.org Subject: Re: [9front] mothra: proposal Date: Sun, 12 Apr 2020 12:21:15 -0700 From: ori@eigenstate.org In-Reply-To: <42A469F0BBA88991B13EB7B76C0079B3@ewsd.inri.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="upas-cjcpjszyllswjzblpjsyalitjf" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: secure managed service GPU CMS replication metadata This is a multi-part message in MIME format. --upas-cjcpjszyllswjzblpjsyalitjf Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Finally got around to preparing patches, which should apply cleanly on top of 9front mothra. However: > 3.) implement -b flag for dark mode, white-on-black text.[2] > a.) similar to rio -b, and vt -b. > 1.) users are free to implement any desired > schemes beyond default and -b by configuring > the included .c files. I didn't see this change in the tarballs. There just seemed to be two different mothras, one with black and one with white schemes. Patches attached: font.patch: Change font back to original. panel.patch: Reduce drawing clutter from libpanel monochrome.patch; Make the color scheme monochrome (all-white) plumb.patch: add plumber TODO: - Make libpanel render a bit more in the style of rio and everything else. - Merge in a version of mothra with -b, if I get it. --upas-cjcpjszyllswjzblpjsyalitjf Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit From b28c15f43defdd85969d9fe4e9d5a9fb540239fb From: Ori Bernstein Date: Sun, 12 Apr 2020 11:32:48 -0700 Subject: [PATCH] restore original default fonts. our dejavusans is fuzzy as hell, and it sucks. users can easily choose their own fonts and recompile. diff -urN a/rdhtml.c b/rdhtml.c --- a/rdhtml.c Sun Apr 12 11:55:30 2020 +++ b/rdhtml.c Sun Apr 12 11:32:48 2020 @@ -13,25 +13,26 @@ Font *font; int space; }fontlist[4][4]={ - "dejavusans/unicode.12", 0, 0, - "dejavusans/unicode.12", 0, 0, - "dejavusans/unicode.14", 0, 0, - "dejavusans/unicode.16", 0, 0, +/* original */ + "lucidasans/unicode.7", 0, 0, + "lucidasans/unicode.8", 0, 0, + "lucidasans/unicode.10", 0, 0, + "lucidasans/unicode.13", 0, 0, - "dejavusansit/unicode.12", 0, 0, - "dejavusansit/unicode.12", 0, 0, - "dejavusansit/unicode.14", 0, 0, - "dejavusansit/unicode.16", 0, 0, + "lucidasans/italicunicode.7", 0, 0, + "lucidasans/italicunicode.8", 0, 0, + "lucidasans/italicunicode.10", 0, 0, + "lucidasans/italicunicode.13", 0, 0, - "dejavusansbd/unicode.12", 0, 0, - "dejavusansbd/unicode.12", 0, 0, - "dejavusansbd/unicode.14", 0, 0, - "dejavusansbd/unicode.16", 0, 0, + "lucidasans/boldunicode.7", 0, 0, + "lucidasans/boldunicode.8", 0, 0, + "lucidasans/boldunicode.10", 0, 0, + "lucidasans/boldunicode.13", 0, 0, - "terminus/unicode.12", 0, 0, - "terminus/unicode.14", 0, 0, - "terminus/unicode.16", 0, 0, - "terminus/unicode.18", 0, 0, + "lucidasans/typeunicode.7", 0, 0, + "pelm/unicode.8", 0, 0, + "lucidasans/typeunicode.12", 0, 0, + "lucidasans/typeunicode.16", 0, 0, }; Font *pl_whichfont(int f, int s, int *space){ --upas-cjcpjszyllswjzblpjsyalitjf Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit From 8167f136aa08f34ef45577978b6bfda75f334d86 From: Ori Bernstein Date: Sun, 12 Apr 2020 11:58:12 -0700 Subject: [PATCH] remove useless panel decoration. stop underlining hyperlinks, and instead make them blue. currently, lines, borders, bullet points, etc., are defined in all sorts of different places, not even entirely inside of libpanel. i made no attempt to address this. in rio, we ended up putting all the color definitions into one file, for easy modification. diff -urN a/libpanel/draw.c b/libpanel/draw.c --- a/libpanel/draw.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/draw.c Sun Apr 12 11:58:12 2020 @@ -19,7 +19,7 @@ plldepth=ldepth; pl_white=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0xFFFFFFFF); pl_light=allocimagemix(display, DPalebluegreen, DWhite); - pl_dark =allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue); + pl_dark=allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue); pl_black=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x000000FF); pl_hilit=allocimage(display, Rect(0,0,1,1), CHAN1(CAlpha,8), 1, 0x80); if(pl_white==0 || pl_light==0 || pl_black==0 || pl_dark==0) return 0; @@ -38,6 +38,13 @@ } Rectangle pl_boxoutline(Image *b, Rectangle r, int style, int fill){ if(plldepth==0) switch(style){ + case SUP: + case TUP: + pl_relief(b, pl_white, pl_white, r, BWID); + r=insetrect(r, BWID); + if(fill) draw(b, r, pl_white, 0, ZP); + else border(b, r, SPACE, pl_white, ZP); + break; case UP: pl_relief(b, pl_black, pl_black, r, BWID); r=insetrect(r, BWID); @@ -68,6 +75,13 @@ break; } else switch(style){ + case SUP: + case TUP: + pl_relief(b, pl_white, pl_white, r, BWID); + r=insetrect(r, BWID); + if(fill) draw(b, r, pl_light, 0, ZP); + else border(b, r, SPACE, pl_white, ZP); + break; case UP: pl_relief(b, pl_white, pl_black, r, BWID); r=insetrect(r, BWID); @@ -97,7 +111,10 @@ else border(b, r, SPACE, pl_white, ZP); break; } - return insetrect(r, SPACE); + switch(style){ + case SUP: return insetrect(r, SPACE-SPACE); + default: return insetrect(r, SPACE); + } } Rectangle pl_outline(Image *b, Rectangle r, int style){ return pl_boxoutline(b, r, style, 0); diff -urN a/libpanel/event.c b/libpanel/event.c --- a/libpanel/event.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/event.c Sun Apr 12 11:58:12 2020 @@ -9,8 +9,10 @@ plkbfocus=g; } void plkeyboard(Rune c){ - if(plkbfocus) + if(plkbfocus){ plkbfocus->type(plkbfocus, c); + flushimage(display, 1); + } } /* @@ -45,4 +47,5 @@ g->flags&=~REMOUSE; g->lastmouse=hit; } + flushimage(display, 1); } diff -urN a/libpanel/pldefs.h b/libpanel/pldefs.h --- a/libpanel/pldefs.h Sun Apr 12 11:32:48 2020 +++ b/libpanel/pldefs.h Sun Apr 12 11:58:12 2020 @@ -17,7 +17,9 @@ * States, also styles */ enum{ - UP, + SUP, // scrollbar + TUP, // textview + UP, // deprecated DOWN1, DOWN2, DOWN3, diff -urN a/libpanel/popup.c b/libpanel/popup.c --- a/libpanel/popup.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/popup.c Sun Apr 12 11:58:12 2020 @@ -65,6 +65,7 @@ if(g->state!=DOWN){ if(pp->save!=0){ draw(g->b, p->r, pp->save, 0, p->r.min); + flushimage(display, 1); freeimage(pp->save); pp->save=0; } diff -urN a/libpanel/rtext.c b/libpanel/rtext.c --- a/libpanel/rtext.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/rtext.c Sun Apr 12 11:58:12 2020 @@ -175,7 +175,9 @@ Point lp, sp; Rectangle dr; Image *bb; + Image *pl_blue; + pl_blue=allocimage(display, Rect(0,0,1,1), RGB24, 1, 0x0000FFFF); bb = b; if(backup==0 || backup->chan!=b->chan || rectinrect(r, backup->r)==0){ freeimage(backup); @@ -195,7 +197,6 @@ && dr.min.xb){ draw(b, insetrect(dr, BORD), t->b, 0, t->b->r.min); - if(t->flags&PL_HOT) border(b, dr, 1, display->black, ZP); if(t->flags&PL_STR) { line(b, Pt(dr.min.x, dr.min.y), Pt(dr.max.x, dr.max.y), Endsquare, Endsquare, 0, @@ -214,7 +215,10 @@ pl_stuffbitmap(t->p, bb); } else{ - string(b, dr.min, display->black, ZP, t->font, t->text); + if(t->flags&PL_HOT) + string(b, dr.min, pl_blue, ZP, t->font, t->text); + else + string(b, dr.min,display->black, ZP, t->font, t->text); if(t->flags&PL_SEL) pl_highlight(b, dr); if(t->flags&PL_STR){ @@ -227,15 +231,6 @@ sp = Pt(dr.max.x, y); } else sp = ZP; - if(t->flags&PL_HOT){ - int y = dr.max.y - 1; - if(lp.y != y) - lp = Pt(dr.min.x, y); - line(b, lp, Pt(dr.max.x, y), - Endsquare, Endsquare, 0, - display->black, ZP); - lp = Pt(dr.max.x, y); - } else lp = ZP; continue; } diff -urN a/libpanel/scrollbar.c b/libpanel/scrollbar.c --- a/libpanel/scrollbar.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/scrollbar.c Sun Apr 12 11:58:12 2020 @@ -16,7 +16,7 @@ void pl_drawscrollbar(Panel *p){ Scrollbar *sp; sp=p->data; - sp->interior=pl_outline(p->b, p->r, p->state); + sp->interior=pl_outline(p->b, p->r, SUP); /* SUP was p->state */ pl_sliderupd(p->b, sp->interior, sp->dir, sp->lo, sp->hi); } int pl_hitscrollbar(Panel *g, Mouse *m){ diff -urN a/libpanel/textview.c b/libpanel/textview.c --- a/libpanel/textview.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/textview.c Sun Apr 12 11:58:12 2020 @@ -47,7 +47,7 @@ Point size; tp=p->data; - r=pl_outline(p->b, p->r, UP); + r=pl_outline(p->b, p->r, TUP); twid=r.max.x-r.min.x; if(twid!=tp->twid){ tp->twid=twid; @@ -80,7 +80,7 @@ if(oldhitword==oldhitfirst) pl_passon(oldhitword, m); if(m->buttons&OUT) - p->state=UP; + p->state=PASSIVE; else if(m->buttons&7){ p->state=DOWN; tp->buttons=m->buttons; @@ -100,7 +100,7 @@ } else{ if(p->state==DOWN) hitme=1; - p->state=UP; + p->state=PASSIVE; } if(tp->hitfirst!=oldhitfirst || tp->hitword!=oldhitword){ plrtseltext(tp->text, tp->hitword, tp->hitfirst); @@ -214,7 +214,7 @@ Textview *tp; tp=v->data; v->flags=flags|LEAF; - v->state=UP; + v->state=PASSIVE; v->draw=pl_drawtextview; v->hit=pl_hittextview; v->type=pl_typetextview; diff -urN a/libpanel/textwin.c b/libpanel/textwin.c --- a/libpanel/textwin.c Sun Apr 12 11:32:48 2020 +++ b/libpanel/textwin.c Sun Apr 12 11:58:12 2020 @@ -136,7 +136,7 @@ er=t->text+last; for(r=t->text+first,lp=t->loc+(first-t->top);r!=er;r++,lp++){ if(lp->y+t->hgt>t->r.max.y){ - fprint(2, "chr %C, index %ld of %d, loc %d %d, off bottom\n", + fprint(2, "chr %C, index %lld of %d, loc %d %d, off bottom\n", *r, lp-t->loc, t->bot-t->top, lp->x, lp->y); return; } --upas-cjcpjszyllswjzblpjsyalitjf Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit From 75ccd7dd8c6bb8b38312fb23dfa522e045a72f51 From: Ori Bernstein Date: Sun, 12 Apr 2020 11:59:40 -0700 Subject: [PATCH] make mothra monochrome. diff -urN a/libpanel/draw.c b/libpanel/draw.c --- a/libpanel/draw.c Sun Apr 12 11:58:12 2020 +++ b/libpanel/draw.c Sun Apr 12 11:59:40 2020 @@ -17,9 +17,10 @@ static Image *pl_white, *pl_light, *pl_dark, *pl_black, *pl_hilit; int pl_drawinit(int ldepth){ plldepth=ldepth; + /* mono */ pl_white=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0xFFFFFFFF); - pl_light=allocimagemix(display, DPalebluegreen, DWhite); - pl_dark=allocimage(display, Rect(0,0,1,1), screen->chan, 1, DPurpleblue); + pl_light=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0xFFFFFFFF); + pl_dark=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x555555FF); pl_black=allocimage(display, Rect(0,0,1,1), screen->chan, 1, 0x000000FF); pl_hilit=allocimage(display, Rect(0,0,1,1), CHAN1(CAlpha,8), 1, 0x80); if(pl_white==0 || pl_light==0 || pl_black==0 || pl_dark==0) return 0; --upas-cjcpjszyllswjzblpjsyalitjf Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit From 0f8e8c98177be7133908c55d68e816741d019f5c From: Ori Bernstein Date: Sun, 12 Apr 2020 12:07:37 -0700 Subject: [PATCH] Add plumb menu diff -urN a/mothra.c b/mothra.c --- a/mothra.c Sun Apr 12 11:59:40 2020 +++ b/mothra.c Sun Apr 12 12:07:37 2020 @@ -95,6 +95,7 @@ "moth mode", "snarf", "paste", + "plumb", "search", "save hit", "hit list", @@ -936,6 +937,7 @@ return url->fullname; return url->reltext; } + Url *copyurl(Url *u){ Url *v; v=emalloc(sizeof(Url)); @@ -944,11 +946,13 @@ v->basename = strdup(u->basename); return v; } + void freeurl(Url *u){ free(u->reltext); free(u->basename); free(u); } + void seturl(Url *url, char *urlname, char *base){ url->reltext = strdup(urlname); url->basename = strdup(base); @@ -956,6 +960,7 @@ url->tag[0] = 0; url->map = 0; } + Url* selurl(char *urlname){ Url *last; @@ -1167,7 +1172,9 @@ plpaste(p); } void hit3(int button, int item){ + char buf[1024]; char name[NNAME]; + char *s; Panel *swap; int fd; USED(button); @@ -1199,9 +1206,27 @@ paste(plkbfocus); break; case 4: - search(); + if(plkbfocus==nil || plkbfocus==cmd){ + if(text==nil || text->snarf==nil || selection==nil) + return; + if((s=text->snarf(text))==nil) + s=smprint("%s", urlstr(selection)); + }else + if((s=plkbfocus->snarf(plkbfocus))==nil) + return; + if((fd=plumbopen("send", OWRITE))<0){ + message("can't plumb"); + free(s); + return; + } + plumbsendtext(fd, "mothra", nil, getwd(buf, sizeof buf), s); + close(fd); + free(s); break; case 5: + search(); + break; + case 6: if(!selection){ message("no url selected"); break; @@ -1221,11 +1246,11 @@ fprint(fd, "

%s\n", urlstr(selection), urlstr(selection)); close(fd); break; - case 6: + case 7: snprint(name, sizeof(name), "file:%s/hit.html", mkhome()); geturl(name, -1, 1, 0); break; - case 7: + case 8: if(confirm(3)) exits(0); break; --upas-cjcpjszyllswjzblpjsyalitjf--