mirror of
https://github.com/edera-dev/sprout.git
synced 2026-11-04 17:42:20 +00:00
feat(menu): add a simple boot menu similar to systemd-boot (#100)
The boot menu is now a BootMenu trait with two styles. The basic menu is the existing one that prints entries and selects them by number. The new simple menu is full-screen: entries are centered and highlighted, the arrow keys, home, end, page up and page down move the selection, enter boots it, and any key stops the countdown. The style is picked with --menu-style or menu-style in [options], and defaults to simple. The timer code used to wait for a key is shared between both menus in menu.rs.
This commit is contained in:
7 files changed
+512
-123
No files matched your search
@@ -84,11 +84,26 @@ pub struct OptionsConfiguration {
|
||||
/// The timeout of the boot menu.
|
||||
#[serde(rename = "menu-timeout", default = "default_menu_timeout")]
|
||||
pub menu_timeout: u64,
|
||||
/// The style of boot menu to display.
|
||||
#[serde(rename = "menu-style", default)]
|
||||
pub menu_style: MenuStyle,
|
||||
/// Enables autoconfiguration of Sprout based on the environment.
|
||||
#[serde(default)]
|
||||
pub autoconfigure: bool,
|
||||
}
|
||||
|
||||
/// The style of boot menu to display.
|
||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum MenuStyle {
|
||||
/// A basic menu that prints the entries and selects them by number.
|
||||
#[serde(rename = "basic")]
|
||||
Basic,
|
||||
/// A simple full-screen menu that selects entries with the arrow keys.
|
||||
#[default]
|
||||
#[serde(rename = "simple")]
|
||||
Simple,
|
||||
}
|
||||
|
||||
/// Get the latest version of the Sprout configuration format.
|
||||
pub fn latest_version() -> u32 {
|
||||
LATEST_VERSION
|
||||
|
||||
Reference in new issue
Block a user