oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git

Merge branch 'master' into update/mainfile

Commit
be0a1a38198322d1ca7b3e241301520f5ab02094
Parents
0522a39 84f46f6
Author
ScottADeJong <38508855+ScottADeJong@users.noreply.github.com>
Date
2025-12-24 00:36:19

Diff

diff --cc src/bin/main.rs
index 82d6f8f,0b3297d..3926aff
--- a/src/bin/main.rs
+++ b/src/bin/main.rs
@@@ -1,40 -1,43 +1,42 @@@
 +use oxwm::errors::ConfigError;
 +use oxwm::errors::MainError;
 +use std::path::Path;
  use std::path::PathBuf;
  
 -fn main() -> Result<(), Box<dyn std::error::Error>> {
 -    let arguments: Vec<String> = std::env::args().collect();
 +static CONFIG_FILE: &str = "config.lua";
 +static TEMPLATE: &str = include_str!("../../templates/config.lua");
  
 -    let mut custom_config_path: Option<PathBuf> = None;
 +enum Args {
 +    Exit,
 +    Arguments(Vec<String>),
 +    Error(MainError),
 +}
  
 -    match arguments.get(1).map(|string| string.as_str()) {
 -        Some("--version") => {
 -            println!("oxwm {}", env!("CARGO_PKG_VERSION"));
 -            return Ok(());
 -        }
 -        Some("--help") => {
 -            print_help();
 -            return Ok(());
 -        }
 -        Some("--init") => {
 -            init_config()?;
 -            return Ok(());
 -        }
 -        Some("--config") => {
 -            if let Some(path) = arguments.get(2) {
 -                custom_config_path = Some(PathBuf::from(path));
 -            } else {
 -                eprintln!("Error: --config requires a path argument");
 -                std::process::exit(1);
 -            }
 -        }
 -        _ => {}
 -    }
 +fn main() -> Result<(), MainError> {
 +    let arguments = match process_args() {
 +        Args::Exit => return Ok(()),
 +        Args::Arguments(v) => v,
 +        Args::Error(e) => return Err(e),
 +    };
  
 -    let (config, config_error) = load_config(custom_config_path)?;
 +    let (config, config_warning) = load_config(arguments.get(2))?;
  
 -    let mut window_manager = oxwm::window_manager::WindowManager::new(config)?;
 +    let mut window_manager = match oxwm::window_manager::WindowManager::new(config) {
 +        Ok(wm) => wm,
 +        Err(e) => return Err(MainError::CouldNotStartWm(e)),
 +    };
  
-     if let Some(warning) = config_warning {
-         eprintln!("{warning}");
-         window_manager.show_migration_overlay();
+     if let Some(error) = config_error {
++        // Change show_startup_config_error to accept a ConfigError instead of
++        // a string slice.
++        let error = format!("{error}");
+         window_manager.show_startup_config_error(&error);
      }
  
 -    let should_restart = window_manager.run()?;
 +    let should_restart = match window_manager.run() {
 +        Ok(sr) => sr,
 +        Err(e) => return Err(MainError::BadRestartStatus(e)),
 +    };
  
      drop(window_manager);