shithub: hell

Download patch

ref: b83f6b5d847be37e7f59faa1acac0d22ab3089bc
parent: e2bb9b699ab1ad34feff0934975a0597f8c74a9f
author: penny <penny@limitedideas.org>
date: Tue Nov 18 15:11:16 EST 2025

working on libframe support

--- a/go.mod
+++ b/go.mod
@@ -3,6 +3,7 @@
 go 1.23.8
 
 require (
+	codeberg.org/penny64/go v0.0.0-20251116183153-d4cd1ab1e72b
 	codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251113230229-c103f9ce2762
 	github.com/ergochat/readline v0.1.3
 	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
@@ -13,8 +14,11 @@
 )
 
 require (
+	9fans.net/go v0.0.7 // indirect
 	github.com/gorilla/websocket v1.5.3 // indirect
 	github.com/tomnomnom/linkheader v0.0.0-20250811210735-e5fe3b51442e // indirect
 	golang.org/x/sys v0.34.0 // indirect
 	golang.org/x/text v0.27.0 // indirect
 )
+
+replace codeberg.org/penny64/go => ./go
--- a/go.sum
+++ b/go.sum
@@ -1,27 +1,26 @@
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251001171436-178f7eef4328 h1:azMD7sk28oe+aHzrtkjA86KkBST33tOvdN8Tt2SpG0g=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251001171436-178f7eef4328/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251014133451-9d9caf09d155 h1:gMrZQzVc5M6uBEVAWREt483F/A0fRJzPGJfp2Fgltbg=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251014133451-9d9caf09d155/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251016232444-1abcf2f063ce h1:xWTr5fEsoctAq+teYu5UQoIkZ4t3S6/amf4WvxdLKus=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251016232444-1abcf2f063ce/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028175607-b69810a2c1e3 h1:en1TZWKLCAV8BxA9w87MXW6h5wfi1jcBF1nsqeBBimk=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028175607-b69810a2c1e3/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028175833-e74448941d05 h1:Pml5pJGj01TpdzgLZrQBE0evgCzIn1QnArrXOz1xRUk=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028175833-e74448941d05/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028215959-0a722e119e0a h1:dmoovfe3axSD9D7ABIXXogxTcf8/Zu4tM8fhLFozYSE=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028215959-0a722e119e0a/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028221536-05350a5c7d32 h1:pJI1Da8MvniyNG6Zt2I4tSLXBx9bJ9yOjae0AvLjW64=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028221536-05350a5c7d32/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028225040-2b589a27b774 h1:EvU5TJiaibxX6j4W+aT/7Z0g2kd+eO0z/ym8YV1VwuQ=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028225040-2b589a27b774/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028230912-df1090ededf3 h1:/WTQFr1leWTgYw1Jyki/E3Ev6zxtl7lYFqRkayFsH40=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028230912-df1090ededf3/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028231008-1218d098bd98 h1:RTfvPmEwZjoVbjcZ68HKW57/TfRslY1zLSg83IrhRj0=
-codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251028231008-1218d098bd98/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
+9fans.net/go v0.0.7 h1:H5CsYJTf99C8EYAQr+uSoEJnLP/iZU8RmDuhyk30iSM=
+9fans.net/go v0.0.7/go.mod h1:Rxvbbc1e+1TyGMjAvLthGTyO97t+6JMQ6ly+Lcs9Uf0=
+codeberg.org/penny64/go v0.0.0-20251116155027-a002e8a3e009 h1:tYS+gaa4EX1MKVBkBlT6TyIztBNz227ZNKvsXEzm4v0=
+codeberg.org/penny64/go v0.0.0-20251116155027-a002e8a3e009/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
+codeberg.org/penny64/go v0.0.0-20251116181642-0d83628c51c8 h1:y0Q7fEA2N/z4O4Fwxkj8yYtfX9OR6wnaQhNNG03LO00=
+codeberg.org/penny64/go v0.0.0-20251116181642-0d83628c51c8/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
+codeberg.org/penny64/go v0.0.0-20251116182233-aa3c999b632b h1:fj26Yt0qna+F11DlIsfoskZdoQs/n2xzzqsBT2FC+wI=
+codeberg.org/penny64/go v0.0.0-20251116182233-aa3c999b632b/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
+codeberg.org/penny64/go v0.0.0-20251116182347-636d0eb83c4a h1:+Io4QKFvzoAIIIONEcu/u98mEL7rkCWZChv6EUC+GhU=
+codeberg.org/penny64/go v0.0.0-20251116182347-636d0eb83c4a/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
+codeberg.org/penny64/go v0.0.0-20251116182446-e96e9cc1daa5 h1:+DUW5Pxg9Vp/CTUKcNZ8FfQxG8/+rzNecIH2DIZiz0k=
+codeberg.org/penny64/go v0.0.0-20251116182446-e96e9cc1daa5/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
+codeberg.org/penny64/go v0.0.0-20251116182506-9795a7c1d63d h1:zqKOUHJl4VddKdF4/5c1XYzsOQwQeH/dgl0xCmn1E3U=
+codeberg.org/penny64/go v0.0.0-20251116182506-9795a7c1d63d/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
+codeberg.org/penny64/go v0.0.0-20251116183153-d4cd1ab1e72b h1:NFKf+EYma/Uusn/tStM/+OZT/9qCpIbDSqwBQxG2W64=
+codeberg.org/penny64/go v0.0.0-20251116183153-d4cd1ab1e72b/go.mod h1:pS+lTGrjRb7ilvhDBCBTgEVw4OruB5krtUALU2NzySE=
 codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251113230229-c103f9ce2762 h1:aSkTyLw5KHD3/63bH6l5YcUHKznNYGUJ69hlgK7jwLs=
 codeberg.org/penny64/hellclient-go-mastodon v0.0.0-20251113230229-c103f9ce2762/go.mod h1:uBGYW1AuCWBfm/LaIH4X4SnuWGWcSP4DNH/v/KUUMj8=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/ergochat/readline v0.1.3 h1:/DytGTmwdUJcLAe3k3VJgowh5vNnsdifYT6uVaf4pSo=
 github.com/ergochat/readline v0.1.3/go.mod h1:o3ux9QLHLm77bq7hDB21UTm6HlV2++IPDMfIfKDuOgY=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
@@ -38,15 +37,32 @@
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 h1:nrZ3ySNYwJbSpD6ce9duiP+QkD3JuLCcWkdaehUS/3Y=
-github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80/go.mod h1:iFyPdL66DjUD96XmzVL3ZntbzcflLnznH0fr99w5VqE=
 github.com/tomnomnom/linkheader v0.0.0-20250811210735-e5fe3b51442e h1:tD38/4xg4nuQCASJ/JxcvCHNb46w0cdAaJfkzQOO1bA=
 github.com/tomnomnom/linkheader v0.0.0-20250811210735-e5fe3b51442e/go.mod h1:krvJ5AY/MjdPkTeRgMYbIDhbbbVvnPQPzsIsDJO8xrY=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4=
+golang.org/x/exp v0.0.0-20210405174845-4513512abef3/go.mod h1:I6l2HNBLBZEcrOoCpyKLdY2lHoRZ8lI4x60KMCQDft4=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4=
+golang.org/x/mobile v0.0.0-20210220033013-bdb1ca9a1e08/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
 golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210415045647-66c3f260301c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
 golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
@@ -54,4 +70,10 @@
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
 golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
--- a/readline_plan9.go
+++ b/readline_plan9.go
@@ -6,6 +6,9 @@
 	"io"
 	"os"
 	"strings"
+
+    "codeberg.org/penny64/go/draw"
+	"codeberg.org/penny64/go/draw/frame"
 )
 
 // not relevant
@@ -35,12 +38,14 @@
 }
 
 func NewReadline(config *Config) (*readline, error) {
-	ctl, err := os.OpenFile("/dev/consctl", os.O_WRONLY, 0)
+	window, err := draw.Init(nil, "", "hell", "")
 	if err != nil {
 		return nil, err
 	}
+	f := &frame.Frame{}
+	f.Init(window.Image.R, window.Font, window.Image, nil)
 	label, err := os.OpenFile("/dev/label", os.O_WRONLY, 0)
-	return &readline{config: *config, ctl: ctl, label: label}, nil
+	return &readline{config: *config, ctl: nil, label: label}, nil
 }
 
 func (rl *readline) ReadLineWithConfig(cfg *Config) (string, error) {
--