diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..ae91cb7 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,64 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in library 'auto_backlight'", + "cargo": { + "args": [ + "test", + "--no-run", + "--lib", + "--package=auto_backlight" + ], + "filter": { + "name": "auto_backlight", + "kind": "lib" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug executable 'auto_backlight'", + "cargo": { + "args": [ + "build", + "--bin=auto_backlight", + "--package=auto_backlight" + ], + "filter": { + "name": "auto_backlight", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in executable 'auto_backlight'", + "cargo": { + "args": [ + "test", + "--no-run", + "--bin=auto_backlight", + "--package=auto_backlight" + ], + "filter": { + "name": "auto_backlight", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 17c4666..50c589b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,7 +38,7 @@ dependencies = [ name = "auto_backlight" version = "0.1.0" dependencies = [ - "clap 3.2.17", + "clap 3.2.20", "clap-verbosity-flag", "fast_image_resize", "futures", @@ -110,9 +110,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.17" +version = "3.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e724a68d9319343bb3328c9cc2dfde263f4b3142ee1059a9980580171c954b" +checksum = "23b71c3ce99b7611011217b366d923f1d0a7e07a92bb2dbf1e84508c673ca3bd" dependencies = [ "atty", "bitflags", @@ -131,15 +131,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0636f9c040082f8e161555a305f8cec1a1c2828b3d981c812b8c39f4ac00c42c" dependencies = [ - "clap 3.2.17", + "clap 3.2.20", "log", ] [[package]] name = "clap_derive" -version = "3.2.17" +version = "3.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13547f7012c01ab4a0e8f8967730ada8f9fdf419e8b6c792788f39cf4e46eefa" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" dependencies = [ "heck", "proc-macro-error", @@ -393,9 +393,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "futures" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab30e97ab6aacfe635fad58f22c2bb06c8b685f7421eb1e064a729e2a5f481fa" +checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" dependencies = [ "futures-channel", "futures-core", @@ -408,9 +408,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1" +checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" dependencies = [ "futures-core", "futures-sink", @@ -418,15 +418,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115" +checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" [[package]] name = "futures-executor" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528" +checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" dependencies = [ "futures-core", "futures-task", @@ -441,9 +441,9 @@ checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" [[package]] name = "futures-macro" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d" +checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" dependencies = [ "proc-macro2", "quote", @@ -452,9 +452,9 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765" +checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" [[package]] name = "futures-task" @@ -470,9 +470,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.23" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577" +checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" dependencies = [ "futures-channel", "futures-core", @@ -636,9 +636,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" dependencies = [ "autocfg", "scopeguard", @@ -737,9 +737,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e" +checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" [[package]] name = "os_str_bytes" @@ -887,7 +887,7 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "screenshots" version = "0.4.3" -source = "git+https://github.com/Supernovatux/screenshots-rs?branch=master#a03251e0fd4e1d7b9a9ca6408f2b0de9a10b3427" +source = "git+https://github.com/Supernovatux/screenshots-rs?branch=master#78a38348ba14cf88b1d3ef4335ea3f8f72110832" dependencies = [ "dbus", "display-info", @@ -987,18 +987,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" +checksum = "3d0a539a918745651435ac7db7a18761589a94cd7e94cd56999f828bf73c8a57" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" +checksum = "c251e90f708e16c49a16f4917dc2131e75222b72edfa9cb7f7c58ae56aae0c09" dependencies = [ "proc-macro2", "quote", @@ -1027,9 +1027,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db76ff9fa4b1458b3c7f077f3ff9887394058460d21e634355b273aaf11eea45" +checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" dependencies = [ "itoa", "libc", diff --git a/Cargo.toml b/Cargo.toml index eca8fb3..4760603 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,8 +9,8 @@ codegen-units = 1 panic = "abort" opt-level = 3 overflow-checks = false -debug = 2 - +debug = 0 +strip = "symbols" [dependencies] image = "*" diff --git a/src/brightness.rs b/src/brightness.rs index 275db55..aa13441 100644 --- a/src/brightness.rs +++ b/src/brightness.rs @@ -1,5 +1,5 @@ use glob::glob; -use log::{error, info}; +use log::{error, info, debug}; use std::fs::{read_to_string, write}; #[derive(Debug)] @@ -60,7 +60,7 @@ impl BrightnessDevice { pub fn get_current_brightness_percent(&self) -> i16 { let ret = (self.get_current_brightness() as f64 * 100.0 / self.get_max_brightness() as f64) as i16; - info!("Current brightness is {}", ret); + debug !("Current brightness is {}", ret); ret } pub fn increase_brightness(&self, change: i16) { @@ -75,6 +75,7 @@ impl BrightnessDevice { } else { value + change }; + info!("Brightness changed from {} to {}",value,value_new); write(&self.brightness, format!("{}", value_new)).expect("permission denied"); } } diff --git a/src/lib.rs b/src/lib.rs index 339ccd8..5560643 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,7 @@ use std::sync::{Arc, atomic::{AtomicBool, Ordering}}; use futures::{channel::oneshot, FutureExt}; use futures_timer::Delay; -use log::info; +use log::{info, debug}; use crate::{cli_parser::{get_refresh, get_limit}, brightness::BrightnessDevices, screens::change_calc}; pub mod brightness; @@ -39,9 +39,10 @@ pub async fn init() { change = 0; } futures::select! { - _ = Delay::new(std::time::Duration::from_secs(refresh)).fuse() => info!("Current brightness {}",brightness), + _ = Delay::new(std::time::Duration::from_secs(refresh)).fuse() => debug!("Current brightness {}",brightness), _ = &mut rx => { brightness_dev.change_brightness(-change); + info!("Got exit signal"); break;}, } } diff --git a/src/screens.rs b/src/screens.rs index c29d773..e54c208 100644 --- a/src/screens.rs +++ b/src/screens.rs @@ -1,6 +1,7 @@ use fast_image_resize as fr; -use image::{DynamicImage, GenericImageView}; -use log::{debug, info, trace}; +use image::GenericImageView; +use log::{debug, trace}; +use screenshots::DisplayInfo; use std::num::NonZeroU32; use crate::cli_parser::get_offset; @@ -10,13 +11,13 @@ pub fn get_value_to_change(lim: u8, brightness: i16) -> i16 { ((-2.0 * lim as f64 / 255_f64) * brightness as f64 + lim as f64 + get_offset() as f64) as i16 } -pub fn get_average_brightness(img: DynamicImage) -> i16 { - let width = NonZeroU32::new(img.width()).unwrap(); - let height = NonZeroU32::new(img.height()).unwrap(); +pub fn get_average_brightness(img: Vec,dsp : DisplayInfo) -> i16 { + let width = NonZeroU32::new(dsp.width).unwrap(); + let height = NonZeroU32::new(dsp.height).unwrap(); let src_image = fr::Image::from_vec_u8( width, height, - img.to_rgba8().into_raw(), + img, fr::PixelType::U8x4, ) .unwrap(); @@ -29,7 +30,6 @@ pub fn get_average_brightness(img: DynamicImage) -> i16 { let new = image::RgbaImage::from_vec(dst_width.get(), dst_height.get(), dst_image.into_vec()) .unwrap(); let img = image::DynamicImage::ImageRgba8(new); - let img = img.grayscale(); let idk: Vec = img .pixels() .map(|x| (x.2[0] as u32 + x.2[1] as u32 + x.2[2] as u32) / 3) @@ -43,10 +43,9 @@ pub fn change_calc(lim: u8) -> i16 { for i in screens { if i.display_info.is_primary { trace!("{:?}", i.display_info); - let img = i.capture().unwrap(); - ch = get_average_brightness(img); + let img = i.capture_raw().unwrap(); + ch = get_average_brightness(img,i.display_info); ch = get_value_to_change(lim, ch); - info!("Result of ch {}", ch); break; } }