pub struct RenderingConfig {
pub max_fps: u32,
pub vsync_mode: VsyncMode,
pub power_preference: PowerPreference,
pub reduce_flicker: bool,
pub reduce_flicker_delay_ms: u32,
pub maximize_throughput: bool,
pub throughput_render_interval_ms: u32,
}Expand description
Frame rate target, VSync mode, GPU preference and output batching.
Fields§
§max_fps: u32Maximum frames per second (FPS) target Controls how frequently the terminal requests screen redraws. Note: On macOS, actual FPS may be lower (~22-25) due to system-level VSync throttling in wgpu/Metal, regardless of this setting. Default: 60
vsync_mode: VsyncModeVSync mode - controls GPU frame synchronization
- immediate: No VSync, render as fast as possible (lowest latency, highest power)
- mailbox: Cap at monitor refresh rate with triple buffering (balanced)
- fifo: Strict VSync with double buffering (lowest power, slight input lag)
Default: fifo (strict VSync — lowest power, most compatible)
power_preference: PowerPreferenceGPU power preference for adapter selection
- none: Let the system decide (default)
- low_power: Prefer integrated GPU (saves battery)
- high_performance: Prefer discrete GPU (maximum performance)
Note: Requires app restart to take effect.
reduce_flicker: boolReduce flicker by delaying redraws while cursor is hidden (DECTCEM off). Many terminal programs hide cursor during bulk updates to prevent visual artifacts.
reduce_flicker_delay_ms: u32Maximum delay in milliseconds when reduce_flicker is enabled. Rendering occurs when cursor becomes visible OR this delay expires. Range: 1-100ms. Default: 16ms (~1 frame at 60fps).
maximize_throughput: boolEnable throughput mode to batch rendering during bulk output. When enabled, rendering is throttled to reduce CPU overhead for large outputs. Toggle with Cmd+Shift+T (macOS) or Ctrl+Shift+T (other platforms).
throughput_render_interval_ms: u32Render interval in milliseconds when maximize_throughput is enabled. Higher values = better throughput but delayed display. Range: 50-500ms.
Trait Implementations§
Source§impl Clone for RenderingConfig
impl Clone for RenderingConfig
Source§fn clone(&self) -> RenderingConfig
fn clone(&self) -> RenderingConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RenderingConfig
impl Debug for RenderingConfig
Source§impl Default for RenderingConfig
impl Default for RenderingConfig
Source§fn default() -> RenderingConfig
fn default() -> RenderingConfig
Source§impl<'de> Deserialize<'de> for RenderingConfig
impl<'de> Deserialize<'de> for RenderingConfig
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<RenderingConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<RenderingConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for RenderingConfig
impl Serialize for RenderingConfig
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for RenderingConfig
impl RefUnwindSafe for RenderingConfig
impl Send for RenderingConfig
impl Sync for RenderingConfig
impl Unpin for RenderingConfig
impl UnsafeUnpin for RenderingConfig
impl UnwindSafe for RenderingConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().