TypeScript type definitions for the DeskThing application framework.
npm install @deskthing/types
npm create deskthing@latest
npx @deskthing/cli template
npm install @deskthing/client @deskthing/server
Action- Defines an executable action with properties like id, name, value, etc.ActionReference- Reference to an action with minimal propertiesEventMode- Enum for different input event types (KeyUp, KeyDown, Swipes, etc.)Key- Defines a key mapping with modes and metadata
ServerEvent- Enum for server-side events (MESSAGE, DATA, GET, etc.)SEND_TYPES- Enum for client-to-server communication typesGetTypes- Types for 'get' event requests
ClientManifest- Client details like name, version, device infoClientPreferences- User preferences for client appearance/behaviorApp- Interface for app state in clientKeyTrigger- Interface for key trigger events
Task- Defines a task with steps and metadataStep- Base interface for task stepsTaskStep- Standard step in a taskTaskAction- Step requiring action executionTaskSetting- Step requiring settings inputSTEP_TYPES- Enum for different step types
SettingsType- Union type of all setting typesSettingsNumber- Number input settingSettingsBoolean- Boolean toggle settingSettingsString- Text input settingSettingsSelect- Dropdown select settingSettingsMultiSelect- Multiple selection settingSettingsColor- Color picker settingAppSettings- Record of app settings
SongData- Current playing song informationThemeColor- Color theme informationAUDIO_REQUESTS- Enum for audio control requests
AppManifest- Application manifest typePlatformTypes- Supported platform typesTagTypes- App categorization tagsLOGGING_LEVELS- Log level typesSocketData- Socket communication data type
import { Action, ServerEvent, ClientManifest } from "@deskthing/types";
import { DeskThing } from "@deskthing/server";
// Define an action
const myAction: Action = {
id: "my-action",
name: "My Action",
version: "1.0.0",
enabled: true,
};
DeskThing.registerAction(myAction);
DeskThing.on(ServerEvent.ACTION, (event) => {
// Handle action event
});
// Handle server events
function handleEvent(event: ServerEvent) {
switch (event) {
case ServerEvent.DATA:
// Handle data event
break;
case ServerEvent.ACTION:
// Handle action event
break;
}
}MIT