Update to workspace v2, based on ext-workspace
Requires https://github.com/pop-os/cosmic-protocols/pull/51, https://github.com/pop-os/cosmic-comp/pull/1225. The new protocol version is a hard requirement, and this will panic without it.
This commit is contained in:
parent
7f877f72a3
commit
6b6bf454db
11 changed files with 63 additions and 68 deletions
|
|
@ -3,14 +3,12 @@
|
|||
|
||||
use cosmic::{
|
||||
cctk::{
|
||||
cosmic_protocols::{
|
||||
toplevel_info::v1::client::zcosmic_toplevel_handle_v1,
|
||||
workspace::v1::client::zcosmic_workspace_handle_v1,
|
||||
},
|
||||
cosmic_protocols::toplevel_info::v1::client::zcosmic_toplevel_handle_v1,
|
||||
wayland_client::{
|
||||
protocol::{wl_output, wl_shm},
|
||||
Connection, WEnum,
|
||||
},
|
||||
wayland_protocols::ext::workspace::v1::client::ext_workspace_handle_v1,
|
||||
},
|
||||
iced::{
|
||||
self,
|
||||
|
|
@ -80,9 +78,9 @@ impl MockObjectId {
|
|||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Clone, Debug, Hash)]
|
||||
pub struct ZcosmicWorkspaceHandleV1(MockObjectId);
|
||||
pub struct ExtWorkspaceHandleV1(MockObjectId);
|
||||
|
||||
impl ZcosmicWorkspaceHandleV1 {
|
||||
impl ExtWorkspaceHandleV1 {
|
||||
pub fn id(&self) -> MockObjectId {
|
||||
self.0.clone()
|
||||
}
|
||||
|
|
@ -91,27 +89,21 @@ impl ZcosmicWorkspaceHandleV1 {
|
|||
#[derive(Eq, PartialEq, Clone, Debug, Hash)]
|
||||
pub struct ExtForeignToplevelHandleV1(MockObjectId);
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct CaptureFilter {
|
||||
pub workspaces_on_outputs: Vec<wl_output::WlOutput>,
|
||||
pub toplevels_on_workspaces: Vec<ZcosmicWorkspaceHandleV1>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct ToplevelInfo {
|
||||
pub title: String,
|
||||
pub app_id: String,
|
||||
pub state: HashSet<zcosmic_toplevel_handle_v1::State>,
|
||||
pub output: HashSet<wl_output::WlOutput>,
|
||||
pub workspace: HashSet<ZcosmicWorkspaceHandleV1>,
|
||||
pub workspace: HashSet<ExtWorkspaceHandleV1>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Workspace {
|
||||
pub handle: ZcosmicWorkspaceHandleV1,
|
||||
pub handle: ExtWorkspaceHandleV1,
|
||||
pub name: String,
|
||||
// pub coordinates: Vec<u32>,
|
||||
pub state: Vec<WEnum<zcosmic_workspace_handle_v1::State>>,
|
||||
pub state: ext_workspace_handle_v1::State,
|
||||
// pub capabilities: Vec<WEnum<zcosmic_workspace_handle_v1::ZcosmicWorkspaceCapabilitiesV1>>,
|
||||
// pub tiling: Option<WEnum<zcosmic_workspace_handle_v1::TilingState>>,
|
||||
}
|
||||
|
|
@ -135,14 +127,14 @@ impl AppData {
|
|||
// Add four workspaces for each output
|
||||
let mut new_workspaces = Vec::new();
|
||||
for i in 0..=4 {
|
||||
let workspace_handle = ZcosmicWorkspaceHandleV1(MockObjectId::new());
|
||||
let workspace_handle = ExtWorkspaceHandleV1(MockObjectId::new());
|
||||
let workspace = Workspace {
|
||||
handle: workspace_handle.clone(),
|
||||
name: format!("Workspace {i}"),
|
||||
state: if i == 0 {
|
||||
vec![WEnum::Value(zcosmic_workspace_handle_v1::State::Active)]
|
||||
ext_workspace_handle_v1::State::Active
|
||||
} else {
|
||||
Vec::new()
|
||||
ext_workspace_handle_v1::State::empty()
|
||||
},
|
||||
};
|
||||
// Add three toplevels for each workspace
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue