Reduce cargo clippy warnings
This commit is contained in:
+39
-42
@@ -1,4 +1,5 @@
|
||||
use std::collections::VecDeque;
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::mpsc::Sender;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
@@ -50,9 +51,9 @@ impl AppInner {
|
||||
outputs: Vec::new(),
|
||||
shell: None,
|
||||
draw_tx: tx,
|
||||
output_mode: output_mode,
|
||||
output_mode,
|
||||
visible: true,
|
||||
scale: scale,
|
||||
scale,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +72,7 @@ impl AppInner {
|
||||
.create_surface(NewProxy::implement_dummy)
|
||||
.unwrap();
|
||||
|
||||
let this_is_stupid = Arc::new(Mutex::new(false));
|
||||
let this_is_stupid = AtomicBool::new(false);
|
||||
|
||||
let shell_surface = shell
|
||||
.get_layer_surface(
|
||||
@@ -83,9 +84,7 @@ impl AppInner {
|
||||
layer.implement_closure(
|
||||
move |evt, layer| match evt {
|
||||
zwlr_layer_surface_v1::Event::Configure { serial, .. } => {
|
||||
let mut x = this_is_stupid.lock().unwrap();
|
||||
if !*x {
|
||||
*x = true;
|
||||
if !this_is_stupid.compare_and_swap(false, true, Ordering::SeqCst) {
|
||||
*(configured_surfaces.lock().unwrap()) += 1;
|
||||
layer.ack_configure(serial);
|
||||
tx.send(Cmd::ForceDraw).unwrap();
|
||||
@@ -132,7 +131,7 @@ impl AppInner {
|
||||
|
||||
match self.output_mode {
|
||||
OutputMode::Active => {
|
||||
if self.shell_surfaces.len() > 0 {
|
||||
if !self.shell_surfaces.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -181,7 +180,7 @@ impl AppInner {
|
||||
.outputs
|
||||
.iter()
|
||||
.filter(|(output_id, _)| *output_id != id)
|
||||
.map(|(x, y)| (x.clone(), y.clone()))
|
||||
.map(|(x, y)| (*x, y.clone()))
|
||||
.collect();
|
||||
if output.1.as_ref().version() >= 3 {
|
||||
output.1.release()
|
||||
@@ -224,7 +223,7 @@ impl App {
|
||||
|
||||
if !inner.visible
|
||||
|| inner.shell_surfaces.len() != *inner.configured_surfaces.lock().unwrap()
|
||||
|| inner.surfaces.len() == 0
|
||||
|| inner.surfaces.is_empty()
|
||||
{
|
||||
// Not ready yet
|
||||
return Ok(());
|
||||
@@ -269,7 +268,7 @@ impl App {
|
||||
&mut DrawContext {
|
||||
buf: &mut buf,
|
||||
bg: &self.bg,
|
||||
time: &time,
|
||||
time,
|
||||
force,
|
||||
},
|
||||
(0, 0),
|
||||
@@ -277,7 +276,7 @@ impl App {
|
||||
|
||||
mmap.flush().unwrap();
|
||||
|
||||
if !force && !report.full_damage && report.damage.len() == 0 {
|
||||
if !force && !report.full_damage && report.damage.is_empty() {
|
||||
// Nothing to do
|
||||
self.pools.never_mind();
|
||||
return Ok(());
|
||||
@@ -352,7 +351,7 @@ impl App {
|
||||
}
|
||||
|
||||
pub fn new(tx: Sender<Cmd>, output_mode: OutputMode, bg: Color, scale: u32) -> App {
|
||||
let inner = Arc::new(Mutex::new(AppInner::new(tx.clone(), output_mode, scale)));
|
||||
let inner = Arc::new(Mutex::new(AppInner::new(tx, output_mode, scale)));
|
||||
|
||||
//
|
||||
// Set up modules
|
||||
@@ -365,8 +364,7 @@ impl App {
|
||||
let display_wrapper = display
|
||||
.as_ref()
|
||||
.make_wrapper(&event_queue.get_token())
|
||||
.unwrap()
|
||||
.into();
|
||||
.unwrap();
|
||||
|
||||
//
|
||||
// Set up global manager
|
||||
@@ -409,13 +407,12 @@ impl App {
|
||||
|
||||
// wl_shm
|
||||
let shm_formats = Arc::new(Mutex::new(Vec::new()));
|
||||
let shm_formats2 = shm_formats.clone();
|
||||
let shm = manager
|
||||
.instantiate_range(1, 1, |shm| {
|
||||
shm.implement_closure(
|
||||
move |evt, _| {
|
||||
if let wl_shm::Event::Format { format } = evt {
|
||||
shm_formats2.lock().unwrap().push(format);
|
||||
shm_formats.lock().unwrap().push(format);
|
||||
}
|
||||
},
|
||||
(),
|
||||
@@ -450,21 +447,22 @@ impl App {
|
||||
utf8,
|
||||
state,
|
||||
..
|
||||
} => match state {
|
||||
KeyState::Pressed => match keysym {
|
||||
keysyms::XKB_KEY_Escape => kbd_clone.lock().unwrap().push_back(Cmd::Exit),
|
||||
keysyms::XKB_KEY_c if modifiers_state.lock().unwrap().ctrl => {
|
||||
kbd_clone.lock().unwrap().push_back(Cmd::Exit)
|
||||
} => {
|
||||
if let KeyState::Pressed = state {
|
||||
match keysym {
|
||||
keysyms::XKB_KEY_Escape => kbd_clone.lock().unwrap().push_back(Cmd::Exit),
|
||||
keysyms::XKB_KEY_c if modifiers_state.lock().unwrap().ctrl => {
|
||||
kbd_clone.lock().unwrap().push_back(Cmd::Exit)
|
||||
}
|
||||
v => kbd_clone.lock().unwrap().push_back(Cmd::Keyboard {
|
||||
key: v,
|
||||
key_state: state,
|
||||
modifiers_state: *modifiers_state.lock().unwrap(),
|
||||
interpreted: utf8,
|
||||
}),
|
||||
}
|
||||
v => kbd_clone.lock().unwrap().push_back(Cmd::Keyboard {
|
||||
key: v,
|
||||
key_state: state,
|
||||
modifiers_state: modifiers_state.lock().unwrap().clone(),
|
||||
interpreted: utf8,
|
||||
}),
|
||||
},
|
||||
_ => (),
|
||||
},
|
||||
}
|
||||
}
|
||||
KbEvent::Modifiers { modifiers } => *modifiers_state.lock().unwrap() = modifiers,
|
||||
_ => (),
|
||||
})
|
||||
@@ -522,18 +520,17 @@ impl App {
|
||||
vert_scroll += value;
|
||||
}
|
||||
}
|
||||
wl_pointer::Event::Button { button, state, .. } => match state {
|
||||
wl_pointer::ButtonState::Released => {
|
||||
wl_pointer::Event::Button { button, state, .. } => {
|
||||
if let wl_pointer::ButtonState::Released = state {
|
||||
btn = button;
|
||||
btn_clicked = true;
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
}
|
||||
wl_pointer::Event::Frame => {
|
||||
if vert_scroll != 0.0 || horiz_scroll != 0.0 {
|
||||
pointer_clone.lock().unwrap().push_back(Cmd::MouseScroll {
|
||||
scroll: (horiz_scroll, vert_scroll),
|
||||
pos: pos,
|
||||
pos,
|
||||
});
|
||||
vert_scroll = 0.0;
|
||||
horiz_scroll = 0.0;
|
||||
@@ -542,7 +539,7 @@ impl App {
|
||||
pointer_clone
|
||||
.lock()
|
||||
.unwrap()
|
||||
.push_back(Cmd::MouseClick { btn: btn, pos: pos });
|
||||
.push_back(Cmd::MouseClick { btn, pos });
|
||||
btn_clicked = false;
|
||||
}
|
||||
}
|
||||
@@ -556,13 +553,13 @@ impl App {
|
||||
display.flush().unwrap();
|
||||
|
||||
App {
|
||||
display: display,
|
||||
event_queue: event_queue,
|
||||
cmd_queue: cmd_queue,
|
||||
pools: pools,
|
||||
display,
|
||||
event_queue,
|
||||
cmd_queue,
|
||||
pools,
|
||||
widget: None,
|
||||
bg: bg,
|
||||
inner: inner,
|
||||
bg,
|
||||
inner,
|
||||
last_damage: None,
|
||||
last_dim: (0, 0),
|
||||
}
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ pub struct Buffer<'a> {
|
||||
impl<'a> Buffer<'a> {
|
||||
pub fn new(buf: &'a mut MmapMut, dimensions: (u32, u32)) -> Buffer {
|
||||
Buffer {
|
||||
buf: buf,
|
||||
dimensions: dimensions,
|
||||
buf,
|
||||
dimensions,
|
||||
subdimensions: None,
|
||||
}
|
||||
}
|
||||
|
||||
+27
-27
@@ -19,8 +19,8 @@ pub enum Widget {
|
||||
height: u32,
|
||||
widget: Box<Widget>,
|
||||
},
|
||||
HorizontalLayout(Vec<Box<Widget>>),
|
||||
VerticalLayout(Vec<Box<Widget>>),
|
||||
HorizontalLayout(Vec<Widget>),
|
||||
VerticalLayout(Vec<Widget>),
|
||||
Clock {
|
||||
font_size: f32,
|
||||
},
|
||||
@@ -66,11 +66,11 @@ pub enum Widget {
|
||||
impl Widget {
|
||||
pub fn construct(
|
||||
self,
|
||||
time: &NaiveDateTime,
|
||||
time: NaiveDateTime,
|
||||
tx: Sender<Cmd>,
|
||||
) -> Option<Box<dyn widget::Widget + Send>> {
|
||||
match self {
|
||||
Widget::Margin { margins, widget } => match widget.construct(time, tx.clone()) {
|
||||
Widget::Margin { margins, widget } => match widget.construct(time, tx) {
|
||||
Some(w) => Some(widget::Margin::new(margins, w)),
|
||||
None => None,
|
||||
},
|
||||
@@ -78,7 +78,7 @@ impl Widget {
|
||||
width,
|
||||
height,
|
||||
widget,
|
||||
} => match widget.construct(time, tx.clone()) {
|
||||
} => match widget.construct(time, tx) {
|
||||
Some(w) => Some(widget::Fixed::new((width, height), w)),
|
||||
None => None,
|
||||
},
|
||||
@@ -113,17 +113,17 @@ impl Widget {
|
||||
} => Some(widgets::launcher::Launcher::new(
|
||||
font_size,
|
||||
length,
|
||||
tx.clone(),
|
||||
tx,
|
||||
app_opener,
|
||||
term_opener,
|
||||
if url_opener.len() == 0 {
|
||||
if url_opener.is_empty() {
|
||||
"xdg_open ".to_string()
|
||||
} else {
|
||||
url_opener
|
||||
},
|
||||
)),
|
||||
Widget::Battery { font_size, length } => {
|
||||
match widgets::battery::UpowerBattery::new(font_size, length, tx.clone()) {
|
||||
match widgets::battery::UpowerBattery::new(font_size, length, tx) {
|
||||
Ok(w) => Some(w),
|
||||
Err(_) => None,
|
||||
}
|
||||
@@ -145,7 +145,7 @@ impl Widget {
|
||||
}
|
||||
#[cfg(feature = "pulseaudio-widget")]
|
||||
Widget::PulseAudio { font_size, length } => {
|
||||
match widgets::audio::PulseAudio::new(font_size, length, tx.clone()) {
|
||||
match widgets::audio::PulseAudio::new(font_size, length, tx) {
|
||||
Ok(w) => Some(w),
|
||||
Err(_) => None,
|
||||
}
|
||||
@@ -189,51 +189,51 @@ impl Default for Config {
|
||||
widget: Widget::Margin {
|
||||
margins: (20, 20, 20, 20),
|
||||
widget: Box::new(Widget::VerticalLayout(vec![
|
||||
Box::new(Widget::HorizontalLayout(vec![
|
||||
Box::new(Widget::Margin {
|
||||
Widget::HorizontalLayout(vec![
|
||||
Widget::Margin {
|
||||
margins: (0, 88, 0, 32),
|
||||
widget: Box::new(Widget::VerticalLayout(vec![
|
||||
Box::new(Widget::Date { font_size: 64.0 }),
|
||||
Box::new(Widget::Clock { font_size: 256.0 }),
|
||||
Widget::Date { font_size: 64.0 },
|
||||
Widget::Clock { font_size: 256.0 },
|
||||
])),
|
||||
}),
|
||||
Box::new(Widget::VerticalLayout(vec![
|
||||
Box::new(Widget::Margin {
|
||||
},
|
||||
Widget::VerticalLayout(vec![
|
||||
Widget::Margin {
|
||||
margins: (0, 0, 0, 8),
|
||||
widget: Box::new(Widget::Battery {
|
||||
font_size: 24.0,
|
||||
length: 600,
|
||||
}),
|
||||
}),
|
||||
Box::new(Widget::Margin {
|
||||
},
|
||||
Widget::Margin {
|
||||
margins: (0, 0, 0, 8),
|
||||
widget: Box::new(Widget::Backlight {
|
||||
device: "intel_backlight".to_string(),
|
||||
font_size: 24.0,
|
||||
length: 600,
|
||||
}),
|
||||
}),
|
||||
},
|
||||
#[cfg(feature = "pulseaudio-widget")]
|
||||
Box::new(Widget::Margin {
|
||||
Widget::Margin {
|
||||
margins: (0, 0, 0, 8),
|
||||
widget: Box::new(Widget::PulseAudio {
|
||||
font_size: 24.0,
|
||||
length: 600,
|
||||
}),
|
||||
}),
|
||||
])),
|
||||
])),
|
||||
Box::new(Widget::Calendar {
|
||||
},
|
||||
]),
|
||||
]),
|
||||
Widget::Calendar {
|
||||
font_size: 16.0,
|
||||
sections: 3,
|
||||
}),
|
||||
Box::new(Widget::Launcher {
|
||||
},
|
||||
Widget::Launcher {
|
||||
font_size: 32.0,
|
||||
length: 1200,
|
||||
app_opener: "".to_string(),
|
||||
term_opener: "".to_string(),
|
||||
url_opener: "".to_string(),
|
||||
}),
|
||||
},
|
||||
])),
|
||||
},
|
||||
output_mode: Default::default(),
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ pub enum ConfigFmt {
|
||||
Json,
|
||||
}
|
||||
|
||||
pub const CONFIG_NAMES: &'static [&'static str] = &[
|
||||
pub const CONFIG_NAMES: &[&str] = &[
|
||||
#[cfg(feature = "yaml-cfg")]
|
||||
"config.yaml",
|
||||
#[cfg(feature = "json-cfg")]
|
||||
|
||||
+4
-4
@@ -40,12 +40,12 @@ impl Desktop {
|
||||
keywords: desktop
|
||||
.get("Keywords")
|
||||
.map(|x| {
|
||||
x.split(";")
|
||||
x.split(';')
|
||||
.map(|y| y.trim().to_string())
|
||||
.filter(|z| z != "")
|
||||
.collect()
|
||||
})
|
||||
.unwrap_or(vec![]),
|
||||
.unwrap_or_else(|| vec![]),
|
||||
}),
|
||||
None => Err(Box::new(io_error::new(
|
||||
ErrorKind::NotFound,
|
||||
@@ -92,7 +92,7 @@ pub fn load_desktop_files() -> Vec<Desktop> {
|
||||
|
||||
let xdg_data_home = match env::var_os("XDG_DATA_HOME") {
|
||||
Some(s) => s.into_string().unwrap(),
|
||||
None => format!("{}/.local/share", home).to_string(),
|
||||
None => format!("{}/.local/share", home),
|
||||
};
|
||||
let xdg_data_dirs = match env::var_os("XDG_DATA_DIRS") {
|
||||
Some(s) => s.into_string().unwrap(),
|
||||
@@ -100,7 +100,7 @@ pub fn load_desktop_files() -> Vec<Desktop> {
|
||||
};
|
||||
|
||||
std::iter::once(xdg_data_home.as_str())
|
||||
.chain(xdg_data_dirs.split(":"))
|
||||
.chain(xdg_data_dirs.split(':'))
|
||||
.map(|p| Desktop::parse_dir(&format!("{}/applications", p)))
|
||||
.filter_map(Result::ok)
|
||||
.flatten()
|
||||
|
||||
+7
-8
@@ -6,9 +6,8 @@ use std::collections::HashMap;
|
||||
use lazy_static::lazy_static;
|
||||
use rusttype::{point, Font as RustFont, Scale};
|
||||
|
||||
pub static DEJAVUSANS_MONO_FONT_DATA: &'static [u8] =
|
||||
include_bytes!("../fonts/dejavu/DejaVuSansMono.ttf");
|
||||
pub static ROBOTO_REGULAR_FONT_DATA: &'static [u8] = include_bytes!("../fonts/Roboto-Regular.ttf");
|
||||
pub static DEJAVUSANS_MONO_FONT_DATA: &[u8] = include_bytes!("../fonts/dejavu/DejaVuSansMono.ttf");
|
||||
pub static ROBOTO_REGULAR_FONT_DATA: &[u8] = include_bytes!("../fonts/Roboto-Regular.ttf");
|
||||
|
||||
lazy_static! {
|
||||
pub static ref DEJAVUSANS_MONO: RustFont<'static> =
|
||||
@@ -47,9 +46,9 @@ impl CachedGlyph {
|
||||
render[pos as usize] = o;
|
||||
});
|
||||
CachedGlyph {
|
||||
origin: origin,
|
||||
dimensions: dimensions,
|
||||
render: render,
|
||||
origin,
|
||||
dimensions,
|
||||
render,
|
||||
}
|
||||
} else {
|
||||
CachedGlyph {
|
||||
@@ -92,8 +91,8 @@ impl Font {
|
||||
pub fn new(font: &'static RustFont, size: f32) -> Font {
|
||||
Font {
|
||||
glyphs: HashMap::new(),
|
||||
font: font,
|
||||
size: size,
|
||||
font,
|
||||
size,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+9
-7
@@ -45,7 +45,7 @@ fn main() {
|
||||
Ok(dir) => dir + "/wldash",
|
||||
Err(_) => match env::var("HOME") {
|
||||
Ok(home) => home + "/.config/wldash",
|
||||
Err(_) => panic!("unable to find user folder"),
|
||||
_ => panic!("unable to find user folder"),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -105,7 +105,7 @@ fn main() {
|
||||
},
|
||||
None => Mode::Start,
|
||||
};
|
||||
if let Some(_) = args.next() {
|
||||
if args.next().is_some() {
|
||||
// total = args.count + 2 (the two we skipped + the rest)
|
||||
eprintln!("expected 0 or 1 arguments, got {}", args.count() + 2);
|
||||
std::process::exit(1);
|
||||
@@ -115,7 +115,7 @@ fn main() {
|
||||
|
||||
match mode {
|
||||
Mode::ToggleVisible => {
|
||||
if let Ok(mut socket) = UnixStream::connect(socket_path.clone()) {
|
||||
if let Ok(mut socket) = UnixStream::connect(socket_path) {
|
||||
socket.write_all(b"toggle_visible\n").unwrap();
|
||||
return;
|
||||
};
|
||||
@@ -129,13 +129,13 @@ fn main() {
|
||||
};
|
||||
}
|
||||
Mode::Start => {
|
||||
if let Ok(_) = UnixStream::connect(socket_path.clone()) {
|
||||
if UnixStream::connect(socket_path.clone()).is_ok() {
|
||||
eprintln!("wldash is already running");
|
||||
std::process::exit(1);
|
||||
};
|
||||
}
|
||||
Mode::Daemonize => {
|
||||
if let Ok(_) = UnixStream::connect(socket_path.clone()) {
|
||||
if UnixStream::connect(socket_path.clone()).is_ok() {
|
||||
eprintln!("wldash is already running");
|
||||
std::process::exit(1);
|
||||
};
|
||||
@@ -161,9 +161,11 @@ fn main() {
|
||||
let tx_draw_mod = tx_draw.clone();
|
||||
let (mod_tx, mod_rx) = channel();
|
||||
std::thread::spawn(move || {
|
||||
let n = Local::now().naive_local();
|
||||
// Print, write to a file, or send to an HTTP server.
|
||||
match config.widget.construct(&n, tx_draw_mod) {
|
||||
match config
|
||||
.widget
|
||||
.construct(Local::now().naive_local(), tx_draw_mod)
|
||||
{
|
||||
Some(w) => mod_tx.send(w).unwrap(),
|
||||
None => panic!("no widget configured"),
|
||||
}
|
||||
|
||||
+5
-11
@@ -7,7 +7,7 @@ pub use smithay_client_toolkit::keyboard::{KeyState, ModifiersState};
|
||||
pub struct DrawContext<'a> {
|
||||
pub buf: &'a mut Buffer<'a>,
|
||||
pub bg: &'a Color,
|
||||
pub time: &'a NaiveDateTime,
|
||||
pub time: NaiveDateTime,
|
||||
pub force: bool,
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ pub struct VerticalLayout {
|
||||
#[allow(dead_code)]
|
||||
impl VerticalLayout {
|
||||
pub fn new(children: Vec<Box<dyn Widget + Send>>) -> Box<VerticalLayout> {
|
||||
Box::new(VerticalLayout { children: children })
|
||||
Box::new(VerticalLayout { children })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ pub struct HorizontalLayout {
|
||||
#[allow(dead_code)]
|
||||
impl HorizontalLayout {
|
||||
pub fn new(children: Vec<Box<dyn Widget + Send>>) -> Box<HorizontalLayout> {
|
||||
Box::new(HorizontalLayout { children: children })
|
||||
Box::new(HorizontalLayout { children })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,10 +301,7 @@ pub struct Margin {
|
||||
#[allow(dead_code)]
|
||||
impl Margin {
|
||||
pub fn new(margins: (u32, u32, u32, u32), child: Box<dyn Widget + Send>) -> Box<Margin> {
|
||||
Box::new(Margin {
|
||||
child: child,
|
||||
margins: margins,
|
||||
})
|
||||
Box::new(Margin { child, margins })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -378,10 +375,7 @@ pub struct Fixed {
|
||||
#[allow(dead_code)]
|
||||
impl Fixed {
|
||||
pub fn new(size: (u32, u32), child: Box<dyn Widget + Send>) -> Box<Fixed> {
|
||||
Box::new(Fixed {
|
||||
child: child,
|
||||
size: size,
|
||||
})
|
||||
Box::new(Fixed { child, size })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ use crate::widgets::bar_widget::{BarWidget, BarWidgetImpl};
|
||||
|
||||
use alsa::mixer::{Mixer, Selem, SelemChannelId, SelemId};
|
||||
|
||||
const CARD_NAME: &'static str = "default";
|
||||
const SELEM_NAME: &'static str = "Master";
|
||||
const CARD_NAME: &str = "default";
|
||||
const SELEM_NAME: &str = "Master";
|
||||
const SELEM_ID: u32 = 0u32;
|
||||
|
||||
#[inline]
|
||||
@@ -15,8 +15,8 @@ fn alsa_error_to_io_error(fail: &'static str, err: &alsa::Error) -> ::std::io::E
|
||||
let errno = err
|
||||
.errno()
|
||||
.map(|errno| format!("; errno = {}", errno))
|
||||
.unwrap_or(String::new());
|
||||
return ::std::io::Error::new(kind, format!("{}: {}{}", fail, func, errno));
|
||||
.unwrap_or_default();
|
||||
::std::io::Error::new(kind, format!("{}: {}{}", fail, func, errno))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
||||
@@ -158,7 +158,7 @@ impl PulseAudioClient {
|
||||
match req {
|
||||
PulseAudioClientRequest::GetDefaultDevice(s) => {
|
||||
introspector.get_server_info(move |info| {
|
||||
let _res = PulseAudioClient::server_info_callback(
|
||||
PulseAudioClient::server_info_callback(
|
||||
cl.clone(),
|
||||
l.clone(),
|
||||
info,
|
||||
@@ -260,13 +260,12 @@ impl PulseAudioClient {
|
||||
}
|
||||
|
||||
fn send(&self, request: PulseAudioClientRequest) -> Result<(), ::std::io::Error> {
|
||||
let res = self.sender.send(request).map_err(|_e| {
|
||||
self.sender.send(request).map_err(|_e| {
|
||||
::std::io::Error::new(
|
||||
::std::io::ErrorKind::Other,
|
||||
"unable to send pulseaudio request",
|
||||
)
|
||||
});
|
||||
res
|
||||
})
|
||||
}
|
||||
|
||||
fn server_info_callback<F>(s: Arc<Mutex<Self>>, listener: F, server_info: &ServerInfo)
|
||||
@@ -371,10 +370,7 @@ impl PulseAudioSoundDevice {
|
||||
cl.default_sink.to_string()
|
||||
};
|
||||
(*inner.lock().unwrap()).name = Some(name.clone());
|
||||
let device = PulseAudioSoundDevice {
|
||||
client: cl,
|
||||
inner: inner,
|
||||
};
|
||||
let device = PulseAudioSoundDevice { client: cl, inner };
|
||||
let (tx, rx) = channel();
|
||||
{
|
||||
let cl = client.lock().unwrap();
|
||||
@@ -497,7 +493,7 @@ impl PulseAudio {
|
||||
*dirty.lock().unwrap() = true;
|
||||
sender.send(Cmd::Draw).unwrap();
|
||||
})?;
|
||||
Ok(Box::new(PulseAudio { device: device }))
|
||||
Ok(Box::new(PulseAudio { device }))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,10 @@ use crate::color::Color;
|
||||
use crate::widget::WaitContext;
|
||||
use crate::widgets::bar_widget::{BarWidget, BarWidgetImpl};
|
||||
|
||||
use std::fs;
|
||||
use std::fs::OpenOptions;
|
||||
use std::io::Write;
|
||||
use std::io::{Error, ErrorKind};
|
||||
use std::io::{Read, Write};
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
pub struct Backlight {
|
||||
@@ -14,11 +15,9 @@ pub struct Backlight {
|
||||
}
|
||||
|
||||
fn read_file_as_u64(path: &Path) -> Result<u64, Error> {
|
||||
let mut file = OpenOptions::new().read(true).open(path)?;
|
||||
let mut str = String::new();
|
||||
file.read_to_string(&mut str)?;
|
||||
str.pop();
|
||||
str.parse::<u64>()
|
||||
let mut s = fs::read_to_string(path)?;
|
||||
s.pop();
|
||||
s.parse::<u64>()
|
||||
.map_err(|_e| Error::new(ErrorKind::Other, "unable to parse value"))
|
||||
}
|
||||
|
||||
@@ -101,7 +100,6 @@ impl BarWidgetImpl for Backlight {
|
||||
Ok(val) => val,
|
||||
Err(err) => {
|
||||
eprintln!("Error while trying to change brightness: {}", err);
|
||||
()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -111,7 +109,6 @@ impl BarWidgetImpl for Backlight {
|
||||
Ok(val) => val,
|
||||
Err(err) => {
|
||||
eprintln!("Error while trying to change brightness: {}", err);
|
||||
()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -125,7 +122,6 @@ impl BarWidgetImpl for Backlight {
|
||||
Ok(val) => val,
|
||||
Err(err) => {
|
||||
eprintln!("Error while trying to change brightness: {}", err);
|
||||
()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,9 +34,9 @@ impl BarWidget {
|
||||
Box::new(BarWidget {
|
||||
bar_impl: w,
|
||||
dirty: Arc::new(Mutex::new(true)),
|
||||
font: font,
|
||||
font,
|
||||
font_size: font_size as u32,
|
||||
length: length,
|
||||
length,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -53,10 +53,10 @@ impl BarWidget {
|
||||
|
||||
Ok(Box::new(BarWidget {
|
||||
bar_impl: im,
|
||||
dirty: dirty,
|
||||
font: font,
|
||||
dirty,
|
||||
font,
|
||||
font_size: font_size as u32,
|
||||
length: length,
|
||||
length,
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -119,8 +119,8 @@ impl Widget for BarWidget {
|
||||
(self.length - bar_off, self.font_size),
|
||||
)?;
|
||||
Ok(DrawReport {
|
||||
width: width,
|
||||
height: height,
|
||||
width,
|
||||
height,
|
||||
damage: vec![buf.get_signed_bounds()],
|
||||
full_damage: false,
|
||||
})
|
||||
|
||||
@@ -8,8 +8,6 @@ use std::sync::{Arc, Mutex};
|
||||
|
||||
use nix::poll::{PollFd, PollFlags};
|
||||
|
||||
use dbus;
|
||||
|
||||
fn get_upower_property(
|
||||
con: &dbus::Connection,
|
||||
device_path: &str,
|
||||
@@ -44,7 +42,7 @@ struct DbusConnection(dbus::Connection);
|
||||
|
||||
impl std::convert::AsRef<dbus::Connection> for DbusConnection {
|
||||
fn as_ref(&self) -> &dbus::Connection {
|
||||
return &self.0;
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,8 +154,8 @@ impl UpowerBattery {
|
||||
con: DbusConnection(con),
|
||||
dirty,
|
||||
sender,
|
||||
capacity: capacity,
|
||||
state: state,
|
||||
capacity,
|
||||
state,
|
||||
watch: fds[0],
|
||||
})
|
||||
}
|
||||
|
||||
+12
-12
@@ -22,10 +22,10 @@ impl Calendar {
|
||||
&self,
|
||||
buf: &mut Buffer,
|
||||
background_color: &Color,
|
||||
orig: &NaiveDate,
|
||||
time: &NaiveDate,
|
||||
orig: NaiveDate,
|
||||
time: NaiveDate,
|
||||
) -> Result<(i32, i32, i32, i32), ::std::io::Error> {
|
||||
let mut time = time.clone();
|
||||
let mut time = time;
|
||||
let mut y_off = 1;
|
||||
let mut done = false;
|
||||
|
||||
@@ -153,7 +153,7 @@ impl Calendar {
|
||||
}
|
||||
|
||||
impl Calendar {
|
||||
pub fn new(time: &NaiveDateTime, font_size: f32, sections: u32) -> Box<Calendar> {
|
||||
pub fn new(time: NaiveDateTime, font_size: f32, sections: u32) -> Box<Calendar> {
|
||||
let mut calendar_cache = Font::new(&DEJAVUSANS_MONO, font_size * 2.0);
|
||||
calendar_cache.add_str_to_cache("0123456789");
|
||||
let mut month_cache = Font::new(&ROBOTO_REGULAR, font_size * 4.0);
|
||||
@@ -166,12 +166,12 @@ impl Calendar {
|
||||
cur_date: time.date(),
|
||||
dirty: true,
|
||||
offset: 0.0,
|
||||
sections: sections,
|
||||
sections,
|
||||
font_size: font_size as u32,
|
||||
calendar_cache: calendar_cache,
|
||||
month_cache: month_cache,
|
||||
year_cache: year_cache,
|
||||
day_cache: day_cache,
|
||||
calendar_cache,
|
||||
month_cache,
|
||||
year_cache,
|
||||
day_cache,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -233,7 +233,7 @@ impl Widget for Calendar {
|
||||
}
|
||||
let cal_pad = 7 * self.font_size * 3 + self.font_size * 5;
|
||||
for idx in 0..self.sections {
|
||||
self.draw_month(&mut buf.offset((cal_pad * idx, 0))?, ctx.bg, &time, &t)?;
|
||||
self.draw_month(&mut buf.offset((cal_pad * idx, 0))?, ctx.bg, time, t)?;
|
||||
|
||||
t = if t.month() == 12 {
|
||||
t.with_year(t.year() + 1).unwrap().with_month(1).unwrap()
|
||||
@@ -242,8 +242,8 @@ impl Widget for Calendar {
|
||||
};
|
||||
}
|
||||
Ok(DrawReport {
|
||||
width: width,
|
||||
height: height,
|
||||
width,
|
||||
height,
|
||||
damage: vec![buf.get_signed_bounds()],
|
||||
full_damage: false,
|
||||
})
|
||||
|
||||
@@ -11,14 +11,14 @@ pub struct Clock {
|
||||
}
|
||||
|
||||
impl Clock {
|
||||
pub fn new(time: &NaiveDateTime, size: f32) -> Box<Clock> {
|
||||
pub fn new(time: NaiveDateTime, size: f32) -> Box<Clock> {
|
||||
let mut clock_cache = Font::new(&ROBOTO_REGULAR, size);
|
||||
clock_cache.add_str_to_cache("0123456789:");
|
||||
|
||||
Box::new(Clock {
|
||||
cur_time: time.clone(),
|
||||
clock_cache: clock_cache,
|
||||
size: size,
|
||||
cur_time: time,
|
||||
clock_cache,
|
||||
size,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -54,7 +54,7 @@ impl Widget for Clock {
|
||||
return Ok(DrawReport::empty(width, height));
|
||||
}
|
||||
|
||||
self.cur_time = ctx.time.clone();
|
||||
self.cur_time = ctx.time;
|
||||
|
||||
let buf = &mut ctx.buf.subdimensions((pos.0, pos.1, width, height))?;
|
||||
buf.memset(ctx.bg);
|
||||
@@ -70,8 +70,8 @@ impl Widget for Clock {
|
||||
)?;
|
||||
|
||||
Ok(DrawReport {
|
||||
width: width,
|
||||
height: height,
|
||||
width,
|
||||
height,
|
||||
damage: vec![(pos.0 as i32, pos.1 as i32, width as i32, height as i32)],
|
||||
full_damage: false,
|
||||
})
|
||||
|
||||
+7
-7
@@ -11,15 +11,15 @@ pub struct Date {
|
||||
}
|
||||
|
||||
impl Date {
|
||||
pub fn new(time: &NaiveDateTime, size: f32) -> Box<Date> {
|
||||
pub fn new(time: NaiveDateTime, size: f32) -> Box<Date> {
|
||||
let mut date_cache = Font::new(&ROBOTO_REGULAR, size);
|
||||
date_cache
|
||||
.add_str_to_cache("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,/ ");
|
||||
|
||||
Box::new(Date {
|
||||
cur_time: time.clone(),
|
||||
date_cache: date_cache,
|
||||
size: size,
|
||||
cur_time: time,
|
||||
date_cache,
|
||||
size,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ impl Widget for Date {
|
||||
return Ok(DrawReport::empty(width, height));
|
||||
}
|
||||
|
||||
self.cur_time = ctx.time.clone();
|
||||
self.cur_time = ctx.time;
|
||||
|
||||
let buf = &mut ctx.buf.subdimensions((pos.0, pos.1, width, height))?;
|
||||
buf.memset(ctx.bg);
|
||||
@@ -61,8 +61,8 @@ impl Widget for Date {
|
||||
)?;
|
||||
|
||||
Ok(DrawReport {
|
||||
width: width,
|
||||
height: height,
|
||||
width,
|
||||
height,
|
||||
damage: vec![(pos.0 as i32, pos.1 as i32, width as i32, height as i32)],
|
||||
full_damage: false,
|
||||
})
|
||||
|
||||
+24
-26
@@ -50,15 +50,15 @@ impl Launcher {
|
||||
offset: 0,
|
||||
font: RefCell::new(Font::new(&ROBOTO_REGULAR, font_size)),
|
||||
font_size: font_size as u32,
|
||||
length: length,
|
||||
length,
|
||||
dirty: true,
|
||||
tx: listener,
|
||||
})
|
||||
}
|
||||
|
||||
fn draw_launcher(&self, buf: &mut Buffer, bg: &Color) -> Result<(), ::std::io::Error> {
|
||||
let mut x_off = if self.input.len() > 0 {
|
||||
let c = if self.matches.len() == 0 {
|
||||
let mut x_off = if !self.input.is_empty() {
|
||||
let c = if self.matches.is_empty() {
|
||||
Color::new(1.0, 0.5, 0.5, 1.0)
|
||||
} else {
|
||||
Color::new(1.0, 1.0, 1.0, 1.0)
|
||||
@@ -79,7 +79,7 @@ impl Launcher {
|
||||
Ok(b) => b,
|
||||
Err(_) => break,
|
||||
};
|
||||
let size = if idx == self.offset && self.input.len() > 0 {
|
||||
let size = if idx == self.offset && !self.input.is_empty() {
|
||||
let (_, indices) =
|
||||
fuzzy_indices(&m.name.to_lowercase(), &self.input.to_lowercase())
|
||||
.unwrap_or((0, vec![]));
|
||||
@@ -122,7 +122,7 @@ impl Launcher {
|
||||
.0
|
||||
+ self.font_size / 4;
|
||||
|
||||
let x_off = if self.input.len() > 0 {
|
||||
let x_off = if !self.input.is_empty() {
|
||||
let dim = self.font.borrow_mut().auto_draw_text(
|
||||
&mut buf.offset((x_off, 0))?,
|
||||
bg,
|
||||
@@ -160,7 +160,7 @@ impl Launcher {
|
||||
.0
|
||||
+ self.font_size / 4;
|
||||
|
||||
if self.input.len() > 0 {
|
||||
if !self.input.is_empty() {
|
||||
self.font.borrow_mut().auto_draw_text(
|
||||
&mut buf.offset((x_off, 0))?,
|
||||
bg,
|
||||
@@ -175,8 +175,8 @@ impl Launcher {
|
||||
|
||||
fn calc(s: &str) -> Result<String, String> {
|
||||
rcalc_lib::parse::eval(s, &mut rcalc_lib::parse::CalcState::new())
|
||||
.map(|x| format!("{}", x).to_string())
|
||||
.map_err(|x| format!("{}", x).to_string())
|
||||
.map(|x| format!("{}", x))
|
||||
.map_err(|x| format!("{}", x))
|
||||
}
|
||||
|
||||
fn wlcopy(s: &str) -> Result<(), String> {
|
||||
@@ -223,7 +223,7 @@ impl Matcher {
|
||||
let mut m = self
|
||||
.matches
|
||||
.iter()
|
||||
.map(|(key, ma)| (ma.clone(), key.clone()))
|
||||
.map(|(key, ma)| (*ma, key.clone()))
|
||||
.collect::<Vec<(i64, Desktop)>>();
|
||||
|
||||
m.sort_by(|(ma1, d1), (ma2, d2)| {
|
||||
@@ -313,8 +313,8 @@ impl Widget for Launcher {
|
||||
}?;
|
||||
|
||||
Ok(DrawReport {
|
||||
width: width,
|
||||
height: height,
|
||||
width,
|
||||
height,
|
||||
damage: vec![buf.get_signed_bounds()],
|
||||
full_damage: false,
|
||||
})
|
||||
@@ -330,7 +330,7 @@ impl Widget for Launcher {
|
||||
match key {
|
||||
keysyms::XKB_KEY_u if modifiers.ctrl => self.leave(),
|
||||
keysyms::XKB_KEY_BackSpace => {
|
||||
if self.input.len() > 0 {
|
||||
if !self.input.is_empty() {
|
||||
self.input = self.input[..self.input.len() - 1].to_string();
|
||||
self.offset = 0;
|
||||
self.result = None;
|
||||
@@ -339,12 +339,11 @@ impl Widget for Launcher {
|
||||
}
|
||||
keysyms::XKB_KEY_Return => {
|
||||
match self.input.chars().next() {
|
||||
Some('=') => match self.result {
|
||||
Some(ref v) => {
|
||||
Some('=') => {
|
||||
if let Some(ref v) = self.result {
|
||||
let _ = wlcopy(&v);
|
||||
}
|
||||
None => (),
|
||||
},
|
||||
}
|
||||
Some('!') => {
|
||||
let _ = Command::new("sh")
|
||||
.arg("-c")
|
||||
@@ -367,24 +366,24 @@ impl Widget for Launcher {
|
||||
&self.app_opener
|
||||
};
|
||||
|
||||
let lexed = if prefix.len() > 0 {
|
||||
let lexed = if !prefix.is_empty() {
|
||||
let mut prefix = shlex::split(prefix).unwrap();
|
||||
prefix.push(exec);
|
||||
prefix
|
||||
} else {
|
||||
shlex::split(&exec).unwrap()
|
||||
};
|
||||
if lexed.len() > 0 {
|
||||
if !lexed.is_empty() {
|
||||
let _ =
|
||||
Command::new(lexed[0].clone()).args(&lexed[1..]).spawn();
|
||||
self.tx.send(Cmd::Exit).unwrap();
|
||||
}
|
||||
}
|
||||
if let Some(url) = &d.url {
|
||||
if self.url_opener.len() > 0 {
|
||||
if !self.url_opener.is_empty() {
|
||||
let mut lexed = shlex::split(&self.url_opener).unwrap();
|
||||
lexed.push(url.to_string());
|
||||
if lexed.len() > 0 {
|
||||
if !lexed.is_empty() {
|
||||
let _ = Command::new(lexed[0].clone())
|
||||
.args(&lexed[1..])
|
||||
.spawn();
|
||||
@@ -397,26 +396,25 @@ impl Widget for Launcher {
|
||||
};
|
||||
}
|
||||
keysyms::XKB_KEY_Right => {
|
||||
if self.matches.len() > 0 && self.offset < self.matches.len() - 1 {
|
||||
if !self.matches.is_empty() && self.offset < self.matches.len() - 1 {
|
||||
self.offset += 1;
|
||||
self.dirty = true;
|
||||
}
|
||||
}
|
||||
keysyms::XKB_KEY_Left => {
|
||||
if self.matches.len() > 0 && self.offset > 0 {
|
||||
if !self.matches.is_empty() && self.offset > 0 {
|
||||
self.offset -= 1;
|
||||
self.dirty = true;
|
||||
}
|
||||
}
|
||||
_ => match interpreted {
|
||||
Some(v) => {
|
||||
_ => {
|
||||
if let Some(v) = interpreted {
|
||||
self.input += &v;
|
||||
self.offset = 0;
|
||||
self.result = None;
|
||||
self.dirty = true;
|
||||
}
|
||||
None => {}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
fn mouse_click(&mut self, _: u32, _: (u32, u32)) {}
|
||||
|
||||
Reference in New Issue
Block a user