1
0
Fork 0
forked from wry/wry

config: workspace display order

This commit is contained in:
Stipe Kotarac 2025-07-26 10:52:46 +02:00 committed by Julian Orth
parent 40328d7c4a
commit e570152dde
17 changed files with 237 additions and 11 deletions

View file

@ -36,6 +36,7 @@ use {
ContentType, MatchedWindow, TileState, Window, WindowCriterion, WindowMatcher,
WindowType,
},
workspace::WorkspaceDisplayOrder,
xwayland::XScalingMode,
},
bincode::Options,
@ -987,6 +988,10 @@ impl ConfigClient {
self.send(&ClientMessage::SetMiddleClickPasteEnabled { enabled });
}
pub fn set_workspace_display_order(&self, order: WorkspaceDisplayOrder) {
self.send(&ClientMessage::SetWorkspaceDisplayOrder { order });
}
pub fn seat_create_mark(&self, seat: Seat, kc: Option<u32>) {
self.send(&ClientMessage::SeatCreateMark { seat, kc });
}

View file

@ -16,6 +16,7 @@ use {
Transform, VrrMode, connector_type::ConnectorType,
},
window::{ContentType, TileState, Window, WindowMatcher, WindowType},
workspace::WorkspaceDisplayOrder,
xwayland::XScalingMode,
},
serde::{Deserialize, Serialize},
@ -760,6 +761,9 @@ pub enum ClientMessage<'a> {
src: u32,
dst: u32,
},
SetWorkspaceDisplayOrder {
order: WorkspaceDisplayOrder,
},
}
#[derive(Serialize, Deserialize, Debug)]

View file

@ -45,6 +45,7 @@
#[expect(unused_imports)]
use crate::input::Seat;
use {
crate::{
_private::ipc::WorkspaceSource, keyboard::ModifiedKeySym, video::Connector, window::Window,
@ -73,6 +74,7 @@ pub mod theme;
pub mod timer;
pub mod video;
pub mod window;
pub mod workspace;
pub mod xwayland;
/// A planar direction.

View file

@ -0,0 +1,19 @@
//! Tools for configuring workspaces.
use serde::{Deserialize, Serialize};
/// How workspaces should be ordered in the UI.
#[derive(Serialize, Deserialize, Copy, Clone, Debug, Hash, Eq, PartialEq)]
pub enum WorkspaceDisplayOrder {
/// Workspaces are not sorted and can be manually dragged.
Manual,
/// Workspaces are sorted alphabetically and cannot be manually dragged.
Sorted,
}
/// Sets how workspaces should be ordered in the UI.
///
/// The default is `WorkspaceDisplayOrder::Manual`.
pub fn set_workspace_display_order(order: WorkspaceDisplayOrder) {
get!().set_workspace_display_order(order);
}