A terminal Matrix client written in Go using mautrix and mauview.
For installation and usage instructions, see docs.mau.fi.
Matrix room: #gomuks:maunium.net
A terminal based Matrix client written in Go.
Home Page: https://maunium.net/go/gomuks
License: GNU Affero General Public License v3.0
A terminal Matrix client written in Go using mautrix and mauview.
For installation and usage instructions, see docs.mau.fi.
Matrix room: #gomuks:maunium.net
Currently the main package handles tview initialization, which means that a different UI package can't be directly plugged in. The tview initialization should be moved to the ui
package.
Terminals support quite a bit of formatting. Pretty much everything Riot supports except sup
and sub
should be doable.
E.g. two p
blocks would be on the same line, even though they should be on different lines.
Riot shows 10 rooms and a "more" button, so gomuks should do something similar
Alec Thomas' chroma might be a good library for implementing this.
Upgrading to 0cdde55, gomuks briefly displays the UI and then panics:
runtime error: index out of range
goroutine 14 [running]:
runtime/debug.Stack(0x896fc0, 0xc423698000, 0xc42327d6e0)
/usr/local/go/src/runtime/debug/stack.go:24 +0xa7
maunium.net/go/gomuks/debug.PrettyPanic(0x7d1400, 0xa6e660)
<ELIDED>/src/maunium.net/go/gomuks/debug/debug.go:80 +0x292
main.(*Gomuks).Recover(0xc4201b2990)
<ELIDED>/src/maunium.net/go/gomuks/gomuks.go:120 +0x69
panic(0x7d1400, 0xa6e660)
/usr/local/go/src/runtime/panic.go:505 +0x229
maunium.net/go/gomuks/ui/messages/parser.(*TagArray).Pop(0xc422b3c5e0, 0xc422e64a58, 0x1, 0x1)
<ELIDED>/src/maunium.net/go/gomuks/ui/messages/parser/htmltagarray.go:67 +0x2cc
maunium.net/go/gomuks/ui/messages/parser.(*MatrixHTMLProcessor).HandleEndTag(0xc4233361e0, 0xc422e64a58, 0x1)
<ELIDED>/src/maunium.net/go/gomuks/ui/messages/parser/htmlparser.go:120 +0x5e
maunium.net/go/gomuks/lib/htmlparser.HTMLParser.Process(0xc42363a270, 0x89c2c0, 0xc4233361e0)
<ELIDED>/src/maunium.net/go/gomuks/lib/htmlparser/htmlparser.go:137 +0x22a
maunium.net/go/gomuks/ui/messages/parser.ParseHTMLMessage(0xc4200be180, 0xc42327dea0, 0x16, 0x1, 0xc423282658)
<ELIDED>/src/maunium.net/go/gomuks/ui/messages/parser/htmlparser.go:183 +0x206
maunium.net/go/gomuks/ui/messages/parser.ParseMessage(0x89c260, 0xc4201b2990, 0xc4200be180, 0xc42327dea0, 0xc42365cfc0, 0xc4235761f8)
<ELIDED>/src/maunium.net/go/gomuks/ui/messages/parser/parser.go:62 +0x2c9
maunium.net/go/gomuks/ui/messages/parser.ParseEvent(0x89c260, 0xc4201b2990, 0xc4200be180, 0xc42327dea0, 0xc4236202c0, 0x1)
<ELIDED>/src/maunium.net/go/gomuks/ui/messages/parser/parser.go:40 +0x10a
maunium.net/go/gomuks/ui.(*MainView).ParseEvent(0xc422ff3a70, 0x89d2c0, 0xc4235720c0, 0xc42327dea0, 0x7f31e03ec4c0, 0xc4236202c0)
<ELIDED>/src/maunium.net/go/gomuks/ui/view-main.go:470 +0x64
maunium.net/go/gomuks/ui.(*MainView).LoadHistory(0xc422ff3a70, 0xc4232b65e0, 0x1e, 0x1)
<ELIDED>/src/maunium.net/go/gomuks/ui/view-main.go:456 +0x4c9
created by maunium.net/go/gomuks/ui.(*MainView).addRoom
<ELIDED>/src/maunium.net/go/gomuks/ui/view-main.go:323 +0x494
On Mac OS 10.13 in built-in Terminal app, message display width seems to be only about 6 to 8 characters, making reading messages almost impossible.
Some infrastructure is required to be able to easily add click actions such as support for inline links, room pills, etc..
runtime error: slice bounds out of range
goroutine 5 [running]:
runtime/debug.Stack(0x14b6520, 0xc420140070, 0xc4203b9918)
$GOROOT/runtime/debug/stack.go:24 +0xa7
maunium.net/go/gomuks/debug.PrettyPanic(0x13ecc00, 0x16a78c0)
$GOPATH/src/maunium.net/go/gomuks/debug/debug.go:97 +0x292
maunium.net/go/gomuks/debug.Recover()
$GOPATH/src/maunium.net/go/gomuks/debug/debug.go:72 +0x63
panic(0x13ecc00, 0x16a78c0)
$GOROOT/runtime/panic.go:502 +0x229
maunium.net/go/gomuks/ui.(*MessageView).replaceBuffer(0xc42034d140, 0x14bf0a0, 0xc420a1f3f0, 0x14bf0a0, 0xc4208e8000)
$GOPATH/src/maunium.net/go/gomuks/ui/message-view.go:238 +0x910
maunium.net/go/gomuks/ui.(*MessageView).AddMessage(0xc42034d140, 0x1e02000, 0xc4208e8000, 0x2)
$GOPATH/src/maunium.net/go/gomuks/ui/message-view.go:184 +0x383
maunium.net/go/gomuks/ui.(*RoomView).AddMessage(0xc420b79ea0, 0x1e02000, 0xc4208e8000, 0x1)
$GOPATH/src/maunium.net/go/gomuks/ui/room-view.go:375 +0x4d
maunium.net/go/gomuks/ui.(*MainView).LoadHistory(0xc4201dc2d0, 0xc42059c080, 0x1e, 0x1)
$GOPATH/src/maunium.net/go/gomuks/ui/view-main.go:450 +0x4ec
created by maunium.net/go/gomuks/ui.(*MainView).addRoom
$GOPATH/src/maunium.net/go/gomuks/ui/view-main.go:315 +0x441
After /clearcache
ing the room member list only contains a few entries
Currently, gomuks will fetch some history at each startup and more when the user requests it. To improve startup speed, it should save all the history it fetches to a local file.
hey, this is an awesome client. I have had a couple of crashes when trying to send a message in one room. Reports attached.
gomuks-panic-2018-05-09--15-40-00.txt
gomuks-panic-2018-05-09--15-39-50.txt
let me know if you need more info.
Obvious, ~/.config isn't the place for pictures and history.
/reply [text]
/react <reaction>
/redact
/source
Some people may not want the inline image rendering, so it should be possible to disable it.
Something like weechat's bare display mode would be nice for terminals with url handling.
despite the fun everything being in UTC because the box I installed it on is UTC
Code blocks and HTML tables could be rendered in a way that limits their width and height and instead allows selecting the message and scrolling it horizontally and vertically.
Requires #26
Would be useful especially when collapsing tags
Allowing users to configure how to color things would be nice.
Go has a native plugin system, so it wouldn't be too hard to add a very simple plugin loader to gomuks.
Most of the functions in the MessageMeta and Message interfaces are only used by the UI. Especially the functions that refer to tcell.Color
should be removed from the interface package to keep it reusable for potential other UI packages.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.