Coder Social home page Coder Social logo

jamesridgway / devdeck Goto Github PK

View Code? Open in Web Editor NEW
120.0 6.0 14.0 6.78 MB

Stream Deck control software for software developer's.

License: BSD 3-Clause "New" or "Revised" License

Python 99.27% Shell 0.73%
stream-deck elgato python slack home-assistant devdeck

devdeck's Introduction

devdeck's People

Contributors

jamesridgway avatar thiritin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

devdeck's Issues

Buttons render incorrectly when controls out of order

Buttons occasionally render incorrectly, showing the wrong content as well as render artifacts. This seems to be related to listing the controls out of order, as the behavior can be prevented by ordering the keys in the configuration.

devdeck-artifacts

Configuration producing this behavior:

decks:
- name: devdeck.decks.single_page_deck_controller.SinglePageDeckController
  serial_number: redacted
  settings:
    controls:
    - key: 0
      name: devdeck_slack.slack_deck.SlackDeck
      settings:
        api_key: 'redacted'
        actions:
          - action: online
            key: 0
          - action: away
            key: 1
          - action: status
            key: 2
            text: BRB
            emoji: ':stopwatch:'
    - key: 7
      name: devdeck.controls.clock_control.ClockControl
    - key: 1
      name: devdeck.controls.timer_control.TimerControl

Add text and Image

Great project,

It would be great if there was an option within devdeck to be able to render text and and image on the same key, Such as a name of a button above or below the image.

Thanks

Raspberry Pi OS

Hi @jamesridgway! First things first, awesome project you got here, really loving it!

I've installed devdeck on a Raspberry Pi 4 and I needed to take a couple of extra steps to get it working. Wanted to share these with you so you can perhaps add them to the wiki so others who try to get it running have fewer issues!

Basically, after running pip install devdeck, you need to install a couple more things on the Raspberry Pi. The errors that would be displayed when attempting to run devdeck would be

  • ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory
  • ImportError: libtiff.so.5: cannot open shared object file: No such file or directory

To fix those errors, these need to be installed:
sudo apt install -y libopenjp2-7 libtiff5

I've only tested this on the Raspberry Pi 4 and thus wouldn't be able to say if this works on earlier models or the Pi Zeros but I'd be surprised if it didn't.

Again, great job here, it's really going to pull together my Home Assistant setup! ๐Ÿ˜ƒ

devdeck core dumps (Ubuntu Mate 20.04)

Whenever I try to start devdeck it clears the display on my Stream Deck and then core dumps:

2021-03-16 19:35:40,240 - devdeck - INFO - Connecting to deck: b'0001:0010:00' (S/N: AL49J2C06472)
2021-03-16 19:35:40,244 - devdeck - INFO - Setting active deck: SinglePageDeckController
2021-03-16 19:35:40,244 - devdeck - INFO - Rendering deck: SinglePageDeckController
realloc(): invalid next size
Aborted (core dumped)

This is running devdeck-1.0.5 on Ubuntu 20.04, using Python 3.8.5, using the default small setting.yml (with just ClockControl on key 0).

Running/developing on Windows?

First I just want to say I came across this from your YouTube video and it's an awesome project. I was wondering though if it works/could work on Windows. My (limited) understanding of the project is that it should be able to run on Windows, but I haven't yet gotten it working.

I also haven't worked with Python in awhile, so sorry if I'm missing something basic. As it stands after I've downloaded the repo, I've tried running devdeck.py, but I get an error on some of the imports:
PS C:\Repos\devdeck\devdeck> python .\devdeck.py Traceback (most recent call last): File "C:\Repos\devdeck\devdeck\devdeck.py", line 3, in <module> from devdeck.deck_context import DeckContext File "C:\Repos\devdeck\devdeck\devdeck.py", line 3, in <module> from devdeck.deck_context import DeckContext ModuleNotFoundError: No module named 'devdeck.deck_context'; 'devdeck' is not a package

That doesn't seem to be related to running in the Windows environment, but I wanted to post this issue as a broader conversation of whether this does/can work on Windows.

Thanks

longpress support

Greetings,

I can't seem to find longpress (hold) support. Does it exist? If so, it would be really useful to have the press be a control, but the long press be a deck. Think (keylight on/off on press, open a deck to adjust temperature and brightness for the light on a long press).

Support "~" in file paths

It would be very helpful it relative and/or "~" as shortcut for home dir could be supported

e.g.:

icon: '~/.devdeck/icons/youtrack.png'

Getting started with DevDeck

Hi jamesridgway, nice project! I like your YouTube video introducing the software. Well done.

When trying out the tool, I came across a few glitches that I wanted to share for future improvement.
The following is based on my experience with DevDeck as of 1.0.1:

  1. When running devdeck for the first time, I got:
FileNotFoundError: [Errno 2] No such file or directory: '/home/pklaus/.devdeck/settings.yml'

After creating ~/.devdeck/, the second attempt did start the tool, creating the default config.

  1. When trying to add the devdeck.decks.volume_deck.VolumeDeck control, I ran into the issue:
  File "/home/pklaus/.pyvenv/py39/lib/python3.9/site-packages/devdeck/decks/volume_deck.py", line 26, in <listcomp>
    selected_output = [output for output in sinks if output.description == self.settings['output']]
KeyError: 'output'

So I found out that I need to add a settings section (with the output name to be adjust by the control) like this:

[...]
    - key: 1
      name: devdeck.decks.volume_deck.VolumeDeck
      settings:
        output: "WH-1000XM3"

It would be nice if there was some documentation on the config format. At least an example yaml file.

  1. When running the adjusted configuration, I get:
FileNotFoundError: [Errno 2] No such file or directory: '/home/pklaus/.pyvenv/py39/lib/python3.9/site-packages/devdeck/controls/../../assets/font-awesome/volume-up-solid.png'

Seems like the icon file (or rather the entire assets folder) is missing in the PyPI distribution of DevDeck.


Final words:

I really like this software for:

Long running commands kill devdeck

I've created a command to start a gnome-terminal and run my vpn program.
Afterwards I can't use the stream deck anymore and everything freezes :D

Keep getting Cloud not open HID device

Hi,

keep getting StreamDeck.Transport.Transport.TransportError: Could not open HID device.
Tried disconnecting and reconnecting the deck also tried rebooting.

Only other thing i noticed is that the log file keeps saying
2021-09-23 12:22:24,191 - devdeck - WARNING - No settings file detected!
2021-09-23 12:24:43,234 - devdeck - WARNING - No settings file detected!

Not sure how to continue

2021-09-23 12:25:49,510 - devdeck - WARNING - No settings file detected! Traceback (most recent call last): File "/usr/local/bin/devdeck", line 8, in <module> sys.exit(main()) File "/usr/local/lib/python3.9/site-packages/devdeck/main.py", line 48, in main deck.open() File "/usr/local/lib/python3.9/site-packages/StreamDeck/Devices/StreamDeck.py", line 148, in open self.device.open() File "/usr/local/lib/python3.9/site-packages/StreamDeck/Transport/LibUSBHIDAPI.py", line 350, in open self.device_handle = self.hidapi.open_device(self.device_info['path']) File "/usr/local/lib/python3.9/site-packages/StreamDeck/Transport/LibUSBHIDAPI.py", line 181, in open_device raise TransportError("Could not open HID device.") StreamDeck.Transport.Transport.TransportError: Could not open HID device.

use XDG for config path resolution

Within the Linux community, leaving a lot of app specific .files for config in the $HOME is not current design pattern. The XDG system defines the config location for many os's. In linux, for example, it is .config/{appName}

It would be great if we could support that. I will have a PR to enable this up in the next few minutes.

Christopher

Auto dim

First: Thanks! Great tool! I will use it. I really love the easy configuration using yaml.

Could you maybe implement some kind of auto dim function.

  • The light is dimmed after a configurable time.
  • the first press on a button "wakes up" the stream deck - but does not execute the action
  • then everything works as expected

Ideally the stream deck would dim if the screen is locked, too.

"Stream Deck UI" has this feature implemented that way and I really like it. I think it can be very useful.

Need another udev rule for Streamdeck MK2

Product Id for Stream Deck MK2 is 0080, so I believe the wiki page should be updated to also include:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE:="660", GROUP="plugdev"

Thanks!

Support for stream deck mini

That is the result of lsusb:

Bus 003 Device 010: ID 0fd9:0090 Elgato Systems GmbH Stream Deck Mini
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0fd9 Elgato Systems GmbH
  idProduct          0x0090 
  bcdDevice            1.10
  iManufacturer           1 Elgato Systems
  iProduct                2 Stream Deck Mini
  iSerial                 3 BL41L2B04828
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0029
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     217
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)

Conditional Icons

Hey there, first of all: Great Work! ๐ŸŽ‰
Very intuitive and nice to use!

I've set up CommandControls to start or focus various programs and want to have the button indicate whether a program is already open or not. Either by converting it to grayscale on the fly, or by using two separate images. Thought that might be a feature that could be useful in various applications.

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.