A personal build of the TUI matrix client including image-pasting and notifications for all rooms
Go to file
Jaron Swab 3ebfb87da2 Scale image message based on the user's text area.
Using the "image" package from the standard library the images loaded by
gomuks now scale to one third the size of the text area. The image data
contains both hight and width while the scaling uses only width the
option to scale by hight is possible if passed into `CalculateBuffer()`.
`ansimage.NewScaledFromReader()` now takes the new variable based off
the size of the buffers' width.

This may resolve issue #92
2019-06-15 11:01:05 -04:00
config Fix tests 2019-04-10 02:47:47 +03:00
deb/DEBIAN Add debian packaging and some build scripts 2018-05-03 10:03:25 +03:00
debug DOn't print debug init to log file when not logging to file 2019-04-27 15:44:01 +03:00
interface Remove room alias argument and switch to room after creating 2019-06-14 20:56:41 +03:00
lib Fix go 1.11 and go get compatibility 2019-05-12 17:34:47 +03:00
matrix Users can now create a new room directly in Gomuks 2019-06-13 21:14:32 -04:00
scripts Update CI script and tcell 2019-01-12 00:35:42 +02:00
ui Scale image message based on the user's text area. 2019-06-15 11:01:05 -04:00
.codeclimate.yml Add .codeclimate.yml 2018-04-19 11:33:59 +03:00
.editorconfig Update README and other files 2018-03-20 23:49:37 +02:00
.gh-deployer.yaml Update CI script and tcell 2019-01-12 00:35:42 +02:00
.gitignore Add .tmp to .gitignore 2018-05-15 19:59:17 +03:00
.travis.yml Fix Travis CI Go version 2019-04-10 02:19:27 +03:00
chat-preview.png Update preview image 2018-05-24 10:34:31 +03:00
go.mod Fix go 1.11 and go get compatibility 2019-05-12 17:34:47 +03:00
go.sum Fix go 1.11 and go get compatibility 2019-05-12 17:34:47 +03:00
gomuks.go Use XDG config and cache home 2019-04-06 10:57:24 +03:00
LICENSE Update license and sort imports 2019-01-23 00:26:51 +02:00
main.go Add partial deadlock detection in debug mode 2019-04-27 15:02:52 +03:00
README.md Update README 2019-04-27 15:44:11 +03:00

gomuks

Languages License Release Build Status Maintainability Coverage

Chat Preview

A terminal Matrix client written in Go using mautrix and tview.

Basic usage is possible, but expect bugs and missing features.

Discussion

Matrix room: #gomuks:maunium.net

Installation

Once the client becomes actually usable, I'll start making GitHub releases with precompiled executables. For now, you can either download a CI build from dl.maunium.net/programs/gomuks or compile from source:

  1. Install Go 1.12 or higher
  2. Clone the repo: git clone https://github.com/tulir/gomuks.git && cd gomuks
  3. Build: go build

Simply pull changes (git pull) and run go build again to update.

Developing

Set DEBUG=1 to enable partial deadlock detection and to write panics to stdout instead of a file.

To build and run with race detection, use go install -race and set GORACE='history_size=7 log_path=/tmp/gomuks/race.log' when starting gomuks, then check /tmp/gomuks/race.log.<pid>. Note that race detection will use a lot of extra resources.

For debugging, use tail -f /tmp/gomuks/debug.log and write to it using the methods in the maunium.net/go/gomuks/debug package:

package foo

import (
	"maunium.net/go/gomuks/debug"
)

func Foo() {
	debug.Print("WHY ISN'T IT WORKING?!?!?")
	debug.PrintStack()
}

Usage

  • switch rooms - Ctrl + ↑ Ctrl + ↓ Alt + ↑ Alt + ↓
  • scroll chat (line) -
  • scroll chat (page) - PgUp PgDown
  • jump to room - Alt + Enter, then Tab and Enter to navigate and select room

Commands

  • /help - View command list
  • /me <text> - Send an emote
  • /quit - Close gomuks
  • /clearcache - Clear room state and close gomuks
  • /leave - Leave the current room
  • /join <room> - Join the room with the given room ID or alias
  • /toggle <rooms/users/baremessages/images/typingnotif> - Change user preferences
  • /logout - Log out, clear caches and go back to the login view
  • /send <room id> <event type> <content> - Send a custom event
  • /setstate <room id> <event type> <state key/-> <content> - Change room state
  • /msend <event type> <content> - Send a custom event to the current room
  • /msetstate <event type> <state key/-> <content> - Change room state in the current room