Giter VIP home page Giter VIP logo

math-with-slack's Introduction

⚠️ ⚠️ This repo is not currently maintained, and the script will not work with Slack 4 or later versions. Please refer to this fork for a version that sees active development. ⚠️ ⚠️

Rendered math (MathJax) with Slack's desktop client

Slack does not display rendered math. The math-with-slack script allows you to write nice-looking math using familiar TeX syntax by injecting MathJax into Slack's desktop client. This approach has several advantages over the plugin/bot solution:

  • You can write both inline- and display-style equations.
  • You can edit equations after you've posted them.
  • Nothing is sent to external servers for rendering.

The downside is that equations are not rendered for team members without the MathJax injection.

Math Slack Example

How do I install it?

Download and run your platform's script. Restart the Slack client. You're done!

Mac and Linux

Run the following in a terminal:

curl -OL https://github.com/fsavje/math-with-slack/releases/download/v0.2.5/math-with-slack.sh
sudo bash math-with-slack.sh

Windows

Download the script and double-click to run. Alternatively, run it in the command prompt with:

math-with-slack.bat

(Windows will probably give you a security warning since the script is downloaded from Internet.)

Package and software managers

The script needs write permissions in the Slack directory in order to inject the MathJax code. Some package and software managers write protect their directories, and math-with-slack cannot be installed if Slack is installed through such a manager. This is the case for both the Windows Store and Snap versions of Slack. You should use the version downloaded from Slack's website if you want to use math-with-slack. The script should, however, work with most package managers if you manage to grant the script write permission.

Uninstall

To uninstall, run the script again with the -u flag:

sudo bash math-with-slack.sh -u
math-with-slack.bat -u

Updating Slack

The code injected by the script might be overwritten when you update the Slack app. If your client stops rendering math after an update, re-run the script as above and it should work again.

If Slack cannot be found

If you've installed Slack in some exotic place, the script might not find the installation by itself or it might find the wrong installation. In such cases, you need to specify the location of Slack's app.asar.unpacked/src/static folder as a parameter:

sudo bash math-with-slack.sh /My_Apps/Slack.app/Contents/Resources/app.asar.unpacked/src/static
math-with-slack.bat E:\My_Apps\slack\app-2.5.1\resources\app.asar.unpacked\src\static

How do I get my math rendered?

As you do in TeX, use $ ... $ for inline math and $$ ... $$ for display-style math. If you need to write a lot of dollar-signs in a message and want to prevent rendering, use backslash to escape them: \$.

Note that only users with MathJax injected in their client will see the rendered version of your math. Users with the standard client will see the equations just as you wrote them (i.e., unrendered including the dollar signs).

How does it work?

The script alters how Slack is loaded. Under the hood, the desktop client is based on ordinary web technology. The modified client loads the MathJax library after start-up and adds a listener for messages. As soon as it detects a new message, it looks for TeX-styled math and tries to render. Everything is done in the client. Messages are never sent to servers for rendering.

Can I contribute?

Yes, please. Just add an issue or a pull request.

Thanks to past contributors:

Inspiration

This comment by jouni was extremely helpful. So was this snippet by etihwnad.

math-with-slack's People

Contributors

fsavje avatar gauss256 avatar peroxyacyl avatar laurenthayez avatar nkudryavka avatar xyene avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.