Files
decky-frontend-lib/src/globals/steam-client/Settings.ts
Yao Chung Hu 131ab4cc11 feat(globals): Steam client reference (#92)
* change: Add SteamClient types

Steam Version:  1690583737
Steam Client Build Date:  Sat, Jul 29 02:44 UTC -08:00

* new: Document some SteamClient interfaces

Using the SDH discord server, GitHub and some personal findings, I tried to document as much SteamClient functions as I can.

* new: Document some SteamClient interfaces - part 2

* new: Document some SteamClient interfaces - part 3

* new: Document some SteamClient interfaces - part 4

* new: Document some SteamClient interfaces - part 5

* new: Document some SteamClient interfaces - part 6

* new: Document some SteamClient interfaces - part 7

* change: Update interfaces to Steam Version 1691097434

Steam Version:  1691097434
Steam Client Build Date:  Fri, Aug 4 04:54 UTC -08:00

* new: Document some SteamClient interfaces - part 8

* new: Document some SteamClient interfaces - part 9

* change: Update interfaces to Steam Version 1694466342

Steam Version:  1694466342
Steam Client Build Date:  Tue, Sep 12 04:59 UTC +08:00

* new: Document some SteamClient interfaces - part 10

* new: Document some SteamClient interfaces - part 11

* new: Document some SteamClient interfaces - part 12

* new: Document some SteamClient interfaces - part 13

* new: Document some SteamClient interfaces - part 14

* change: Update interfaces to Steam Version 1698260427

Steam Version:  1698260427
Steam Client Build Date:  Thu, Oct 26 2:40 AM UTC -08:00

* new: Document some SteamClient interfaces - part 10

* change: Update interfaces to Steam Version 1700160213

Steam Version:  1700160213
Steam Client Build Date:  Fri, Nov 17 2:23 AM UTC +08:00

* docs(SteamClient): document some interfaces

* change: Fix formatting style

* docs(SteamClient): document protobufs & System.Report

* docs(SteamClient): document CMsgMonitorInfo

* docs(SteamClient): document remaining messages

* docs(SteamClient): update interfaces to Steam Version 1702515219
Steam Version:  1702515219
Steam Client Build Date:  Thu, Dec 14 00:36 UTC -08:00

* docs(SteamClient): update interfaces to Steam Version 1704329464
Steam Version:  1704329464
Steam Client Build Date:  Thu, Jan 4 12:23 AM UTC -08:00

* docs(SteamClient): update interfaces to Steam Version 1705630720
Steam Version:  1705630720
Steam Client Build Date:  Fri, Jan 19 1:58 AM UTC -08:00

* docs(SteamClient): update interfaces to Steam Version 1706914901
Steam Version:  1706914901
Steam Client Build Date:  Fri, Feb 2 8:46 PM UTC -08:00

* docs(SteamClient): update interfaces to Steam Version 1709920887
Steam Version:  1709920887
Steam Client Build Date:  Thu, Mar 7 5:29 PM UTC -08:00

* docs(SteamClient): update interfaces to Steam Version 1710786209
Steam Version:  1710786209
Steam Client Build Date:  Mon, Mar 18 7:07 PM UTC -08:00

* docs(SteamClient): document even more interfaces

* new: Document some SteamClient interfaces - part 15

* Fix QAM button bit number

* new: Document some SteamClient interfaces - part 16

* change: Update interfaces to Steam Version 1714854927

Steam Version: 1714854927
Steam Client Build Date:  Sat, May 4 7:11 AM UTC -08:00

* change: Refactor and reorganize SteamClient

* docs(SteamClient): document more notification interfaces

* docs(SteamClient): document more interfaces

* docs(SteamClient): add some descriptions

* docs(SteamClient): remove duplicate types

* change: Fix rebase errors

* Updated ControllerStateChange

* Fix typo

* docs(SteamClient): update interfaces to Steam Version 1723601482

Steam Version:  1723601482
Steam Client Build Date:  Wed, Aug 14 01:51 UTC -08:00

* docs(SteamClient): update interfaces to 1725654351

* docs(SteamClient): update interfaces to 1730416762

* docs(SteamClient): forgot some stuff

* docs(SteamClient): add missed interfaces

* docs(SteamClient): update enums

* docs(SteamClient): add some things and move stuff around

* docs(SteamClient): move shared enums/interfaces to a separate file

* docs(SteamClient): add more stuff

* docs(SteamClient): reword some things

* docs(SteamClient): new BrowserView things

* docs(SteamClient): review fixes

* move to src/globals

---------

Co-authored-by: ricewind012 <58827198+ricewind012@users.noreply.github.com>
Co-authored-by: Party Wumpus <48649272+PartyWumpus@users.noreply.github.com>
Co-authored-by: Xander <xander@isxander.dev>
2025-04-23 11:20:48 -04:00

664 lines
14 KiB
TypeScript

import {CompatibilityTool as CompatibilityTool} from "./App";
import { JsPbMessage, OperationResponse, Unregisterable } from "./shared";
export interface Settings {
AddClientBeta(name: string, password: string): void;
/**
* Clears HTTP cache located in `<STEAMPATH>/appcache/httpcache`.
*/
ClearAllHTTPCaches(): void;
/**
* Clears download cache and logs you out.
*/
ClearDownloadCache(): void;
GetAccountSettings(): Promise<AccountSettings>;
GetAppUsesP2PVoice(appId: number): Promise<boolean>;
GetAvailableLanguages(): Promise<Language[]>;
GetAvailableTimeZones(): Promise<TimeZone[]>;
// Returns the current language "english"
GetCurrentLanguage(): Promise<string>;
GetGlobalCompatTools(): Promise<CompatibilityTool[]>;
/**
* @returns a ProtoBuf message. If deserialized, returns {@link MsgMonitorInfo}.
*/
GetMonitorInfo(): Promise<ArrayBuffer>;
GetOOBETestMode(): Promise<boolean>;
GetRegisteredSteamDeck(): Promise<RegisteredSteamDeck>;
// Returns the current timezone
GetTimeZone(): Promise<string>;
GetWindowed(): Promise<boolean>;
IgnoreSteamDeckRewards(): void;
/**
* Opens the Windows microphones dialog.
*/
OpenWindowsMicSettings(): void;
RegisterForMicVolumeUpdates: Unregisterable;
/**
* If `data` is deserialized, returns {@link MsgClientSettings}.
* @returns an object that can be used to unregister the callback.
*/
RegisterForSettingsArrayChanges(callback: (data: ArrayBuffer) => void): Unregisterable;
RegisterForSettingsChanges(callback: (settings: SteamSettings) => void): Unregisterable;
RegisterForTimeZoneChange(callback: (timezoneId: string) => void): Unregisterable; // When timezone is changed from settings, callback will return new timezoneId
ReinitMicSettings(): void;
RenderHotkey(event: KeyCaptureEvent): Promise<string>;
RequestDeviceAuthInfo(): void;
SelectClientBeta(nBetaID: number): void;
// Get from available languages
SetCurrentLanguage(strShortName: string): void;
SetEnableSoftProcessKill(value: boolean): void; // Default value is false, this is Valve internal menu
SetHostname(hostname: string): void;
SetMicTestMode(value: boolean): void;
SetOOBETestMode(value: boolean): void;
SetPreferredMonitor(monitor: string): void;
SetRegisteredSteamDeck(steam64Id: string, serialNumber: string): void;
/**
* Sets the "Don't save account credentials on this computer" option.
* @param value Whether to save account credentials.
*/
SetSaveAccountCredentials(value: boolean): void;
/**
* @param base64 Serialized base64 message from `CMsgClientSettings`.
* @returns a boolean indicating whether the operation was successful.
*/
SetSetting(base64: string): Promise<boolean>;
/**
* You can get valid timezoneIds from {@link GetAvailableTimeZones}.
*/
SetTimeZone(timezoneId: string): void;
SetUseNintendoButtonLayout(controllerIndex: number, value: boolean): void;
SetUseUniversalFaceButtonGlyphs(nControllerIndex: number, value: boolean): void;
SetWindowed(value: boolean): void;
SpecifyGlobalCompatTool(strToolName: string): void;
ToggleSteamInstall(): Promise<OperationResponse>;
}
export interface AccountSettings {
strEmail: string;
bEmailValidated: boolean;
bHasAnyVACBans: boolean;
bHasTwoFactor: boolean;
eSteamGuardState: ESteamGuardState;
rtSteamGuardEnableTime: number;
bSaveAccountCredentials: boolean;
}
/**
* @todo unconfirmed, taken from localization strings
*/
export enum ESteamGuardState {
EmailUnverified,
Protected,
Disabled,
Offline,
NotEnabled,
}
export interface KeyCaptureEvent {
alt_key: boolean;
ctrl_key: boolean;
display_name: string;
meta_key: boolean;
shift_key: boolean;
}
export interface Language {
language: ELanguage;
strShortName: string;
}
export enum ELanguage {
None = -1,
English,
German,
French,
Italian,
Korean,
Spanish,
SimplifiedChinese,
TraditionalChinese,
Russian,
Thai,
Japanese,
Portuguese,
Polish,
Danish,
Dutch,
Finnish,
Norwegian,
Swedish,
Hungarian,
Czech,
Romanian,
Turkish,
Brazilian,
Bulgarian,
Greek,
Arabic,
Ukrainian,
LatamSpanish,
Vietnamese,
SteamChina_SChinese,
Max,
}
export interface RegisteredSteamDeck {
bRegistered: boolean;
bIgnoreRegistrationPrompt: boolean;
strSteamID: string;
strSerialNumber: string;
}
export interface TimeZone {
utcOffset: number;
timezoneID: string;
timezoneLocalizationToken: string;
regionsLocalizationToken: string;
}
interface Region {
nRegionID: number;
strRegionName: string;
}
interface Hour {
nHour: number;
strDisplay: string;
}
interface AvailableClientBeta {
nBetaID: number;
strName: string;
}
interface SteamSettings {
bIsInClientBeta: boolean;
bIsSteamSideload: boolean;
eClientBetaState: EClientBetaState;
strSelectedBetaName: string;
nAvailableBetas: number;
bChangeBetaEnabled: boolean;
nSelectedBetaID: number;
vecAvailableClientBetas: AvailableClientBeta[];
bIsValveEmail: boolean;
bIsInDesktopUIBeta: boolean;
bEnableSoftProcessKill: boolean;
vecValidDownloadRegions: Region[];
vecValidAutoUpdateRestrictHours: Hour[];
bCompatEnabled: boolean;
bCompatEnabledForOtherTitles: boolean;
strCompatTool: string;
strDisplayName: string;
bDisplayIsExternal: boolean;
flAutoDisplayScaleFactor: number;
flCurrentDisplayScaleFactor: number;
bDisplayIsUsingAutoScale: boolean;
flMinDisplayScaleFactor: number;
flMaxDisplayScaleFactor: number;
flCurrentUnderscanLevel: number;
bUnderscanEnabled: boolean;
vecNightModeScheduledHours: Hour[];
}
export enum EClientBetaState {
None,
NoneChosen,
NoneChosenNonAdmin,
InBeta,
InBetaNonAdmin,
}
/**
* CMsgMonitorInfo
*/
export interface MsgMonitorInfo extends JsPbMessage {
monitors(): Monitor[];
selected_display_name(): string;
add_monitors(param0: any, param1: any): any;
set_monitors(param0: any): any;
set_selected_display_name(param0: any): any;
}
/**
* @todo Doesn't work on Linux ?
*/
export interface Monitor {
monitor_device_name: string;
monitor_display_name: string;
}
/**
* CMsgClientSettings
*/
export interface MsgClientSettings extends JsPbMessage {
always_show_user_chooser(): boolean;
always_use_gamepadui_overlay(): boolean;
auto_scale_factor(): number;
bigpicture_windowed(): boolean;
broadcast_bitrate(): number;
broadcast_chat_corner(): number;
broadcast_encoding_option(): EBroadcastEncoderSetting;
broadcast_output_height(): number;
broadcast_output_width(): number;
broadcast_permissions(): EBroadcastPermission;
broadcast_record_all_audio(): boolean;
broadcast_record_all_video(): boolean;
broadcast_record_microphone(): boolean;
broadcast_show_live_reminder(): boolean;
broadcast_show_upload_stats(): boolean;
cef_remote_debugging_enabled(): boolean;
cloud_enabled(): boolean;
controller_combine_nintendo_joycons(): boolean;
controller_enable_chord(): boolean;
controller_generic_support(): boolean;
controller_guide_button_focus_steam(): boolean;
controller_poll_rate(): boolean;
controller_power_off_timeout(): number;
controller_ps_support(): number;
controller_switch_support(): boolean;
controller_xbox_driver(): boolean;
controller_xbox_support(): boolean;
default_ping_rate(): number;
disable_all_toasts(): boolean;
disable_toasts_in_game(): boolean;
display_name(): string;
download_peer_content(): number;
download_rate_bits_per_s(): boolean;
download_region(): number;
download_throttle_rate(): number;
download_throttle_while_streaming(): boolean;
download_while_app_running(): boolean;
enable_avif_screenshots(): boolean;
enable_dpi_scaling(): boolean;
enable_gpu_accelerated_webviews(): boolean;
enable_hardware_video_decoding(): boolean;
enable_marketing_messages(): boolean;
enable_overlay(): boolean;
enable_screenshot_notification(): boolean;
enable_screenshot_sound(): boolean;
enable_shader_background_processing(): boolean;
enable_shader_precache(): boolean;
enable_ui_sounds(): boolean;
force_deck_perf_tab(): boolean;
force_fake_mandatory_update(): boolean;
force_oobe(): boolean;
g_background_audio(): EGRAudio;
g_background_a_m(): number;
g_background_a_s(): boolean;
g_background_path(): string;
g_background_max_keep(): string;
g_background_mode(): EGRMode;
g_background_time_resolution(): number;
g_background_mk(): CMsgHotkey;
g_background_tg(): CMsgHotkey;
g_max_fps(): number;
gamerecording_automatic_gain_control(): boolean;
gamerecording_export_codec(): EExportCodec;
gamerecording_export_directory(): number;
gamerecording_export_limit_bitrate(): number;
gamerecording_export_limit_frame_rate(): number;
gamerecording_export_limit_height(): number;
gamerecording_export_limit_size_mb(): number;
gamerecording_export_limit_width(): number;
gamerecording_export_limit_type(): EGRExportLimitType;
gamerecording_force_mic_mono(): boolean;
gamerecording_hotkey_ic(): CMsgHotkey;
gamerecording_ic_seconds(): number;
gamerecording_video_bitrate(): string;
gamerecording_video_maxheight(): number;
game_notes_enable_spellcheck(): boolean;
gamescope_allow_tearing(): boolean;
gamescope_app_target_framerate(): number;
gamescope_composite_debug(): boolean;
gamescope_disable_framelimit(): boolean;
gamescope_disable_mura_correction(): boolean;
gamescope_display_refresh_rate(): number;
gamescope_enable_app_target_framerate(): boolean;
gamescope_force_composite(): boolean;
gamescope_hdr_visualization(): EHDRVisualization;
gamescope_include_steamui_in_screenshots(): boolean;
gamescope_use_game_refresh_rate_in_steam(): boolean;
gamestream_enable_video_h265(): boolean;
gamestream_hardware_video_encode(): boolean;
hdr_compat_testing(): boolean;
in_client_beta(): boolean;
is_external_display(): boolean;
is_steam_sideloaded(): boolean;
jumplist_flags(): number;
library_disable_community_content(): boolean;
library_display_icon_in_game_list(): boolean;
library_display_size(): number;
library_low_bandwidth_mode(): boolean;
library_low_perf_mode(): boolean;
library_whats_new_show_only_product_updates(): boolean;
max_scale_factor(): number;
min_scale_factor(): number;
music_download_high_quality(): boolean;
music_pause_on_app_start(): boolean;
music_pause_on_voice_chat(): boolean;
music_playlist_notification(): boolean;
music_volume(): number;
needs_steam_service_repair(): boolean;
no_save_personal_info(): boolean;
oobe_test_mode_enabled(): boolean;
os_version_unsupported(): boolean;
overlay_fps_counter_corner(): number;
overlay_fps_counter_high_contrast(): boolean;
overlay_key(): CMsgHotkey;
overlay_restore_browser_tabs(): boolean;
overlay_scale_interface(): boolean;
overlay_tabs(): string;
overlay_toolbar_list_view(): boolean;
override_browser_composer_mode(): number;
play_sound_on_toast(): boolean;
preferred_monitor(): string;
ready_to_play_includes_streaming(): boolean;
restrict_auto_updates(): boolean;
restrict_auto_updates_end(): number;
restrict_auto_updates_start(): number;
run_at_startup(): boolean;
save_uncompressed_screenshots(): boolean;
screenshot_items_per_row(): number;
screenshot_key(): CMsgHotkey;
screenshots_path(): string;
server_ping_rate(): number;
setting_validation_bool(): boolean;
setting_validation_enum(): EHDRVisualization;
setting_validation_int32(): number;
setting_validation_uint32(): number;
setting_validation_uint64(): number;
setting_validation_float(): number;
setting_validation_string(): string;
shader_precached_size(): string;
show_copy_count_in_library(): boolean;
show_family_sharing_notifications(): boolean;
show_screenshot_manager(): boolean;
show_steam_deck_info(): boolean;
show_store_content_on_home(): boolean;
show_timestamps_in_console(): boolean;
skip_steamvr_install_dialog(): boolean;
small_mode(): boolean;
smooth_scroll_webviews(): boolean;
start_in_big_picture_mode(): boolean;
start_page(): string;
startup_movie_id(): string;
startup_movie_local_path(): string;
startup_movie_shuffle(): boolean;
startup_movie_used_for_resume(): boolean;
steam_cef_gpu_blocklist_disabled(): boolean;
steam_input_configurator_error_msg_enable(): boolean;
steam_networking_share_ip(): number;
steam_os_underscan_enabled(): boolean;
steam_os_underscan_level(): number;
steamos_cec_enabled(): boolean;
steamos_cec_wake_on_resume(): boolean;
steamos_magnifier_scale(): number;
steamos_status_led_brightness(): number;
steamos_tdp_limit(): number;
steamos_tdp_limit_enabled(): boolean;
steamos_wifi_debug(): boolean;
steamos_wifi_force_wpa_supplicant(): boolean;
system_bluetooth_enabled(): boolean;
turn_off_controller_on_exit(): boolean;
voice_mic_device_name(): string;
voice_mic_input_gain(): number;
voice_push_to_talk_key(): CMsgHotkey;
voice_push_to_talk_setting(): number;
voice_speaker_output_gain(): number;
web_browser_home(): string;
}
export interface CMsgHotkey extends JsPbMessage {
key_code(): number;
alt_key(): boolean;
shift_key(): boolean;
ctrl_key(): boolean;
meta_key(): boolean;
display_name(): string;
}
export enum EBroadcastEncoderSetting {
BestQuality,
BestPerformance,
}
export enum EBroadcastPermission {
Disabled,
FriendsApprove,
FriendsAllowed,
Public,
Subscribers,
}
export enum EExportCodec {
Default,
H264,
H265,
}
export enum EGRAudio {
Game,
System,
Select,
}
export enum EGRExportLimitType {
Native,
FileSize,
Advanced,
}
export enum EGRMode {
Never,
Always,
Manual,
}
export enum EHDRVisualization {
None,
Heatmap,
Analysis,
HeatmapExtended,
HeatmapClassic,
}