• Stars
    star
    1,137
  • Rank 40,971 (Top 0.9 %)
  • Language
    Python
  • License
    MIT License
  • Created about 5 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Linux compatible UI for the Elgato Stream Deck.

streamdeck_ui - Linux compatible UI for the Elgato Stream Deck


PyPI version Test Status codecov Join the chat at https://gitter.im/timothycrosley/streamdeck-ui License Downloads Code style: black Imports: isort


Read Latest Documentation Release notes


streamdeck_ui A Linux compatible UI for the Elgato Stream Deck.

Streamdeck UI Usage Example

Key Features

  • Linux Compatible: Enables usage of Stream Deck devices (Original, MK2, Mini and XL) on Linux.
  • Multi-device: Enables connecting and configuring multiple Stream Decks on one computer.
  • Brightness Control: Supports controlling the brightness from both the configuration UI and buttons on the device itself.
  • Configurable Button Display: Icons + Text, Icon Only, and Text Only configurable per button on the Stream Deck.
  • Multi-Action Support: Run commands, write text and press hotkey combinations at the press of a single button on your Stream Deck.
  • Button Pages: streamdeck_ui supports multiple pages of buttons and dynamically setting up buttons to switch between those pages.
  • Auto Reconnect: Automatically and gracefully reconnects, in the case the device is unplugged and replugged in.
  • Import/Export: Supports saving and restoring Stream Deck configuration.
  • Drag/Drop: Move buttons by simply drag and drop.
  • Drag/Drop Image: Configure a button image by dragging it from your file manager onto the button.
  • Auto Dim: Configure the Stream Deck to automatically dim the display after a period of time. A button press wakes it up again.
  • Animated icons: Use an animated gif to liven things up a bit.
  • Runs under systemd: Run automatically in the background as a systemd --user service.
  • Stream Deck Pedal: Supports actions when pressing pedals.

Communication with the Stream Deck is powered by the Python Elgato Stream Deck Library.

Installation Guides

Once you're up and running, consider installing a systemd service.

Use the troubleshooting guide or search the issues for guidance.

Precooked Scripts

There are scripts for setting up streamdeck_ui on Debian/Ubuntu and Fedora.

Help

Start without showing the user interface

Note you can start streamdeck_ui without showing the configuration user interface as follows:

streamdeck -n

Command

Enter a value in the command field to execute a command. For example, gnome-terminal will launch a new terminal on Ubuntu/Fedora or obs will launch OBS.

Examples

These examples are for Ubuntu using xorg. You can use a tool like xdotool to interact with other applications.

Find the window with a title starting with Meet - and bring it to focus. This helps if you have a Google Meet session on a tab somewhere but you lost it behind another window.

xdotool search --name '^Meet - .+$' windowactivate 

The meeting tab must be active one if you have multiple tabs open, since the window title is set by the currently active tab.

Find the window with a title starting with Meet - and then send ctrl+d to it. This has the effect of toggling the mute button in Google Meet.

xdotool search --name '^Meet - .+$' windowactivate --sync key ctrl+d

Change the system volume up (or down) by a certain percentage. Assumes you're using PulseAudio/Alsa Mixer.

amixer -D pulse sset Master 20%+

If you want you invoke a command that uses shell-script specific things like && or |, run it via bash. This command will shift focus to firefox using the wmctrl, and then shifts focus to the first tab:

bash -c "wmctrl -a firefox  && xdotool key alt+1"

Press Keys

Simulates key press combinations (hot keys). The basic format is a group of keys, separated by a + sign to press simultaneously. Separate key combination groups with a , if additional key combinations are needed. For example, alt+F4,f means press and hold alt, followed by F4 and then release both. Next, press and release f.

You can also specify a KeyCode in hex format, for example, 0x74 is the KeyCode for t. This is also sometimes called the keysym value.

You can use the xev tool and capture the key you are looking for. In the output, look for the keysym hex value, for example (keysym 0x74, t)

Use comma or plus if you want to actually output , or + respectively.

Use delay <n> to add a delay, where <n> is the number (float or integer) of seconds to delay. If <n> is not specified, 0.5 second default is used. If <n> fails to parse as a valid number, it will result in no delay.

Examples

  • F11 - Press F11. If you have focus on a browser, this will toggle full screen.
  • alt+F4 - Closes the current window.
  • ctrl+w - Closes the current browser tab.
  • cmd+left - View split on left. Note cmd is the super key (equivalent of the Windows key).
  • alt+plus - Presses the alt and the + key at the same time.
  • alt+delay+F4 - Press alt, then wait 0.5 seconds, then press F4. Release both.
  • 1,delay,delay,2,delay,delay,3 - Type 123 with a 1-second delay between key presses (using default delay).
  • 1,delay 1,2,delay 1,3 - Type 123 with a 1-second delay between key presses (using custom delay).
  • e,c,h,o,space,",t,e,s,t,",enter - Type echo "test" and press enter.
  • ctrl+alt+0x74 - Opens a new terminal window. 0x74 is the KeyCode for t. TIP: If the character doesn't work, try using the KeyCode instead.
  • 0xffe5 - Toggle Caps Lock.
  • 0xffaf - The / key on the numeric key pad.

The standard list of keys can be found at the source.

The super key (Windows key) can be problematic on some versions of Linux. Instead of using the Key Press feature, you could use the Command feature as follows. In this example, it will press Super and 4, which launches application number 4 in your favorites (Ubuntu).

xdotool key "Super_L+4"

Write Text

A quick way of typing longer pieces of text (verbatim). Note that unlike the Press Keys action, write text does not accept special (modifier) keys. However, if you type Enter (causing a new line) it will press enter during the output.

Examples

Unfortunately that's a hard no.
Kind regards,
Joe

nope

Known issues

Confirm you are running the latest release with pip show streamdeck-ui. Compare it to: PyPI version

  • Streamdeck uses pynput for simulating Key Presses but it lacks proper support for Wayland. Generally your results will be good when using X (Ubuntu/Linux Mint). This thread may be useful.
  • Key Press or Write Text does not work on Fedora (outside of the streamdeck itself), which is not particularly useful. However, still do a lot with the Command feature.
  • Some users have reported that the Stream Deck device does not work on all on specific USB ports, as it draws quite a bit of power and/or has strict bandwidth requirements. Try a different port.
  • If you are executing a shell script from the Command feature - remember to add the shebang at the top of your file, for the language in question. #!/bin/bash or #!/usr/bin/python3 etc. The streamdeck may appear to lock up if you don't under some distros.

More Repositories

1

portray

Your Project with Great Documentation.
Python
860
star
2

jiphy

Your client side done in a jiphy. Python to JavaScript 2-way converter.
Python
583
star
3

hypothesis-auto

An extensions for Hypothesis that provides fully automatic testing for type hinted functions
Python
344
star
4

concentration

Stay focused on work when you want, and goof off when you don't.
Python
328
star
5

deprecated.frosted

A simple program which checks Python source files for errors.
Python
251
star
6

deprecated.pies

The simplest (and tastiest) way to write one program that runs on both Python 2 and Python 3.
Python
148
star
7

quickpython

A retro interactive coding environment powered by Python and nostalgia
Python
109
star
8

pdocs

A simple program and library to auto generate API documentation for Python modules.
Python
74
star
9

connectable

A very simple implementation of QTs signal / slot pattern in Python
Python
61
star
10

examples

Tests and Documentation Done by Example.
Python
24
star
11

thedom

A python framework to generate html and JavaScript from reusable and combine-able widgets.
Python
23
star
12

GuiBuilder

Click and Drop Editor For WebElements
Python
23
star
13

preconvert

A Library to enable preconversion of any Python type into one that is easily serializable
Python
17
star
14

cookiecutter-python

A cookie cutter template for modern Python projects using Python3.6+, poetry, mypy, py.test, and linters.
Shell
16
star
15

WebBot

WebBot is a collection of several tools that enables building Python web applications the same way native ones are built. As a result, the WebBot framework encourages reuse, concise code, rapid development, and happy developers.
Python
14
star
16

blog

Personal Blog
Python
7
star
17

DynamicForm

Ajax Abstraction Library for Python
Python
6
star
18

Html2Shpaml

Converts html to the more condensed and DRY sphaml format
Python
5
star
19

sigy

A library to enable reusing and composing Python function signatures.
Python
4
star
20

linux_environment

My common environment across all linux computers
Shell
4
star
21

CleanHTML

A Very Forgiving HTML/XML Cleaner
Python
4
star
22

RestClient

A Simple RestClient for Python - Works With AppEngine
Python
3
star
23

instantly

A Python Tool To Create and Expend Project Templates
Python
3
star
24

python3-project-template

Basic cookiecutter template for new Python3 projects
Python
3
star
25

website_change_alert

A simpe script to send a text when a website changes.
Python
3
star
26

camera_name_normalizer

Camera Name Normalization
Python
3
star
27

blox

Build it with Python
Python
3
star
28

preconvert_numpy

Preconverts common numpy types to their serializable (jsonifiable, msgpackable, etc...) form. A plugin for the preconvert Python library.
Python
2
star
29

simple_ci

An extremely simple ci server built with hug
Python
2
star
30

RedisStore

RedisStore enables interacting with Redis keys from within python as if they where native object types.
Python
2
star
31

dpy

A tool that automatically generates quality documentation for Python projects.
Python
2
star
32

todo_list

A remotely available todo list
Python
2
star
33

black_isort

A guaranteed black compatible import sorter with minimal settings.
Python
2
star
34

signature

An expiremental framework for composing Python function signature
Shell
1
star
35

webbot_example_postboard

Code for post board example shown in screen-cast http://www.youtube.com/watch?v=0L8TsmrZPLg
Python
1
star
36

sprints_kit

Evolving kit for leading open source sprints
1
star
37

intrigue_icon_set

A set of 100% free and original icons - with a unique minimalistic look
Perl
1
star
38

webelements_site

The code that powers the WebElements homepage
Python
1
star
39

mde

CLI Markdown Editor
Python
1
star
40

mac_environment

Personal MacOS environment setup instructions
Shell
1
star