mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-25 10:08:33 +02:00
feat(cli): add commands for workspace new window behaviour and float_override
This commit adds the commands to toggle the `window_container_behaviour` and `float_override` of the currently focused workspace.
This commit is contained in:
@@ -91,6 +91,8 @@ pub enum SocketMessage {
|
|||||||
CycleLayout(CycleDirection),
|
CycleLayout(CycleDirection),
|
||||||
ChangeLayoutCustom(PathBuf),
|
ChangeLayoutCustom(PathBuf),
|
||||||
FlipLayout(Axis),
|
FlipLayout(Axis),
|
||||||
|
ToggleWorkspaceWindowContainerBehaviour,
|
||||||
|
ToggleWorkspaceFloatOverride,
|
||||||
// Monitor and Workspace Commands
|
// Monitor and Workspace Commands
|
||||||
MonitorIndexPreference(usize, i32, i32, i32, i32),
|
MonitorIndexPreference(usize, i32, i32, i32, i32),
|
||||||
DisplayIndexPreference(usize, String),
|
DisplayIndexPreference(usize, String),
|
||||||
|
|||||||
@@ -1358,6 +1358,30 @@ impl WindowManager {
|
|||||||
SocketMessage::ToggleFloatOverride => {
|
SocketMessage::ToggleFloatOverride => {
|
||||||
self.window_management_behaviour.float_override = !self.window_management_behaviour.float_override;
|
self.window_management_behaviour.float_override = !self.window_management_behaviour.float_override;
|
||||||
}
|
}
|
||||||
|
SocketMessage::ToggleWorkspaceWindowContainerBehaviour => {
|
||||||
|
let current_global_behaviour = self.window_management_behaviour.current_behaviour;
|
||||||
|
if let Some(behaviour) = self.focused_workspace_mut()?.window_container_behaviour_mut() {
|
||||||
|
match behaviour {
|
||||||
|
WindowContainerBehaviour::Create => *behaviour = WindowContainerBehaviour::Append,
|
||||||
|
WindowContainerBehaviour::Append => *behaviour = WindowContainerBehaviour::Create,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.focused_workspace_mut()?.set_window_container_behaviour(
|
||||||
|
Some(match current_global_behaviour {
|
||||||
|
WindowContainerBehaviour::Create => WindowContainerBehaviour::Append,
|
||||||
|
WindowContainerBehaviour::Append => WindowContainerBehaviour::Create,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
SocketMessage::ToggleWorkspaceFloatOverride => {
|
||||||
|
let current_global_override = self.window_management_behaviour.float_override;
|
||||||
|
if let Some(float_override) = self.focused_workspace_mut()?.float_override_mut() {
|
||||||
|
*float_override = !*float_override;
|
||||||
|
} else {
|
||||||
|
self.focused_workspace_mut()?.set_float_override(Some(!current_global_override));
|
||||||
|
};
|
||||||
|
}
|
||||||
SocketMessage::WindowHidingBehaviour(behaviour) => {
|
SocketMessage::WindowHidingBehaviour(behaviour) => {
|
||||||
let mut hiding_behaviour = HIDING_BEHAVIOUR.lock();
|
let mut hiding_behaviour = HIDING_BEHAVIOUR.lock();
|
||||||
*hiding_behaviour = behaviour;
|
*hiding_behaviour = behaviour;
|
||||||
|
|||||||
@@ -1169,6 +1169,14 @@ enum SubCommand {
|
|||||||
ToggleWindowContainerBehaviour,
|
ToggleWindowContainerBehaviour,
|
||||||
/// Enable or disable float override, which makes it so every new window opens in floating mode
|
/// Enable or disable float override, which makes it so every new window opens in floating mode
|
||||||
ToggleFloatOverride,
|
ToggleFloatOverride,
|
||||||
|
/// Toggle the behaviour for new windows (stacking or dynamic tiling) for currently focused
|
||||||
|
/// workspace. If there was no behaviour set for the workspace previously it takes the opposite
|
||||||
|
/// of the global value.
|
||||||
|
ToggleWorkspaceWindowContainerBehaviour,
|
||||||
|
/// Enable or disable float override, which makes it so every new window opens in floating
|
||||||
|
/// mode, for the currently focused workspace. If there was no override value set for the
|
||||||
|
/// workspace previously it takes the opposite of the global value.
|
||||||
|
ToggleWorkspaceFloatOverride,
|
||||||
/// Toggle window tiling on the focused workspace
|
/// Toggle window tiling on the focused workspace
|
||||||
TogglePause,
|
TogglePause,
|
||||||
/// Toggle window tiling on the focused workspace
|
/// Toggle window tiling on the focused workspace
|
||||||
@@ -2475,6 +2483,12 @@ Stop-Process -Name:komorebi -ErrorAction SilentlyContinue
|
|||||||
SubCommand::ToggleFloatOverride => {
|
SubCommand::ToggleFloatOverride => {
|
||||||
send_message(&SocketMessage::ToggleFloatOverride)?;
|
send_message(&SocketMessage::ToggleFloatOverride)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::ToggleWorkspaceWindowContainerBehaviour => {
|
||||||
|
send_message(&SocketMessage::ToggleWorkspaceWindowContainerBehaviour)?;
|
||||||
|
}
|
||||||
|
SubCommand::ToggleWorkspaceFloatOverride => {
|
||||||
|
send_message(&SocketMessage::ToggleWorkspaceFloatOverride)?;
|
||||||
|
}
|
||||||
SubCommand::WindowHidingBehaviour(arg) => {
|
SubCommand::WindowHidingBehaviour(arg) => {
|
||||||
send_message(&SocketMessage::WindowHidingBehaviour(arg.hiding_behaviour))?;
|
send_message(&SocketMessage::WindowHidingBehaviour(arg.hiding_behaviour))?;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user