All Projects → haskellcamargo → Sclack

haskellcamargo / Sclack

Licence: gpl-3.0
The best CLI client for Slack, because everything is terrible!

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Sclack

Caporal.js
A full-featured framework for building command line applications (cli) with node.js
Stars: ✭ 3,279 (+38.76%)
Mutual labels:  cli-app, cli, terminal
Tty
Toolkit for developing sleek command line apps.
Stars: ✭ 2,329 (-1.44%)
Mutual labels:  cli-app, cli, terminal
Tml
🌈💻🎨 A tiny markup language for terminal output. Makes formatting output in CLI apps easier!
Stars: ✭ 634 (-73.17%)
Mutual labels:  cli-app, cli, terminal
3llo
3llo - Trello interactive CLI aplication
Stars: ✭ 245 (-89.63%)
Mutual labels:  cli-app, cli, terminal
Initior
A command line application that let's you initialize your new projects the right way, replaces npm and yarn's init 🎆
Stars: ✭ 17 (-99.28%)
Mutual labels:  cli-app, cli, terminal
Termuxarch
Experience the pleasure of the Linux command prompt in Android, Chromebook, Fire OS and Windows on smartphone, smartTV, tablet and wearable https://termuxarch.github.io/TermuxArch/
Stars: ✭ 183 (-92.26%)
Mutual labels:  cli, terminal
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+496.53%)
Mutual labels:  cli, terminal
Vcspull
🔄 synchronize projects via yaml/json manifest. built on libvcs
Stars: ✭ 187 (-92.09%)
Mutual labels:  cli, terminal
Bashhub Server
Private cloud shell history. Open source server for bashhub https://github.com/rcaloras/bashhub-client
Stars: ✭ 189 (-92%)
Mutual labels:  cli, terminal
Piano Rs
A multiplayer piano using UDP sockets that can be played using computer keyboard, in the terminal
Stars: ✭ 180 (-92.38%)
Mutual labels:  cli, terminal
Gcli
🖥 Go CLI application, tool library, running CLI commands, support console color, user interaction, progress display, data formatting display, generate bash/zsh completion add more features. Go的命令行应用,工具库,运行CLI命令,支持命令行色彩,用户交互,进度显示,数据格式化显示,生成bash/zsh命令补全脚本
Stars: ✭ 188 (-92.04%)
Mutual labels:  cli-app, cli
Bolt Python
A framework to build Slack apps using Python
Stars: ✭ 190 (-91.96%)
Mutual labels:  slack-api, slack
Ahoy
Create self-documenting cli programs from YAML files. Easily wrap bash, grunt, npm, docker, (anything) to standardize your processes and make the lives of the people working on your project better.
Stars: ✭ 201 (-91.49%)
Mutual labels:  cli-app, cli
Commander
Test your command line interfaces on windows, linux and osx and nodes viá ssh and docker
Stars: ✭ 183 (-92.26%)
Mutual labels:  cli, terminal
Run Electron
Run Electron without all the junk terminal output
Stars: ✭ 187 (-92.09%)
Mutual labels:  cli-app, terminal
Alive Progress
A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!
Stars: ✭ 2,940 (+24.42%)
Mutual labels:  cli, terminal
Tslide
Terminal SlideDeck, supporting markdown.
Stars: ✭ 198 (-91.62%)
Mutual labels:  cli, terminal
Zoxide
A smarter cd command. Supports all major shells.
Stars: ✭ 4,422 (+87.13%)
Mutual labels:  cli, terminal
Ascii
👾 ASCII Roulette :: ascii art video chat on the cli
Stars: ✭ 202 (-91.45%)
Mutual labels:  cli, terminal
Qrc
QR code generator for text terminals (ASCII art, Sixel)
Stars: ✭ 200 (-91.54%)
Mutual labels:  cli, terminal

Sclack

The best CLI client for Slack, because everything is terrible!

Sclack

Disclaimer

The 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 [email protected] or create an issue! Working in community, we can soon have a CLI client as complete as the web one!

Setup

Using legacy token

First of all get a Slack token here. Use, create or request a token for each workspace that you'll use on Sclack. Not all workspaces allow you to generate a legacy token, so sometimes you'll need to ask for the administrator to enable the feature.

Without a legacy token

Unfortunately some serious hoops need to be jumped through to use a non-legacy token.

  1. Go to https://api.slack.com/apps
  2. Click "Create new app"
  3. Give the app a name (maybe "Sclack") and select the server you'd like to use
  4. Go to "OAuth & Permissions" and add a new redirect URL: http://localhost:8080
  5. 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:
    https://slack.com/oauth/authorize?client_id=[Client ID here]&scope=client
  1. Go to that URL in your browser, and authorize the app
  2. 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]&state=)
  3. Now using the copied code, as well as the "Client ID" and "Client Secret" from the app page, fill in and execute this command:
    curl -s "https://slack.com/api/oauth.access?client_id=[client id here]&client_secret=[client secret here]&code=[code here]"
  1. Finally, copy the access_token from the response (should start with xoxs-). This is your new auth token for Sclack

Optional Dependencies

Nerd Fonts

Sclack seems better when used with a Nerd Font. Using them is completely optional, but it is how some Sclack icons are possible. Personally, I use Fira Code Nerd Font. Download, install and set as the default font of your terminal emulator.

libcaca

Sclack uses caca-utils to create ANSI/VT100 + ASCII versions of pictures and render them. Images will only be rendered if both caca-utils is installed and features.pictures is configured to true. To install caca-utils, just run sudo apt-get install caca-utils on Debian and brew install libcaca --with-imlib2 on OS X.

Installation

From Source

Ensure you have Python 3.4 or superior version.

pip

git clone https://github.com/haskellcamargo/sclack.git
cd sclack
pip3 install -r requirements.txt
chmod +x ./app.py
./app.py

pipenv

git clone https://github.com/haskellcamargo/sclack.git
cd sclack
export PIPENV_VENV_IN_PROJECT=1
pipenv install # install deps
pipenv shell # enter virtualenv
python app.py # run app

From Binary

If you don't have Python installed, you can get the compiled binary for Sclack on releases page. Versions will be available for Linux x86/x64 and OS X.

Running

Run ./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!

Your ~/.sclack file will look like:

{
    "workspaces": {
        "default": "wow-such-secret"
    }
}

Multiple workspaces

If you want to, you can use Sclack in multiple workspaces. You can have at most 9 workspaces defined inside workspaces:

{
    "workspaces": {
        "default": "wow-such-secret",
        "another": "wow-another-secret"
    }
}

You can use the keys from 1 up to 9 to switch workspaces or event right-click the indicator:

Multiple workspaces

Quick Switcher

You can use ctrl k (or your custom shortcut) to navigate in your DMs and channels.

Set snooze

You can use ctrl d (or your custom shortcut) to set snooze time.

Get permalink

Focus on message and press r (or your custom shortcut) to get permalink (Quote message) and it will be put into your chat box.

Default keybindings

{
  "keymap": {
    "cursor_down": "j",
    "cursor_left": "h",
    "cursor_right": "l",
    "cursor_up": "k",
    "delete_message": "d",
    "edit_message": "e",
    "go_to_chatbox": "c",
    "go_to_profile": "p",
    "go_to_sidebar": "esc",
    "open_quick_switcher": "ctrl k",
    "quit_application": "q",
    "set_edit_topic_mode": "t",
    "set_insert_mode": "i",
    "yank_message": "y",
    "get_permalink": "r",
    "set_snooze": "ctrl d"
  }
}

The mouse support also has been programmed. You can scroll the chatbox and the sidebar and double click the channels to select.

Sidebar

{
    "sidebar": {
        "width": 25,
        "max_users": 20
    }
}
  • max_users: Max users who are shown in the sidebar

Features

{
    "features": {
        "emoji": true,
        "markdown": true,
        "pictures": true,
        "browser": ""
    }
}
  • 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. Example you can config "browser": "chrome"

Tested Terminals

Sclack has been tested with the following terminal emulators:

  • Gnome Terminal
  • iTerm2
  • QTerminal
  • Terminal (OS X)
  • Terminator
  • XTerm

Testing

To run the tests first install the development dependencies via:

pip3 install -r requirements-dev.txt

and then run pytest.

Contributing

Contributions are very welcome, and there is a lot of work to do! You can...

  • Check out our open issues
  • Provide bug reports
  • Create packages for pip, apt, dnf, rpm, pacman and brew
  • Improve documentation
  • Implement handler for new events
  • Refactor the workarounds in the code
  • Create new themes
  • Make things easier to configure

Screenshots

Made with 😡 by @haskellcamargo

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].