Automatic StreamController page definitions from TOML configs
Project description
Autopage
A way to easily automatically have pages/button behaviors without having to manually populate each page/button via the StreamController GUI.
Users can write a small text file to support a new app with keybindings/buttons that will automatically be added to the streamdeck when that app is in the foreground.
These application recipes are sharable (so we can build a library of auto-configured apps). By default, Autopage automatically imports 'approved' contributions from autopage-recipes. If you add new apps, please send in a pull request!
Features
- Default mode: Just blindly installs auto-generated pages onto your StreamControllers. This works fine while the number of app recipes is still small.
- Background mode: Stays running watching your StreamController, only adds pages if and when it sees a supported app being run on your machine. Eventually, if/when there are many app recipes, this will become the default mode of operation.
- Easy! A variety of applications are automatically supported, but if one is missing you can add it.
Installation
- Install the "OS" plug-in from the StreamController store. This is needed to let the "typing" actions type keys.
- Install "Material design icon pack" from the store, because the buttons will look better with icons. (Autopage works with all icon packs, but this is a good default one to use)
- Install pipx if you don't already have it.
- Run "pipx install stream-autopage"
Usage
- "autopage" - This will install known autopage definitions onto your StreamController (try this first).
- "autopage --listen" - This will run in the background and only create pages if it sees you use a supported app. (Until there are lots of pages you probably don't need to bother with this)
- "autopage somepath/foo.ap.toml" - Uses just a single ap.toml file (for testing/using your own new app definitions).
A note to StreamController developers
- I've structured this app so that someday we could just move it into the StreamController flatpak. When that happens, I'm happy to move this repo (and the recipes repo) to your organization. Mostly I just want it to be useful. ;-)
History
- (DONE) Release 0.1: Implement example foo.ap.toml files for: vscode, kate editor, ptyxis shell. Mostly to make sure basic operation works and the toml syntax is brief but clear/simple. This first version blindly creates pages (via api_client) 1:1 for any found ap.toml files and then exits.
- (DONE) Release 0.2: Subscribes to foregroundWindowName/Class notifications, and only creates autopage pages for apps the user actually encounters on their machine. Remains running as a daemon and when it is notified of the current app changes, creates and activates a new page as needed.
- (SOMEDAY) Release 0.3: Use the Steam APIs to auto-detect running Steam games and automatically create template ap.toml files for any encountered games, set the background image for that page based on Steam store image.
Streamclient
This project also contains a small command-line client for the StreamController app. I needed it for testing the app API, but eventually it might be useful for others:
> poetry run streamclient
usage: streamclient [-h] {controllers,pages,add-page,remove-page,set-active-page,notify-foreground,icon-packs,icons,get-property,listen} ...
StreamController DBus API client
positional arguments:
{controllers,pages,add-page,remove-page,set-active-page,notify-foreground,icon-packs,icons,get-property,listen}
controllers List connected controller serial numbers
pages List all pages
add-page Add a new page (based on an optional JSON template)
remove-page Remove a page
set-active-page Set the active page on a controller
notify-foreground Notify foreground window (for testing window title notifications)
icon-packs List icon packs
icons List icons in a pack
get-property Read a DBus property
listen Listen for property change notifications
options:
-h, --help show this help message and exit
Discuss
For more details/discussion see this issue
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stream_autopage-0.2.2.tar.gz.
File metadata
- Download URL: stream_autopage-0.2.2.tar.gz
- Upload date:
- Size: 28.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f837f72dadb52c7c2677670334f190397b2b448f55220b8cef81527bef9a21e9
|
|
| MD5 |
c8144fe46de8302e9382f693f6f19e81
|
|
| BLAKE2b-256 |
c110fc3e58a46afe5a2a28828e3ffea9f5e1a674d4faa270cd3187bbb6ac9586
|
Provenance
The following attestation bundles were made for stream_autopage-0.2.2.tar.gz:
Publisher:
publish.yml on geeksville/autopage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stream_autopage-0.2.2.tar.gz -
Subject digest:
f837f72dadb52c7c2677670334f190397b2b448f55220b8cef81527bef9a21e9 - Sigstore transparency entry: 929769759
- Sigstore integration time:
-
Permalink:
geeksville/autopage@399680ea055902fc1248005c6603e0e9605683b6 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/geeksville
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@399680ea055902fc1248005c6603e0e9605683b6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file stream_autopage-0.2.2-py3-none-any.whl.
File metadata
- Download URL: stream_autopage-0.2.2-py3-none-any.whl
- Upload date:
- Size: 30.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e987e7cdf46b3380d828420693716abf0db3512216659b34baf36434f02510b2
|
|
| MD5 |
56f8e283cb68043245f62cc742824dbe
|
|
| BLAKE2b-256 |
22562e5b5e81b1b7b28085c869f85d56579cdc17638aaf572debbfa14536857e
|
Provenance
The following attestation bundles were made for stream_autopage-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on geeksville/autopage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stream_autopage-0.2.2-py3-none-any.whl -
Subject digest:
e987e7cdf46b3380d828420693716abf0db3512216659b34baf36434f02510b2 - Sigstore transparency entry: 929769763
- Sigstore integration time:
-
Permalink:
geeksville/autopage@399680ea055902fc1248005c6603e0e9605683b6 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/geeksville
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@399680ea055902fc1248005c6603e0e9605683b6 -
Trigger Event:
push
-
Statement type: