styling
This commit is contained in:
parent
2417ff6e31
commit
df6c2e5f02
4 changed files with 125 additions and 19 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -394,7 +394,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "cosmic-panel-config"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/pop-os/cosmic-panel#8787823d807ea9a9d7b96ecacf017d695ba7b58a"
|
||||
source = "git+https://github.com/pop-os/cosmic-panel/#8787823d807ea9a9d7b96ecacf017d695ba7b58a"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"gtk4",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,106 @@
|
|||
*.alert {
|
||||
background-color: #aa3000;
|
||||
color: white;
|
||||
@define-color accent_color #001d6b;
|
||||
@define-color destructive_color #aa3000;
|
||||
@define-color view_bg_color #00000044;
|
||||
@define-color destructive_fg_color white;
|
||||
@define-color accent_fg_color white;
|
||||
@define-color view_fg_color white;
|
||||
|
||||
button.alert {
|
||||
border-radius: 0;
|
||||
padding: 0px;
|
||||
background-color: @destructive_color;
|
||||
background-image: none;
|
||||
color: @destructive_fg_color;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
button.active {
|
||||
border-radius: 0;
|
||||
padding: 0px;
|
||||
background-color: @accent_color;
|
||||
background-image: none;
|
||||
color: @accent_fg_color;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
button.inactive {
|
||||
border-radius: 0;
|
||||
padding: 0px;
|
||||
background-color: @view_bg_color;
|
||||
background-image: none;
|
||||
color: @view_fg_color;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
button.alert:hover {
|
||||
border-radius: 0;
|
||||
padding: 0px;
|
||||
background-color: darken(@destructive_color);
|
||||
background-image: none;
|
||||
color: @destructive_fg_color;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
button.active:hover {
|
||||
border-radius: 0;
|
||||
padding: 0px;
|
||||
background-color: darken(@accent_color);
|
||||
background-image: none;
|
||||
color: @accent_fg_color;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
button.inactive:hover {
|
||||
border-radius: 0;
|
||||
padding: 0px;
|
||||
background-color: darken(@view_bg_color);
|
||||
background-image: none;
|
||||
color: @view_bg_color;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
window {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
listview {
|
||||
border-color: transparent;
|
||||
background: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
listview row {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
listview row:hover {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
label {
|
||||
padding: 0px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
box {
|
||||
padding: 0px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
|
@ -10,11 +10,6 @@ use wayland_client::{
|
|||
|
||||
use wayland_client::{Connection, Dispatch, QueueHandle};
|
||||
|
||||
pub enum WorkspaceState {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// Generated protocol definitions
|
||||
mod generated {
|
||||
#![allow(dead_code, non_camel_case_types, unused_unsafe, unused_variables)]
|
||||
|
|
@ -72,6 +67,7 @@ pub fn spawn_workspaces(tx: glib::Sender<State>) -> mpsc::Sender<Activate> {
|
|||
};
|
||||
|
||||
while state.running {
|
||||
let mut changed = false;
|
||||
while let Ok(request) = workspaces_rx.try_recv() {
|
||||
dbg!(&request);
|
||||
if let Some(w) = state.workspace_groups.iter().find_map(|g| {
|
||||
|
|
@ -79,9 +75,12 @@ pub fn spawn_workspaces(tx: glib::Sender<State>) -> mpsc::Sender<Activate> {
|
|||
.iter()
|
||||
.find(|w| w.name == request)
|
||||
}) {
|
||||
println!("sending request");
|
||||
w.workspace_handle.activate();
|
||||
}
|
||||
changed = true;
|
||||
}
|
||||
if changed {
|
||||
state.workspace_manager.as_ref().unwrap().commit();
|
||||
}
|
||||
event_queue.sync_roundtrip(&mut state).unwrap();
|
||||
|
||||
|
|
@ -140,10 +139,8 @@ impl Dispatch<wl_registry::WlRegistry, ()> for State {
|
|||
version,
|
||||
} = event
|
||||
{
|
||||
println!("[{}] {} (v{})", name, interface, version);
|
||||
match &interface[..] {
|
||||
"zext_workspace_manager_v1" => {
|
||||
println!("binding to workspace manager");
|
||||
let workspace_manager = registry
|
||||
.bind::<zext_workspace_manager_v1::ZextWorkspaceManagerV1, _, _>(
|
||||
name,
|
||||
|
|
@ -155,7 +152,6 @@ impl Dispatch<wl_registry::WlRegistry, ()> for State {
|
|||
self.workspace_manager = Some(workspace_manager);
|
||||
}
|
||||
"wl_output" => {
|
||||
println!("binding to output");
|
||||
registry.bind::<WlOutput, _, _>(name, 1, qh, ()).unwrap();
|
||||
}
|
||||
_ => {}
|
||||
|
|
@ -183,7 +179,6 @@ impl Dispatch<zext_workspace_manager_v1::ZextWorkspaceManagerV1, ()> for State {
|
|||
}
|
||||
zext_workspace_manager_v1::Event::Done => {
|
||||
// TODO
|
||||
println!("sending event with workspace list state");
|
||||
let _ = self.tx.send(self.clone());
|
||||
}
|
||||
zext_workspace_manager_v1::Event::Finished => {
|
||||
|
|
@ -293,6 +288,8 @@ impl Dispatch<ZextWorkspaceHandleV1, ()> for State {
|
|||
if state.len() == 4 {
|
||||
// XXX is it little endian??
|
||||
w.state = u32::from_le_bytes(state.try_into().unwrap());
|
||||
} else {
|
||||
w.state = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,18 +28,25 @@ impl WorkspaceButton {
|
|||
let old_button = imp.button.take();
|
||||
self.remove(&old_button);
|
||||
|
||||
let is_active = obj.active() == 0;
|
||||
let id = obj.id();
|
||||
let new_button = ToggleButton::with_label(&id);
|
||||
new_button.set_active(obj.active() == 0);
|
||||
if obj.active() == 1 {
|
||||
new_button.set_sensitive(!is_active);
|
||||
if obj.active() == 0 {
|
||||
new_button.add_css_class("active");
|
||||
} else if obj.active() == 1 {
|
||||
new_button.add_css_class("alert");
|
||||
} else {
|
||||
new_button.add_css_class("inactive");
|
||||
}
|
||||
self.append(&new_button);
|
||||
new_button.connect_clicked(move |_| {
|
||||
let id_clone = id.clone();
|
||||
glib::MainContext::default().spawn_local(async move {
|
||||
TX.get().unwrap().send(id_clone).await.unwrap();
|
||||
});
|
||||
if !is_active {
|
||||
glib::MainContext::default().spawn_local(async move {
|
||||
TX.get().unwrap().send(id_clone).await.unwrap();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
imp.button.replace(new_button);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue