mirror of
https://github.com/2e3s/awatcher.git
synced 2025-06-05 19:15:33 +00:00
Polish code and fix mistakes
This commit is contained in:
parent
9dbc6fce80
commit
65ce731f03
@ -144,11 +144,11 @@ impl ActiveWindowInterface {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct KwinWindowWatcher {
|
||||
pub struct WindowWatcher {
|
||||
kwin_script: KWinScript,
|
||||
}
|
||||
|
||||
impl Watcher for KwinWindowWatcher {
|
||||
impl Watcher for WindowWatcher {
|
||||
fn new() -> Result<Self, BoxedError> {
|
||||
let kwin_script = KWinScript::new(Connection::session()?);
|
||||
if kwin_script.is_loaded()? {
|
19
src/main.rs
19
src/main.rs
@ -4,22 +4,22 @@
|
||||
extern crate log;
|
||||
|
||||
mod config;
|
||||
mod kwin_window;
|
||||
mod report_client;
|
||||
mod wl_bindings;
|
||||
mod wl_connection;
|
||||
mod wl_foreign_toplevel;
|
||||
mod wl_kwin_idle;
|
||||
mod wl_kwin_window;
|
||||
|
||||
use config::Config;
|
||||
use fern::colors::{Color, ColoredLevelConfig};
|
||||
use kwin_window::WindowWatcher as KwinWindowWatcher;
|
||||
use report_client::ReportClient;
|
||||
use std::env;
|
||||
use std::{error::Error, str::FromStr, sync::Arc, thread};
|
||||
use wl_kwin_idle::KwinIdleWatcher;
|
||||
use wl_kwin_window::KwinWindowWatcher;
|
||||
use wl_kwin_idle::IdleWatcher as WlKwinIdleWatcher;
|
||||
|
||||
use crate::wl_foreign_toplevel::WlrForeignToplevelWatcher;
|
||||
use crate::wl_foreign_toplevel::WindowWatcher as WlrForeignToplevelWindowWatcher;
|
||||
|
||||
type BoxedError = Box<dyn Error>;
|
||||
|
||||
@ -59,10 +59,10 @@ macro_rules! watcher {
|
||||
};
|
||||
}
|
||||
|
||||
const IDLE_WATCHERS: &[WatcherConstructor] = &[watcher!(KwinIdleWatcher)];
|
||||
const IDLE_WATCHERS: &[WatcherConstructor] = &[watcher!(WlKwinIdleWatcher)];
|
||||
|
||||
const ACTIVE_WINDOW_WATCHERS: &[WatcherConstructor] = &[
|
||||
watcher!(WlrForeignToplevelWatcher),
|
||||
watcher!(WlrForeignToplevelWindowWatcher),
|
||||
watcher!(KwinWindowWatcher),
|
||||
];
|
||||
|
||||
@ -93,10 +93,10 @@ fn setup_logger() -> Result<(), fern::InitError> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() {
|
||||
setup_logger().unwrap();
|
||||
fn main() -> Result<(), BoxedError> {
|
||||
setup_logger()?;
|
||||
|
||||
let client = ReportClient::new(Config::from_cli());
|
||||
let client = ReportClient::new(Config::from_cli())?;
|
||||
let client = Arc::new(client);
|
||||
|
||||
info!(
|
||||
@ -131,4 +131,5 @@ fn main() {
|
||||
error!("Thread failed with error");
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -12,18 +12,12 @@ pub struct ReportClient {
|
||||
}
|
||||
|
||||
impl ReportClient {
|
||||
pub fn new(config: Config) -> Self {
|
||||
let host = config.host.clone();
|
||||
let port = config.port.to_string();
|
||||
pub fn new(config: Config) -> Result<Self, BoxedError> {
|
||||
let client = AwClient::new(&config.host, &config.port.to_string(), "awatcher");
|
||||
Self::create_bucket(&client, &config.idle_bucket_name, "afkstatus")?;
|
||||
Self::create_bucket(&client, &config.active_window_bucket_name, "currentwindow")?;
|
||||
|
||||
let client = AwClient::new(&host, &port, "awatcher");
|
||||
Self::create_bucket(&client, &config.idle_bucket_name, "afkstatus").unwrap();
|
||||
Self::create_bucket(&client, &config.active_window_bucket_name, "currentwindow").unwrap();
|
||||
|
||||
Self {
|
||||
config,
|
||||
client: AwClient::new(&host, &port, "awatcher"),
|
||||
}
|
||||
Ok(Self { client, config })
|
||||
}
|
||||
|
||||
pub fn ping(
|
||||
|
@ -7,7 +7,6 @@ use super::report_client::ReportClient;
|
||||
use super::wl_bindings;
|
||||
use super::wl_connection::WlEventConnection;
|
||||
use super::BoxedError;
|
||||
use chrono::{DateTime, Utc};
|
||||
use wayland_client::{
|
||||
event_created_child, globals::GlobalListContents, protocol::wl_registry, Connection, Dispatch,
|
||||
Proxy, QueueHandle,
|
||||
@ -27,9 +26,6 @@ struct WindowData {
|
||||
struct ToplevelState {
|
||||
windows: HashMap<String, WindowData>,
|
||||
current_window_id: Option<String>,
|
||||
_last_input_time: DateTime<Utc>,
|
||||
_is_idle: bool,
|
||||
_is_changed: bool,
|
||||
client: Arc<ReportClient>,
|
||||
}
|
||||
|
||||
@ -38,9 +34,6 @@ impl ToplevelState {
|
||||
Self {
|
||||
windows: HashMap::new(),
|
||||
current_window_id: None,
|
||||
_last_input_time: Utc::now(),
|
||||
_is_idle: false,
|
||||
_is_changed: false,
|
||||
client,
|
||||
}
|
||||
}
|
||||
@ -139,11 +132,11 @@ impl ToplevelState {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct WlrForeignToplevelWatcher {
|
||||
pub struct WindowWatcher {
|
||||
connection: WlEventConnection<ToplevelState>,
|
||||
}
|
||||
|
||||
impl Watcher for WlrForeignToplevelWatcher {
|
||||
impl Watcher for WindowWatcher {
|
||||
fn new() -> Result<Self, BoxedError> {
|
||||
let connection: WlEventConnection<ToplevelState> = WlEventConnection::connect()?;
|
||||
connection.get_foreign_toplevel_manager()?;
|
||||
@ -164,7 +157,7 @@ impl Watcher for WlrForeignToplevelWatcher {
|
||||
if let Err(e) = self.connection.event_queue.roundtrip(&mut toplevel_state) {
|
||||
error!("Event queue is not processed: {e}");
|
||||
} else if let Err(e) = toplevel_state.send_active_window() {
|
||||
error!("Error on idle iteration {e}");
|
||||
error!("Error on iteration: {e}");
|
||||
}
|
||||
|
||||
thread::sleep(time::Duration::from_secs(u64::from(
|
||||
|
@ -118,11 +118,11 @@ impl Dispatch<OrgKdeKwinIdleTimeout, ()> for IdleState {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct KwinIdleWatcher {
|
||||
pub struct IdleWatcher {
|
||||
connection: WlEventConnection<IdleState>,
|
||||
}
|
||||
|
||||
impl Watcher for KwinIdleWatcher {
|
||||
impl Watcher for IdleWatcher {
|
||||
fn new() -> Result<Self, BoxedError> {
|
||||
let connection: WlEventConnection<IdleState> = WlEventConnection::connect()?;
|
||||
connection.get_kwin_idle()?;
|
||||
@ -147,7 +147,7 @@ impl Watcher for KwinIdleWatcher {
|
||||
if let Err(e) = self.connection.event_queue.roundtrip(&mut idle_state) {
|
||||
error!("Event queue is not processed: {e}");
|
||||
} else if let Err(e) = idle_state.send_ping() {
|
||||
error!("Error on idle iteration {e}");
|
||||
error!("Error on idle iteration: {e}");
|
||||
}
|
||||
thread::sleep(time::Duration::from_secs(u64::from(
|
||||
client.config.poll_time_idle,
|
||||
|
Loading…
x
Reference in New Issue
Block a user