{"id":13611741,"url":"https://github.com/osa1/tiny","last_synced_at":"2025-05-14T00:08:45.661Z","repository":{"id":40003243,"uuid":"49104439","full_name":"osa1/tiny","owner":"osa1","description":"A terminal IRC client ","archived":false,"fork":false,"pushed_at":"2025-04-01T19:44:23.000Z","size":2154,"stargazers_count":1057,"open_issues_count":102,"forks_count":64,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-15T01:53:10.273Z","etag":null,"topics":["irc-client","rust","terminal-app"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osa1.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-01-06T01:43:57.000Z","updated_at":"2025-04-12T18:21:29.000Z","dependencies_parsed_at":"2023-11-16T14:39:13.497Z","dependency_job_id":"b494d95f-ba03-4806-bcaa-d6d13dc93951","html_url":"https://github.com/osa1/tiny","commit_stats":{"total_commits":1053,"total_committers":22,"mean_commits":47.86363636363637,"dds":"0.10541310541310545","last_synced_commit":"eaed50dbf621e18a9e71c92d045ab46eb68da3ca"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2Ftiny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2Ftiny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2Ftiny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osa1%2Ftiny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osa1","download_url":"https://codeload.github.com/osa1/tiny/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254044002,"owners_count":22005056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["irc-client","rust","terminal-app"],"created_at":"2024-08-01T19:02:03.564Z","updated_at":"2025-05-14T00:08:40.645Z","avatar_url":"https://github.com/osa1.png","language":"Rust","funding_links":[],"categories":["Applications","Rust","应用程序 Applications","\u003ca name=\"chat\"\u003e\u003c/a\u003eChat and instant messaging"],"sub_categories":[],"readme":"# tiny - Yet another terminal IRC client\n\ntiny is an IRC client written in Rust.\n\n\u003cp float=\"left\" align=\"middle\"\u003e\n  \u003cimg src=\"/assets/tiny.png\" width=\"430\" /\u003e\n  \u003cimg src=\"/assets/tiny_mac.png\" width=\"430\" /\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/448274/73597059-47e71380-4539-11ea-844d-0ec260691911.png\" width=\"430\" /\u003e\n\u003c/p\u003e\n\n## Features\n\n- Clean UI: consecutive join/part/quit messages are shown in a single line, time\n  stamps for a message is omitted if it's the same as the message before.\n  (inspired by [irc-core](https://github.com/glguy/irc-core))\n\n- All mentions to the user are collected in a \"mentions\" tab, including server\n  and channel information. \"mentions\" tab solves the problem of missing mentions\n  to you in channels after hours of inactivity.\n\n- Mentions to the user in a channel is highlighted (the channel tab is also\n  highlighted in the tab list)\n\n- Simple config file format for automatically connecting to servers, joining\n  channels, registering the nickname etc. See [configuration\n  section](#configuration) below.\n\n- Nick tab-completion in channels\n\n- Nicks in channels are colored.\n\n- Disconnect detection and automatic reconnects. You can keep tiny running on\n  your laptop and it automatically reconnects after a sleep etc.\n\n- Configurable key bindings inspired by terminal emulators and vim. See [key\n  bindings section](#key-bindings) below.\n\n- Configurable colors\n\n- SASL authentication\n\n- Configurable desktop notifications on new messages (opt-in feature behind a\n  feature flag, see below)\n\n- znc compatible\n\n- TLS support\n\n## Installation\n\ntiny works on Linux and OSX. Windows users can run it under Windows Subsystem\nfor Linux.\n\nFor pre-built binaries see [releases]. To build from source make sure you have\nRust 1.48 or newer. By default tiny uses [rustls] for TLS support, and desktop\nnotifications are disabled.\n\n[releases]: https://github.com/osa1/tiny/releases\n[rustls]: https://github.com/ctz/rustls\n\n- To use system TLS library (OpenSSL or LibreSSL), add `--no-default-features\n  --features=tls-native` to the command you're using. Note that this requires\n  OpenSSL or LibreSSL headers and runtime libraries on Linux.\n\n- To enable desktop notifications add `--features=desktop-notifications`. This\n  requires libdbus on Linux.\n\nTo install in a clone:\n\n```\ncargo install --path crates/tiny\n```\n\nIf you don't want to clone the repo, you can use\n\n```\ncargo install --git https://github.com/osa1/tiny\n```\n\nIf you have an older version installed, add `--force` to the command you're\nusing.\n\nArch Linux users can install the latest [stable] and [development] versions\nof tiny through the AUR.\n\n[stable]: https://aur.archlinux.org/packages/tiny/\n[development]: https://aur.archlinux.org/packages/tiny-git/\n\ntiny is tested on Linux and OSX.\n\n## Configuration\n\ntiny looks for these places for a config file:\n\n- On Linux: `$XDG_CONFIG_HOME/tiny/config.yml`, on macOS:\n  `$HOME/Library/Application Support/tiny/config.yml`\n- (when not found) `$HOME/.config/tiny/config.yml`\n- (when not found, deprecated) `$HOME/.tinyrc.yml`\n\nWhen a config file is not found in one of these locations tiny creates one in\nthe first path above with defaults and exits, printing path to the config file.\nEdit that file before re-running tiny to change the defaults.\n\n**A note on nick identification:** Some IRC servers such as ircd-seven (used by\nFreenode) and InspIRCd (used by Mozilla) support identification via the `PASS`\ncommand. This way of identification (rather than sending a message to a service\nlike `NickServ`) is better when some of the channels that you automatically\njoin require identification. To use this method enter your nick password to the\n`pass` field in servers.\n\n### Using external commands for passwords\n\nWhen a password field in the config file is a map with a `command` key, the\nvalue is used as the shell command to run to get the password.\n\nFor example, in this config:\n\n```yaml\nsasl:\n  username: osa1\n  password:\n    command: 'pass show \"my irc password\"'\n```\n\ntiny runs the `pass ...` command and uses last line printed by the command as\nthe password.\n\n## Command line arguments\n\nBy default (i.e. when no command line arguments passed) tiny connects to all\nservers listed in the config. tiny considers command line arguments as patterns\nto be matched in server addresses, so you can pass command line arguments to\nconnect to only a subset of servers specified in the config. For example, in\nthis config:\n\n```yaml\nservers:\n    - addr: irc.libera.chat\n      ...\n\n    - addr: irc.gnome.org\n      ...\n```\n\nBy default tiny connects to both servers. You can connect to only the first\nserver by passing `libera` as a command line argument.\n\nYou can use `--config \u003cpath\u003e` to specify your config file location.\n\n## Key bindings\n\nKey bindings can be configured in the config file, see the [wiki\npage][key-bindings-wiki] for details.\n\nDefault key bindings:\n\n- `C-a`/`C-e` move cursor to beginning/end in the input field\n\n- `C-k` delete rest of the line\n\n- `C-w` delete a word backwards\n\n- `C-left`/`C-right` move one word backward/forward\n\n- `page up`/`page down`, `shift-up`/`shift-down`, or `C-u`/`C-d` to scroll\n\n- `C-n`/`C-p` next/previous tab\n\n- `C-c enter` quit (asks for confirmation)\n\n- `alt-{1,9}` switch to nth tab\n\n- `alt-{char}` switch to next tab with underlined `char`\n\n- `alt-0` switch to last tab\n\n- `alt-left/right` move tab to left/right\n\n- `C-x` edit current message in `$EDITOR`\n\n[key-bindings-wiki]: https://github.com/osa1/tiny/wiki/Configuring-key-bindings\n\n## Commands\n\nCommands start with `/` character.\n\n- `/help`: Show help messages of commands listed below.\n\n- `/msg \u003cnick\u003e \u003cmessage\u003e`: Send a message to a user. Creates a new tab.\n\n- `/join \u003cchannel\u003e`: Join to a channel\n\n- `/close`: Close the current tab. Leaves the channel if the current tab is a\n  channel. Leaves the server if the tab is a server. You can use `/close \u003creason\u003e` to send a goodbye message.\n\n- `/connect \u003chostname\u003e:\u003cport\u003e`: Connect to a server. Uses `defaults` in the\n  config file for nick, realname, hostname and auto cmds.\n\n- `/connect`: Reconnect to the current server. Use if you don't want to wait\n  tiny to reconnect automatically after a connectivity problem.\n\n- `/away \u003cmsg\u003e`: Set away status\n\n- `/away`: Remove away status\n\n- `/nick \u003cnick\u003e`: Change nick\n\n- `/names`: List all nicks in the current channel. You can use `/names \u003cnick\u003e` to\n  check if a specific nick is in the channel.\n\n- `/reload`: Reload TUI configuration\n\n- `/clear`: Clears tab contents\n\n- `/switch \u003cstring\u003e`: Switch to the first tab which has the given string in the name.\n\n- `/ignore`: Ignore `join/quit` messages in a channel. Running this command in\n  a server tab applies it to all channels of that server. You can check your\n  ignore state in the status line.\n\n- `/notify [off|mentions|messages]`: Enable and disable desktop notifications.\n  Running this command in a server tab applies it to all channels of that\n  server. You can check your notify state in the status line.\n\n- `/quit`: Quit. You can use `/quit \u003creason\u003e` to send a goodbye message.\n\n## Server commands\n\nFor commands not supported by tiny as a slash command, sending the command in\nthe server tab will send the message directly to the server.\n\n### Examples:\n\n- `LIST` will list all channels on the server\n- `MOTD` will display the server Message of the Day\n- `RULES` will display server rules\n- etc...\n\n## Community\n\nJoin us at #tiny in [irc.oftc.net][oftc] to chat about anything related to tiny!\n\n[oftc]: https://www.oftc.net/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosa1%2Ftiny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosa1%2Ftiny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosa1%2Ftiny/lists"}