This is a simple Python-based app for displaying your Slack status fullscreen on a Raspberry Pi. I designed the app around the display I'm using but you can adjust the code to use whatever display output you need.
- A Raspberry Pi. (Any model that can run Python 3 should work, but as a warning, this was only tested on a Raspberry Pi 5.)
- A hardware display.
- SSH accesss to the Raspberry Pi.
- Login to a shell and run updates on your Pi
sudo apt-get update -y && sudo apt-get full-upgrade -y - Install any necessary drivers for your display.
- If you're using the same display I used, use the
LCD35-showdriver from this repository. - Make sure to enable I2C or SPI via
sudo raspi-config> Interface Options if needed. Refer to your hardware documentation to find out.
- If you're using the same display I used, use the
- Install the needed dependencies by running
sudo apt-get install python3-full python3-pip git.
- Go to api.slack.com/apps.
- Click "Create New App".
- Choose "From scratch".
- Give your app a name (e.g., "Pi Slack Status Display") and select your Slack workspace.
- In your app's settings, navigate to "OAuth & Permissions".
- Under "Scopes" -> "Bot Token Scopes",
add users.profile:read.
- At the top of the "OAuth & Permissions" page, click "Install to Workspace"
- Authorize the app.
After installation, you'll see a "Bot User OAuth Token" (starts with xoxb-). Copy this token and keep it secure. This token will be used by your Python application.
- Open Slack in your browser.
- Click on your profile picture in the top right corner.
- Click "Profile".
- In the sidebar that appears, click the "..." menu next to "Edit Profile".
- Select "Copy member ID". It will look something like
U1234567890. Save this along with your Bot Token from earlier.
- Clone this repository:
git clone https://github.com/untraceablez/pi_slack_statusand thencd pi_slack_status. - Create a Python virtual environment named .venv using this command:
python3 -m venv $HOME/.venv/pi-slack - Run
source $HOME/.venv/pi-slack/bin/activate. - Run
pip install -r requirements.txtto install the various Python dependencies. - Create a
.envfile by copying.env_sample:cp .env_sample .env. - Paste in your User ID, API Token, and optionally, your Client Secret and Signing Secret (you'll need these if your Slack workspace enforces oAuth).
- Go ahead and test the application by running
python3 pi_slack_status.py.
- Before you do the steps below, modify the .service file with the correct paths and usernames. For example, I use Ansible in my homelab, and thus have ansible username instead of the default 'pi'
- In order to set this up as a startup service on the pi, first make the
start_pi_status.shfile executable:sudo chmod +x ./start_pi_status.sh. - Next, copy the contents of the
pi_status.servicefile to your clipboard and create a systemd service file:sudo nano /etc/systemd/system/pi_status.serviceand paste the contents inside. - Run the following commands to enable and start the service:
sudo systemctl enable pi_status.service sudo systemctl start pi_status.service sudo systemctl daemon-reload - You should be able to reboot the Pi and see the screen load. Enjoy your new Slack status kiosk!
