Initial randr plugin commit

This commit is contained in:
Kirottu
2023-02-01 09:35:36 +02:00
parent 3f349301bf
commit 68928d9623
6 changed files with 72 additions and 0 deletions

8
Cargo.lock generated
View File

@@ -1430,6 +1430,14 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "randr"
version = "0.1.0"
dependencies = [
"abi_stable",
"anyrun-plugin",
]
[[package]]
name = "redox_syscall"
version = "0.2.16"

View File

@@ -8,4 +8,5 @@ members = [
"plugins/rink",
"plugins/shell",
"plugins/translate",
"plugins/randr",
]

13
plugins/randr/Cargo.toml Normal file
View File

@@ -0,0 +1,13 @@
[package]
name = "randr"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
abi_stable = "0.11.1"
anyrun-plugin = { path = "../../anyrun-plugin" }

6
plugins/randr/src/lib.rs Normal file
View File

@@ -0,0 +1,6 @@
use randr::Randr;
mod randr;
mod wlr_randr;
fn init() -> Box<dyn Randr> {}

View File

@@ -0,0 +1,20 @@
pub struct Mode {
width: u32,
height: u32,
rate: f64,
preferred: bool,
current: bool,
}
pub struct Monitor {
output: String,
modes: Vec<Mode>,
x: i32,
y: i32,
enabled: bool,
}
pub trait Randr {
fn get_monitors(&self) -> Vec<Monitor>;
fn set_mode(&self, mon: &Monitor, mode: &Mode) -> Result<(), String>;
}

View File

@@ -0,0 +1,24 @@
use std::process::Command;
use crate::randr::{Mode, Monitor, Randr};
pub struct WlrRandr {
pub exec: String,
}
impl WlrRandr {
fn run_wlr_randr(&self, args: &[&str]) -> String {
String::from_utf8(Command::new(self.exec).args(args).output().unwrap().stdout).unwrap()
}
}
impl Randr for WlrRandr {
fn get_monitors(&self) -> Vec<Monitor> {
let output = self.run_wlr_randr(&[]);
todo!()
}
fn set_mode(&self, mon: &Monitor, mode: &Mode) -> Result<(), String> {
todo!()
}
}