typo + move media control in app

This commit is contained in:
2023-08-06 12:03:03 +02:00
parent 59a0cf8292
commit 7b28fe6313
6 changed files with 75 additions and 63 deletions

View File

@@ -0,0 +1,68 @@
use std::{process::Command, time::Duration, thread};
use lib::{MessageToClient, MessageFromClient, ClientMessage, ServerMessage};
use log::info;
fn get_np() -> anyhow::Result<String> {
let output = Command::new("playerctl")
.arg("metadata")
.arg("-f")
.arg("{{title}} - {{artist}}")
.output()?
.stdout;
let title = String::from_utf8(output)?;
Ok(title.trim().to_string())
}
fn get_playing() -> anyhow::Result<bool> {
let output = Command::new("playerctl").arg("status").output()?.stdout;
let res = String::from_utf8(output)?;
Ok(res.contains("Playing"))
}
pub fn init(sender:MessageToClient,receiver:MessageFromClient){
let mut i = 0;
loop {
i += 1;
if i == 35 {
i = 0;
sender
.send(ServerMessage::NowPlaying(get_np().unwrap()))
.unwrap();
thread::sleep(Duration::from_millis(200));
sender
.send(ServerMessage::Playing(get_playing().unwrap()))
.unwrap();
}
if receiver.is_empty() {
thread::sleep(Duration::from_millis(200));
continue;
}
let msg = receiver.recv().unwrap();
info!("[Client] : {msg:?}");
match msg {
ClientMessage::Next => {
Command::new("playerctl").arg("next").spawn().unwrap();
thread::sleep(Duration::from_millis(200));
sender
.send(ServerMessage::NowPlaying(get_np().unwrap()))
.unwrap();
}
ClientMessage::PlayPause => {
Command::new("playerctl").arg("play-pause").spawn().unwrap();
}
ClientMessage::Previous => {
Command::new("playerctl").arg("previous").spawn().unwrap();
thread::sleep(Duration::from_millis(200));
sender
.send(ServerMessage::NowPlaying(get_np().unwrap()))
.unwrap();
}
};
}
}

View File

@@ -0,0 +1 @@
pub mod media;

View File

@@ -1,71 +1,15 @@
use std::{process::Command, thread, time::Duration};
mod controller;
use lib::{tcp::start_server, ClientMessage, ServerMessage};
use log::info;
use lib::tcp::start_server;
fn main() {
env_logger::init_from_env(
env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"),
);
let (sender_s, receiver_c) = start_server().unwrap();
let (sender, receiver) = start_server().unwrap();
let mut i = 0;
loop {
i += 1;
if i == 35 {
i = 0;
sender_s
.send(ServerMessage::NowPlaying(get_np().unwrap()))
.unwrap();
thread::sleep(Duration::from_millis(200));
sender_s
.send(ServerMessage::Playing(get_playing().unwrap()))
.unwrap();
}
if receiver_c.is_empty() {
thread::sleep(Duration::from_millis(200));
continue;
}
let msg = receiver_c.recv().unwrap();
info!("[Client] : {msg:?}");
controller::media::init(sender, receiver);
match msg {
ClientMessage::Next => {
Command::new("playerctl").arg("next").spawn().unwrap();
thread::sleep(Duration::from_millis(200));
sender_s
.send(ServerMessage::NowPlaying(get_np().unwrap()))
.unwrap();
}
ClientMessage::PlayPause => {
Command::new("playerctl").arg("play-pause").spawn().unwrap();
}
ClientMessage::Previous => {
Command::new("playerctl").arg("previous").spawn().unwrap();
thread::sleep(Duration::from_millis(200));
sender_s
.send(ServerMessage::NowPlaying(get_np().unwrap()))
.unwrap();
}
};
}
}
fn get_np() -> anyhow::Result<String> {
let output = Command::new("playerctl")
.arg("metadata")
.arg("-f")
.arg("{{title}} - {{artist}}")
.output()?
.stdout;
let title = String::from_utf8(output)?;
Ok(title.trim().to_string())
}
fn get_playing() -> anyhow::Result<bool> {
let output = Command::new("playerctl").arg("status").output()?.stdout;
let res = String::from_utf8(output)?;
Ok(res.contains("Playing"))
}

View File

@@ -20,7 +20,7 @@ pub enum ServerMessage {
pub type MessageToServer = Sender<ClientMessage>;
pub type MessageFromServer = Receiver<ServerMessage>;
pub type MessageToClient = Sender<ServerMessage>;
pub type MessageFomClient = Receiver<ClientMessage>;
pub type MessageFromClient = Receiver<ClientMessage>;
pub enum Origin {
Server,

View File

@@ -80,7 +80,7 @@ where
Ok(())
}
pub fn start_server() -> Result<(MessageToClient, MessageFomClient)> {
pub fn start_server() -> Result<(MessageToClient, MessageFromClient)> {
let (message_to_server, message_from_client) = channel::bounded(4);
let (message_to_client, message_from_server) = channel::bounded(4);

View File

@@ -4,6 +4,5 @@
export global AppManager {
in-out property <bool> keyboard-enabled: true;
in-out property <bool> widgets-enabled: true;
in-out property <bool> debug: false;
}