{"id":13419471,"url":"https://github.com/haskellcamargo/sclack","last_synced_at":"2025-05-15T08:11:07.720Z","repository":{"id":41523113,"uuid":"143808048","full_name":"haskellcamargo/sclack","owner":"haskellcamargo","description":"The best CLI client for Slack, because everything is terrible!","archived":false,"fork":false,"pushed_at":"2022-12-08T10:56:40.000Z","size":1955,"stargazers_count":2462,"open_issues_count":43,"forks_count":97,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-04-14T14:59:39.502Z","etag":null,"topics":["cli","cli-app","slack","slack-api","terminal"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haskellcamargo.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}},"created_at":"2018-08-07T02:25:49.000Z","updated_at":"2025-04-07T18:45:11.000Z","dependencies_parsed_at":"2023-01-25T05:30:29.567Z","dependency_job_id":null,"html_url":"https://github.com/haskellcamargo/sclack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskellcamargo%2Fsclack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskellcamargo%2Fsclack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskellcamargo%2Fsclack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haskellcamargo%2Fsclack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haskellcamargo","download_url":"https://codeload.github.com/haskellcamargo/sclack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254301432,"owners_count":22047904,"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":["cli","cli-app","slack","slack-api","terminal"],"created_at":"2024-07-30T22:01:16.502Z","updated_at":"2025-05-15T08:11:07.697Z","avatar_url":"https://github.com/haskellcamargo.png","language":"Python","readme":"# Sclack\n\n\u003e The best CLI client for Slack, because everything is terrible!\n\n![Sclack](./resources/example.png)\n\n## Disclaimer\n\nThe project is still under alpha, there are lots of things already done, but there is also a lot of work to do! If you want to help, please contact me under marcelocamargo@linuxmail.org or create an issue! Working in community, we can soon have a CLI client as complete as the web one!\n\n## Setup\n\n### Using legacy token\n\nFirst of all get a [Slack token here](https://api.slack.com/custom-integrations/legacy-tokens).\nUse, create or request a token for each workspace that you'll use on Sclack.\nNot all workspaces allow you to generate a legacy token, so sometimes you'll need to\nask for the administrator to enable the feature.\n\n### Without a legacy token\n\nUnfortunately some serious hoops need to be jumped through to use a non-legacy token.\n\n1. Go to \u003chttps://api.slack.com/apps\u003e\n2. Click \"Create new app\"\n3. Give the app a name (maybe \"Sclack\") and select the server you'd like to use\n4. Go to \"OAuth \u0026 Permissions\" and add a new redirect URL: `http://localhost:8080`\n5. Go back to the previous page, you'll be able to see \"Client ID\" (you will also need the \"Client Secret\" later). Use this to fill in this url:\n```\n    https://slack.com/oauth/authorize?client_id=[Client ID here]\u0026scope=client\n```    \n6. Go to that URL in your browser, and authorize the app\n7. The page will redirect to a blank page. Look at the URL and copy the `code=` parameter (http://localhost:8080?code=[code-will-be-here]\u0026state=)\n8. Now using the copied code, as well as the \"Client ID\" and \"Client Secret\" from the app page, fill in and execute this command:\n```\n    curl -s \"https://slack.com/api/oauth.access?client_id=[client id here]\u0026client_secret=[client secret here]\u0026code=[code here]\"\n```\n9. Finally, copy the `access_token` from the response (should start with `xoxs-`). This is your new auth token for Sclack\n\n## Optional Dependencies\n\n### Nerd Fonts\n\nSclack seems better when used with a [Nerd Font](https://nerdfonts.com/). Using\nthem is completely optional, but it is how some Sclack icons are possible.\nPersonally, I use [Fira Code Nerd Font](https://github.com/ryanoasis/nerd-fonts/releases/download/v2.0.0/FiraCode.zip).\nDownload, install and set as the default font of your terminal emulator.\n\n### libcaca\n\nSclack uses `caca-utils` to create ANSI/VT100 + ASCII versions of pictures and\nrender them. Images will only be rendered if both `caca-utils` is installed\nand `features.pictures` is configured to `true`. To install `caca-utils`, just\nrun `sudo apt-get install caca-utils` on Debian and `brew install libcaca --with-imlib2` on\nOS X.\n\n## Installation\n\n### From Source\n\nEnsure you have Python 3.4 or superior version.\n\npip\n```bash\ngit clone https://github.com/haskellcamargo/sclack.git\ncd sclack\npip3 install -r requirements.txt\nchmod +x ./app.py\n./app.py\n```\npipenv\n```bash\ngit clone https://github.com/haskellcamargo/sclack.git\ncd sclack\nexport PIPENV_VENV_IN_PROJECT=1\npipenv install # install deps\npipenv shell # enter virtualenv\npython app.py # run app\n```\n\n### From Binary\n\nIf you don't have Python installed, you can get the compiled binary for Sclack\non [releases](https://github.com/haskellcamargo/sclack/releases) page. Versions **will be** available for Linux x86/x64 and OS X.\n\n## Running\nRun `./app.py` after giving the correct permissions. If you don't have a `~/.sclack` file, you can generate one here by providing your workspace token. You can change the theme, enable or disable images, emojis, markdown, configure keyboards and everything else on `config.json`. Important: use `q` to quit!\n\nYour `~/.sclack` file will look like:\n\n```json\n{\n    \"workspaces\": {\n        \"default\": \"wow-such-secret\"\n    }\n}\n```\n\n### Multiple workspaces\n\nIf you want to, you can use Sclack in multiple workspaces. You can have\nat most 9 workspaces defined inside `workspaces`:\n\n```json\n{\n    \"workspaces\": {\n        \"default\": \"wow-such-secret\",\n        \"another\": \"wow-another-secret\"\n    }\n}\n```\n\nYou can use the keys from 1 up to 9 to switch workspaces or event right-click the indicator:\n\n![Multiple workspaces](./resources/example_7.png)\n\n\n### Quick Switcher\n\nYou can use \u003ckbd\u003ectrl k\u003c/kbd\u003e (or your custom shortcut) to navigate in your DMs and channels.\n\n![](./resources/example_8.png)\n\n### Set snooze\n\nYou can use \u003ckbd\u003ectrl d\u003c/kbd\u003e (or your custom shortcut) to set snooze time.\n\n### Get permalink\n\nFocus on message and press \u003ckbd\u003er\u003c/kbd\u003e (or your custom shortcut) to get permalink (Quote message) and it will be put into your chat box.\n\n### Default keybindings\n```json\n{\n  \"keymap\": {\n    \"cursor_down\": \"j\",\n    \"cursor_left\": \"h\",\n    \"cursor_right\": \"l\",\n    \"cursor_up\": \"k\",\n    \"delete_message\": \"d\",\n    \"edit_message\": \"e\",\n    \"go_to_chatbox\": \"c\",\n    \"go_to_profile\": \"p\",\n    \"go_to_sidebar\": \"esc\",\n    \"open_quick_switcher\": \"ctrl k\",\n    \"quit_application\": \"q\",\n    \"set_edit_topic_mode\": \"t\",\n    \"set_insert_mode\": \"i\",\n    \"yank_message\": \"y\",\n    \"get_permalink\": \"r\",\n    \"set_snooze\": \"ctrl d\"\n  }\n}\n```\n\nThe mouse support also has been programmed. You can scroll the chatbox and the sidebar and double click the channels to select.\n\n### Sidebar\n\n```json\n{\n    \"sidebar\": {\n        \"width\": 25,\n        \"max_users\": 20\n    }\n}\n```\n\n* `max_users`: Max users who are shown in the sidebar\n\n### Features\n\n```json\n{\n    \"features\": {\n        \"emoji\": true,\n        \"markdown\": true,\n        \"pictures\": true,\n        \"browser\": \"\"\n    }\n}\n```\n* `browser`: Config your preferable browser to open the link, when ever you focus on chat box text which contains external link (http/https), press enter key, the link will be opened. Valid [value](https://docs.python.org/2/library/webbrowser.html#webbrowser.get). Example you can config `\"browser\": \"chrome\"`\n\n## Tested Terminals\n\nSclack has been tested with the following terminal emulators:\n\n- Gnome Terminal\n- iTerm2\n- QTerminal\n- Terminal (OS X)\n- Terminator\n- XTerm\n\n## Testing\n\nTo run the tests first install the development dependencies via:\n```\npip3 install -r requirements-dev.txt\n```\n\nand then run `pytest`.\n\n## Contributing\n\nContributions are very welcome, and there is a lot of work to do! You can...\n- Check out our [open issues](https://github.com/haskellcamargo/sclack/issues)\n- Provide bug reports\n- Create packages for pip, apt, dnf, rpm, pacman and brew\n- Improve documentation\n- Implement handler for new events\n- Refactor the workarounds in the code\n- Create new themes\n- Make things easier to configure\n\n## Screenshots\n\n![](./resources/example_1.png)\n![](./resources/example_2.png)\n![](./resources/example_3.png)\n![](./resources/example_4.png)\n![](./resources/example_5.png)\n![](./resources/example_6.png)\n\n\u003cp align=\"center\"\u003eMade with :rage: by \u003ca href=\"https://github.com/haskellcamargo\"\u003e@haskellcamargo\u003c/a\u003e\u003c/p\u003e\n","funding_links":[],"categories":["Python","Table of Contents","\u003ca name=\"chat\"\u003e\u003c/a\u003eChat and instant messaging"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaskellcamargo%2Fsclack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaskellcamargo%2Fsclack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaskellcamargo%2Fsclack/lists"}