mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-05-16 16:57:02 +02:00
feat(config): add pwsh cfgen + ps1 file watcher
This commit adds a command to generate application-specific configuration in the format of a PowerShell ps1 file, as well as the ability to automatically launch a komorebi.ps1 configuration file on startup. If a komorebi.ps1 file is found and launched at startup, the watch-configuration command will watch and hot reload this file when any changes are made. A sample komorebi.ps1 file has been added to the root of the repository, along with a sample whkdrc file, showing how the two can be used together to replace AHK. re #339
This commit is contained in:
@@ -248,13 +248,34 @@ fn setup() -> Result<(WorkerGuard, WorkerGuard)> {
|
||||
pub fn load_configuration() -> Result<()> {
|
||||
let home = HOME_DIR.clone();
|
||||
|
||||
let mut config_pwsh = home.clone();
|
||||
config_pwsh.push("komorebi.ps1");
|
||||
|
||||
let mut config_v1 = home.clone();
|
||||
config_v1.push("komorebi.ahk");
|
||||
|
||||
let mut config_v2 = home;
|
||||
config_v2.push("komorebi.ahk2");
|
||||
|
||||
if config_v1.exists() && which(&*AHK_V1_EXE).is_ok() {
|
||||
if config_pwsh.exists() {
|
||||
let powershell_exe = if which("pwsh.exe").is_ok() {
|
||||
"pwsh.exe"
|
||||
} else {
|
||||
"powershell.exe"
|
||||
};
|
||||
|
||||
tracing::info!(
|
||||
"loading configuration file: {}",
|
||||
config_pwsh
|
||||
.as_os_str()
|
||||
.to_str()
|
||||
.ok_or_else(|| anyhow!("cannot convert path to string"))?
|
||||
);
|
||||
|
||||
Command::new(powershell_exe)
|
||||
.arg(config_pwsh.as_os_str())
|
||||
.output()?;
|
||||
} else if config_v1.exists() && which(&*AHK_V1_EXE).is_ok() {
|
||||
tracing::info!(
|
||||
"loading configuration file: {}",
|
||||
config_v1
|
||||
|
||||
@@ -230,13 +230,18 @@ impl WindowManager {
|
||||
pub fn watch_configuration(&mut self, enable: bool) -> Result<()> {
|
||||
let home = HOME_DIR.clone();
|
||||
|
||||
let mut config_pwsh = home.clone();
|
||||
config_pwsh.push("komorebi.ps1");
|
||||
|
||||
let mut config_v1 = home.clone();
|
||||
config_v1.push("komorebi.ahk");
|
||||
|
||||
let mut config_v2 = home;
|
||||
config_v2.push("komorebi.ahk2");
|
||||
|
||||
if config_v1.exists() {
|
||||
if config_pwsh.exists() {
|
||||
self.configure_watcher(enable, config_pwsh)?;
|
||||
} else if config_v1.exists() {
|
||||
self.configure_watcher(enable, config_v1)?;
|
||||
} else if config_v2.exists() {
|
||||
self.configure_watcher(enable, config_v2)?;
|
||||
|
||||
Reference in New Issue
Block a user