From 852da5714affd067de731599136ed619dc3bba40 Mon Sep 17 00:00:00 2001 From: Kirottu <56396750+Kirottu@users.noreply.github.com> Date: Sat, 25 Jan 2025 10:49:51 +0200 Subject: Add move-workspace-to-index and move-workspace-to-monitor actions (#1007) * Added move-workspace-to-index and move-workspace-to-monitor IPC actions * Added redraws to the workspace handling actions, fixed tests that panicked, fixed other mentioned problems. * Fixed workspace focusing and handling numbered workspaces with `move-workspace-to-index` * Fixed more inconsistencies with move-workspace-to-monitor * Added back `self.workspace_switch = None` * Reordered some workspace cleanup logic * Fix formatting * Add missing blank lines * Fix moving workspace to same monitor and wrong current index updating * Move function up and add fixme comment --------- Co-authored-by: Ivan Molodetskikh --- niri-config/src/lib.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'niri-config/src') diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 62c91b34..b70499d1 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -1358,6 +1358,18 @@ pub enum Action { MoveColumnToWorkspace(#[knuffel(argument)] WorkspaceReference), MoveWorkspaceDown, MoveWorkspaceUp, + MoveWorkspaceToIndex(#[knuffel(argument)] usize), + #[knuffel(skip)] + MoveWorkspaceToIndexByRef { + new_idx: usize, + reference: WorkspaceReference, + }, + #[knuffel(skip)] + MoveWorkspaceToMonitorByRef { + output_name: String, + reference: WorkspaceReference, + }, + MoveWorkspaceToMonitor(#[knuffel(argument)] String), SetWorkspaceName(#[knuffel(argument)] String), #[knuffel(skip)] SetWorkspaceNameByRef { @@ -1612,6 +1624,28 @@ impl From for Action { niri_ipc::Action::MoveWorkspaceToMonitorPrevious {} => { Self::MoveWorkspaceToMonitorPrevious } + niri_ipc::Action::MoveWorkspaceToIndex { + index, + reference: Some(reference), + } => Self::MoveWorkspaceToIndexByRef { + new_idx: index, + reference: WorkspaceReference::from(reference), + }, + niri_ipc::Action::MoveWorkspaceToIndex { + index, + reference: None, + } => Self::MoveWorkspaceToIndex(index), + niri_ipc::Action::MoveWorkspaceToMonitor { + output, + reference: Some(reference), + } => Self::MoveWorkspaceToMonitorByRef { + output_name: output, + reference: WorkspaceReference::from(reference), + }, + niri_ipc::Action::MoveWorkspaceToMonitor { + output, + reference: None, + } => Self::MoveWorkspaceToMonitor(output), niri_ipc::Action::MoveWorkspaceToMonitorNext {} => Self::MoveWorkspaceToMonitorNext, niri_ipc::Action::ToggleDebugTint {} => Self::ToggleDebugTint, niri_ipc::Action::DebugToggleOpaqueRegions {} => Self::DebugToggleOpaqueRegions, -- cgit