#+TITLE: Slack layer #+TAGS: chat|layer [[file:img/slack.png]] * Table of Contents :TOC_5_gh:noexport: - [[#description][Description]] - [[#features][Features:]] - [[#install][Install]] - [[#configuration][Configuration]] - [[#spacemacs-layout-integration][Spacemacs layout integration]] - [[#key-bindings][Key bindings]] * Description This layer provides an interface to the Slack chat service via the emacs-slack package. Where possible, this layer aims to reuse key bindings from the IRC packages in Spacemacs. ** Features: - Real time messaging with [[https://github.com/ahyatt/emacs-websocket][emacs-websocket]] - Connect to multiple slack instances - Notifications with [[https://github.com/jwiegley/alert][alert.el]] * Install To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =slack= to the existing =dotspacemacs-configuration-layers= list in this file. * Configuration Follow the instructions in the [[https://github.com/yuya373/emacs-slack/blob/master/README.md][emacs-slack]] package for obtaining your client ID, client secret, and token. To test that everything is alright put the following snippet in your =dotspacemacs/user-config()= replacing =client-id=, =client-secret= and =token= with your info. *Important* Do not keep private data in your dotfile. You can put your private stuff elsewhere (like Dropbox for instance) and load the file in your dotfile. #+BEGIN_SRC emacs-lisp (slack-register-team :name "emacs-slack" :default t :client-id "my@email.address" :client-secret "mypassword" :token "token" :subscribed-channels '(general slackbot)) #+END_SRC ** Spacemacs layout integration A [[https://github.com/syl20bnr/spacemacs/blob/develop/doc/DOCUMENTATION.org#layouts-and-workspaces][Spacemacs custom layout]] is defined by the layer. The name and the key binding for it can be customized with the following layer variables: - =slack-spacemacs-layout-name= for the layout name, - =slack-spacemacs-layout-binding= for the key binding. By default the values are: #+BEGIN_SRC emacs-lisp (setq-default dotspacemacs-configuration-layers '( (slack :variables slack-spacemacs-layout-name "@Slack" slack-spacemacs-layout-binding "s"))) #+END_SRC * Key bindings | Key binding | Description | |-------------+-----------------------------------------| | ~SPC a C d~ | Direct message someone | | ~SPC a C g~ | Join a group (private channel) | | ~SPC a C j~ | Join a channel | | ~SPC a C q~ | Close connection | | ~SPC a C r~ | Join a channel, group, or direct messge | | ~SPC a C s~ | (Re)connects to Slack | | ~SPC m c~ | Embed mention of channel | | ~SPC m e~ | Edit message at point | | ~SPC m j~ | Join a channel | | ~SPC m d~ | Direct message someone | | ~SPC m m~ | Embed mention of user | | ~SPC m p~ | Load previous messages | | ~SPC m )~ | Add reaction (emoji) to a message | | ~SPC m (~ | Remove reaction (emoji) to a message | | ~SPC m t~ | Show or create thread | | ~SPC m q~ | Quit Slack | The following bindings are provided to mimic bindings in the official Slack client. | Key binding | Description | |-------------+--------------------------| | ~SPC m @~ | Embed mention of user | | ~SPC m #~ | Embed mention of channel | | ~SPC m )~ | Add a rection | | ~SPC m k~ | Join a channel | In insert state, one can also use ~@~ and ~#~ directly without the leader key prefix.