{"id":30863268,"url":"https://github.com/egovelox/slackrope","last_synced_at":"2026-05-19T10:08:03.727Z","repository":{"id":189315371,"uuid":"680457921","full_name":"egovelox/slackrope","owner":"egovelox","description":"A CLI to get a slack weechat hotlist","archived":false,"fork":false,"pushed_at":"2025-02-08T00:24:16.000Z","size":44,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T00:26:10.879Z","etag":null,"topics":["cli","rust-cli","slack","weechat","weechat-plugin"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/egovelox.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2023-08-19T09:57:49.000Z","updated_at":"2025-02-08T00:24:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"df28ea3d-2d34-4b81-bbec-aa537b7aaaec","html_url":"https://github.com/egovelox/slackrope","commit_stats":null,"previous_names":["egovelox/weechat-hotlist-rs","egovelox/slackrope"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/egovelox/slackrope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egovelox%2Fslackrope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egovelox%2Fslackrope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egovelox%2Fslackrope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egovelox%2Fslackrope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/egovelox","download_url":"https://codeload.github.com/egovelox/slackrope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egovelox%2Fslackrope/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274073798,"owners_count":25217786,"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","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cli","rust-cli","slack","weechat","weechat-plugin"],"created_at":"2025-09-07T18:08:19.210Z","updated_at":"2026-05-19T10:07:58.708Z","avatar_url":"https://github.com/egovelox.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🪢 slackrope 🪢\n\nA simple [Rust](https://www.rust-lang.org/) CLI to get a [slack](https://slack.com/) hotlist.\n\n- [What is a slack hotlist](#what-is-a-slack-hotlist)\n- [Example](#example)\n- [Installation and configuration](#installation-and-configuration)\n- [Installation example](#installation-example)\n- [Notes](#notes)\n- [A way to use it within tmux](#a-way-to-use-it-within-tmux)\n- [Releases](#releases)\n- [Acknowledgement](#acknowledgement)\n\n## What is a slack hotlist\n\nA `hotlist` primarily is a feature available in [weechat](https://weechat.org/).  \n\nIt's a set of counters allowing to know at first glance the number \nof unread messages in one or many [IRC](https://en.wikipedia.org/wiki/IRC) channels.\n\nOnce you setup this amazing [wee-slack](https://github.com/wee-slack/wee-slack) plugin, \nslack workspaces, channels and threads can all be integrated in `weechat`.  \n\nSo the `hotlist` ( weechat feature ) now is turned into a `slack hotlist`.\n\nThe `slackrope` CLI does a simple job : it connects to a running instance of `weechat`  \n( or `weechat-headless` which runs as a daemon process )  \nand brings these hotlist counters back in your terminal.\n\n\u003cimg width=\"764\" alt=\"slackrope_architecture\" src=\"https://github.com/user-attachments/assets/0b6d5952-651e-4586-a6d3-d55c9b6b3f7a\"\u003e\n\n## Example\n\nLet's imagine you are connected with 2 `slack` workspaces `A` and `B`, where you currently have :\n\n- 2 unread messages in threads you've participated in\n- 0 unread private messages\n- 1 unread message highlighting you with `@`\n\n```console\n$ slackrope hotlist\n2 0 1\n```\n\n```console\n$ slackrope hotlist -f detailed\n{\n  \"priority_1\": {\n    \"count\": 1,\n    \"items\": [\n       \"workspaceA.channelX.thread#1\",\n       \"workspaceB.channelY.thread#2\"\n    ]\n  },\n  \"priority_2\": {\n    \"count\": 0,\n    \"items\": []\n  },\n  \"priority_3\": {\n    \"count\": 2,\n    \"items\": [\n       \"workspaceA.channelX\",\n    ]\n  }\n}\n```\n\n```console\n$ slackrope list-teams\n\nYou have currently 2 registered slack team(s) a.k.a workspace(s) :\n  - slack.workspaceA\n  - slack.workspaceB\n\n```\n\n## Installation and Configuration\n\nSee also paragraph below for a quick installation example on macOS with `brew`.\n\nAs explained above, the `slackrope` CLI connects to `weechat`\nand brings back the hotlist in various formats.\n\nPrerequisites:\n\n- MacOS or Linux\n- [weechat](https://weechat.org/) \u003e 2.2\n- [wee-slack](https://github.com/wee-slack/wee-slack)\n- [slack](https://slack.com/)\n\nYou then need to configure the CLI (mainly for port and password) \nby creating a `slackrope.toml` configuration file :\n- this file must be located in the `$XDG_CONFIG_HOME/slackrope/` directory, \nprovided that the `$XDG_CONFIG_HOME` variable is set in your environment.\n- if not, this file must be located in the `$HOME/.config/slackrope/` directory.\n\nHere I listed the `slackrope` keys and default values :\n```toml\n# $HOME/.config/slackrope/slackrope.toml\nsr_weechat_host = \"127.0.0.1\"\nsr_weechat_relay_port = \"8000\"\nsr_weechat_program_name = \"weechat-headless\"\nsr_weechat_password = \"\"\nsr_slack_register_baseurl = \"https://slack.com/oauth/authorize\"\nsr_slack_register_weeslack_client_id = \"2468770254.51917335286\"\nsr_slack_register_scope = \"client\"\nsr_slack_register_redirect_uri = \"https%3A%2F%2Fwee-slack.github.io%2Fwee-slack%2Foauth\"\nsr_wee_slack_plugin_directory = \"$HOME/.local/share/weechat/python\"\nsr_wee_slack_plugin_filename = \"wee_slack.py\"\n```\n\n| Keys | Default value | Description |\n| ---         |     ---      |          --- |\n| sr_weechat_password | `\"\"` | the password needed to connect to weechat via weechat-relay. It is required you set it, unless you've configured weechat to allow for an empty password. |\n| sr_weechat_host | `127.0.0.1` | the host weechat is running on |\n| sr_weechat_relay_port | `8000` | the port weechat-relay is listening on |\n| sr_weechat_program_name | `weechat-headless` | the weechat executable, `weechat` or `weechat-headless` |\n| sr_wee_slack_plugin_directory | `$HOME/.local/share/weechat/python` | the wee-slack python plugins directory |\n| sr_wee_slack_plugin_filename | `wee_slack.py` | the wee-slack plugin file |\n| sr_slack_register_baseurl | `https://slack.com/oauth/authorize` | needed to register your slack workspace, see [wee-slack](https://github.com/wee-slack/wee-slack) repository |\n| sr_slack_register_weeslack_client_id | `2468770254.51917335286` | needed to register your slack workspace, see [wee-slack](https://github.com/wee-slack/wee-slack) repository |\n| sr_slack_register_scope | `client` | needed to register your slack workspace, see [wee-slack](https://github.com/wee-slack/wee-slack) repository |\n| sr_slack_register_redirect_uri | `https%3A%2F%2Fwee-slack.github.io%2Fwee-slack%2Foauth` | needed to register your slack workspace, see [wee-slack](https://github.com/wee-slack/wee-slack) repository |\n\nYou can use this command, meant to help you monitoring various indicators and settings.\n\u003e `slackrope health`\n\nYou can use this command to add a new slack workspace. It will help you following the procedure to get your `slack` token.\n\u003e `slackrope register`\n\nOnce you get your token, run it again with the `token` param. \nThis will setup for you the token in the corresponding `weechat` config file (see `python.slack.slack_api_token` in `$HOME/.config/weechat/plugins.conf`) :\n\u003e `slackrope register --token **********`\n\n\n## Installation example\n\nTested on MacOS Sequoia 15.3 :\n\n```bash\n\n# install weechat\nbrew install weechat\n\n# install wee_slack.py ( weechat plugin )\ncurl -L https://github.com/wee-slack/wee-slack/raw/refs/heads/master/wee_slack.py \u003e $HOME/.local/share/weechat/python/wee_slack.py\n\n# autoloading wee_slack.py when weechat starts\nln -s $HOME/.local/share/weechat/python/wee_slack.py $HOME/.local/share/weechat/python/autoload/\n\n# install this wee-slack required dependency ( installed on the brew python3, that weechat will use if you installed it with brew )\n/opt/homebrew/bin/python3 -m pip install --break-system-packages websocket-client\n\n# Option 1: download the executable from a release of this github repository\n# Option 2: clone this repo and build your executable from source\ngit clone https://github.com/egovelox/slackrope.git\ncd slackrope \u0026\u0026 cargo build --release\ncp ./target/release/slackrope $HOME/bin/slackrope\n\n# first check slackrope health, but it should indicate KO the first time, \n# because you need more configuration\nslackrope -d -d health\n\n# ensure that all weechat instances are killed before further configuration\nslackrope kill\n\n# network configuration (connection between slackrope and weechat)\necho -e \"[port]\\nweechat = 8000\\n[network]\\npassword = \\\"password\\\"\" \u003e\u003e $HOME/.config/weechat/relay.conf\necho \"sr_weechat_password = \\\"password\\\"\" \u003e $HOME/.config/slackrope/slackrope.toml\n\n# register your first slack workspace\nslackrope register\n\n```\n\n## Notes\n\n\u003e use `slackrope -h` or `slackrope COMMAND -h` to get help on the cli parameters\n\n\u003e use `slackrope -d -d COMMAND` to get a quick grasp on the cli background process\n\n\u003e use `slackrope clear` to reset your hotlist when you notice a desynchro with `slack`.\nThis command was meant to help, when your slackrope hotlist keeps indicating you unread messages, whereas you have in fact no unread messages in `slack`.\nHopefully this should not happen very often.\n\n## A way to use it within tmux\n\nI mostly use `slackrope hotlist -t` inside `tmux` status-bar, with a 5 seconds refresh.\n\n```bash\n# $HOME/.tmux.conf\n%hidden DEFAULT=\"default\"\n%hidden MAGENTA='#a6077b'\n%hidden GREEN='#32a87d'\n%hidden ORANGE='#cf6f0e'\n%hidden LIGHT_BLUE='#81a1c1'\n\n%hidden HOTLIST='$HOME/bin/slackrope hotlist -t \"\\033[38;5;208m󰁥\\e[0m{{priority_3}} \\e[38;5;200m\\e[0m{{priority_2}} \\e[38;5;112m\\e[0m{{priority_1}}\"'\n\nset -g status-position bottom\nset -g status-interval 5\n# Span status line on 2 lines\nset -g status-format[0] ''\nset -g status-format[1] ''\nset -g status-right ''\nset -g status-left ''\n\nset -g status-right \"#[fg=#{GREEN},bg=#{DEFAULT}] #S:#I \"\nset -g status-left \"#[fg=#{LIGHT_BLUE},bg=#{DEFAULT}]#(#{HOTLIST} | sed -r 's/\\\\[38;5;208m/#[fg=#{ORANGE}]/g' | sed -r 's/\\\\[38;5;200m/#[fg=#{MAGENTA}]/g' | sed -r 's/\\\\[38;5;112m/#[fg=#{GREEN}]/g' | sed -r 's/\\\\[0m/#[fg=#{LIGHT_BLUE}]/g') #[#{DEFAULT}]\"\nset -gF status-format[0] '#{status-left}#[align=right]#{status-right}'\n\n# ...\n# Print both status lines\nset -g status 2\n```\n\n\u003cbr\u003e\n\u003cimg width=\"970\" alt=\"slackrope_tmux\" src=\"https://github.com/user-attachments/assets/35db4786-57d0-49ed-9ad5-a4c34b7074e3\" /\u003e\n\n## Releases\n\n[Available Releases](https://github.com/egovelox/slackrope/releases)\n- `aarch64-apple-darwin`\n- `x86_64-apple-darwin`\n- `aarch64-unknown-linux-musl`\n- `x86_64-unknown-linux-musl`\n\n## Acknowledgement\n\n[weechat-relay-rs](https://github.com/jtracey/weechat-relay-rs) offers the rust bindings \nto connect to weechat via the `relay` protocol.\n\n[wee-slack](https://github.com/wee-slack/wee-slack) is a plugin \nallowing `weechat` or `weechat-headless` to be connected with `slack`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegovelox%2Fslackrope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegovelox%2Fslackrope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegovelox%2Fslackrope/lists"}