Auto launch any application or executable at startup. Supports Windows, Mac (via AppleScript or Launch Agent), and Linux.
How does it work? See Teamwork/node-auto-launch for details.
If you find any bugs, welcome to PR or issue.
The parameters of AutoLaunch::new are different on each platform.
See the function definition or the demo below for details.
Or you can construct the AutoLaunch by using AutoLaunchBuilder.
On Linux, it supports hidden parameter which means that hidden the app on launch.
```rust use auto_launch::AutoLaunch;
fn main() { let appname = "the-app"; let apppath = "/path/to/the-app"; let auto = AutoLaunch::new(appname, apppath, false);
// enable the auto launch
auto.enable().is_ok();
auto.is_enabled().unwrap();
// disable the auto launch
auto.disable().is_ok();
auto.is_enabled().unwrap();
} ```
Macos supports two ways to achieve auto launch (via AppleScript or Launch Agent).
When the use_launch_agent is true, it will achieve by Launch Agent, otherwise by AppleScript.
On Macos, it supports hidden parameter which means that hidden the app on launch.
Note:
app_path should be a absolute path and exists. Otherwise, it will cause an error when enable.app_name should be same as the basename of app_path, or it will be corrected automately.```rust use auto_launch::AutoLaunch;
fn main() { let appname = "the-app"; let apppath = "/path/to/the-app.app"; let auto = AutoLaunch::new(appname, apppath, false, false);
// enable the auto launch
auto.enable().is_ok();
auto.is_enabled().unwrap();
// disable the auto launch
auto.disable().is_ok();
auto.is_enabled().unwrap();
} ```
On Windows, it will add a registry entry under \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run.
```rust use auto_launch::AutoLaunch;
fn main() { let appname = "the-app"; let apppath = "C:\path\to\the-app.exe"; let auto = AutoLaunch::new(appname, apppath);
// enable the auto launch
auto.enable().is_ok();
auto.is_enabled().unwrap();
// disable the auto launch
auto.disable().is_ok();
auto.is_enabled().unwrap();
} ```
AutoLaunch Builder helps to eliminate the constructor difference on various platforms.
```rust use auto_launch::*;
fn main() -> std::io::Result<()> { let auto = AutoLaunchBuilder::new() .setappname("the-app") .setapppath("/path/to/the-app") .setuselaunchagent(true) .sethidden(true) .build();
auto.enable()?;
auto.is_enabled()?;
auto.disable()?;
auto.is_enabled()?;
Ok(())
} ```
MIT License. See the License file for details.
The project is based on node-auto-launch.