Skip to main content

SettingsType

Struct SettingsType 

Source
pub struct SettingsType {
Show 103 fields pub app_clear: bool, pub app_dismiss_architecture_warning: bool, pub app_default_new_block: String, pub app_show_overlay_block_nums: Option<bool>, pub term_clear: bool, pub term_font_size: f64, pub term_font_family: String, pub term_theme: String, pub term_disable_web_gl: bool, pub term_local_shell_path: String, pub term_local_shell_opts: Vec<String>, pub term_scrollback: Option<i64>, pub term_durable: Option<bool>, pub term_copy_on_select: Option<bool>, pub term_transparency: Option<f64>, pub term_scroll_sensitivity: Option<f64>, pub term_allow_bracketed_paste: Option<bool>, pub term_shift_enter_newline: Option<bool>, pub browser_search_suggestions: Option<bool>, pub term_agent_max_runtime_hours: f64, pub term_agent_idle_timeout_mins: f64, pub cmd_env: HashMap<String, String>, pub block_header_clear: bool, pub block_header_show_block_ids: bool, pub preview_show_hidden_files: Option<bool>, pub tab_preset: String, pub widget_clear: bool, pub widget_icon_only: Option<bool>, pub widget_pinned: Option<Vec<String>>, pub widget_hidden: Option<Vec<String>>, pub statusbar_show_muxbus_cloud: Option<bool>, pub window_clear: bool, pub window_transparent: bool, pub window_blur: bool, pub window_opacity: Option<f64>, pub window_bg_color: String, pub window_reduced_motion: bool, pub window_tile_gap_size: Option<i64>, pub window_show_menu_bar: bool, pub window_native_title_bar: bool, pub window_disable_hardware_acceleration: bool, pub window_max_tab_cache_size: i32, pub window_magnified_block_opacity: Option<f64>, pub window_magnified_block_size: Option<f64>, pub window_magnified_block_blur_primary_px: Option<i64>, pub window_magnified_block_blur_secondary_px: Option<i64>, pub window_confirm_close: bool, pub window_save_last_window: bool, pub window_keep_inactive_tabs_laid_out: Option<bool>, pub window_dimensions: String, pub window_zoom: Option<f64>, pub telemetry_clear: bool, pub telemetry_enabled: bool, pub telemetry_interval: f64, pub telemetry_numpoints: Option<i64>, pub conn_clear: bool, pub conn_helper: String, pub network_lan_discovery: bool, pub voice_enabled: Option<bool>, pub voice_engine: Option<String>, pub voice_groq_api_key: Option<String>, pub voice_whisper_cli_path: Option<String>, pub voice_whisper_model: Option<String>, pub voice_whisper_model_path: Option<String>, pub notify_sounds_enabled: Option<bool>, pub notify_sounds_volume: Option<f32>, pub notify_sounds_suppress_when_focused: Option<bool>, pub notify_sound_agent_turn_complete: Option<bool>, pub notify_sound_agent_turn_error: Option<bool>, pub notify_sound_agent_turn_interrupted: Option<bool>, pub notify_sound_agent_message_accepted: Option<bool>, pub notify_sound_agent_message_rejected: Option<bool>, pub notify_tooltones_enabled: Option<bool>, pub notify_tooltones_volume: Option<f32>, pub notify_tooltones_scope: Option<String>, pub notify_tooltones_flash: Option<bool>, pub notify_waiting_browser: Option<bool>, pub messaging_discord_enabled: bool, pub messaging_discord_token: Option<String>, pub messaging_discord_channel: String, pub messaging_discord_target: Option<String>, pub messaging_discord_guild: Option<String>, pub messaging_telegram_enabled: bool, pub messaging_telegram_token: Option<String>, pub messaging_telegram_allowed_chats: String, pub messaging_telegram_default_chat: Option<String>, pub messaging_telegram_target: Option<String>, pub messaging_slack_enabled: bool, pub messaging_slack_bot_token: Option<String>, pub messaging_slack_app_token: Option<String>, pub messaging_slack_channel: String, pub messaging_slack_target: Option<String>, pub messaging_whatsapp_enabled: bool, pub messaging_whatsapp_phone_number_id: String, pub messaging_whatsapp_access_token: Option<String>, pub messaging_whatsapp_app_secret: Option<String>, pub messaging_whatsapp_webhook_verify_token: Option<String>, pub messaging_whatsapp_target: Option<String>, pub messaging_whatsapp_fallback_template: Option<String>, pub messaging_whatsapp_fallback_template_lang: Option<String>, pub messaging_whatsapp_tunnel_domain: String, pub connections: HashMap<String, ConnKeywords>, pub extra: HashMap<String, Value>,
}
Expand description

Application settings. Matches Go’s wconfig.SettingsType JSON tags. Fields use pointer-like Option for nullable booleans/numbers to distinguish “not set” from “false/0”.

Fields§

§app_clear: bool§app_dismiss_architecture_warning: bool§app_default_new_block: String§app_show_overlay_block_nums: Option<bool>§term_clear: bool§term_font_size: f64§term_font_family: String§term_theme: String§term_disable_web_gl: bool§term_local_shell_path: String§term_local_shell_opts: Vec<String>§term_scrollback: Option<i64>§term_durable: Option<bool>

SSH terminal panes durable (their shell kept on the host by AgentMux’s helper) or not, unless a pane or its connection says otherwise. Unset: durable, asking before the helper is installed on a host without it, and plain there if it isn’t (durable_mode::mode).

§term_copy_on_select: Option<bool>§term_transparency: Option<f64>§term_scroll_sensitivity: Option<f64>§term_allow_bracketed_paste: Option<bool>§term_shift_enter_newline: Option<bool>§browser_search_suggestions: Option<bool>

A browser pane’s address bar also asks the default search engine for suggestions while you type (each edit is sent to it before you submit), as Chrome does. Unset: on. Off: suggestions come only from this computer (history, typed URLs). Incognito tabs never ask, as in Chrome.

§term_agent_max_runtime_hours: f64

Maximum runtime in hours before the watchdog kills an agent pane. 0 (default) disables the limit.

§term_agent_idle_timeout_mins: f64

Minutes of PTY silence before the watchdog kills an idle agent pane. 0 (default) disables the limit.

§cmd_env: HashMap<String, String>§block_header_clear: bool§block_header_show_block_ids: bool§preview_show_hidden_files: Option<bool>§tab_preset: String§widget_clear: bool§widget_icon_only: Option<bool>§widget_pinned: Option<Vec<String>>

The widget bar’s pinned icons, in order: a built-in’s short name (agent for defwidget@agent), or an installed package widget’s full key (ext@<id>/<pane>). Absent means the fresh-install default: the entries with display:pinned. Written whole by the bar, its drag reorder and Settings → Widgets.

§widget_hidden: Option<Vec<String>>

Widget-bar entries the user hid, as full keys (defwidget@drone, ext@acme.board/main): on neither the bar nor More, nor in the pane “+” picker. Absent means nothing is hidden. SPEC_WIDGET_BAR_VISIBILITY_SETTINGS_2026_10_12.md.

§statusbar_show_muxbus_cloud: Option<bool>

Whether the status bar shows MuxBus Cloud: the dot after the host name and the sign-in block in the host popover. Absent means shown; only an explicit false hides it. LAN is unaffected. SPEC_STATUSBAR_HIDE_MUXBUS_SETTING_2026_10_08.md.

§window_clear: bool§window_transparent: bool§window_blur: bool§window_opacity: Option<f64>§window_bg_color: String§window_reduced_motion: bool§window_tile_gap_size: Option<i64>§window_show_menu_bar: bool§window_native_title_bar: bool§window_disable_hardware_acceleration: bool§window_max_tab_cache_size: i32§window_magnified_block_opacity: Option<f64>§window_magnified_block_size: Option<f64>§window_magnified_block_blur_primary_px: Option<i64>§window_magnified_block_blur_secondary_px: Option<i64>§window_confirm_close: bool§window_save_last_window: bool§window_keep_inactive_tabs_laid_out: Option<bool>

Keep inactive window tabs laid out (visibility: hidden) instead of skipping their layout (content-visibility: hidden), so switching back has nothing to catch up on. On unless false (the frontend treats unset as on); see docs/analysis/ANALYSIS_WINDOW_TAB_SWITCH_SMOOTHNESS_2026_09_24.md §7.

§window_dimensions: String§window_zoom: Option<f64>§telemetry_clear: bool§telemetry_enabled: bool§telemetry_interval: f64§telemetry_numpoints: Option<i64>§conn_clear: bool§conn_helper: String

Installing AgentMux’s helper on a host whose own conn:helper is unset: ask (unset), always or never (SPEC_REMOTES_PANE_2026_10_05.md §4.9).

§network_lan_discovery: bool§voice_enabled: Option<bool>§voice_engine: Option<String>§voice_groq_api_key: Option<String>§voice_whisper_cli_path: Option<String>§voice_whisper_model: Option<String>§voice_whisper_model_path: Option<String>§notify_sounds_enabled: Option<bool>§notify_sounds_volume: Option<f32>§notify_sounds_suppress_when_focused: Option<bool>§notify_sound_agent_turn_complete: Option<bool>§notify_sound_agent_turn_error: Option<bool>§notify_sound_agent_turn_interrupted: Option<bool>§notify_sound_agent_message_accepted: Option<bool>§notify_sound_agent_message_rejected: Option<bool>§notify_tooltones_enabled: Option<bool>§notify_tooltones_volume: Option<f32>§notify_tooltones_scope: Option<String>§notify_tooltones_flash: Option<bool>§notify_waiting_browser: Option<bool>§messaging_discord_enabled: bool

Master enable for the Discord messaging bridge. When true, the bridge connects to the Discord Gateway at startup.

§messaging_discord_token: Option<String>

Discord bot token. Treat as a secret — do not log. Obtain from discord.com/developers/applications → Bot → Token.

§messaging_discord_channel: String

Channel ID to filter inbound messages and use as the default send target.

§messaging_discord_target: Option<String>

Agent ID that receives inbound Discord messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.

§messaging_discord_guild: Option<String>

Guild ID for guild-scoped slash command registration (Phase 2).

§messaging_telegram_enabled: bool

Master enable for the Telegram messaging bridge. When true, the bridge starts long-polling getUpdates at startup.

§messaging_telegram_token: Option<String>

Telegram bot token from @BotFather. Treat as a secret — do not log.

§messaging_telegram_allowed_chats: String

Comma-separated allowlist of chat IDs permitted to reach the bridge. Inbound updates from any other chat are silently dropped. Stored as a string (not Vec) to keep the flat-key/settings.json convention simple — parsed to Vec at startup wiring time.

§messaging_telegram_default_chat: Option<String>

Default chat ID for outbound sends when a request doesn’t override one.

§messaging_telegram_target: Option<String>

Agent ID that receives inbound Telegram messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.

§messaging_slack_enabled: bool

Master enable for the Slack messaging bridge. When true, the bridge opens a Socket Mode connection at startup.

§messaging_slack_bot_token: Option<String>

Slack bot token (xoxb-...). Used for Web API calls (chat.postMessage). Treat as a secret — do not log. Obtain from api.slack.com/apps → OAuth & Permissions → Bot User OAuth Token, after installing the app to the workspace.

§messaging_slack_app_token: Option<String>

Slack app-level token (xapp-...). Used only for apps.connections.open (Socket Mode). Treat as a secret — do not log. Obtain from api.slack.com/apps → Basic Information → App-Level Tokens, scope connections:write.

§messaging_slack_channel: String

Channel ID to filter inbound messages and use as the default send target.

§messaging_slack_target: Option<String>

Agent ID that receives inbound Slack messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.

§messaging_whatsapp_enabled: bool

Master enable for the WhatsApp Cloud API bridge. When true, the outbound sender starts and the /webhook/whatsapp routes become live (they’re always registered on the router; this flag controls whether WhatsAppBridge::get() resolves).

§messaging_whatsapp_phone_number_id: String

WhatsApp Business phone number ID (Meta App Dashboard > WhatsApp > API Setup).

§messaging_whatsapp_access_token: Option<String>

System User access token (permanent). Treat as a secret — do not log.

§messaging_whatsapp_app_secret: Option<String>

Meta App Secret, used to validate X-Hub-Signature-256 on inbound webhooks. Treat as a secret — do not log.

§messaging_whatsapp_webhook_verify_token: Option<String>

Verify token used in the GET /webhook/whatsapp handshake. User-chosen, must match what’s entered in Meta App Dashboard > WhatsApp > Configuration. Treat as a secret — do not log.

§messaging_whatsapp_target: Option<String>

Agent ID that receives inbound WhatsApp messages via the reactive bus. Absent → messages are logged but not forwarded to any agent.

§messaging_whatsapp_fallback_template: Option<String>

Template name used for outbound sends outside the 24h customer service window. If unset and the window has expired, send() fails fast rather than round-tripping to the Graph API (spec §3.4).

§messaging_whatsapp_fallback_template_lang: Option<String>

Template language code (BCP-47). Default “en_US” if unset.

§messaging_whatsapp_tunnel_domain: String

Public webhook origin (e.g. “wa.yourdomain.com”) that a user-managed tunnel (Cloudflare Tunnel, ngrok, or otherwise) points at this instance’s webhook port. v1 does not spawn or supervise a tunnel subprocess — this field is used only to print the full callback URL in the startup log as a setup reminder; the user is responsible for standing up the tunnel and registering https://<this>/webhook/whatsapp in Meta’s App Dashboard themselves. See messaging/whatsapp/mod.rs for the full scoping rationale.

§connections: HashMap<String, ConnKeywords>

Per-connection settings: settings.json → connections.<name> (SPEC_REMOTE_TERMINALS_AND_DURABLE_SESSIONS_2026_10_02.md §4, decision 5; SPEC_REMOTES_PANE_2026_10_05.md §4.3). Typed here so it reaches FullConfigType::connections, which every per-connection reader uses (ConfigState::update_settings copies it). Before this field the object fell into extra and no connection setting ever took effect. Read entry by entry (deserialize_connections), so one bad entry can’t fail the whole file.

§extra: HashMap<String, Value>

Catch-all for unknown/dynamic keys (a key this struct has no field for yet). These pass through serde unchanged so the frontend can access them as flat settings keys.

Trait Implementations§

Source§

impl Clone for SettingsType

Source§

fn clone(&self) -> SettingsType

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SettingsType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SettingsType

Source§

fn default() -> SettingsType

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for SettingsType

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for SettingsType

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more