feat(core): wire up WrongEditionPage GUI
This commit is contained in:
parent
ad029b626e
commit
e92078e3ca
59
espanso/src/cli/launcher/edition_check.rs
Normal file
59
espanso/src/cli/launcher/edition_check.rs
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
* This file is part of espanso.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019-2021 Federico Terzi
|
||||||
|
*
|
||||||
|
* espanso is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* espanso is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with espanso. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use crate::warn_eprintln;
|
||||||
|
use espanso_modulo::wizard::DetectedOS;
|
||||||
|
|
||||||
|
pub fn is_wrong_edition() -> (bool, DetectedOS) {
|
||||||
|
if !cfg!(target_os = "linux") {
|
||||||
|
return (false, DetectedOS::Unknown);
|
||||||
|
}
|
||||||
|
|
||||||
|
match get_session_type().as_deref() {
|
||||||
|
Some("x11") if cfg!(feature = "wayland") => return (true, DetectedOS::X11),
|
||||||
|
Some("wayland") if !cfg!(feature = "wayland") => return (true, DetectedOS::Wayland),
|
||||||
|
None => {
|
||||||
|
warn_eprintln!("could not automatically determine the session type (X11/Wayland), so make sure you have the correct espanso version!");
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
(false, DetectedOS::Unknown)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_session_type() -> Option<String> {
|
||||||
|
let output = std::process::Command::new("sh")
|
||||||
|
.arg("-c")
|
||||||
|
.arg("loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type")
|
||||||
|
.output()
|
||||||
|
.ok()?;
|
||||||
|
|
||||||
|
if !output.status.success() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let raw_session_type = String::from_utf8_lossy(&output.stdout);
|
||||||
|
let raw_session_type = raw_session_type.trim();
|
||||||
|
if !raw_session_type.contains("Type=") {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let session_type: Option<&str> = raw_session_type.split('=').into_iter().last();
|
||||||
|
session_type.map(String::from)
|
||||||
|
}
|
|
@ -26,6 +26,7 @@ use super::{CliModule, CliModuleArgs};
|
||||||
|
|
||||||
mod accessibility;
|
mod accessibility;
|
||||||
mod daemon;
|
mod daemon;
|
||||||
|
mod edition_check;
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
// TODO: test also with modulo feature disabled
|
// TODO: test also with modulo feature disabled
|
||||||
|
@ -44,7 +45,7 @@ pub fn new() -> CliModule {
|
||||||
|
|
||||||
#[cfg(feature = "modulo")]
|
#[cfg(feature = "modulo")]
|
||||||
fn launcher_main(args: CliModuleArgs) -> i32 {
|
fn launcher_main(args: CliModuleArgs) -> i32 {
|
||||||
use espanso_modulo::wizard::{MigrationResult, WizardHandlers, WizardOptions};
|
use espanso_modulo::wizard::{DetectedOS, MigrationResult, WizardHandlers, WizardOptions};
|
||||||
let paths = args.paths.expect("missing paths in launcher main");
|
let paths = args.paths.expect("missing paths in launcher main");
|
||||||
|
|
||||||
// TODO: should we create a non-gui wizard? We can also use it for the non-modulo versions of espanso
|
// TODO: should we create a non-gui wizard? We can also use it for the non-modulo versions of espanso
|
||||||
|
@ -73,6 +74,8 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
|
||||||
let runtime_dir_clone = paths.runtime.clone();
|
let runtime_dir_clone = paths.runtime.clone();
|
||||||
let is_legacy_version_running_handler =
|
let is_legacy_version_running_handler =
|
||||||
Box::new(move || util::is_legacy_version_running(&runtime_dir_clone));
|
Box::new(move || util::is_legacy_version_running(&runtime_dir_clone));
|
||||||
|
|
||||||
|
let (is_wrong_edition_page_enabled, wrong_edition_detected_os) = edition_check::is_wrong_edition();
|
||||||
|
|
||||||
let is_migrate_page_enabled = espanso_config::is_legacy_config(&paths.config);
|
let is_migrate_page_enabled = espanso_config::is_legacy_config(&paths.config);
|
||||||
let paths_clone = paths.clone();
|
let paths_clone = paths.clone();
|
||||||
|
@ -132,11 +135,12 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
|
||||||
|| is_add_path_page_enabled
|
|| is_add_path_page_enabled
|
||||||
|| is_accessibility_page_enabled
|
|| is_accessibility_page_enabled
|
||||||
{
|
{
|
||||||
let successful = espanso_modulo::wizard::show(WizardOptions {
|
espanso_modulo::wizard::show(WizardOptions {
|
||||||
version: crate::VERSION.to_string(),
|
version: crate::VERSION.to_string(),
|
||||||
is_welcome_page_enabled,
|
is_welcome_page_enabled,
|
||||||
is_move_bundle_page_enabled,
|
is_move_bundle_page_enabled,
|
||||||
is_legacy_version_page_enabled,
|
is_legacy_version_page_enabled,
|
||||||
|
is_wrong_edition_page_enabled,
|
||||||
is_migrate_page_enabled,
|
is_migrate_page_enabled,
|
||||||
is_add_path_page_enabled,
|
is_add_path_page_enabled,
|
||||||
is_accessibility_page_enabled,
|
is_accessibility_page_enabled,
|
||||||
|
@ -152,6 +156,7 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
|
||||||
accessibility_image_2_path: icon_paths
|
accessibility_image_2_path: icon_paths
|
||||||
.accessibility_image_2
|
.accessibility_image_2
|
||||||
.map(|path| path.to_string_lossy().to_string()),
|
.map(|path| path.to_string_lossy().to_string()),
|
||||||
|
detected_os: wrong_edition_detected_os,
|
||||||
handlers: WizardHandlers {
|
handlers: WizardHandlers {
|
||||||
is_legacy_version_running: Some(is_legacy_version_running_handler),
|
is_legacy_version_running: Some(is_legacy_version_running_handler),
|
||||||
backup_and_migrate: Some(backup_and_migrate_handler),
|
backup_and_migrate: Some(backup_and_migrate_handler),
|
||||||
|
@ -160,9 +165,7 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
|
||||||
is_accessibility_enabled: Some(is_accessibility_enabled_handler),
|
is_accessibility_enabled: Some(is_accessibility_enabled_handler),
|
||||||
on_completed: Some(on_completed_handler),
|
on_completed: Some(on_completed_handler),
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
|
||||||
successful
|
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user