All Projects β†’ yuya373 β†’ Emacs Slack

yuya373 / Emacs Slack

slack client for emacs

Projects that are alternatives of or similar to Emacs Slack

Dracula Theme
πŸ§›πŸ»β€β™‚οΈ One theme. All platforms.
Stars: ✭ 17,480 (+1783.62%)
Mutual labels:  slack, emacs
Parrot
A package to rotate text and party with parrots at the same time
Stars: ✭ 99 (-89.33%)
Mutual labels:  slack, emacs
Clojure Mode
Emacs support for the Clojure(Script) programming language
Stars: ✭ 795 (-14.33%)
Mutual labels:  emacs
Whatis
Whatis bot server for Slack!
Stars: ✭ 22 (-97.63%)
Mutual labels:  slack
Yasnippet Snippets
a collection of yasnippet snippets for many languages
Stars: ✭ 831 (-10.45%)
Mutual labels:  emacs
Dap Mode
Emacs ❀️ Debug Adapter Protocol
Stars: ✭ 809 (-12.82%)
Mutual labels:  emacs
Manamoji Slack
Slack emojis for Magic card symbols. Used by Scryfall’s Slack bot.
Stars: ✭ 16 (-98.28%)
Mutual labels:  slack
Acejump
πŸ…°οΈ single character search, select, and jump
Stars: ✭ 786 (-15.3%)
Mutual labels:  emacs
Yii2 Slack Log
Pretty Slack log target for Yii 2
Stars: ✭ 24 (-97.41%)
Mutual labels:  slack
Jirachat
JIRA Webhook handler that forwards to Hipchat and Slack
Stars: ✭ 6 (-99.35%)
Mutual labels:  slack
Char Menu
Create your own menu for fast insertion of arbitrary symbols
Stars: ✭ 19 (-97.95%)
Mutual labels:  emacs
Chronometer
A Chronometer for GNU Emacs
Stars: ✭ 6 (-99.35%)
Mutual labels:  emacs
Smart Mode Line
A powerful and beautiful mode-line for Emacs.
Stars: ✭ 809 (-12.82%)
Mutual labels:  emacs
Torpedo
Pluggable, multi-network asynchronous chat bot written in Go
Stars: ✭ 19 (-97.95%)
Mutual labels:  slack
Vigil
🚦 Microservices Status Page. Monitors a distributed infrastructure and sends alerts (Slack, SMS, etc.).
Stars: ✭ 804 (-13.36%)
Mutual labels:  slack
Emacs Anywhere
Configurable automation + hooks called with application information
Stars: ✭ 917 (-1.19%)
Mutual labels:  emacs
Inventory Hunter
⚑️ Get notified as soon as your next CPU, GPU, or game console is in stock
Stars: ✭ 778 (-16.16%)
Mutual labels:  slack
Org Super Agenda
Supercharge your Org daily/weekly agenda by grouping items
Stars: ✭ 829 (-10.67%)
Mutual labels:  emacs
Reviewet
Getting App Store and Google Play's review and notify to either slack or email.
Stars: ✭ 7 (-99.25%)
Mutual labels:  slack
Swiftblocksui
Develop interactive Slack messages and modals using a SwiftUI like declarative style
Stars: ✭ 25 (-97.31%)
Mutual labels:  slack

MELPA Build Status Become a patron

Emacs Slack

GNU Emacs client for Slack.


Preview

You can see some gifs on the wiki.

Dependencies

Extensions

Configuration

How to get token

;; I'm using use-package and el-get and evil

(el-get-bundle slack)
(el-get-bundle yuya373/helm-slack) ;; optional
(use-package helm-slack :after (slack)) ;; optional
(use-package slack
  :commands (slack-start)
  :init
  (setq slack-buffer-emojify t) ;; if you want to enable emoji, default nil
  (setq slack-prefer-current-team t)
  :config
  (slack-register-team
   :name "emacs-slack"
   :default t
   :token "xoxs-sssssssssss-88888888888-hhhhhhhhhhh-jjjjjjjjjj"
   :subscribed-channels '(test-rename rrrrr)
   :full-and-display-names t)

  (slack-register-team
   :name "test"
   :token "xoxs-yyyyyyyyyy-zzzzzzzzzzz-hhhhhhhhhhh-llllllllll"
   :subscribed-channels '(hoge fuga))

  (evil-define-key 'normal slack-info-mode-map
    ",u" 'slack-room-update-messages)
  (evil-define-key 'normal slack-mode-map
    ",c" 'slack-buffer-kill
    ",ra" 'slack-message-add-reaction
    ",rr" 'slack-message-remove-reaction
    ",rs" 'slack-message-show-reaction-users
    ",pl" 'slack-room-pins-list
    ",pa" 'slack-message-pins-add
    ",pr" 'slack-message-pins-remove
    ",mm" 'slack-message-write-another-buffer
    ",me" 'slack-message-edit
    ",md" 'slack-message-delete
    ",u" 'slack-room-update-messages
    ",2" 'slack-message-embed-mention
    ",3" 'slack-message-embed-channel
    "\C-n" 'slack-buffer-goto-next-message
    "\C-p" 'slack-buffer-goto-prev-message)
   (evil-define-key 'normal slack-edit-message-mode-map
    ",k" 'slack-message-cancel-edit
    ",s" 'slack-message-send-from-buffer
    ",2" 'slack-message-embed-mention
    ",3" 'slack-message-embed-channel))

(use-package alert
  :commands (alert)
  :init
  (setq alert-default-style 'notifier))

How to get token

  1. Using Chrome, open and sign into the slack customization page, e.g. https://my.slack.com/customize
  2. Right click anywhere on the page and choose "inspect" from the context menu. This will open the Chrome developer tools.
  3. Find the console (it's one of the tabs in the developer tools window)
  4. At the prompt ("> ") type the following: window.prompt("your api token is: ", TS.boot_data.api_token)
  5. Copy the displayed token elsewhere, and close the window.

For further explanation, see the documentation for the emojme project: (github.com/jackellenberger/emojme)

How to secure your token

If someone steals your token they can use the token to impersonate you, reading and posting to Slack as if they were you. It's important to take reasonable precautions to secure your token.

One way to do this is by using the Emacs auth-source library. Read the auth-source documentation to learn how to use it to store login information for remote services.

Then configure the auth-sources variable to select a "backend" store. The default backend is ~/.authinfo file, which is simple but also un-encrypted. A more complex option is to encrypt that .~/authinfo file with gnupg and configure auth-sources to use ~/.authinfo.gpg as the source for all passwords and secrets. Other backends exist beyond these; read the documentation for details.

How to store your slack tokens in your auth-source backend will vary depending which backend you chose. See documentation for details. The "host" and "user" fields can be whatever you like as long as they are unique; as a suggestion use "myslackteam.slack.com" for host, and use your email address for user. The "secret" or "password" field should contain the token you obtained earlier (How to get token).

Then finally, in your Emacs init read the token from your auth-source:

(slack-register-team
 :name "myslackteam"
 :token (auth-source-pick-first-password
         :host "myslackteam.slack.com"
         :user "[email protected]")
 :subscribed-channels '((channel1 channel2)))

How to use

I recommend to chat with slackbot for tutorial using slack-im-select.

Some terminology in the slack- functions:

  • im: An IM (instant message) is a direct message between you and exactly one other Slack user.

  • channel: A channel is a Slack channel which you are a member of

  • group. Any chat (direct message or channel) which isn't an IM is a group.

  • slack-register-team

    • set team configuration and create team.
    • :name and :token are required
  • slack-change-current-team

    • change slack-current-team var
  • slack-start

    • do authorize and initialize
  • slack-ws-close

    • turn off websocket connection
  • slack-group-select

    • select group from list
  • slack-im-select

    • select direct message from list
  • slack-channel-select

    • select channel from list
  • slack-group-list-update

    • update group list
  • slack-im-list-update

    • update direct message list
  • slack-channel-list-update

    • update channel list
  • slack-message-embed-mention

    • use to mention to user
  • slack-message-embed-channel

    • use to mention to channel
  • slack-file-upload

    • uploads a file
    • the command allows to choose many channels via select loop. In order to finish the loop input an empty string. For helm that's C+RET or M+TET. In case of Ivy it's C+M+j.

Notification

See alert.

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].