rudi9719 / kbtui Goto Github PK
View Code? Open in Web Editor NEWKeybase TUI written in Go
Home Page: https://keybase.io/team/kbtui
License: GNU General Public License v3.0
Keybase TUI written in Go
Home Page: https://keybase.io/team/kbtui
License: GNU General Public License v3.0
This is a bundle of different features i want:
read
so i don't have to rejoin tohide until next message
etc as is possible in the GUIReactions should show in line with, or below messages with a count for each reaction
any extra junk after a +/- command such as -this
or -1
cause a crash
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x528d5e]
goroutine 1 [running]:
main.RunCommand(...)
/home/david/github/kbtui/main.go:552
main.handleInput(0x586941, 0x5, 0x28, 0x5)
/home/david/github/kbtui/main.go:489 +0x44e
main.initKeybindings.func3(0xc0000b6140, 0xc0001bc360, 0x5, 0xc000000101)
/home/david/github/kbtui/main.go:134 +0x36
github.com/awesome-gocui/gocui.(*Gui).execKeybinding(...)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:747
github.com/awesome-gocui/gocui.(*Gui).execKeybindings(0xc0000b6140, 0xc0001bc360, 0xc00010fd68, 0x4, 0x5, 0xc0001bc480)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:733 +0x110
github.com/awesome-gocui/gocui.(*Gui).onKey(0xc0000b6140, 0xc00010fd68, 0x2, 0x0)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:694 +0x164
github.com/awesome-gocui/gocui.(*Gui).handleEvent(...)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:455
github.com/awesome-gocui/gocui.(*Gui).MainLoop(0xc0000b6140, 0x0, 0xc00010ff20)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:415 +0x202
main.main()
/home/david/github/kbtui/main.go:51 +0x372
Configuration via TOML file instead of compiled userConfig.go
/d
crashes kbtui
panic: runtime error: index out of range [1] with length 1
goroutine 1 [running]:
main.cmdDownloadFile(0xc0001db200, 0x1, 0x1)
/home/david/github/kbtui/cmdDownload.go:22 +0x4b7
main.handleInput(0x586941, 0x5, 0x28, 0x5)
/home/david/github/kbtui/main.go:478 +0x355
main.initKeybindings.func3(0xc0000b6140, 0xc0001c8360, 0x5, 0xc000000101)
/home/david/github/kbtui/main.go:134 +0x36
github.com/awesome-gocui/gocui.(*Gui).execKeybinding(...)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:747
github.com/awesome-gocui/gocui.(*Gui).execKeybindings(0xc0000b6140, 0xc0001c8360, 0xc00010fd68, 0x4, 0x5, 0xc0001c8480)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:733 +0x110
github.com/awesome-gocui/gocui.(*Gui).onKey(0xc0000b6140, 0xc00010fd68, 0x2, 0x0)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:694 +0x164
github.com/awesome-gocui/gocui.(*Gui).handleEvent(...)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:455
github.com/awesome-gocui/gocui.(*Gui).MainLoop(0xc0000b6140, 0x0, 0xc00010ff20)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:415 +0x202
main.main()
/home/david/github/kbtui/main.go:51 +0x372
When testing i'd like to run go run build.go build && ./kbtui
- problem is that build.go build doesn't return the correct status code pr unix standards - so my terminal, even if build fails, thinks that the build succeeded, starting up kbtui - which is not ideal, as it then runs an obsolete version
Allow bots to be written using typeCommands or various botCommands
PgUp/PgDn works when there is no $REPL
part exists in output_format
, but when I add it to see who replied to what, I suddenly can't scroll.
There is also another issue even when I delete the $REPL
part where I can't scroll farther than a given length while scrolling, but I don't think that could be a big issue, since I could still see some previous messages.
typing /re
into the input box crashes the program.
panic: runtime error: index out of range [1] with length 1
goroutine 1 [running]:
main.cmdReply(0xc00037ed30, 0x1, 0x1)
/home/david/github/kbtui/cmdReply.go:24 +0x33b
main.handleInput(0x5865c1, 0x5, 0x28, 0x5)
/home/david/github/kbtui/main.go:478 +0x355
main.initKeybindings.func3(0xc000192000, 0xc0001be360, 0x5, 0xc000000101)
/home/david/github/kbtui/main.go:134 +0x36
github.com/awesome-gocui/gocui.(*Gui).execKeybinding(...)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:747
github.com/awesome-gocui/gocui.(*Gui).execKeybindings(0xc000192000, 0xc0001be360, 0xc00012fd68, 0x4, 0x5, 0xc0001be480)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:733 +0x110
github.com/awesome-gocui/gocui.(*Gui).onKey(0xc000192000, 0xc00012fd68, 0x2, 0x0)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:694 +0x164
github.com/awesome-gocui/gocui.(*Gui).handleEvent(...)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:455
github.com/awesome-gocui/gocui.(*Gui).MainLoop(0xc000192000, 0x0, 0xc00010ff20)
/home/david/.go/src/github.com/awesome-gocui/gocui/gui.go:415 +0x202
main.main()
/home/david/github/kbtui/main.go:51 +0x372
Replies should show the original message above the reply for context
as the system currently doesn't have all the features the keybase CLI has - it'd be nice to be able to run keybase features directly from the TUI.. so forinstance writing /exec follow haukened
would equal running keybase follow haukened
- this would make a lot of things possible within the TUI without us having to work on implementing them (we can also implement them later on)
Describe the solution you'd like
I'd love to see a title on my terminal when inside kbtui.
this can in theory be set with https://www.reddit.com/r/golang/comments/a51266/how_get_or_set_the_console_title_in_go/ but only works for unix.. maybe we should look at a crossplatform way of doing it. maybe through our GUI framework
Not sure what specific solution we should go with
Not sure if this is even possible, but it'd be cool if we could support markdown links [name](link)
- it might however be problematic in terminals.
Upgrades to colour system for customization and stability across various platforms
Home and End should take you to beginning/end of the input box or edit box by moving cursor to its maximum or minimum extent
Describe the bug
When running edit command, the view/message is cut off or not displayed properly. Sometimes the cursor goes out of whack.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Edit box should appear, populated with /e, message ID, and the message to be edited. Message should be a string that can be edited, and input should be put at the cursor.
Additional context
Could be a problem in main.go
's layout func, as well as cmdEdit.go
's actual edit/setting commands?
The codebase for kbtui
is becoming a mess. There are too many files in the flat folder, and cmd requests would only cause more files.
./cmd/cmdX.go
- Command files
./tcmd/tcmdX.go
- Type command files
./interface/X.go
- Interface files (tab completion, colors etc)
How will commands access helper funcs and global vars when not in the same dir as main?
Can there be ./globals/X.go
that are imported by everything? Is that Kosher?
Scrolling up and down through a channel should be an easy thing to do using Pages from chat.Read() - hopefully it would be possible to avoid the bug the Keybase gui has where when you're scrolling, the chat likes to jump all over the place?
Describe the bug
Word wrap splitting words with newlines when displaying to chat and feed window
Expected behavior
A newline should be inserted in the message before the last space on a line causing the word that wouldn't fit to be printed on an entirely new line, repeated for each line.
Additional context
X size of a view can be found in gocui.Size() func
Traverse the string backwards from X.size, on first space found replace with \n
Traverse the string backwards from X.size * n? Might need better math but in essence replace the last space of every line with a newline char (and a space for the GUI users)
When you write a message which doesn't send (due to lack of internet connection or something) it simply drops it and then show an error in the feed.
It'd be nice if it showed the error AND maybe put the message back into the input field, so i didn't lose my way to long message to my dad about how awesome my daughter is - in theory.
running ´/` makes the program crash. (in current develop branch)
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.