mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-06 04:55:16 +02:00
feat(cli): add focused ws padding cmds
This commit adds dedicated komorebic commands for setting the padding values of the focused workspace and containers. re #570
This commit is contained in:
@@ -102,8 +102,10 @@ pub enum SocketMessage {
|
|||||||
FocusNamedWorkspace(String),
|
FocusNamedWorkspace(String),
|
||||||
ContainerPadding(usize, usize, i32),
|
ContainerPadding(usize, usize, i32),
|
||||||
NamedWorkspaceContainerPadding(String, i32),
|
NamedWorkspaceContainerPadding(String, i32),
|
||||||
|
FocusedWorkspaceContainerPadding(i32),
|
||||||
WorkspacePadding(usize, usize, i32),
|
WorkspacePadding(usize, usize, i32),
|
||||||
NamedWorkspacePadding(String, i32),
|
NamedWorkspacePadding(String, i32),
|
||||||
|
FocusedWorkspacePadding(i32),
|
||||||
WorkspaceTiling(usize, usize, bool),
|
WorkspaceTiling(usize, usize, bool),
|
||||||
NamedWorkspaceTiling(String, bool),
|
NamedWorkspaceTiling(String, bool),
|
||||||
WorkspaceName(usize, usize, String),
|
WorkspaceName(usize, usize, String),
|
||||||
|
|||||||
@@ -322,6 +322,28 @@ impl WindowManager {
|
|||||||
monitor.update_focused_workspace(offset, &invisible_borders)?;
|
monitor.update_focused_workspace(offset, &invisible_borders)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SocketMessage::FocusedWorkspaceContainerPadding(adjustment) => {
|
||||||
|
let focused_monitor_idx = self.focused_monitor_idx();
|
||||||
|
|
||||||
|
let focused_monitor = self
|
||||||
|
.focused_monitor()
|
||||||
|
.ok_or_else(|| anyhow!("there is no monitor"))?;
|
||||||
|
|
||||||
|
let focused_workspace_idx = focused_monitor.focused_workspace_idx();
|
||||||
|
|
||||||
|
self.set_container_padding(focused_monitor_idx, focused_workspace_idx, adjustment)?;
|
||||||
|
}
|
||||||
|
SocketMessage::FocusedWorkspacePadding(adjustment) => {
|
||||||
|
let focused_monitor_idx = self.focused_monitor_idx();
|
||||||
|
|
||||||
|
let focused_monitor = self
|
||||||
|
.focused_monitor()
|
||||||
|
.ok_or_else(|| anyhow!("there is no monitor"))?;
|
||||||
|
|
||||||
|
let focused_workspace_idx = focused_monitor.focused_workspace_idx();
|
||||||
|
|
||||||
|
self.set_workspace_padding(focused_monitor_idx, focused_workspace_idx, adjustment)?;
|
||||||
|
}
|
||||||
SocketMessage::AdjustContainerPadding(sizing, adjustment) => {
|
SocketMessage::AdjustContainerPadding(sizing, adjustment) => {
|
||||||
self.adjust_container_padding(sizing, adjustment)?;
|
self.adjust_container_padding(sizing, adjustment)?;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -431,6 +431,24 @@ pub struct SendToMonitorWorkspace {
|
|||||||
target_workspace: usize,
|
target_workspace: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! gen_focused_workspace_padding_subcommand_args {
|
||||||
|
// SubCommand Pattern
|
||||||
|
( $( $name:ident ),+ $(,)? ) => {
|
||||||
|
$(
|
||||||
|
#[derive(clap::Parser, derive_ahk::AhkFunction)]
|
||||||
|
pub struct $name {
|
||||||
|
/// Pixels size to set as an integer
|
||||||
|
size: i32,
|
||||||
|
}
|
||||||
|
)+
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
gen_focused_workspace_padding_subcommand_args! {
|
||||||
|
FocusedWorkspaceContainerPadding,
|
||||||
|
FocusedWorkspacePadding,
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! gen_padding_subcommand_args {
|
macro_rules! gen_padding_subcommand_args {
|
||||||
// SubCommand Pattern
|
// SubCommand Pattern
|
||||||
( $( $name:ident ),+ $(,)? ) => {
|
( $( $name:ident ),+ $(,)? ) => {
|
||||||
@@ -857,6 +875,12 @@ enum SubCommand {
|
|||||||
/// Set offsets for a monitor to exclude parts of the work area from tiling
|
/// Set offsets for a monitor to exclude parts of the work area from tiling
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
MonitorWorkAreaOffset(MonitorWorkAreaOffset),
|
MonitorWorkAreaOffset(MonitorWorkAreaOffset),
|
||||||
|
/// Set container padding on the focused workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
FocusedWorkspaceContainerPadding(FocusedWorkspaceContainerPadding),
|
||||||
|
/// Set workspace padding on the focused workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
FocusedWorkspacePadding(FocusedWorkspacePadding),
|
||||||
/// Adjust container padding on the focused workspace
|
/// Adjust container padding on the focused workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
AdjustContainerPadding(AdjustContainerPadding),
|
AdjustContainerPadding(AdjustContainerPadding),
|
||||||
@@ -1358,6 +1382,12 @@ fn main() -> Result<()> {
|
|||||||
&SocketMessage::NamedWorkspacePadding(arg.workspace, arg.size).as_bytes()?,
|
&SocketMessage::NamedWorkspacePadding(arg.workspace, arg.size).as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::FocusedWorkspacePadding(arg) => {
|
||||||
|
send_message(&SocketMessage::FocusedWorkspacePadding(arg.size).as_bytes()?)?;
|
||||||
|
}
|
||||||
|
SubCommand::FocusedWorkspaceContainerPadding(arg) => {
|
||||||
|
send_message(&SocketMessage::FocusedWorkspaceContainerPadding(arg.size).as_bytes()?)?;
|
||||||
|
}
|
||||||
SubCommand::AdjustWorkspacePadding(arg) => {
|
SubCommand::AdjustWorkspacePadding(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::AdjustWorkspacePadding(arg.sizing, arg.adjustment).as_bytes()?,
|
&SocketMessage::AdjustWorkspacePadding(arg.sizing, arg.adjustment).as_bytes()?,
|
||||||
|
|||||||
Reference in New Issue
Block a user