Compare commits
1 commit
brightness
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 524e6365ca |
3 changed files with 15 additions and 76 deletions
15
src/app.rs
15
src/app.rs
|
|
@ -5,10 +5,10 @@ use crate::widgets::power_management::PowerManagementWidget;
|
|||
use crate::widgets::powerbutton::ShutdownWidget;
|
||||
use crate::widgets::spacer::Spacer;
|
||||
|
||||
use iced::Color;
|
||||
use iced::Element;
|
||||
use iced::Subscription;
|
||||
use iced::Task;
|
||||
use iced::{Color, Theme};
|
||||
use iced::{Element, color};
|
||||
|
||||
pub struct App {
|
||||
widgets: Vec<Box<dyn PanelWidget>>,
|
||||
|
|
@ -68,7 +68,16 @@ impl App {
|
|||
}
|
||||
|
||||
pub fn theme(&self, _id: iced::window::Id) -> iced::Theme {
|
||||
iced::Theme::GruvboxDark
|
||||
let palette = iced::theme::Palette {
|
||||
background: color!(0x282828), // dark BG_0
|
||||
text: color!(0xfbf1c7), // dark FG0_29
|
||||
primary: color!(0x8A493B), // dark BLUE_4
|
||||
success: color!(0x98971a), // dark GREEN_2
|
||||
warning: color!(0xd79921), // dark YELLOW_3
|
||||
danger: color!(0xcc241d), // dark RED_1
|
||||
};
|
||||
|
||||
Theme::custom("Better gruvbox", palette)
|
||||
}
|
||||
|
||||
pub fn subscription(&self) -> iced::Subscription<Message> {
|
||||
|
|
|
|||
|
|
@ -1,69 +0,0 @@
|
|||
use iced::{Subscription, Task, futures::SinkExt};
|
||||
use niri_ipc::{Event, Request, Response, Window, socket::Socket};
|
||||
|
||||
use crate::widget::{Message, PanelWidget};
|
||||
|
||||
pub struct FocusedWindowWidget {
|
||||
focused_window: Option<u64>,
|
||||
}
|
||||
|
||||
impl FocusedWindowWidget {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
focused_window: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PanelWidget for FocusedWindowWidget {
|
||||
fn update(&mut self, message: &Message) -> iced::Task<Message> {
|
||||
let Message::FocusChanged(i) = message else {
|
||||
return Task::none();
|
||||
};
|
||||
|
||||
self.focused_window = *i;
|
||||
Task::none()
|
||||
}
|
||||
|
||||
fn subscribe(&self) -> Subscription<Message> {
|
||||
Subscription::run(|| {
|
||||
iced::stream::channel(16, async move |mut tx| {
|
||||
use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader};
|
||||
use tokio::net::UnixStream;
|
||||
|
||||
let socket_path = std::env::var("NIRI_SOCKET").unwrap();
|
||||
let mut stream = UnixStream::connect(socket_path).await.unwrap();
|
||||
|
||||
// Send the EventStream request as newline-delimited JSON
|
||||
let request = serde_json::to_string(&niri_ipc::Request::EventStream).unwrap();
|
||||
stream
|
||||
.write_all(format!("{request}\n").as_bytes())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mut reader = BufReader::new(stream);
|
||||
let mut line = String::new();
|
||||
|
||||
loop {
|
||||
line.clear();
|
||||
reader.read_line(&mut line).await.unwrap();
|
||||
|
||||
// First line back is the Reply, subsequent lines are Events
|
||||
if let Ok(event) = serde_json::from_str::<niri_ipc::Event>(line.trim())
|
||||
&& let niri_ipc::Event::WindowFocusChanged { id } = event
|
||||
{
|
||||
let _ = tx.send(Message::FocusChanged(id)).await;
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
fn view(&self, _id: iced::window::Id) -> iced::Element<'_, Message> {
|
||||
iced::widget::text!(
|
||||
"{}",
|
||||
self.focused_window
|
||||
.map_or("None".into(), |f| format!("{}", f))
|
||||
)
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
|
@ -55,14 +55,13 @@ impl PowerManagementWidget<'_> {
|
|||
|
||||
impl PanelWidget for PowerManagementWidget<'_> {
|
||||
fn update(&mut self, message: &crate::widget::Message) -> iced::Task<crate::widget::Message> {
|
||||
let Message::PowerManagement(msg) = message else {
|
||||
return Task::none();
|
||||
};
|
||||
|
||||
let Some(conn) = &mut self.connection else {
|
||||
return Task::none();
|
||||
};
|
||||
|
||||
let Message::PowerManagement(msg) = message else {
|
||||
return Task::none();
|
||||
};
|
||||
match msg {
|
||||
PowerManagement::ToggleWindow => match conn.window {
|
||||
Some(child) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue