feat(config): allow disabling writing session metadata to disk (#3258)
* feat(config): allow disabling writing session metadata to disk * style(fmt): rustfmt
This commit is contained in:
parent
1c883c2a83
commit
89ce355c04
14 changed files with 52 additions and 10 deletions
|
|
@ -84,6 +84,7 @@ static DEFAULT_SERIALIZATION_INTERVAL: u64 = 60000;
|
|||
pub(crate) fn background_jobs_main(
|
||||
bus: Bus<BackgroundJob>,
|
||||
serialization_interval: Option<u64>,
|
||||
disable_session_metadata: bool,
|
||||
) -> Result<()> {
|
||||
let err_context = || "failed to write to pty".to_string();
|
||||
let mut running_jobs: HashMap<BackgroundJob, Instant> = HashMap::new();
|
||||
|
|
@ -175,11 +176,13 @@ pub(crate) fn background_jobs_main(
|
|||
let current_session_info = current_session_info.lock().unwrap().clone();
|
||||
let current_session_layout =
|
||||
current_session_layout.lock().unwrap().clone();
|
||||
if !disable_session_metadata {
|
||||
write_session_state_to_disk(
|
||||
current_session_name.clone(),
|
||||
current_session_info,
|
||||
current_session_layout,
|
||||
);
|
||||
}
|
||||
let session_infos_on_machine =
|
||||
read_other_live_session_states(¤t_session_name);
|
||||
let resurrectable_sessions =
|
||||
|
|
|
|||
|
|
@ -881,6 +881,7 @@ fn init_session(
|
|||
};
|
||||
|
||||
let serialization_interval = config_options.serialization_interval;
|
||||
let disable_session_metadata = config_options.disable_session_metadata.unwrap_or(false);
|
||||
|
||||
let default_shell = config_options.default_shell.clone().map(|command| {
|
||||
TerminalAction::RunCommand(RunCommand {
|
||||
|
|
@ -1017,7 +1018,14 @@ fn init_session(
|
|||
None,
|
||||
Some(os_input.clone()),
|
||||
);
|
||||
move || background_jobs_main(background_jobs_bus, serialization_interval).fatal()
|
||||
move || {
|
||||
background_jobs_main(
|
||||
background_jobs_bus,
|
||||
serialization_interval,
|
||||
disable_session_metadata,
|
||||
)
|
||||
.fatal()
|
||||
}
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
|
|
|
|||
|
|
@ -357,3 +357,9 @@ plugins {
|
|||
// Default: true
|
||||
//
|
||||
// styled_underlines false
|
||||
|
||||
// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
|
||||
// metadata info on this session)
|
||||
// Default: false
|
||||
//
|
||||
// disable_session_metadata true
|
||||
|
|
|
|||
|
|
@ -151,6 +151,10 @@ pub struct Options {
|
|||
/// The interval at which to serialize sessions for resurrection (in seconds)
|
||||
#[clap(long, value_parser)]
|
||||
pub serialization_interval: Option<u64>,
|
||||
|
||||
/// If true, will disable writing session metadata to disk
|
||||
#[clap(long, value_parser)]
|
||||
pub disable_session_metadata: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(ArgEnum, Deserialize, Serialize, Debug, Clone, Copy, PartialEq)]
|
||||
|
|
@ -223,6 +227,9 @@ impl Options {
|
|||
.or(self.scrollback_lines_to_serialize);
|
||||
let styled_underlines = other.styled_underlines.or(self.styled_underlines);
|
||||
let serialization_interval = other.serialization_interval.or(self.serialization_interval);
|
||||
let disable_session_metadata = other
|
||||
.disable_session_metadata
|
||||
.or(self.disable_session_metadata);
|
||||
|
||||
Options {
|
||||
simplified_ui,
|
||||
|
|
@ -250,6 +257,7 @@ impl Options {
|
|||
scrollback_lines_to_serialize,
|
||||
styled_underlines,
|
||||
serialization_interval,
|
||||
disable_session_metadata,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -302,6 +310,9 @@ impl Options {
|
|||
.or_else(|| self.scrollback_lines_to_serialize.clone());
|
||||
let styled_underlines = other.styled_underlines.or(self.styled_underlines);
|
||||
let serialization_interval = other.serialization_interval.or(self.serialization_interval);
|
||||
let disable_session_metadata = other
|
||||
.disable_session_metadata
|
||||
.or(self.disable_session_metadata);
|
||||
|
||||
Options {
|
||||
simplified_ui,
|
||||
|
|
@ -329,6 +340,7 @@ impl Options {
|
|||
scrollback_lines_to_serialize,
|
||||
styled_underlines,
|
||||
serialization_interval,
|
||||
disable_session_metadata,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1611,6 +1611,9 @@ impl Options {
|
|||
let serialization_interval =
|
||||
kdl_property_first_arg_as_i64_or_error!(kdl_options, "serialization_interval")
|
||||
.map(|(scroll_buffer_size, _entry)| scroll_buffer_size as u64);
|
||||
let disable_session_metadata =
|
||||
kdl_property_first_arg_as_bool_or_error!(kdl_options, "disable_session_metadata")
|
||||
.map(|(v, _)| v);
|
||||
Ok(Options {
|
||||
simplified_ui,
|
||||
theme,
|
||||
|
|
@ -1637,6 +1640,7 @@ impl Options {
|
|||
scrollback_lines_to_serialize,
|
||||
styled_underlines,
|
||||
serialization_interval,
|
||||
disable_session_metadata,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: zellij-utils/src/setup.rs
|
||||
assertion_line: 686
|
||||
assertion_line: 713
|
||||
expression: "format!(\"{:#?}\", options)"
|
||||
---
|
||||
Options {
|
||||
|
|
@ -31,4 +31,5 @@ Options {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: zellij-utils/src/setup.rs
|
||||
assertion_line: 714
|
||||
assertion_line: 741
|
||||
expression: "format!(\"{:#?}\", options)"
|
||||
---
|
||||
Options {
|
||||
|
|
@ -31,4 +31,5 @@ Options {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: zellij-utils/src/setup.rs
|
||||
assertion_line: 673
|
||||
assertion_line: 700
|
||||
expression: "format!(\"{:#?}\", options)"
|
||||
---
|
||||
Options {
|
||||
|
|
@ -29,4 +29,5 @@ Options {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3830,6 +3830,7 @@ Config {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
},
|
||||
themes: {},
|
||||
plugins: PluginAliases {
|
||||
|
|
|
|||
|
|
@ -3830,6 +3830,7 @@ Config {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
},
|
||||
themes: {},
|
||||
plugins: PluginAliases {
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ Config {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
},
|
||||
themes: {},
|
||||
plugins: PluginAliases {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: zellij-utils/src/setup.rs
|
||||
assertion_line: 696
|
||||
assertion_line: 723
|
||||
expression: "format!(\"{:#?}\", options)"
|
||||
---
|
||||
Options {
|
||||
|
|
@ -31,4 +31,5 @@ Options {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3830,6 +3830,7 @@ Config {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
},
|
||||
themes: {
|
||||
"other-theme-from-config": Theme {
|
||||
|
|
|
|||
|
|
@ -3830,6 +3830,7 @@ Config {
|
|||
scrollback_lines_to_serialize: None,
|
||||
styled_underlines: None,
|
||||
serialization_interval: None,
|
||||
disable_session_metadata: None,
|
||||
},
|
||||
themes: {},
|
||||
plugins: PluginAliases {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue