Compare commits
3 Commits
61e9f4d9b5
...
f230dcd701
| Author | SHA1 | Date | |
|---|---|---|---|
| f230dcd701 | |||
| 6ae87393c7 | |||
| 4376dc55be |
27
src/lib.rs
27
src/lib.rs
@ -1,9 +1,11 @@
|
|||||||
use std::collections::HashMap;
|
use std::{
|
||||||
use std::fmt;
|
collections::HashMap,
|
||||||
use std::fs::File;
|
fmt,
|
||||||
use std::io::{self, BufRead, BufReader};
|
fs::File,
|
||||||
use std::path::Path;
|
io::{self, BufRead, BufReader},
|
||||||
use std::process::{Command, Output};
|
path::Path,
|
||||||
|
process::{Command, Output},
|
||||||
|
};
|
||||||
|
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
@ -90,7 +92,7 @@ impl Screen {
|
|||||||
fn metamode(&self, map: &ScreenMapping) -> Result<String, CommandError> {
|
fn metamode(&self, map: &ScreenMapping) -> Result<String, CommandError> {
|
||||||
let Resolution { width, height } = self.resolution;
|
let Resolution { width, height } = self.resolution;
|
||||||
let Offset { x, y } = self.offset;
|
let Offset { x, y } = self.offset;
|
||||||
let (in_w, in_h) = match self.orientation {
|
let (_in_w, _in_h) = match self.orientation {
|
||||||
Orientation::None | Orientation::Invert => (width, height),
|
Orientation::None | Orientation::Invert => (width, height),
|
||||||
Orientation::Right | Orientation::Left => (height, width),
|
Orientation::Right | Orientation::Left => (height, width),
|
||||||
};
|
};
|
||||||
@ -106,6 +108,16 @@ impl Screen {
|
|||||||
None => return Err(CommandError::MissingMonitor(self.name.to_string())),
|
None => return Err(CommandError::MissingMonitor(self.name.to_string())),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Ok(format!(
|
||||||
|
"{connection}: {w}x{h} {x:+}{y:+} {{ForceCompositionPipeline=On, Rotation={rotation}}}",
|
||||||
|
connection = connection,
|
||||||
|
w = width,
|
||||||
|
h = height,
|
||||||
|
x = x,
|
||||||
|
y = y,
|
||||||
|
rotation = rotation,
|
||||||
|
))
|
||||||
|
/*
|
||||||
Ok(format!("{connection}: {w}x{h} @{in_w}x{in_h} {x:+}{y:+} {{ForceCompositionPipeline=On, ViewPortIn={in_w}x{in_h}, ViewPortOut={w}x{h}+0+0, Rotation={rotation}}}",
|
Ok(format!("{connection}: {w}x{h} @{in_w}x{in_h} {x:+}{y:+} {{ForceCompositionPipeline=On, ViewPortIn={in_w}x{in_h}, ViewPortOut={w}x{h}+0+0, Rotation={rotation}}}",
|
||||||
connection=connection,
|
connection=connection,
|
||||||
w=width,
|
w=width,
|
||||||
@ -116,6 +128,7 @@ impl Screen {
|
|||||||
y=y,
|
y=y,
|
||||||
rotation=rotation,
|
rotation=rotation,
|
||||||
))
|
))
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,11 @@ fn main() -> Result<()> {
|
|||||||
height: 1440,
|
height: 1440,
|
||||||
},
|
},
|
||||||
offset: Offset {
|
offset: Offset {
|
||||||
x: dell.resolution.height as isize,
|
// The '1 +' here creates a gap between the top monitor and side monitor. When all
|
||||||
|
// monitors have a gap, you can move the mouse between any combo. When the top monitor
|
||||||
|
// is flush with the left, the bottom monitor will have a hard edge that prevents the
|
||||||
|
// mouse from moving to the left monitor.
|
||||||
|
x: 1 + dell.resolution.height as isize,
|
||||||
y: 0,
|
y: 0,
|
||||||
},
|
},
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -34,8 +38,7 @@ fn main() -> Result<()> {
|
|||||||
height: 1440,
|
height: 1440,
|
||||||
},
|
},
|
||||||
offset: Offset {
|
offset: Offset {
|
||||||
x: dell.resolution.height as isize,
|
x: (dell.resolution.height + (lg.resolution.width - 2560) / 2) as isize,
|
||||||
//x: (dell.resolution.height + (lg.resolution.width - 2560) / 2) as isize,
|
|
||||||
y: (lg.resolution.height) as isize,
|
y: (lg.resolution.height) as isize,
|
||||||
},
|
},
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user