From 524e6365ca4247ac557c343d9ea5332c4d3a0c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Maxmili=C3=A1n=20St=C5=99=C3=ADbrn=C3=BD?= Date: Thu, 2 Apr 2026 13:33:44 +0200 Subject: [PATCH] New pallete --- src/app.rs | 15 +++++-- src/widgets/focused_window.rs | 69 --------------------------------- src/widgets/power_management.rs | 7 ++-- 3 files changed, 15 insertions(+), 76 deletions(-) delete mode 100644 src/widgets/focused_window.rs diff --git a/src/app.rs b/src/app.rs index 0e03d92..f9d8e65 100644 --- a/src/app.rs +++ b/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>, @@ -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 { diff --git a/src/widgets/focused_window.rs b/src/widgets/focused_window.rs deleted file mode 100644 index e4ffa18..0000000 --- a/src/widgets/focused_window.rs +++ /dev/null @@ -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, -} - -impl FocusedWindowWidget { - pub fn new() -> Self { - Self { - focused_window: None, - } - } -} - -impl PanelWidget for FocusedWindowWidget { - fn update(&mut self, message: &Message) -> iced::Task { - let Message::FocusChanged(i) = message else { - return Task::none(); - }; - - self.focused_window = *i; - Task::none() - } - - fn subscribe(&self) -> Subscription { - 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::(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() - } -} diff --git a/src/widgets/power_management.rs b/src/widgets/power_management.rs index 3724a2e..889c3a2 100644 --- a/src/widgets/power_management.rs +++ b/src/widgets/power_management.rs @@ -55,14 +55,13 @@ impl PowerManagementWidget<'_> { impl PanelWidget for PowerManagementWidget<'_> { fn update(&mut self, message: &crate::widget::Message) -> iced::Task { - 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) => {