132 lines
5.4 KiB
YAML
132 lines
5.4 KiB
YAML
# Example modules.yaml — copy to ~/.config/streamdeck-go/modules.yaml
|
|
#
|
|
# Required Slack token scopes: users.profile:write, users:write, dnd:write
|
|
# Export your token: export SLACK_TOKEN="xoxp-..."
|
|
|
|
modules:
|
|
slack:
|
|
set_status:
|
|
params:
|
|
emoji: ":speech_balloon:"
|
|
text: "In a meeting"
|
|
expiry: "1h"
|
|
exec: |
|
|
curl -s -X POST https://slack.com/api/users.profile.set \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"profile":{"status_emoji":"{{.emoji}}","status_text":"{{.text}}","status_expiration":{{expiry .expiry}}}}'
|
|
|
|
clear_status:
|
|
exec: |
|
|
curl -s -X POST https://slack.com/api/users.profile.set \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"profile":{"status_emoji":"","status_text":"","status_expiration":0}}'
|
|
|
|
set_presence:
|
|
params:
|
|
presence: "away"
|
|
exec: |
|
|
curl -s -X POST https://slack.com/api/users.setPresence \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"presence":"{{.presence}}"}'
|
|
|
|
snooze:
|
|
params:
|
|
minutes: "60"
|
|
exec: |
|
|
curl -s -X POST https://slack.com/api/dnd.setSnooze \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"num_minutes":{{.minutes}}}'
|
|
|
|
go_offline:
|
|
exec: |
|
|
curl -s -X POST https://slack.com/api/users.setPresence \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"presence":"away"}' && \
|
|
curl -s -X POST https://slack.com/api/users.profile.set \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"profile":{"status_emoji":":dumpsterfire:","status_text":"Offline","status_expiration":0}}'
|
|
|
|
end_snooze:
|
|
exec: |
|
|
curl -s -X POST https://slack.com/api/dnd.endSnooze \
|
|
-H "Authorization: Bearer {{env "SLACK_TOKEN"}}"
|
|
|
|
# OBS Studio — media player and streaming control via obs-cmd
|
|
#
|
|
# Requires: obs-cmd (https://github.com/grigio/obs-cmd)
|
|
# macOS: brew install grigio/obs-cmd/obs-cmd
|
|
# Linux: cargo install obs-cmd (or download binary from GitHub releases)
|
|
#
|
|
# OBS WebSocket must be enabled: Tools → WebSocket Server Settings (on by default in OBS 28+)
|
|
#
|
|
# Add to ~/.config/streamdeck-go/.env:
|
|
# OBS_WEBSOCKET_PASSWORD=your-password
|
|
# OBS_HOST=localhost (optional, default: localhost)
|
|
# OBS_PORT=4455 (optional, default: 4455)
|
|
obs:
|
|
play:
|
|
params:
|
|
source: "Media Source"
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input play "{{.source}}"
|
|
|
|
pause:
|
|
params:
|
|
source: "Media Source"
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input pause "{{.source}}"
|
|
|
|
stop:
|
|
params:
|
|
source: "Media Source"
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input stop "{{.source}}"
|
|
|
|
restart:
|
|
params:
|
|
source: "Media Source"
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} media-input restart "{{.source}}"
|
|
|
|
toggle_record:
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording toggle
|
|
|
|
toggle_record_pause:
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording toggle-pause
|
|
|
|
is_recording_paused:
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording status
|
|
|
|
toggle_stream:
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} streaming toggle
|
|
|
|
scene_switch:
|
|
params:
|
|
scene: "Scene 1"
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} scene switch "{{.scene}}"
|
|
|
|
toggle_mute:
|
|
params:
|
|
source: "Mic/Aux"
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} input toggle-mute "{{.source}}"
|
|
|
|
is_recording:
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} recording status
|
|
|
|
is_streaming:
|
|
exec: |
|
|
/usr/local/bin/obs-cmd --websocket obsws://{{envDefault "OBS_HOST" "localhost"}}:{{envDefault "OBS_PORT" "4455"}}/{{env "OBS_WEBSOCKET_PASSWORD"}} streaming status
|