2021-12-05 15:26:22 +00:00
|
|
|
mod task;
|
|
|
|
|
|
|
|
use crate::task::*;
|
|
|
|
|
2021-11-17 17:43:30 +00:00
|
|
|
fn main() {
|
2021-12-05 16:04:36 +00:00
|
|
|
let wm_task = WMTask::start(TaskConfig::new("polytreewm")).unwrap();
|
2021-12-05 16:09:52 +00:00
|
|
|
let comp_task = CompTask::start(TaskConfig::new("picom")).unwrap();
|
2021-12-05 16:18:14 +00:00
|
|
|
let bar_task = BarTask::start(TaskConfig::new("polybar")).unwrap();
|
2021-12-05 16:09:52 +00:00
|
|
|
|
2021-12-05 15:39:41 +00:00
|
|
|
let wm_task_result = wm_task.wait();
|
2021-12-05 16:09:52 +00:00
|
|
|
|
|
|
|
comp_task.terminate();
|
2021-12-05 16:18:14 +00:00
|
|
|
bar_task.terminate();
|
2021-12-05 16:09:52 +00:00
|
|
|
|
2021-12-05 16:04:36 +00:00
|
|
|
unsafe { libc::exit(wm_task_result.status()) }
|
2021-11-17 17:43:30 +00:00
|
|
|
}
|
|
|
|
|
2021-12-05 16:00:23 +00:00
|
|
|
#[derive(Debug)]
|
2021-12-05 15:39:41 +00:00
|
|
|
struct WMTask(TaskInfo);
|
2021-11-19 05:09:39 +00:00
|
|
|
|
2021-12-05 16:09:52 +00:00
|
|
|
#[derive(Debug)]
|
|
|
|
struct CompTask(TaskInfo);
|
|
|
|
|
2021-12-05 16:18:14 +00:00
|
|
|
#[derive(Debug)]
|
|
|
|
struct BarTask(TaskInfo);
|
|
|
|
|
2021-12-05 15:07:27 +00:00
|
|
|
impl Task for WMTask {
|
2021-12-05 15:56:57 +00:00
|
|
|
fn new(info: TaskInfo) -> Self {
|
|
|
|
Self(info)
|
2021-12-05 15:07:27 +00:00
|
|
|
}
|
|
|
|
|
2021-12-05 15:56:57 +00:00
|
|
|
fn info(&self) -> &TaskInfo {
|
|
|
|
&self.0
|
2021-12-05 15:07:27 +00:00
|
|
|
}
|
2021-11-17 17:43:30 +00:00
|
|
|
}
|
2021-12-05 16:09:52 +00:00
|
|
|
|
|
|
|
impl Task for CompTask {
|
|
|
|
fn new(info: TaskInfo) -> Self {
|
|
|
|
Self(info)
|
|
|
|
}
|
|
|
|
|
|
|
|
fn info(&self) -> &TaskInfo {
|
|
|
|
&self.0
|
|
|
|
}
|
|
|
|
}
|
2021-12-05 16:18:14 +00:00
|
|
|
|
|
|
|
impl Task for BarTask {
|
|
|
|
fn new(info: TaskInfo) -> Self {
|
|
|
|
Self(info)
|
|
|
|
}
|
|
|
|
|
|
|
|
fn info(&self) -> &TaskInfo {
|
|
|
|
&self.0
|
|
|
|
}
|
|
|
|
}
|