From 68928d9623d5542b47ba5ebfb5b7af803d60021a Mon Sep 17 00:00:00 2001 From: Kirottu Date: Wed, 1 Feb 2023 09:35:36 +0200 Subject: [PATCH] Initial randr plugin commit --- Cargo.lock | 8 ++++++++ Cargo.toml | 1 + plugins/randr/Cargo.toml | 13 +++++++++++++ plugins/randr/src/lib.rs | 6 ++++++ plugins/randr/src/randr.rs | 20 ++++++++++++++++++++ plugins/randr/src/wlr_randr.rs | 24 ++++++++++++++++++++++++ 6 files changed, 72 insertions(+) create mode 100644 plugins/randr/Cargo.toml create mode 100644 plugins/randr/src/lib.rs create mode 100644 plugins/randr/src/randr.rs create mode 100644 plugins/randr/src/wlr_randr.rs diff --git a/Cargo.lock b/Cargo.lock index 95be35d..d8454c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml index dc61ef8..2797723 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,4 +8,5 @@ members = [ "plugins/rink", "plugins/shell", "plugins/translate", + "plugins/randr", ] \ No newline at end of file diff --git a/plugins/randr/Cargo.toml b/plugins/randr/Cargo.toml new file mode 100644 index 0000000..d4656e8 --- /dev/null +++ b/plugins/randr/Cargo.toml @@ -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" } diff --git a/plugins/randr/src/lib.rs b/plugins/randr/src/lib.rs new file mode 100644 index 0000000..e4e8772 --- /dev/null +++ b/plugins/randr/src/lib.rs @@ -0,0 +1,6 @@ +use randr::Randr; + +mod randr; +mod wlr_randr; + +fn init() -> Box {} diff --git a/plugins/randr/src/randr.rs b/plugins/randr/src/randr.rs new file mode 100644 index 0000000..459adf7 --- /dev/null +++ b/plugins/randr/src/randr.rs @@ -0,0 +1,20 @@ +pub struct Mode { + width: u32, + height: u32, + rate: f64, + preferred: bool, + current: bool, +} + +pub struct Monitor { + output: String, + modes: Vec, + x: i32, + y: i32, + enabled: bool, +} + +pub trait Randr { + fn get_monitors(&self) -> Vec; + fn set_mode(&self, mon: &Monitor, mode: &Mode) -> Result<(), String>; +} diff --git a/plugins/randr/src/wlr_randr.rs b/plugins/randr/src/wlr_randr.rs new file mode 100644 index 0000000..d302b67 --- /dev/null +++ b/plugins/randr/src/wlr_randr.rs @@ -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 { + let output = self.run_wlr_randr(&[]); + todo!() + } + + fn set_mode(&self, mon: &Monitor, mode: &Mode) -> Result<(), String> { + todo!() + } +}