Giter VIP home page Giter VIP logo

irccloud's Introduction

IRCCloud Terminal Client

Do you miss the R(etro) in IRC? Still have dreams about BitchX? Who doesn't! For all of this to work you need an IRCCloud account. If you're not familiar with IRCCloud, then I think you should check it out!

Live demo!

Navigation

  • Ctrl+Space: Select channel
  • Tab: Auto-complete nicks
  • Ctrl+b: Switch to channel with most recent activity
  • PgUp/PgDown: Scroll in the channel buffer
  • Home, Ctrl+a: Move to the beginning of the line
  • End, Ctrl+e: Move to the end of the line
  • Ctrl+k: Delete from the cursor to the end of the line
  • Ctrl+w: Delete the last word before the cursor
  • Ctrl+u: Delete the entire line

Configuration

A configuration file is automatically generated if you don't already have one, typically the first time you start the client. The file is created in ~/.config/irccloud. Add the username and password you use for IRCCloud. You can also add trigger words (like your own nick) to get special notifications on channels where those trigger words are mentioned. There's also a last_chan field which will be the first channel you see when you start your client, this is set to the channel you were viewing the last time you closed the client. This way you always get back to where you last left off!

You can also set the only_messages flag to true if you don't want to see join/leave etc. messages in your chat buffers.

username: your_username_here/email
password: secret_password_here
last_chan: '#gonuts'
triggers:
  - cakes
  - my_own_nick
  - cat.gif
only_messages: false

Installing

go get -u github.com/termoose/irccloud

Make sure $GOPATH/bin is added to the $PATH variable. Then run:

irccloud

On the first run a config file will be generated for you in ~/.config/irccloud, update it with your IRCCloud username and password.

If you want to specify a custom config file you can do so with -c:

irccloud -c /my/custom/config.yaml

Homebrew

brew install termoose/tap/irccloud-cli

Flatpak (Linux)

Probably soon

TODO

  • Get text input working, return = send text to channel
  • Make sure channel join opens a new buffer
  • Properly quit on Control+C, so it doesn't mess up the terminal
  • New query window opened for new private messages
  • Show the latest active channels, sorted list of oldest to newest activity
  • Don't quit when we lose websocket connection, display "Reconnecting" dialogue and retry until Ctrl+C
  • Create a loading bar based on numbuffers in oob_include
  • Make auto-completion on nicknames in the current channel buffer
  • Add list of trigger names to config, include own nick by default?
  • Special highlight for channels with trigger events in event bar
  • Show timestamps on chat messages
  • Support nick change messages
  • Show non-message data in chat like join/leave events
  • Find out how to change channel view with alt+Fn or something similar
  • Show operator/voice status in channel member list
  • Get and show fancy ANSI splash art, BitchX style!
  • Should we handle multiple servers? Does irccloud do this? How? (it kinda works)
  • Add support for IRCCloud file upload
  • Get image preview in terminal, ascii-render fallback in unsupported terminal
  • Support IRCCloud's pastebin service, query users with very large text inputs if they want to use pastebin service

irccloud's People

Contributors

termoose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

irccloud's Issues

Runtime error

@termoose

I tried to use termoose with my subscriber account.

My /home/icka/.config/irccloud/config.yaml:

username:[email protected]
password: my_password
triggers:
  - cakes
last_chan: ""
only_messages: false

When starting termoose with /home/icka/go/bin/irccloud, I'm presented with a black screen.

When i try to scroll in the channel buffer, with PgUp/PgDown, termoose closes itself with the following error(s):

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x75ae3b]

goroutine 1 [running]:
github.com/rivo/tview.(*Application).Run.func1(0xc000344620)
	/home/pegasus/go/src/github.com/rivo/tview/application.go:243 +0x82
panic(0x7b6380, 0xb08f80)
	/usr/lib/go-1.13/src/runtime/panic.go:679 +0x1b2
github.com/termoose/irccloud/ui.(*channel).Scroll(...)
	/home/icka/go/src/github.com/termoose/irccloud/ui/channels.go:44
github.com/termoose/irccloud/ui.(*View).Start.func2(0xc00000eee0, 0xc00009fb70)
	/home/icka/go/src/github.com/termoose/irccloud/ui/ui.go:86 +0xcb
github.com/rivo/tview.(*Application).Run(0xc000344620, 0x0, 0x0)
	/home/icka/go/src/github.com/rivo/tview/application.go:318 +0x898
github.com/termoose/irccloud/ui.(*View).Start(0xc000106af0)
	/home/icka/go/src/github.com/termoose/irccloud/ui/ui.go:109 +0x382
main.main()
	/home/icka/go/src/github.com/termoose/irccloud/main.go:64 +0x3a2

Cheers

Log moment that user joined the channel

Hi, thanks for this wonderful piece of software!

It would be a nice feature if the join messages of the user using the tool is also shown in the buffer. Now I have to dig into the timestamps to determine when I joined again.

Is this possible using the IRCCloud API? If so, how can I/we contribute?

Show operator/voice status in channel member list

With support for the following

  • halfop h with prefix %
  • voice v with prefix +
  • operator o with prefix @

Already have (unused) function UserModeString for converting IRCCloud API responses to correct prefixes

Custom path for configuration

Would be neat to have a way to pass the location of the configuration file, like irccloud -c ~/.irccloud/config.yaml.
This would be useful to use a folder by application method.

Cheers

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.