{"id":37214314,"url":"https://github.com/greenstatic/slack-status","last_synced_at":"2026-01-15T00:47:58.596Z","repository":{"id":45437334,"uuid":"258535337","full_name":"greenstatic/slack-status","owner":"greenstatic","description":"Change your presence, status, do not disturb and profile picture settings in multiple Slack workspaces.","archived":false,"fork":false,"pushed_at":"2021-12-13T22:55:13.000Z","size":45,"stargazers_count":27,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-13T19:42:02.178Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greenstatic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-24T14:29:04.000Z","updated_at":"2024-09-10T04:44:32.000Z","dependencies_parsed_at":"2022-08-23T15:30:51.701Z","dependency_job_id":null,"html_url":"https://github.com/greenstatic/slack-status","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/greenstatic/slack-status","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fslack-status","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fslack-status/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fslack-status/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fslack-status/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenstatic","download_url":"https://codeload.github.com/greenstatic/slack-status/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fslack-status/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28440396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:34:46.850Z","status":"ssl_error","status_checked_at":"2026-01-15T00:34:46.551Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-15T00:47:57.999Z","updated_at":"2026-01-15T00:47:58.583Z","avatar_url":"https://github.com/greenstatic.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slack Status\nChange your presence, status, do not disturb and profile picture settings in multiple Slack workspaces using only \none command.\n\n## How it Works\nIn order to integrate with Slack, each integration needs a dedicated Slack App, meaning you are required to create\na dedicated Slack App for slack-status to work in your workspace.\nEach Slack App receives a _clientId_ and _clientSecret_ - details with which we can initiate the OAuth2 flow.\nThrough this flow, an app can get certain permissions, as well as certain permissions to act on a user's behalf. \nWith slack-status we are particularly interested in getting our app to acquire permissions to act on a user's behalf,\nso that we can change the user's status via Slack's API.\nWhen we go through the OAuth2 flow, slack-status specifies by default that it only needs access to a couple of user \nscopes ([dnd:write, users.profile:write \u0026 users:write](https://api.slack.com/scopes)).\nThese scopes are tied to a user, so we get a **dedicated user authorization token** with which we can issue \nAPI calls to change the user's status.\nThe **user authorization token is stored strictly in a configuration file locally** (by default in `~/.slack-status`).\n\nFree Slack workspaces are \n[limited to 10 apps](https://slack.com/intl/en-si/help/articles/115002422943-Message-file-and-app-limits-on-the-free-version-of-Slack),\nin order to reduce the number of apps in a workspace it is possible to share Slack App credentials (clientId and \nclientSecret) so that multiple people can use slack-status in your workspace.\nThe token used to change a user's status, the **user authorization token**, is **stored only locally** and\nthe Slack App that is created for slack-status only requires user scopes, getting access to the Slack App's \nclientId and clientSecret will not enable other user's to change your status.\n\nThe clientId and clientSecret are merely necessary to trigger the OAuth2 flow with which we can get the user's user \nauthorization token.\nWe do not need any other scopes which could cause security issues.\n\n## Install\nDependencies:\n* Go\n\nInstall from source:\n```shell\n$ go install github.com/greenstatic/slack-status\n```\n### Installing in a Slack Workspace\nIn case you are worried about all these tokens, please read the [How it Works](#how-it-works) section to understand \nwhat is going on.\n\nYou will need to do this for each Slack workspace you wish to specify control using _slack-status_.\n\n#### I do not yet have a Slack App (or access to an App's clientId \u0026 clientSecret)\n1. Visit [https://api.slack.com/apps](https://api.slack.com/apps)\n2. Click on **Create New App**, then follow **From an app manifest**. Select your desired workspace and hit **Next**.\n3. Replace the YAML manifest template with the following:\n```\n_metadata:\n  major_version: 1\n  minor_version: 1\ndisplay_information:\n  name: slack-status\nsettings:\n  org_deploy_enabled: false\n  socket_mode_enabled: false\n  token_rotation_enabled: false\noauth_config:\n  redirect_urls:\n    - http://localhost:3030\n```\n4. Click **Next**, then **Create** to finish the app creation.\n5. Scroll to **App Credentials** and copy *Client ID* as well as *Client Secret*.\n\n#### I have a Slack App now\nNow that you have access to your Slack's App `clientId` and `clientSecret`, run:\n```shell\n$ slack-status init \u003cworkspace name\u003e \u003cclientId\u003e \u003cclientSecret\u003e\n```\n\nThis should trigger the OAuth2 flow. \nYou should see a URL in the console, visit it your browser (that is logged into your slack workspace).\nYou can review the scopes we are asking for, just click confirm.\n\nOnce you click confirm you should see a simple page saying that your User Authorization Token has been successfully required.\nYou may close the browser tab now.\n\nThat's it.\nIn your config file (default: ~/.slack-status) there should be a new entry for the workspace you just initialized.\nYou may add a list of `group` names to the configuration workspace entry if you like.\n\nTry to set your status now:\n```shell\n$ slack-status set -w \u003cworkspace name\u003e -m \"i'm using slack-status!\" --emoji :tada: -d 5m\n```\n\n## Usage\n```\nSet your status in Slack.\n\nTo setup the required authentication token(s) read the \"init\" subcommand help.\n\nTo set your status see the \"set\" subcommand.\n\nSource code: https://github.com/greenstatic/slack-status\n\nUsage:\n  slack-status [flags]\n  slack-status [command]\n\nAvailable Commands:\n  help        Help about any command\n  init        Initialize slack-status in a workspace\n  set         Set a custom slack status\n  version     Show version\n\nFlags:\n  -c, --config string   Config file (default \"~/.slack-status\")\n  -h, --help            help for slack-status\n\nUse \"slack-status [command] --help\" for more information about a command.\n```\n\n### Examples\nSet your custom status to _busy working on super secret project_:\n```shell\nslack-status set -m \"busy working on super secret project\"\n```\n\nSet your custom status to _programming_ for 45 min and turn on do not disturb for your *my_job* Slack workspace:\n```shell\nslack-status set -m \"programming\" -d 45m --dnd --workspace my_job\n```\n\nSet your custom status to _lectures_ with custom books emoji for 2h 45m and turn on do not disturb for your _work_ group Slack workspaces:\n```shell\nslack-status set -m \"lectures\" -d 2h45m --dnd --emoji \":books:\" -g work\n```\n\nClears your status and sets it back to _Active_: \n```shell\nslack-status set\n```\n\nSet your custom status to _driving_ and custom car emoji with new profile picture in _~/driving.jpeg_:\n```shell\nslack-status set -p ~/driving.jpeg -m \"driving\" --emoji :car:\n```\n\n### Configuration\nBy default `slack-status` will create a config in `~/.slack-status` but you can override this behaviour by setting the \npath to the config explicitly using the `--config` flag.\n ```yaml\n# Example slack-status config\nworkspaces:\n  - name: my_job\n    user: \"\u003cUSER ID\u003e\"\n    accessToken: \"\u003cUSER ACCESS TOKEN\u003e\"\n    groups:\n      - \"work\"\n  - name: home\n    user: \"\u003cUSER ID\u003e\"\n    accessToken: \"\u003cUSER ACCESS TOKEN\u003e\"\n    groups:\n      - \"personal\"\n```\n\nIn general, you do not need to change anything, but you are encouraged to set your `group` fields to your liking.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenstatic%2Fslack-status","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreenstatic%2Fslack-status","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenstatic%2Fslack-status/lists"}