Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
lars-berger committed Feb 19, 2024
1 parent 4387436 commit aa2fb37
Show file tree
Hide file tree
Showing 15 changed files with 132 additions and 7 deletions.
3 changes: 3 additions & 0 deletions packages/client-api/src/providers/create-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { createDateProvider } from './date/create-date-provider';
import { createGlazewmProvider } from './glazewm/create-glazewm-provider';
import { createHostProvider } from './host/create-host-provider';
import { createIpProvider } from './ip/create-ip-provider';
import { createKomorebiProvider } from './komorebi/create-komorebi-provider';
import { createMemoryProvider } from './memory/create-memory-provider';
import { createMonitorsProvider } from './monitors/create-monitors-provider';
import { createNetworkProvider } from './network/create-network-provider';
Expand Down Expand Up @@ -36,6 +37,8 @@ export async function createProvider(
return createHostProvider(config, owner);
case ProviderType.IP:
return createIpProvider(config, owner);
case ProviderType.KOMOREBI:
return createKomorebiProvider(config, owner);
case ProviderType.MEMORY:
return createMemoryProvider(config, owner);
case ProviderType.MONITORS:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import type { Owner } from 'solid-js';

import type { KomorebiProviderConfig } from '~/user-config';
import { createProviderListener } from '../create-provider-listener';

export interface KomorebiVariables {
frequency: number;
}

export async function createKomorebiProvider(
config: KomorebiProviderConfig,
owner: Owner,
) {
const komorebiVariables = await createProviderListener<
KomorebiProviderConfig,
KomorebiVariables
>(config, owner);

return {
get frequency() {
return komorebiVariables().frequency;
},
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
GlazewmProviderConfigSchema,
HostProviderConfigSchema,
IpProviderConfigSchema,
KomorebiProviderConfigSchema,
MemoryProviderConfigSchema,
MonitorsProviderConfigSchema,
NetworkProviderConfigSchema,
Expand All @@ -22,6 +23,7 @@ export const ProviderConfigSchema = z.union([
GlazewmProviderConfigSchema,
HostProviderConfigSchema,
IpProviderConfigSchema,
KomorebiProviderConfigSchema,
MemoryProviderConfigSchema,
MonitorsProviderConfigSchema,
NetworkProviderConfigSchema,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export enum ProviderType {
GLAZEWM = 'glazewm',
HOST = 'host',
IP = 'ip',
KOMOREBI = 'komorebi',
MEMORY = 'memory',
MONITORS = 'monitors',
NETWORK = 'network',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export * from './date-provider-config.model';
export * from './glazewm-provider-config.model';
export * from './host-provider-config.model';
export * from './ip-provider-config.model';
export * from './komorebi-provider-config.model';
export * from './memory-provider-config.model';
export * from './monitors-provider-config.model';
export * from './network-provider-config.model';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { z } from 'zod';

import { ProviderType } from '../provider-type.model';

export const KomorebiProviderConfigSchema = z.object({
type: z.literal(ProviderType.KOMOREBI),
});

export type KomorebiProviderConfig = z.infer<
typeof KomorebiProviderConfigSchema
>;
3 changes: 3 additions & 0 deletions packages/desktop/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ tokio = { version = "1.33.0", features = ["full"] }
tracing = "0.1.40"
tracing-subscriber = "0.3.17"

[target.'cfg(target_os = "windows")'.dependencies]
komorebi-client = { git = "https://github.com/LGUG2Z/komorebi", rev = "8febaac9ff96de1cb22816defcc4b9ffbd644fc8"}

[target.'cfg(target_os = "macos")'.dependencies]
cocoa = "0.25.0"

Expand Down
5 changes: 3 additions & 2 deletions packages/desktop/src/providers/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ use serde::Deserialize;
use super::{
battery::BatteryProviderConfig, cpu::CpuProviderConfig,
host::HostProviderConfig, ip::IpProviderConfig,
memory::MemoryProviderConfig, network::NetworkProviderConfig,
weather::WeatherProviderConfig,
komorebi::KomorebiProviderConfig, memory::MemoryProviderConfig,
network::NetworkProviderConfig, weather::WeatherProviderConfig,
};

#[derive(Deserialize, Debug)]
Expand All @@ -14,6 +14,7 @@ pub enum ProviderConfig {
Cpu(CpuProviderConfig),
Host(HostProviderConfig),
Ip(IpProviderConfig),
Komorebi(KomorebiProviderConfig),
Memory(MemoryProviderConfig),
Network(NetworkProviderConfig),
Weather(WeatherProviderConfig),
Expand Down
5 changes: 5 additions & 0 deletions packages/desktop/src/providers/komorebi/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
use serde::Deserialize;

#[derive(Deserialize, Debug)]
#[serde(tag = "type", rename = "komorebi")]
pub struct KomorebiProviderConfig {}
7 changes: 7 additions & 0 deletions packages/desktop/src/providers/komorebi/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
mod config;
mod provider;
mod variables;

pub use config::*;
pub use provider::*;
pub use variables::*;
55 changes: 55 additions & 0 deletions packages/desktop/src/providers/komorebi/provider.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
use std::sync::Arc;

use anyhow::Result;
use async_trait::async_trait;
use tokio::{sync::mpsc::Sender, sync::Mutex, task::AbortHandle};

use crate::providers::{
manager::ProviderOutput, provider::Provider,
variables::ProviderVariables,
};

use super::{KomorebiProviderConfig, KomorebiVariables};

pub struct KomorebiProvider {
pub config: Arc<KomorebiProviderConfig>,
abort_handle: Option<AbortHandle>,
// sysinfo: Arc<Mutex<System>>,
}

impl KomorebiProvider {
pub fn new(
config: KomorebiProviderConfig,
// sysinfo: Arc<Mutex<System>>,
) -> KomorebiProvider {
KomorebiProvider {
config: Arc::new(config),
abort_handle: None,
// sysinfo,
}
}
}

#[async_trait]
impl Provider for KomorebiProvider {
async fn on_start(
&mut self,
config_hash: String,
emit_output_tx: Sender<ProviderOutput>,
) {
// Ok(ProviderVariables::Komorebi(KomorebiVariables {
// workspaces: 0,
// }))
}
async fn on_refresh(
&mut self,
config_hash: String,
emit_output_tx: Sender<ProviderOutput>,
) {
//
}

async fn on_stop(&mut self) {
//
}
}
7 changes: 7 additions & 0 deletions packages/desktop/src/providers/komorebi/variables.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
use serde::Serialize;

#[derive(Serialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct KomorebiVariables {
pub workspaces: u64,
}
9 changes: 6 additions & 3 deletions packages/desktop/src/providers/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ use crate::providers::provider::Provider;

use super::{
battery::BatteryProvider, config::ProviderConfig, cpu::CpuProvider,
host::HostProvider, ip::IpProvider, memory::MemoryProvider,
network::NetworkProvider, variables::ProviderVariables,
weather::WeatherProvider,
host::HostProvider, ip::IpProvider, komorebi::KomorebiProvider,
memory::MemoryProvider, network::NetworkProvider,
variables::ProviderVariables, weather::WeatherProvider,
};

pub struct ListenProviderArgs {
Expand Down Expand Up @@ -167,6 +167,9 @@ fn create_provider(
Box::new(HostProvider::new(config, sysinfo))
}
ProviderConfig::Ip(config) => Box::new(IpProvider::new(config)),
ProviderConfig::Komorebi(config) => {
Box::new(KomorebiProvider::new(config))
}
ProviderConfig::Memory(config) => {
Box::new(MemoryProvider::new(config, sysinfo))
}
Expand Down
1 change: 1 addition & 0 deletions packages/desktop/src/providers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ pub mod cpu;
pub mod host;
pub mod interval_provider;
pub mod ip;
pub mod komorebi;
pub mod manager;
pub mod memory;
pub mod network;
Expand Down
5 changes: 3 additions & 2 deletions packages/desktop/src/providers/variables.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use serde::Serialize;

use super::{
battery::BatteryVariables, cpu::CpuVariables, host::HostVariables,
ip::IpVariables, memory::MemoryVariables, network::NetworkVariables,
weather::WeatherVariables,
ip::IpVariables, komorebi::KomorebiVariables, memory::MemoryVariables,
network::NetworkVariables, weather::WeatherVariables,
};

#[derive(Serialize, Debug, Clone)]
Expand All @@ -13,6 +13,7 @@ pub enum ProviderVariables {
Cpu(CpuVariables),
Host(HostVariables),
Ip(IpVariables),
Komorebi(KomorebiVariables),
Memory(MemoryVariables),
Network(NetworkVariables),
Weather(WeatherVariables),
Expand Down

0 comments on commit aa2fb37

Please sign in to comment.