A terminal IRC client

Overview

tiny - Yet another terminal IRC client

tiny is an IRC client written in Rust.

Features

  • Clean UI: consecutive join/part/quit messages are shown in a single line, time stamps for a message is omitted if it's the same as the message before. (inspired by irc-core)

  • All mentions to the user are collected in a "mentions" tab, including server and channel information. "mentions" tab solves the problem of missing mentions to you in channels after hours of inactivity.

  • Mentions to the user in a channel is highlighted (the channel tab is also highlighted in the tab list)

  • Simple config file format for automatically connecting to servers, joining channels, registering the nickname etc. See configuration section below.

  • Nick tab-completion in channels

  • Nicks in channels are colored.

  • Disconnect detection and automatic reconnects. You can keep tiny running on your laptop and it automatically reconnects after a sleep etc.

  • Key bindings inspired by terminal emulators and vim. See key bindings section below.

  • Configurable colors

  • SASL authentication

  • Configurable desktop notifications on new messages (opt-in feature behind a feature flag, see below)

  • znc compatible

  • TLS support

Installation

tiny works on Linux and OSX. Windows users can run it under Windows Subsystem for Linux.

For pre-built binaries see releases. To build from source make sure you have Rust 1.48 or newer. By default tiny uses rustls for TLS support, and desktop notifications are disabled.

  • To use system TLS library (OpenSSL or LibreSSL), add --no-default-features --features=tls-native to the command you're using. Note that this requires OpenSSL or LibreSSL headers and runtime libraries on Linux.

  • To enable desktop notifications add --features=desktop-notifications. This requires libdbus on Linux.

To install in a clone:

cargo install --path tiny

If you don't want to clone the repo, you can use

cargo install --git https://github.com/osa1/tiny

If you have an older version installed, add --force to the command you're using.

Arch Linux users can install tiny from AUR.

tiny is tested on Linux and OSX.

Configuration

tiny looks for these places for a config file:

  • $XDG_CONFIG_HOME/tiny/config.yml
  • (when $XDG_CONFIG_HOME is not defined) $HOME/.config/tiny/config.yml
  • (deprecated) $HOME/.tinyrc.yml

when a config file is not found in one of these locations tiny creates one with defaults and exists, printing path to the config file. Edit that file before re-running tiny to change the defaults.

A note on nick identification: Some IRC servers such as ircd-seven (used by Freenode) and InspIRCd (used by Mozilla) support identification via the PASS command. This way of identification (rather than sending a message to a service like NickServ) is better when some of the channels that you automatically join require identification. To use this method enter your nick password to the pass field in servers.

Command line arguments

By default (i.e. when no command line arguments passed) tiny connects to all servers listed in the config. tiny considers command line arguments as patterns to be matched in server addresses, so you can pass command line arguments to connect to only a subset of servers specified in the config. For example, in this config:

servers:
    - addr: chat.freenode.net
      ...

    - addr: irc.gnome.org
      ...

By default tiny connects to both servers. You can connect to only the first server by passing freenode as a command line argument.

You can use --config <path> to specify your config file location.

Key bindings

  • C-a/C-e move cursor to beginning/end in the input field

  • C-k delete rest of the line

  • C-w delete a word backwards

  • C-left/C-right move one word backward/forward

  • page up/page down, shift-up/shift-down, or C-u/C-d to scroll

  • C-n/C-p next/previous tab

  • C-c enter quit (asks for confirmation)

  • alt-{1,9} switch to nth tab

  • alt-{char} switch to next tab with underlined char

  • alt-0 switch to last tab

  • alt-left/right move tab to left/right

  • C-x edit current message in $EDITOR

Commands

Commands start with / character.

  • /help: Show help messages of commands listed below.

  • /msg <nick> <message>: Send a message to a user. Creates a new tab.

  • /join <channel>: Join to a channel

  • /close: Close the current tab. Leaves the channel if the current tab is a channel. Leaves the server if the tab is a server.

  • /connect <hostname>:<port>: Connect to a server. Uses defaults in the config file for nick, realname, hostname and auto cmds.

  • /connect: Reconnect to the current server. Use if you don't want to wait tiny to reconnect automatically after a connectivity problem.

  • /away <msg>: Set away status

  • /away: Remove away status

  • /nick <nick>: Change nick

  • /names: List all nicks in the current channel. You can use /names <nick> to check if a specific nick is in the channel.

  • /reload: Reload configuration

  • /clear: Clears tab contents

  • /switch <string>: Switch to the first tab which has the given string in the name.

  • /ignore: Ignore join/quit messages in a channel. Running this command in a server tab applies it to all channels of that server. You can check your ignore state in the status line.

  • /notify [off|mentions|messages]: Enable and disable desktop notifications. Running this command in a server tab applies it to all channels of that server. You can check your notify state in the status line.

Server commands

For commands not supported by tiny as a slash command, sending the command in the server tab will send the message directly to the server.

Examples:

  • LIST will list all channels on the server
  • MOTD will display the server Message of the Day
  • RULES will display server rules
  • etc...

Community

Join us at #tiny in irc.oftc.net to chat about anything related to tiny!

Comments
  • Add ability to read pass from env variables

    Add ability to read pass from env variables

    With this you could write something like below and the password will be read from the env variable.

    servers:
      - addr: irc.freenode.net
        port: 6667
        nicks: [meain]
        pass: "$FREENODE_PASSWORD"
    
    opened by meain 51
  • TUI feature request: grow text field vertically instead of scrolling #101

    TUI feature request: grow text field vertically instead of scrolling #101

    Modified text_fields.rs to expand vertically when reaching the end of the line.

    @osa1 let me know if there's anything I should fix or look out for (maybe I didn't test enough areas).

    Side by side diff may be easier to see the changes.

    opened by trevarj 45
  • SASL authentication

    SASL authentication

    Need to set this in config file, as drafted in https://github.com/osa1/tiny/issues/30#issuecomment-342409032:

    servers:                                                                                                                                              
        - addr: chat.freenode.net                                                                                                                         
          port: 6667                                                                                                                                      
          hostname: archlinux                                                                                                                             
          realname: Chiu Yue Chun                                                                                                                         
          nicks: [BrianOn99]                                                                                                                              
          auto_cmds: []                                                                                                                                   
          auth:                                                                                                                                           
              sasl_method: PLAIN                                                                                                                          
              sasl_username: BrianOn99                                                                                                                    
              sasl_password: password_hidden_for_security
    

    Only PLAIN authenication is implemented. I think it is sufficient for most users.

    Fix #90

    I have only tested it on freenode.

    opened by BrianOn99 29
  • Better `/ignore`

    Better `/ignore`

    Rest of the fixes from https://github.com/osa1/tiny/pull/35

    • [x] What if I disabled notifications in a server, and then run /join #channel ? The channel won't inherit the notification state.
    • [x] Because of this, /ignore in auto_cmds won't be useful right now.
    • [x] There's no way to see /ignore state (true or false) in a tab, so there's no way to tell whether the channel is quiet or /ignore is enabled.
    • [x] If I have 3 /ignored channels, and 3 non-/ignored, and run /ignore in the server tab, I'll still have 3 ignores and 3 non-ignores. This is not really intuitive, I think most UIs would keep /ignore state of the server, toggle it, and then set every other tab's /ignore state to the server's.
    opened by meain 27
  • msg to user from second client appears in tiny as writing to yourself

    msg to user from second client appears in tiny as writing to yourself

    tiny 0.7.0 (d52029f)

    Currently I am running soju bouncer and this error appears only with tiny client:

    1. Send private message from second client (irssi or revolution irc, for example) to user.
    2. In second client, message to user appears in user tab.
    3. tiny client shows this message to user in tab with your nickname.
    bug 
    opened by shumvgolove 24
  • Implement Termbox cell API using termion

    Implement Termbox cell API using termion

    This ports termbox's "cell" abstraction to Rust, removing the last piece of C code from the repo.

    Input and event handling of the original termbox was removed long time ago, and we've been removing bits and pieces from the original termbox since then, leaving only the bits we need. The remaining pieces was basically just the cell abstraction, which we implement in Rust with this patch, getting some help from termion.

    Performance is on par with the original C implementation: libtiny_tui's "bench" example, when passed a 19M file, runs in 20.1s in C implementation, and 20.2s in Rust implementation. C implementation writes 918,141,709 bytes to stdout, Rust implementation write 915,387,921 bytes (-0.2%). The difference may either be better cursor location caching in the Rust version or a bug. So far I'm unable to find any rendering bugs, so I'm inclined to think the former.

    Co-authored-by: Emilio González [email protected]

    opened by osa1 22
  • Logger fails to create log file when channel name includes forward slash

    Logger fails to create log file when channel name includes forward slash

    @Kabouik reports in #211

    I think the issue might be related to Gitter rooms being formatted with a slash in their name, which must conflict with the way tiny sets filenames for logs. You can see above in my configuration file that the channel I wanted to join on irc.gitter.im was "#jarun/nnn". If this is really the cause, then perhaps an acceptable workaround would be to replace / with another character when creating new log files, such as -?

    In other words when the channel name contains / logger fails to create the log file and reports this in "mentions" tab:

    Logger error: Os { code: 2, kind: NotFound, message: "No such file or directory" }
    

    Two TODOs:

    • [x] The error message should show the file path
    • [x] We should handle channel names with /s in them (as far as I can see RFC 2812 allows this)
    bug 
    opened by osa1 20
  • Enhanced /help command

    Enhanced /help command

    Entering /help will now spawn a new "dummy" tab that shows all the possible commands, along with all the currently configured key bindings.

    Closes #287

    opened by trevarj 18
  • Freezing on startup on ArchWSL

    Freezing on startup on ArchWSL

    Bug

    When starting tiny on ArchWSL it will instantly freeze on startup no longer responding to any input. I compiled it myself on the same system and there were no errors.

    Versions

    tiny: Commit 4d3532

    bug 
    opened by LordMZTE 18
  • Desktop notifications

    Desktop notifications

    for #72

    By default notifications is set to mentions

    • [x] Notifications on messages
    • [x] /notify [off/mentions/messages] command to notify mode
    • [ ] config file option for notify setting on a per server basis ( is this necessary? )
    opened by meain 18
  • ability to mention users who posted a message before and aren't in the user list

    ability to mention users who posted a message before and aren't in the user list

    some servers, such as irc.twitch.tv don't show users in the user list (at least they don't show up when using /names). And tab completion doesn't suggest them. This makes it annoying to mention someone because tab completion cannot be used. This could simply be fixed by allowing to mention users who have sent a message before. however, this may also be a problem with the /names command because i have seen a user list in other IRC clients such as HexChat before on the same servers

    enhancement question 
    opened by LordMZTE 17
  • IRC over Tor

    IRC over Tor

    Hey, I tried to connect to the OFTC IRC onion site. I disabled tls, placed the onion link in the addr and used torsocks with tiny, but it couldn't connect. I would like to know if there's something that I'm missing. Thanks!

    opened by marshallishere 7
  • 100% CPU in a $EDITOR command due to the O_NONBLOCK set on STDIN_FILENO

    100% CPU in a $EDITOR command due to the O_NONBLOCK set on STDIN_FILENO

    Not sure if this is in your code or a library, but setting O_NONBLOCK on STDIN_FILENO and then forking out to an $EDITOR that assumes STDIN_FILENO is blocking can case 100% CPU usage in the $EDITOR. It may be prudent to default to turning off O_NONBLOCK across the fork/exec of the $EDITOR, and then to ensure that $EDITOR has not fiddled around with the blocking of the shared STDIN_FILENO afterwards.

    (This was on OpenBSD 7.2 using ex(1) as the $EDITOR; I also have mailed a patch to the OpenBSD folks to turn off O_NONBLOCK in ex and vi.)

    opened by thrig 3
  • Move cargo release configuration to CI

    Move cargo release configuration to CI

    By setting these in Cargo.toml everyone is forced to build with them. It is better to leave the defaults to Cargo and the user building the project. If there are important gains in binary size or speed with these options they can continue to be set for the official builds as performed by CI.

    opened by e00E 2
  • /channels as a parameterized LIST command

    /channels as a parameterized LIST command

    To list channels I currently use LIST, but sometimes I want to change the ordering, or perhaps order by number of users instead.

    /channels [ORDER_BY] [ORDERING]
      ORDER_BY: name (default), num_users
      ORDERING: ascending, descending
    

    No args to the command would result in the default LIST behavior.

    feature request 
    opened by eHammarstrom 6
  • text artefact when pasting

    text artefact when pasting

    When I paste some lines, something, it mess up the tiny UI, and I have like text artefacts which appears in most channels.

    tiny

    .1.gz apprears then in many channels at the same place when I switch channel

    bug libtiny_tui 
    opened by eoli3n 0
Releases(v0.10.0)
  • v0.10.0(Nov 7, 2021)

    Thanks to @trevarj for contributing to this release.

    New features

    • New command /quit added for quitting. Key binding for quitting (C-c enter) works as before.
    • Key bindings can be configured in the config file. See the wiki page for details. (#328, #336)

    Bug fixes and other improvements

    • /msg <nick> <message> command now accepts anything as <nick> as long as it doesn't start with #. (#324)
    • Error message when sending a message in the mentions tab improved. (#329)
    • Logger now prints "Logging ended at ..." lines when you close a tab or exit tiny. (8061042)
    • Minor improvements in logging (d0505f2, bbb4b81)
    • /join (without arguments) now rejoins the current channel. (#334)
    • Handling of IRC formatting characters (colors etc.) in TUI and logger improved:
      • TUI now handles "reset" control character, to reset the text style to the default.
      • Logger now filters out all control characters before writing to the file. (#360)

    Note on build names

    • tiny-ubuntu-20.04-dbus: Desktop notifications enabled, uses rustls for TLS.
    • tiny-ubuntu-20.04-libssl-dbus: Desktop notifications enabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-20.04-libssl: Desktop notifications disabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-20.04-static: Desktop notifications disabled, uses rustls for TLS. No dynamic dependencies.
    • tiny-ubuntu-20.04: Desktop notifications disabled, uses rustls for TLS.
    Source code(tar.gz)
    Source code(zip)
    tiny-ubuntu-20.04-dbus.tar.gz(2.05 MB)
    tiny-ubuntu-20.04-libssl-dbus.tar.gz(1.36 MB)
    tiny-ubuntu-20.04-libssl.tar.gz(1.33 MB)
    tiny-ubuntu-20.04-static.tar.gz(2.08 MB)
    tiny-ubuntu-20.04.tar.gz(2.02 MB)
  • v0.9.0(May 12, 2021)

    Starting with this release, tarballs on GitHub are now built on Ubuntu 20.04 (instead of 18.04).

    Bug fixes and other improvements

    • Fixed highlighting tabs when /ignore is set. (#291)
    • /statusline removed. See 6abc671 commit message for the motivation.
    • Backspace handling in newer xterms fixed. (#295)
    • When NickServ identification is used tiny now send identify messages when changing nicks. (#252)
    • Tab characters in incoming messages are now rendered as 8 spaces. Previously tab characters would be removed, so the message "\thi" would be rendered as "hi" instead of " hi". (#305)
    • Fixed a bug when getting RPL_NAMREPLY from a server for channels we haven't joined. Previously we would create a channel in the TUI for each channel in the response. (#302)
    • tiny now checks nick lists and realnames in the config file to make sure they are not empty. (#314)

    Note on build names

    • tiny-ubuntu-20.04-dbus: Desktop notifications enabled, uses rustls for TLS.
    • tiny-ubuntu-20.04-libssl-dbus: Desktop notifications enabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-20.04-libssl: Desktop notifications disabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-20.04-static: Desktop notifications disabled, uses rustls for TLS. No dynamic dependencies.
    • tiny-ubuntu-20.04: Desktop notifications disabled, uses rustls for TLS.
    Source code(tar.gz)
    Source code(zip)
    tiny-ubuntu-20.04-dbus.tar.gz(2.02 MB)
    tiny-ubuntu-20.04-libssl-dbus.tar.gz(1.31 MB)
    tiny-ubuntu-20.04-libssl.tar.gz(1.28 MB)
    tiny-ubuntu-20.04-static.tar.gz(2.15 MB)
    tiny-ubuntu-20.04.tar.gz(1.99 MB)
  • v0.8.0(Dec 10, 2020)

    Thanks to @trevarj and @shumvgolove for contributing to this release.

    New features

    • Channels with join/leave events are now highlighted with a yellow-ish color. Default color can be overridden in the config file. (#262)

    Bug fixes and other improvements

    • It's now possible to build tiny with stable Rust 1.48 or newer. Previously tiny required nightly toolchain. (#241)
    • Fixed a TUI bug when scrollback is set. (#265)
    • In builds without desktop notification support, /notify commands now print a helpful message on how to enable it. Previously /notify would behave as if desktop notification support is enabled but notifications would not work. (#270)
    • Fixed a bug when showing messages relayed by bouncers. (#271)
    • Fixed losing input field contents when pasting a multi-line text and $EDITOR is not set. (#280)
    • Multi-line pastes now inserted into the cursor location. Previously the text would be inserted at the end of the current line.
    • Fixed a bug when showing messages with host mask as message target. (#278)

    Note on build names

    • tiny-ubuntu-18.04-dbus: Desktop notifications enabled, uses rustls for TLS.
    • tiny-ubuntu-18.04-libssl-dbus: Desktop notifications enabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-18.04-libssl: Desktop notifications disabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-18.04-static: Desktop notifications disabled, uses rustls for TLS. No dynamic dependencies.
    • tiny-ubuntu-18.04: Desktop notifications disabled, uses rustls for TLS.
    Source code(tar.gz)
    Source code(zip)
    tiny-ubuntu-18.04-dbus.tar.gz(1.94 MB)
    tiny-ubuntu-18.04-libssl-dbus.tar.gz(1.34 MB)
    tiny-ubuntu-18.04-libssl.tar.gz(1.31 MB)
    tiny-ubuntu-18.04-static.tar.gz(2.05 MB)
    tiny-ubuntu-18.04.tar.gz(1.91 MB)
  • v0.7.0(Sep 20, 2020)

    Thanks to @trevarj, @kennylevinsen, and @LordMZTE for contributing to this release.

    New features

    • New command /help added. (ec00007)
    • /names now sorts nicks lexicographically. (#235)
    • To make joining channels with +R mode (which usually means joining is only allowed after identification via NickServ) more robust, tiny now makes 3 attempts to join a channel, with a 10-second delay after each attempt, when it gets a 477 response and the user has NickServ identification enabled (nickserv_ident field in the config). Even though we send IDENTIFY messages (after RPL_WELCOME) before JOIN messages (after RPL_ENDOFMOTD), sometimes identification takes too long and JOIN command fails with a 477. We now try joining again with 10 seconds breaks, up to 3 times. (#236, #240)
    • When $EDITOR is (n)vim or emacs, C-x now places the cursor at its location in the input field in the vim/emacs buffer. (#243)

    Bug fixes and other improvements

    • Fixed a TUI bug introduced in 0.6.0 when pasting long single-line text using C-x. (#225)
    • Fixed a TUI bug introduced in 0.6.0 when rendering a long line of join/leave events. (#227)
    • Password fields in the default config file (created automatically on first run) are now commented-out, to allow connecting to tiny IRC channel with the default config without having to make changes. (2af2357)
    • tiny now re-sets current away status on reconnect. Previously the away status would be lost. (#234)
    • Improved RPL_YOURHOST parsing for parsing server names of some non-standard-conforming servers. This is not a user-visible change unless you're connecting to servers that don't follow IRC standards closely. (#239)
    • Fixed a TUI crash when the terminal height is less than two lines.
    • Debug logs (enabled with TINY_LOG env variable using env_logger filter syntax) are now printed to tiny_debug_logs.txt file in the log directory. If logging is disabled then the file is created at tiny's working directory. (#238)
    • Handling of IRC messages with ambiguous prefix (when it's unclear whether the sender is a server or nick) improved. tiny should now work better with some bouncers such as soju. (#249)
    • Fixed a bug in IRC message parser. (#251)
    • Fixed a bug where on spotty connections a server tab (not the entire application) would get stuck in "Connecting..." stage (while opening a socket to the server) and not respond to user commands like /connect. (#255)
    • Fixed a bug where tiny would print "Reconnecting in 30 seconds" on connection error (or timeout) but would actually reconnect in 60 seconds instead of 30. (bfd4e19)
    • TUI now adds a nick to the tab completion list of a channel when the user posts for the first time. This is to support tab completion on some servers that don't implement the RFCs properly. (#253)
    • Logger is slightly improved to work better with servers that don't implement the RFCs properly. (85051ae)
    • Fixed a bug when first argument to /msg is a channel rather than a nick. The command is supposed to be used for sending a message to a user so we now do more error checking and reject the command if the first character is for a channel name. (62df491)
    • Implemented channel name case sensitivity rules according to RFC 2812. This fixes a bug when we join e.g. #MyChannel and someone sends a message to #mychannel. In that case some servers send PRIVMSGs to users in the channel with the sender's encoding (#mychannel), which would previously cause tiny to (incorrectly) create a new tab for the channel #mychannel instead of showing the message in #MyChannel. (#248)
    • TUI tab bar layout fixed when channel names contain non-ASCII unicode characters. (0c86a32)
    • tiny binaries are much smaller, thanks to removed features in dependencies like tokio, futures, and env_logger. For example, libdbus + libssl build is 4.9M in 0.6.0 and 4.0M in 0.7.0.

    Note on build names

    • tiny-ubuntu-18.04-dbus: Desktop notifications enabled, uses rustls for TLS.
    • tiny-ubuntu-18.04-libssl-dbus: Desktop notifications enabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-18.04-libssl: Desktop notifications disabled, uses native TLS library (dynamically linked) for TLS.
    • tiny-ubuntu-18.04-static: Desktop notifications disabled, uses rustls for TLS. No dynamic dependencies.
    • tiny-ubuntu-18.04: Desktop notifications disabled, uses rustls for TLS.
    Source code(tar.gz)
    Source code(zip)
    tiny-ubuntu-18.04-dbus.tar.gz(1.95 MB)
    tiny-ubuntu-18.04-libssl-dbus.tar.gz(1.36 MB)
    tiny-ubuntu-18.04-libssl.tar.gz(1.33 MB)
    tiny-ubuntu-18.04-static.tar.gz(2.06 MB)
    tiny-ubuntu-18.04.tar.gz(1.93 MB)
  • v0.6.0(Jun 28, 2020)

    Thanks to @trevarj, @Kabouik, @meain, and @jbg for contributing to this release.

    New features

    • It's now possible to build tiny with rustls instead of native-tls. See README for instructions. (#172)
    • A new optional server field 'alias' added to the configuration file for specifying aliases for servers, to be shown in the tab line. This is useful when a server address is long, or just an IP address, or you want to show something different than the server address in the tab bar (#186).
    • tiny now has a proper CLI, supporting --help and --version arguments.
    • Input field now grows vertically on overflow, instead of scrolling. The old scrolling behavior is used when there isn't enough space in the window to extend input field vertically. (#101)
    • A new setting 'scrollback' added to limit max. number of lines in tabs. The limit is off by default (old behavior). (#219)

    Bug fixes and other improvements

    • TUI: Tab bar scrolls to left after closing tabs to fit more tabs into the visible part of the tab bar (#164). See #164 for an example of previous behavior.
    • tiny now reads the system cert store (for TLS connections) only once, instead of on every new connection. (#172)
    • A bug when rendering exit dialogue (shown on C-c) fixed.
    • TUI: A text field bug is fixed when updating the scroll value after deleting a word with C-w.
    • Fixed a panic when a nick list of a server or the default nick list is empty. (#184)
    • Fixed handling of invalid UTF-8 sequences in messages. (#194)
    • A few crashes when connecting to some IRC servers fixed. tiny is now more resilient to non-standard-conforming messages from servers. (#211)
    • Fixed a bug in logger when the channel name contains forward slash character. (#214)
    • Fixed editor support (C-x). Old implementation used to block tiny's event loop while an editor is running and cause connection timeouts when it runs for too long. Editors are now run in a separate thread without blocking tiny's event loop. (#185)
    • tiny now breaks long lines without whitespace into multiple lines. Previously we'd only break lines at whitespace, so long lines without any whitespace would be cut off at the end of the screen. (#202)
    Source code(tar.gz)
    Source code(zip)
    tiny-ubuntu-18.04-dbus.tar.gz(2.24 MB)
    tiny-ubuntu-18.04-libssl-dbus.tar.gz(1.67 MB)
    tiny-ubuntu-18.04-libssl.tar.gz(1.64 MB)
    tiny-ubuntu-18.04-static.tar.gz(2.34 MB)
    tiny-ubuntu-18.04.tar.gz(2.21 MB)
  • v0.5.1(Jan 8, 2020)

    • When a domain name resolves to multiple IP addresses tiny now tries connecting to the rest of the addresses when one fails (#144).
    • Fixed a bug introduced in 0.5.0 where the client did not update its internal state after changing nick, causing TUI and client state disagreeing on what the current nick is (#149, introduced with #138).
    • tiny no longer needs a 'hostname' field in servers in the config file (#150).
    • Version requests are now shown in the server tab if a tab for the requester does not exist (#145).
    • Fixed a bug where we forgot to reset "nick accepted" state on disconnect, causing incorrect nick selection when reconnecting (introduced with #138).
    • Fixed a bug that caused the client to loop when the connection is closed on the remote end (#153, another bug introduced with #138).
    • tiny now uses $XDG_CONFIG_HOME/tiny/config.yml for the default config file location. The old location $HOME/.tinyrc.yml is still used when there isn't a config file in the new location, to avoid breakage. $HOME/.config is used for $XDG_CONFIG_HOME when the env variable is not available (#152).
    • Fixed a panic when some clients return later than TUI when exiting tiny.
    Source code(tar.gz)
    Source code(zip)
    tiny-ubuntu_18_04_amd64.tar.gz(1.52 MB)
  • 0.5.0(Jan 9, 2020)

    Starting with this release tiny is no longer distributed on crates.io. Please get it from the git repo at https://github.com/osa1/tiny.

    • With the exception of TUI most of tiny is rewritten for this release. See #138 for the details. The TLDR is that the code should now be easier to hack on.
    • tiny now properly logs all messaging to the log_dir specified in tinyrc. (#100, #56, #132)
    • Address name resolving step no longer blocks the UI, and is interruptible (e.g. by issuing a /connect command, or by closing the tab/client) (#3).
    • Fixed glitches in the TUI when rendering non-visible (0-column) or wide (shown in multiple terminal columns) unicode characters (#115).
    Source code(tar.gz)
    Source code(zip)
  • 0.4.5(Jan 9, 2020)

    • IRC color codes and ASCII control chars are now removed from desktop notifications to avoid weird notification rendering and glitches.
    • Fixed a bug that caused panics when running tiny with spotty connections (lots of disconnects) (#119).
    • Fix build with Rust nightly (#133), fix new warnings.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.4(Jan 9, 2020)

    • A bug when using an invalid nick in /msg command fixed (#111).
    • Bumped native-tls dependency -- fixes build for newer OpenSSLs (#114).
    • A bug when sending multi-line text (via C-x or pasting) fixed (#113).
    • Update to C-x (paste mode): empty lines are now sent as a space (" "). Useful when e.g. sending long text with multiple paragraphs (#112).
    • Fixed deprecation warnings for nightly.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.3(Jan 9, 2020)

    • tiny now supports pasting multi-line strings. It runs $EDITOR to let you edit the paste before sending. After closing the editor the final contents of the file (excluding comment lines) are sent. Note: we currently don't support commands in paste mode, so none of the lines can start with /.

    • Ney key binding C-x implemented for editing current message in $EDITOR.

    • Fixed a bug when pasing a string starting with a newline (#86).

    • auto_cmds config field is gone and nick change and identification handling is updated.

      A major pain point for me has been the handling of nick changes when the server doesn't support SASL (sigh). We now solve this problem by simplifying (removing!) auto_cmds field and refactoring nick change logic:

      • We now only consider the nick as changed if we hear a NICK response from the server. This way we no longer have to revert a nick change when the request fails or is rejected.

      • Config file format changed: auto_cmds is gone, two new fields are added: join (a list of channels) and nickserv_ident (nickserv password to send on connecting and nick change). Note that join is technically old, but it just wasn't advertised as a config file field.

      This breaks backwards compatibility, but simplifies the code and nick changes and identification are now handled better.

    Source code(tar.gz)
    Source code(zip)
  • v0.4.2(Jan 9, 2020)

    • Previously tiny showed a - line in a private message tab when we got a QUIT message from the target of the tab. It now shows a + line when the user quits and then joins to a channel that we participate in.
    • A bug that caused tiny to crash when dbus daemon is not configured properly fixed (#97).
    Source code(tar.gz)
    Source code(zip)
  • v0.4.1(Jan 9, 2020)

  • 0.4.0(Jan 9, 2020)

    • /switch command added to quickly switch to a different tab using a substring of the tab name.
    • Del key is now handled. It deletes character under the cursor.
    • Some tweaks and a bug fix (#45) in tab bar rendering. Selected tab is now stays visible in the tab bar after resizing.
    • Connection closure on remote side when TLS is enabled is now handled (#48).
    • alt-char bindings implemented to switching between tabs.
    • Fixed some bugs in join command used in auto_cmds (#49, #38).
    • Tabs can now be moved left/right with alt-left/right keys (#52).
    • Input field cursor location now preserved after resize.
    • TOPIC messages are now handled (#58).
    • RPL_AWAY is now handled (#55). Away message is shown in user tab.
    • /ignore command added to ignore join/quit messages in channels.
    • New server config field pass added for connecting to password-protected servers (e.g. znc).
    • Fixed a bug that caused tiny to fail to connect via TLS on some systems (#64).
    • Fixed some bugs that caused incorrect tab bar rendering in some cases (#76).
    • tiny no longer creates ~/logs directory. This directory was used for debug logs in the past (#82).
    • NOTICE messages (used by services like NickServ, MemoServ, Global etc.) are now shown in server tabs unless there's already a tab for the sender (#21).
    • New command line argument --config added for specifying config file location (#81).
    • tiny can now show desktop notifications for incoming messages. See README for notification options. Defaults: show notifications for mentions in channels and all private messages.
    • Added SASL authentication support. See the configuration section in README for how to enable it.
    Source code(tar.gz)
    Source code(zip)
Owner
Ömer Sinan Ağacan
Ömer Sinan Ağacan
A new kind of terminal

notty - not a typewriter notty is a virtual terminal like xterm, gnome-vte, sh, or rxvt. Unlike these programs, notty is not intended to emulate a DEC

Saoirse Shipwreckt 2.2k Jan 6, 2023
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

Wez's Terminal A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust User facing docs and guide a

Wez Furlong 6.7k Jan 2, 2023
A (self hosted) pastebin for easily sharing text right from the terminal

termpad termpad allows you to easily host a pastebin server for saving and viewing text right from the terminal, or the browser. Client Usage Assuming

Spyros Roum 28 Aug 29, 2022
A terminal IRC client

tiny - Yet another terminal IRC client tiny is an IRC client written in Rust. Features Clean UI: consecutive join/part/quit messages are shown in a si

Ömer Sinan Ağacan 812 Dec 20, 2022
Jyoti - A simple IRC bot for use with shell scripts

Jyoti - A simple IRC bot for use with shell scripts Zero dependencies. Simple usage. Hackable. Usage The idea is that Jyoti can be repurposed easily w

Lee 15 Aug 13, 2022
An application for downloading public domain ebooks from irc.

An application for downloading public domain ebooks from irc. Despite the name it is not to be used for illegal activities and I am in no way responsible for any such use.

null 33 Nov 25, 2022
An IRC (RFC1459) parser and formatter, built in Rust.

ircparser An IRC (RFC1459) parser and formatter, built in Rust. ircparser should work on basically any Rust version, but the earliest version checked

Ethan Henderson 2 Oct 18, 2022
convert images to ansi or irc, with a bunch of post-processing filters

img2irc (0.2.0) img2irc is a utility which converts images to halfblock irc/ansi art, with a lot of post-processing filters halfblock means that each

null 6 Apr 4, 2023
Ask the Terminal Anything (ATA): ChatGPT in the terminal

ata: Ask the Terminal Anything ChatGPT in the terminal TIP: Run a terminal with this tool in your background and show/hide it with a keypress. This ca

Rik Huijzer 147 Mar 8, 2023
A terminal ASCII media player. View images, gifs, videos, webcam, YouTube, etc.. directly in the terminal as ASCII art.

Terminal Media Player View images, videos (files or YouTube links), webcam, etc directly in the terminal as ASCII. All images you see below are just m

Max Curzi 36 May 8, 2023
ask.sh: AI terminal assistant that can read and write your terminal directly!

ask.sh: AI terminal assistant that read from & write to your terminal ask.sh is an AI terminal assistant based on OpenAI APIs such as GPT-3.5/4! What'

hmirin 5 Jun 20, 2023
A simple and efficient terminal UI implementation with ratatui.rs for getting quick insights from csv files right on the terminal

CSV-GREP csv-grep is an intuitive TUI application writting with ratatui.rs for reading, viewing and quickly analysing csv files right on the terminal.

Anthony Ezeabasili 16 Mar 10, 2024
Harmony chat client in the terminal!

ilo-toki Harmony chat client in the terminal! Usage Run it with cargo run once you've cloned the repo. If you'd like, you can install the program with

jan Jenwa 2 Dec 15, 2022
A simple API client (postman like) in your terminal

ATAC ⚔?? Table Of Contents Description How to use Binary Compile by yourself Features Current TODO v1.0.0 TODO v2.0.0 Documentation Technical precisio

Julien C. 5 Feb 29, 2024
Meteor Client Installer - Installer to automate the install of Fabric and Meteor Client

This is an installer that automates the install of Meteor and Fabric

Jake Priddle 3 Jun 23, 2021
Provides a mock Ambi client that emulates real sensor hardware such as an Edge client

ambi_mock_client Provides a mock Ambi client that emulates real sensor hardware such as an Edge client. Usage You must have Rust installed to build am

Rust Never Sleeps 2 Apr 1, 2022
Affine-client is a client for AFFINE based on Tauri

Affine Client affine-client is a client for AFFINE based on Tauri Supported Platforms Windows Linux MacOS Download https://github.com/m1911star/affine

Horus 216 Dec 25, 2022
A cross-platform, OpenGL terminal emulator.

Alacritty - A fast, cross-platform, OpenGL terminal emulator About Alacritty is a modern terminal emulator that comes with sensible defaults, but allo

Alacritty 43.7k Dec 28, 2022
A new kind of terminal

notty - not a typewriter notty is a virtual terminal like xterm, gnome-vte, sh, or rxvt. Unlike these programs, notty is not intended to emulate a DEC

Saoirse Shipwreckt 2.2k Jan 6, 2023
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

Wez's Terminal A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust User facing docs and guide a

Wez Furlong 6.7k Jan 2, 2023