A modified version of the Decky Plugin Template that helps you get up and running faster, and includes a variety of quality of life changes.
- Global state, backend interop, logging, and intialization are all already set up.
- Automatic changelog generation and plugin building with GitHub Actions.
- Intuitive project structure.
- Helpful comments throughout.
- Install the recommended VSCode extensions for this repository
- Enable SSH on your steamdeck. I recommend this guide. I also find that automatically starting the ssh server is incredibly useful during dev
- Get your deck's ip address with
hostname -I
or in the settings in game mode - In VSCode, go to the
Remote Explorer
tab, and add a new target. Enteryour_deck_user@ip_address
in the field, and then connect with your sudo password - Once you've connected, open the Desktop directory of your Steamdeck (you'll need to enter your password again)
- (Optional) make a directory to store your in dev plugins in (ex: I made a dev-plugins directory)
- Run
sudo ln -S ~/homebrew/plugins/YourPluginName ~/Desktop/dev-plugins/YourPluginName
(This is to avoid having to authenticate every time you edit your plugin)
- In your plugin directory (on your machine), run
pnpm build
- Copy
plugin.json
,package.json
,LICENSE
,main.py
into the directory on your Steamdeck you made earlier - Copy
dist/index.js
into the same directory (it should look like~/Desktop/dev-plugins/YourPluginName/dist/index.js
) - If you have files in
./defaults
, copy those into the directory as well (ex:./defaults/docs
becomes~/Desktop/dev-plugins/YourPluginName/docs
) - Run
sudo systemctl restart plugin_loader
on your deck
- package.json
- Change the plugin name
- Change the the author name
- Change the description
- Change all git urls
- Change the keywords
- plugin.json
- Change the plugin name
- Change the the author name
- Change description
- Change the tags
- src/index.tsx
- Change the display name on line #48
- src/components/QuickAccessContent.tsx
- Change
QuickStart
on line line #30 - Change the Git and Discord Urls starting on line #35
- Change
- src/components/styles/QamStyles.tsx
- Change all instances of
quick-start
to your plugin's name
- Change all instances of
- src/lib/PluginController.tsx
- Change the name and color used for the Logger on line #24
- main.py
- Change the name
QuickStart
on line #109 - Define your settings getters on line #47
- Define your settings setters on line #65
- Load your settings initially on line #61
- Change the name
- .github/workflows/release.yml
- replace
QuickStart
with your plugin's name on line #49 - replace
QuickStart
with your plugin's name on line #82 - replace
QuickStart
with your plugin's name on line #136 - replace
QuickStart
with your plugin's name on line #152 - replace
QuickStart
with your plugin's name on line #163
- replace
- Remove any files you dont need
- Create a logo and place it in
./assets/
. (I recommend overlaying it over a screenshot of the plugin) - Fork decky-plugin-database and make a new branch with the name of your plugin
- Open up your fork on your computer, and add your plugin as a Git Submodule (see below)
- Push the changes
- Make a Pull Request to the
decky-plugin-database
repository
- Sync the branch of your
decky-plugin-database
fork - Open up your fork on your computer, and update the Git Submodule for your plugin (see below)
- Push the changes
- Make a Pull Request to the
decky-plugin-database
repository
- All custom styling rules should be wrapped in a scoping class with the name of your plugin in it
- Use Decky Frontend Lib (DFL) where ever possible, to reduce maintenance required for your plugin.
- Notify users when errors occur
- Validate your settings after they are loaded on the frontend, sometimes weird things happen to your settings file
- Always define fallbacks for settings when loading them
- git submodule add
<plugin git url>
"plugins/YourPluginName" - git submodule update --init "plugins/YourPluginName"
- git submodule update --init "plugins/YourPluginName"
- git submodule update --remote "plugins/YourPluginName"
- This program is licensed under the GNU General Public License Version 3 and BSD 3-Clause License