Sclack
The best CLI client for Slack, because everything is terrible!
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
The first thing you need to do is to 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 token, so sometimes you'll need to ask for the administrator to enable the feature.
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:
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