fix(core): fix service register on linux when executed from app-image
This commit is contained in:
parent
32775d414c
commit
96309709b2
|
@ -39,7 +39,7 @@ pub fn register() -> Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
info_println!("creating service file in {:?}", service_file);
|
info_println!("creating service file in {:?}", service_file);
|
||||||
let espanso_path = std::env::current_exe().expect("unable to get espanso executable path");
|
let espanso_path = get_binary_path().expect("unable to get espanso executable path");
|
||||||
|
|
||||||
let service_content = String::from(LINUX_SERVICE_CONTENT).replace(
|
let service_content = String::from(LINUX_SERVICE_CONTENT).replace(
|
||||||
"{{{espanso_path}}}",
|
"{{{espanso_path}}}",
|
||||||
|
@ -144,7 +144,7 @@ pub fn is_registered() -> bool {
|
||||||
let caps = EXEC_PATH_REGEX.captures(output).unwrap();
|
let caps = EXEC_PATH_REGEX.captures(output).unwrap();
|
||||||
let path = caps.get(1).map_or("", |m| m.as_str());
|
let path = caps.get(1).map_or("", |m| m.as_str());
|
||||||
let espanso_path =
|
let espanso_path =
|
||||||
std::env::current_exe().expect("unable to get espanso executable path");
|
get_binary_path().expect("unable to get espanso executable path");
|
||||||
|
|
||||||
if espanso_path.to_string_lossy() != path {
|
if espanso_path.to_string_lossy() != path {
|
||||||
error_eprintln!("Espanso is registered as a systemd service, but it points to another binary location:");
|
error_eprintln!("Espanso is registered as a systemd service, but it points to another binary location:");
|
||||||
|
@ -265,3 +265,13 @@ fn get_service_file_dir() -> Result<PathBuf> {
|
||||||
fn get_service_file_path() -> Result<PathBuf> {
|
fn get_service_file_path() -> Result<PathBuf> {
|
||||||
Ok(get_service_file_dir()?.join(LINUX_SERVICE_FILENAME))
|
Ok(get_service_file_dir()?.join(LINUX_SERVICE_FILENAME))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_binary_path() -> Result<PathBuf> {
|
||||||
|
// If executed as part of an AppImage, get the app image path instead of
|
||||||
|
// the binary itself (which was extracted in a temp directory).
|
||||||
|
if let Some(app_image_path) = std::env::var_os("APPIMAGE") {
|
||||||
|
return Ok(PathBuf::from(app_image_path));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(std::env::current_exe()?)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user