protected override void start()
{
- string[] args = { zavai.config.homedir + "/keyboard", null };
+ string script = zavai.config.find_script("keyboard");
+ if (script == null) return;
+
+ string[] args = { script, null };
int opid;
try {
Gdk.spawn_on_screen(
public void wiggle()
{
try {
- zavai.config.run_script(zavai.config.homedir + "/display wiggle");
+ zavai.config.find_and_run_script("display", "wiggle");
} catch (Error e) {
zavai.log.error("Requesting/releasing resource Display: " + e.message);
}
if (!started)
{
try {
- zavai.config.run_script(zavai.config.homedir + "/display lock_off");
+ zavai.config.find_and_run_script("display", "lock_off");
} catch (GLib.Error e) {
zavai.log.error(e.message);
}
public void unlock_screen()
{
try {
- zavai.config.run_script(zavai.config.homedir + "/display defaults");
+ zavai.config.find_and_run_script("display", "defaults");
} catch (GLib.Error e) {
zavai.log.error(e.message);
}
{
if (started) return;
try {
- zavai.config.run_script(zavai.config.homedir + "/display lock_on");
+ zavai.config.find_and_run_script("display", "lock_on");
zavai.log.info("Acquired display");
base.start();
} catch (GLib.Error e) {
{
if (!started) return;
try {
- zavai.config.run_script(zavai.config.homedir + "/display defaults");
+ zavai.config.find_and_run_script("display", "defaults");
zavai.log.info("Released display");
base.stop();
} catch (GLib.Error e) {
*
* If the script is not found, NULL is returned
*/
- public string find_script(string name)
+ public string? find_script(string name)
{
string candidate = homedir + "/" + name;
if (FileUtils.test(candidate, FileTest.EXISTS))
return null;
}
- public void run_script(string command)
+ public void find_and_run_script(string script, string args) throws SpawnError
+ {
+ string cmd = find_script(script);
+ if (cmd == null)
+ throw new SpawnError.NOENT("hook '" + cmd + "' not found");
+ run_script(cmd + " " + args);
+ }
+
+ public void run_script(string command) throws SpawnError
{
zavai.log.info("Run program: " + command);
string[] args = command.split(" ");
Pid pid;
- try {
- Process.spawn_async(
- Environment.get_home_dir(),
- args,
- null,
- SpawnFlags.SEARCH_PATH,
- null,
- out pid);
- } catch (SpawnError e) {
- zavai.log.error("Running " + command + ": " + e.message);
- }
+ Process.spawn_async(
+ Environment.get_home_dir(),
+ args,
+ null,
+ SpawnFlags.SEARCH_PATH,
+ null,
+ out pid);
}
- public int run_script_sync(string command, out string std_out, out string std_err)
+ public int run_script_sync(string command, out string std_out, out string std_err) throws SpawnError
{
int status = -1;
zavai.log.info("Run program: " + command);
string[] args = command.split(" ");
- try {
- bool res = Process.spawn_sync(Environment.get_home_dir(), args, null, SpawnFlags.SEARCH_PATH, null, out std_out, out std_err, out status);
- } catch (SpawnError e) {
- zavai.log.error("Running " + command + ": " + e.message);
- }
+ bool res = Process.spawn_sync(Environment.get_home_dir(), args, null, SpawnFlags.SEARCH_PATH, null, out std_out, out std_err, out status);
return status;
}
}
protected bool script_start()
{
- string script = zavai.config.find_script(name);
- if (script == null)
- {
- zavai.log.error("Hook " + name + " does not exist");
- return false;
- }
try {
- // Then run our own script
- zavai.config.run_script(script + " start");
+ zavai.config.find_and_run_script(name, "start");
return true;
} catch (Error e) {
- zavai.log.error("Running " + script + " start: " + e.message);
+ zavai.log.error("Running " + name + " start: " + e.message);
return false;
}
}
protected bool script_stop()
{
- string script = zavai.config.find_script(name);
- if (script == null)
- {
- zavai.log.error("Hook " + name + " does not exist");
- return false;
- }
try {
- // Then run our own script
- zavai.config.run_script(script + " stop");
+ zavai.config.find_and_run_script(name, "stop");
return true;
} catch (Error e) {
- zavai.log.error("Running " + script + " stop: " + e.message);
+ zavai.log.error("Running " + name + " stop: " + e.message);
return false;
}
}
return false;
}
string command = script + " status";
- int res = zavai.config.run_script_sync(command, out std_out, out std_err);
- if (res != 0)
- {
- zavai.log.error("Running " + command + ": " + std_err);
+ try {
+ int res = zavai.config.run_script_sync(command, out std_out, out std_err);
+ if (res != 0)
+ {
+ zavai.log.error("Running " + command + ": " + std_err);
+ return false;
+ }
+ } catch (SpawnError e) {
+ zavai.log.error("Running " + command + ": " + e.message);
return false;
}
zavai.ui.main.init();
zavai.ui.gps.init();
zavai.ui.gsm.init();
- zavai.config.run_script(zavai.config.homedir + "/display init");
+ zavai.config.find_and_run_script("display", "init");
zavai.ui.power.init();
zavai.ui.aux.init();
zavai.ui.kbd.init();