@@ -16,10 +16,13 @@ use crate::brightness_backend;
1616use crate :: playerctl:: PlayerctlDeviceRaw ;
1717
1818static PRIV_MAX_VOLUME_DEFAULT : u8 = 100_u8 ;
19+ static PRIV_MIN_BRIGHTNESS_DEFAULT : u32 = 5_u32 ;
1920
2021lazy_static ! {
2122 static ref MAX_VOLUME_DEFAULT : Mutex <u8 > = Mutex :: new( PRIV_MAX_VOLUME_DEFAULT ) ;
2223 static ref MAX_VOLUME : Mutex <u8 > = Mutex :: new( PRIV_MAX_VOLUME_DEFAULT ) ;
24+ static ref MIN_BRIGHTNESS_DEFAULT : Mutex <u32 > = Mutex :: new( PRIV_MIN_BRIGHTNESS_DEFAULT ) ;
25+ static ref MIN_BRIGHTNESS : Mutex <u32 > = Mutex :: new( PRIV_MIN_BRIGHTNESS_DEFAULT ) ;
2326 pub static ref DEVICE_NAME_DEFAULT : & ' static str = "default" ;
2427 static ref DEVICE_NAME : Mutex <Option <String >> = Mutex :: new( None ) ;
2528 static ref MONITOR_NAME : Mutex <Option <String >> = Mutex :: new( None ) ;
@@ -62,6 +65,29 @@ pub fn reset_max_volume() {
6265 * vol = * MAX_VOLUME_DEFAULT . lock ( ) . unwrap ( ) ;
6366}
6467
68+ pub fn get_default_min_brightness ( ) -> u32 {
69+ * MIN_BRIGHTNESS_DEFAULT . lock ( ) . unwrap ( )
70+ }
71+
72+ pub fn set_default_min_brightness ( brightness : u32 ) {
73+ let mut min = MIN_BRIGHTNESS_DEFAULT . lock ( ) . unwrap ( ) ;
74+ * min = brightness;
75+ }
76+
77+ pub fn get_min_brightness ( ) -> u32 {
78+ * MIN_BRIGHTNESS . lock ( ) . unwrap ( )
79+ }
80+
81+ pub fn set_min_brightness ( brightness : u32 ) {
82+ let mut min = MIN_BRIGHTNESS . lock ( ) . unwrap ( ) ;
83+ * min = brightness;
84+ }
85+
86+ pub fn reset_min_brightness ( ) {
87+ let mut min = MIN_BRIGHTNESS . lock ( ) . unwrap ( ) ;
88+ * min = * MIN_BRIGHTNESS_DEFAULT . lock ( ) . unwrap ( ) ;
89+ }
90+
6591pub fn get_top_margin ( ) -> f32 {
6692 * TOP_MARGIN . lock ( ) . unwrap ( )
6793}
@@ -401,19 +427,22 @@ pub fn change_brightness(
401427 change_type : BrightnessChangeType ,
402428 step : Option < String > ,
403429) -> brightness_backend:: BrightnessBackendResult {
430+ let min_brightness = get_min_brightness ( ) ;
404431 const BRIGHTNESS_CHANGE_DELTA : u8 = 5 ;
405432 let value = step. unwrap_or_default ( ) . parse :: < u8 > ( ) ;
406433
407434 let mut backend = brightness_backend:: get_preferred_backend ( get_device_name ( ) ) ?;
408435
409436 match change_type {
410- BrightnessChangeType :: Raise => {
411- backend. raise ( value. unwrap_or ( BRIGHTNESS_CHANGE_DELTA ) as u32 ) ?
412- }
413- BrightnessChangeType :: Lower => {
414- backend. lower ( value. unwrap_or ( BRIGHTNESS_CHANGE_DELTA ) as u32 ) ?
415- }
416- BrightnessChangeType :: Set => backend. set ( value. unwrap ( ) as u32 ) ?,
437+ BrightnessChangeType :: Raise => backend. raise (
438+ value. unwrap_or ( BRIGHTNESS_CHANGE_DELTA ) as u32 ,
439+ min_brightness,
440+ ) ?,
441+ BrightnessChangeType :: Lower => backend. lower (
442+ value. unwrap_or ( BRIGHTNESS_CHANGE_DELTA ) as u32 ,
443+ min_brightness,
444+ ) ?,
445+ BrightnessChangeType :: Set => backend. set ( value. unwrap ( ) as u32 , min_brightness) ?,
417446 } ;
418447
419448 Ok ( backend)
0 commit comments