mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-05 12:41:47 +02:00
feat(wm): add more named-workspace cmd variants
This commit is contained in:
@@ -47,11 +47,13 @@ pub enum SocketMessage {
|
|||||||
CycleStack(CycleDirection),
|
CycleStack(CycleDirection),
|
||||||
MoveContainerToMonitorNumber(usize),
|
MoveContainerToMonitorNumber(usize),
|
||||||
MoveContainerToWorkspaceNumber(usize),
|
MoveContainerToWorkspaceNumber(usize),
|
||||||
|
MoveContainerToNamedWorkspace(String),
|
||||||
CycleMoveContainerToWorkspace(CycleDirection),
|
CycleMoveContainerToWorkspace(CycleDirection),
|
||||||
SendContainerToMonitorNumber(usize),
|
SendContainerToMonitorNumber(usize),
|
||||||
SendContainerToWorkspaceNumber(usize),
|
SendContainerToWorkspaceNumber(usize),
|
||||||
CycleSendContainerToWorkspace(CycleDirection),
|
CycleSendContainerToWorkspace(CycleDirection),
|
||||||
SendContainerToMonitorWorkspaceNumber(usize, usize),
|
SendContainerToMonitorWorkspaceNumber(usize, usize),
|
||||||
|
SendContainerToNamedWorkspace(String),
|
||||||
MoveWorkspaceToMonitorNumber(usize),
|
MoveWorkspaceToMonitorNumber(usize),
|
||||||
ForceFocus,
|
ForceFocus,
|
||||||
Close,
|
Close,
|
||||||
@@ -94,14 +96,22 @@ pub enum SocketMessage {
|
|||||||
FocusMonitorWorkspaceNumber(usize, usize),
|
FocusMonitorWorkspaceNumber(usize, usize),
|
||||||
FocusNamedWorkspace(String),
|
FocusNamedWorkspace(String),
|
||||||
ContainerPadding(usize, usize, i32),
|
ContainerPadding(usize, usize, i32),
|
||||||
|
NamedWorkspaceContainerPadding(String, i32),
|
||||||
WorkspacePadding(usize, usize, i32),
|
WorkspacePadding(usize, usize, i32),
|
||||||
|
NamedWorkspacePadding(String, i32),
|
||||||
WorkspaceTiling(usize, usize, bool),
|
WorkspaceTiling(usize, usize, bool),
|
||||||
|
NamedWorkspaceTiling(String, bool),
|
||||||
WorkspaceName(usize, usize, String),
|
WorkspaceName(usize, usize, String),
|
||||||
WorkspaceLayout(usize, usize, DefaultLayout),
|
WorkspaceLayout(usize, usize, DefaultLayout),
|
||||||
|
NamedWorkspaceLayout(String, DefaultLayout),
|
||||||
WorkspaceLayoutCustom(usize, usize, PathBuf),
|
WorkspaceLayoutCustom(usize, usize, PathBuf),
|
||||||
|
NamedWorkspaceLayoutCustom(String, PathBuf),
|
||||||
WorkspaceLayoutRule(usize, usize, usize, DefaultLayout),
|
WorkspaceLayoutRule(usize, usize, usize, DefaultLayout),
|
||||||
|
NamedWorkspaceLayoutRule(String, usize, DefaultLayout),
|
||||||
WorkspaceLayoutCustomRule(usize, usize, usize, PathBuf),
|
WorkspaceLayoutCustomRule(usize, usize, usize, PathBuf),
|
||||||
|
NamedWorkspaceLayoutCustomRule(String, usize, PathBuf),
|
||||||
ClearWorkspaceLayoutRules(usize, usize),
|
ClearWorkspaceLayoutRules(usize, usize),
|
||||||
|
ClearNamedWorkspaceLayoutRules(String),
|
||||||
// Configuration
|
// Configuration
|
||||||
ReloadConfiguration,
|
ReloadConfiguration,
|
||||||
WatchConfiguration(bool),
|
WatchConfiguration(bool),
|
||||||
|
|||||||
+32
-2
@@ -5,6 +5,12 @@
|
|||||||
; 1Password
|
; 1Password
|
||||||
Run, komorebic.exe float-rule exe "1Password.exe", , Hide
|
Run, komorebic.exe float-rule exe "1Password.exe", , Hide
|
||||||
|
|
||||||
|
; Ableton Live
|
||||||
|
; Targets VST2 windows
|
||||||
|
Run, komorebic.exe float-rule class "AbletonVstPlugClass", , Hide
|
||||||
|
; Targets VST3 windows
|
||||||
|
Run, komorebic.exe float-rule class "Vst3PlugWindow", , Hide
|
||||||
|
|
||||||
; Adobe Creative Cloud
|
; Adobe Creative Cloud
|
||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application class "CreativeCloudDesktopWindowClass", , Hide
|
Run, komorebic.exe identify-tray-application class "CreativeCloudDesktopWindowClass", , Hide
|
||||||
@@ -153,6 +159,10 @@ Run, komorebic.exe identify-border-overflow-application exe "Kotatogram.exe", ,
|
|||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "Kotatogram.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "Kotatogram.exe", , Hide
|
||||||
|
|
||||||
|
; LocalSend
|
||||||
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
|
Run, komorebic.exe identify-tray-application exe "localsend_app.exe", , Hide
|
||||||
|
|
||||||
; Logi Bolt
|
; Logi Bolt
|
||||||
Run, komorebic.exe float-rule exe "LogiBolt.exe", , Hide
|
Run, komorebic.exe float-rule exe "LogiBolt.exe", , Hide
|
||||||
|
|
||||||
@@ -287,6 +297,11 @@ Run, komorebic.exe float-rule exe "QuickLook.exe", , Hide
|
|||||||
; RepoZ
|
; RepoZ
|
||||||
Run, komorebic.exe float-rule exe "RepoZ.exe", , Hide
|
Run, komorebic.exe float-rule exe "RepoZ.exe", , Hide
|
||||||
|
|
||||||
|
; Rider
|
||||||
|
Run, komorebic.exe identify-object-name-change-application exe "rider64.exe", , Hide
|
||||||
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
|
Run, komorebic.exe identify-tray-application exe "rider64.exe", , Hide
|
||||||
|
|
||||||
; Roblox FPS Unlocker
|
; Roblox FPS Unlocker
|
||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "rbxfpsunlocker.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "rbxfpsunlocker.exe", , Hide
|
||||||
@@ -304,6 +319,9 @@ Run, komorebic.exe identify-border-overflow-application exe "ShareX.exe", , Hide
|
|||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "ShareX.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "ShareX.exe", , Hide
|
||||||
|
|
||||||
|
; Sideloadly
|
||||||
|
Run, komorebic.exe float-rule exe "sideloadly.exe", , Hide
|
||||||
|
|
||||||
; Signal
|
; Signal
|
||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "signal.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "signal.exe", , Hide
|
||||||
@@ -342,6 +360,10 @@ Run, komorebic.exe identify-tray-application exe "Spotify.exe", , Hide
|
|||||||
; Steam
|
; Steam
|
||||||
Run, komorebic.exe identify-border-overflow-application class "vguiPopupWindow", , Hide
|
Run, komorebic.exe identify-border-overflow-application class "vguiPopupWindow", , Hide
|
||||||
|
|
||||||
|
; Stremio
|
||||||
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
|
Run, komorebic.exe identify-tray-application exe "stremio.exe", , Hide
|
||||||
|
|
||||||
; System Informer
|
; System Informer
|
||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "SystemInformer.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "SystemInformer.exe", , Hide
|
||||||
@@ -375,12 +397,21 @@ Run, komorebic.exe identify-border-overflow-application exe "UnrealEditor.exe",
|
|||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "UnrealEditor.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "UnrealEditor.exe", , Hide
|
||||||
|
|
||||||
|
; VRCX
|
||||||
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
|
Run, komorebic.exe identify-tray-application exe "VRCX.exe", , Hide
|
||||||
|
|
||||||
; Visual Studio
|
; Visual Studio
|
||||||
Run, komorebic.exe identify-object-name-change-application exe "devenv.exe", , Hide
|
Run, komorebic.exe identify-object-name-change-application exe "devenv.exe", , Hide
|
||||||
|
|
||||||
; Visual Studio Code
|
; Visual Studio Code
|
||||||
Run, komorebic.exe identify-border-overflow-application exe "Code.exe", , Hide
|
Run, komorebic.exe identify-border-overflow-application exe "Code.exe", , Hide
|
||||||
|
|
||||||
|
; Voice.ai
|
||||||
|
Run, komorebic.exe identify-border-overflow-application exe "VoiceAI.exe", , Hide
|
||||||
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
|
Run, komorebic.exe identify-tray-application exe "VoiceAI.exe", , Hide
|
||||||
|
|
||||||
; WebTorrent Desktop
|
; WebTorrent Desktop
|
||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
Run, komorebic.exe identify-tray-application exe "WebTorrent.exe", , Hide
|
Run, komorebic.exe identify-tray-application exe "WebTorrent.exe", , Hide
|
||||||
@@ -394,8 +425,7 @@ Run, komorebic.exe float-rule class "OperationStatusWindow", , Hide
|
|||||||
Run, komorebic.exe float-rule title "Control Panel", , Hide
|
Run, komorebic.exe float-rule title "Control Panel", , Hide
|
||||||
|
|
||||||
; Windows Installer
|
; Windows Installer
|
||||||
; Targets MSI Installers
|
Run, komorebic.exe float-rule exe "msiexec.exe", , Hide
|
||||||
Run, komorebic.exe float-rule class "MsiDialogCloseClass", , Hide
|
|
||||||
|
|
||||||
; WingetUI
|
; WingetUI
|
||||||
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
; If you have disabled minimize/close to tray for this application, you can delete/comment out the next line
|
||||||
|
|||||||
@@ -197,9 +197,23 @@ impl WindowManager {
|
|||||||
SocketMessage::ContainerPadding(monitor_idx, workspace_idx, size) => {
|
SocketMessage::ContainerPadding(monitor_idx, workspace_idx, size) => {
|
||||||
self.set_container_padding(monitor_idx, workspace_idx, size)?;
|
self.set_container_padding(monitor_idx, workspace_idx, size)?;
|
||||||
}
|
}
|
||||||
|
SocketMessage::NamedWorkspaceContainerPadding(ref workspace, size) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.set_container_padding(monitor_idx, workspace_idx, size)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
SocketMessage::WorkspacePadding(monitor_idx, workspace_idx, size) => {
|
SocketMessage::WorkspacePadding(monitor_idx, workspace_idx, size) => {
|
||||||
self.set_workspace_padding(monitor_idx, workspace_idx, size)?;
|
self.set_workspace_padding(monitor_idx, workspace_idx, size)?;
|
||||||
}
|
}
|
||||||
|
SocketMessage::NamedWorkspacePadding(ref workspace, size) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.set_workspace_padding(monitor_idx, workspace_idx, size)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
SocketMessage::WorkspaceRule(_, ref id, monitor_idx, workspace_idx) => {
|
SocketMessage::WorkspaceRule(_, ref id, monitor_idx, workspace_idx) => {
|
||||||
{
|
{
|
||||||
let mut workspace_rules = WORKSPACE_RULES.lock();
|
let mut workspace_rules = WORKSPACE_RULES.lock();
|
||||||
@@ -332,6 +346,25 @@ impl WindowManager {
|
|||||||
SocketMessage::SendContainerToMonitorWorkspaceNumber(monitor_idx, workspace_idx) => {
|
SocketMessage::SendContainerToMonitorWorkspaceNumber(monitor_idx, workspace_idx) => {
|
||||||
self.move_container_to_monitor(monitor_idx, Option::from(workspace_idx), false)?;
|
self.move_container_to_monitor(monitor_idx, Option::from(workspace_idx), false)?;
|
||||||
}
|
}
|
||||||
|
SocketMessage::SendContainerToNamedWorkspace(ref workspace) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.move_container_to_monitor(
|
||||||
|
monitor_idx,
|
||||||
|
Option::from(workspace_idx),
|
||||||
|
false,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SocketMessage::MoveContainerToNamedWorkspace(ref workspace) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.move_container_to_monitor(monitor_idx, Option::from(workspace_idx), true)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SocketMessage::MoveWorkspaceToMonitorNumber(monitor_idx) => {
|
SocketMessage::MoveWorkspaceToMonitorNumber(monitor_idx) => {
|
||||||
self.move_workspace_to_monitor(monitor_idx)?;
|
self.move_workspace_to_monitor(monitor_idx)?;
|
||||||
}
|
}
|
||||||
@@ -406,6 +439,62 @@ impl WindowManager {
|
|||||||
SocketMessage::ClearWorkspaceLayoutRules(monitor_idx, workspace_idx) => {
|
SocketMessage::ClearWorkspaceLayoutRules(monitor_idx, workspace_idx) => {
|
||||||
self.clear_workspace_layout_rules(monitor_idx, workspace_idx)?;
|
self.clear_workspace_layout_rules(monitor_idx, workspace_idx)?;
|
||||||
}
|
}
|
||||||
|
SocketMessage::NamedWorkspaceLayoutCustom(ref workspace, ref path) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.set_workspace_layout_custom(monitor_idx, workspace_idx, path.clone())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SocketMessage::NamedWorkspaceTiling(ref workspace, tile) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.set_workspace_tiling(monitor_idx, workspace_idx, tile)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SocketMessage::NamedWorkspaceLayout(ref workspace, layout) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.set_workspace_layout_default(monitor_idx, workspace_idx, layout)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SocketMessage::NamedWorkspaceLayoutRule(ref workspace, at_container_count, layout) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.add_workspace_layout_default_rule(
|
||||||
|
monitor_idx,
|
||||||
|
workspace_idx,
|
||||||
|
at_container_count,
|
||||||
|
layout,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SocketMessage::NamedWorkspaceLayoutCustomRule(
|
||||||
|
ref workspace,
|
||||||
|
at_container_count,
|
||||||
|
ref path,
|
||||||
|
) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.add_workspace_layout_custom_rule(
|
||||||
|
monitor_idx,
|
||||||
|
workspace_idx,
|
||||||
|
at_container_count,
|
||||||
|
path.clone(),
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SocketMessage::ClearNamedWorkspaceLayoutRules(ref workspace) => {
|
||||||
|
if let Some((monitor_idx, workspace_idx)) =
|
||||||
|
self.monitor_workspace_index_by_name(workspace)
|
||||||
|
{
|
||||||
|
self.clear_workspace_layout_rules(monitor_idx, workspace_idx)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
SocketMessage::CycleFocusWorkspace(direction) => {
|
SocketMessage::CycleFocusWorkspace(direction) => {
|
||||||
// This is to ensure that even on an empty workspace on a secondary monitor, the
|
// This is to ensure that even on an empty workspace on a secondary monitor, the
|
||||||
// secondary monitor where the cursor is focused will be used as the target for
|
// secondary monitor where the cursor is focused will be used as the target for
|
||||||
|
|||||||
@@ -100,6 +100,10 @@ MoveToWorkspace(target) {
|
|||||||
RunWait, komorebic.exe move-to-workspace %target%, , Hide
|
RunWait, komorebic.exe move-to-workspace %target%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MoveToNamedWorkspace(workspace) {
|
||||||
|
RunWait, komorebic.exe move-to-named-workspace %workspace%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
CycleMoveToWorkspace(cycle_direction) {
|
CycleMoveToWorkspace(cycle_direction) {
|
||||||
RunWait, komorebic.exe cycle-move-to-workspace %cycle_direction%, , Hide
|
RunWait, komorebic.exe cycle-move-to-workspace %cycle_direction%, , Hide
|
||||||
}
|
}
|
||||||
@@ -112,6 +116,10 @@ SendToWorkspace(target) {
|
|||||||
RunWait, komorebic.exe send-to-workspace %target%, , Hide
|
RunWait, komorebic.exe send-to-workspace %target%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendToNamedWorkspace(workspace) {
|
||||||
|
RunWait, komorebic.exe send-to-named-workspace %workspace%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
CycleSendToWorkspace(cycle_direction) {
|
CycleSendToWorkspace(cycle_direction) {
|
||||||
RunWait, komorebic.exe cycle-send-to-workspace %cycle_direction%, , Hide
|
RunWait, komorebic.exe cycle-send-to-workspace %cycle_direction%, , Hide
|
||||||
}
|
}
|
||||||
@@ -132,6 +140,10 @@ FocusMonitorWorkspace(target_monitor, target_workspace) {
|
|||||||
RunWait, komorebic.exe focus-monitor-workspace %target_monitor% %target_workspace%, , Hide
|
RunWait, komorebic.exe focus-monitor-workspace %target_monitor% %target_workspace%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FocusNamedWorkspace(workspace) {
|
||||||
|
RunWait, komorebic.exe focus-named-workspace %workspace%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
CycleMonitor(cycle_direction) {
|
CycleMonitor(cycle_direction) {
|
||||||
RunWait, komorebic.exe cycle-monitor %cycle_direction%, , Hide
|
RunWait, komorebic.exe cycle-monitor %cycle_direction%, , Hide
|
||||||
}
|
}
|
||||||
@@ -204,38 +216,74 @@ EnsureWorkspaces(monitor, workspace_count) {
|
|||||||
RunWait, komorebic.exe ensure-workspaces %monitor% %workspace_count%, , Hide
|
RunWait, komorebic.exe ensure-workspaces %monitor% %workspace_count%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EnsureNamedWorkspaces(monitor, names) {
|
||||||
|
RunWait, komorebic.exe ensure-named-workspaces %monitor% %names%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
ContainerPadding(monitor, workspace, size) {
|
ContainerPadding(monitor, workspace, size) {
|
||||||
RunWait, komorebic.exe container-padding %monitor% %workspace% %size%, , Hide
|
RunWait, komorebic.exe container-padding %monitor% %workspace% %size%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceContainerPadding(workspace, size) {
|
||||||
|
RunWait, komorebic.exe named-workspace-container-padding %workspace% %size%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspacePadding(monitor, workspace, size) {
|
WorkspacePadding(monitor, workspace, size) {
|
||||||
RunWait, komorebic.exe workspace-padding %monitor% %workspace% %size%, , Hide
|
RunWait, komorebic.exe workspace-padding %monitor% %workspace% %size%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspacePadding(workspace, size) {
|
||||||
|
RunWait, komorebic.exe named-workspace-padding %workspace% %size%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspaceLayout(monitor, workspace, value) {
|
WorkspaceLayout(monitor, workspace, value) {
|
||||||
RunWait, komorebic.exe workspace-layout %monitor% %workspace% %value%, , Hide
|
RunWait, komorebic.exe workspace-layout %monitor% %workspace% %value%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceLayout(workspace, value) {
|
||||||
|
RunWait, komorebic.exe named-workspace-layout %workspace% %value%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspaceCustomLayout(monitor, workspace, path) {
|
WorkspaceCustomLayout(monitor, workspace, path) {
|
||||||
RunWait, komorebic.exe workspace-custom-layout %monitor% %workspace% %path%, , Hide
|
RunWait, komorebic.exe workspace-custom-layout %monitor% %workspace% %path%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceCustomLayout(workspace, path) {
|
||||||
|
RunWait, komorebic.exe named-workspace-custom-layout %workspace% %path%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspaceLayoutRule(monitor, workspace, at_container_count, layout) {
|
WorkspaceLayoutRule(monitor, workspace, at_container_count, layout) {
|
||||||
RunWait, komorebic.exe workspace-layout-rule %monitor% %workspace% %at_container_count% %layout%, , Hide
|
RunWait, komorebic.exe workspace-layout-rule %monitor% %workspace% %at_container_count% %layout%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceLayoutRule(workspace, at_container_count, layout) {
|
||||||
|
RunWait, komorebic.exe named-workspace-layout-rule %workspace% %at_container_count% %layout%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspaceCustomLayoutRule(monitor, workspace, at_container_count, path) {
|
WorkspaceCustomLayoutRule(monitor, workspace, at_container_count, path) {
|
||||||
RunWait, komorebic.exe workspace-custom-layout-rule %monitor% %workspace% %at_container_count% %path%, , Hide
|
RunWait, komorebic.exe workspace-custom-layout-rule %monitor% %workspace% %at_container_count% %path%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceCustomLayoutRule(workspace, at_container_count, path) {
|
||||||
|
RunWait, komorebic.exe named-workspace-custom-layout-rule %workspace% %at_container_count% %path%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
ClearWorkspaceLayoutRules(monitor, workspace) {
|
ClearWorkspaceLayoutRules(monitor, workspace) {
|
||||||
RunWait, komorebic.exe clear-workspace-layout-rules %monitor% %workspace%, , Hide
|
RunWait, komorebic.exe clear-workspace-layout-rules %monitor% %workspace%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClearNamedWorkspaceLayoutRules(workspace) {
|
||||||
|
RunWait, komorebic.exe clear-named-workspace-layout-rules %workspace%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspaceTiling(monitor, workspace, value) {
|
WorkspaceTiling(monitor, workspace, value) {
|
||||||
RunWait, komorebic.exe workspace-tiling %monitor% %workspace% %value%, , Hide
|
RunWait, komorebic.exe workspace-tiling %monitor% %workspace% %value%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceTiling(workspace, value) {
|
||||||
|
RunWait, komorebic.exe named-workspace-tiling %workspace% %value%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
WorkspaceName(monitor, workspace, value) {
|
WorkspaceName(monitor, workspace, value) {
|
||||||
RunWait, komorebic.exe workspace-name %monitor% %workspace% %value%, , Hide
|
RunWait, komorebic.exe workspace-name %monitor% %workspace% %value%, , Hide
|
||||||
}
|
}
|
||||||
@@ -320,6 +368,10 @@ WorkspaceRule(identifier, id, monitor, workspace) {
|
|||||||
RunWait, komorebic.exe workspace-rule %identifier% "%id%" %monitor% %workspace%, , Hide
|
RunWait, komorebic.exe workspace-rule %identifier% "%id%" %monitor% %workspace%, , Hide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NamedWorkspaceRule(identifier, id, workspace) {
|
||||||
|
RunWait, komorebic.exe named-workspace-rule %identifier% "%id%" %workspace%, , Hide
|
||||||
|
}
|
||||||
|
|
||||||
IdentifyObjectNameChangeApplication(identifier, id) {
|
IdentifyObjectNameChangeApplication(identifier, id) {
|
||||||
RunWait, komorebic.exe identify-object-name-change-application %identifier% "%id%", , Hide
|
RunWait, komorebic.exe identify-object-name-change-application %identifier% "%id%", , Hide
|
||||||
}
|
}
|
||||||
|
|||||||
+200
-13
@@ -1,7 +1,6 @@
|
|||||||
#![warn(clippy::all, clippy::nursery, clippy::pedantic)]
|
#![warn(clippy::all, clippy::nursery, clippy::pedantic)]
|
||||||
#![allow(clippy::missing_errors_doc)]
|
#![allow(clippy::missing_errors_doc)]
|
||||||
|
|
||||||
use std::fs;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::fs::OpenOptions;
|
use std::fs::OpenOptions;
|
||||||
use std::io::BufRead;
|
use std::io::BufRead;
|
||||||
@@ -151,6 +150,26 @@ gen_target_subcommand_args! {
|
|||||||
MoveWorkspaceToMonitor,
|
MoveWorkspaceToMonitor,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! gen_named_target_subcommand_args {
|
||||||
|
// SubCommand Pattern
|
||||||
|
( $( $name:ident ),+ $(,)? ) => {
|
||||||
|
$(
|
||||||
|
#[derive(clap::Parser, derive_ahk::AhkFunction)]
|
||||||
|
pub struct $name {
|
||||||
|
/// Target workspace name
|
||||||
|
workspace: String,
|
||||||
|
}
|
||||||
|
)+
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
gen_named_target_subcommand_args! {
|
||||||
|
MoveToNamedWorkspace,
|
||||||
|
SendToNamedWorkspace,
|
||||||
|
FocusNamedWorkspace,
|
||||||
|
ClearNamedWorkspaceLayoutRules
|
||||||
|
}
|
||||||
|
|
||||||
// Thanks to @danielhenrymantilla for showing me how to use cfg_attr with an optional argument like
|
// Thanks to @danielhenrymantilla for showing me how to use cfg_attr with an optional argument like
|
||||||
// this on the Rust Programming Language Community Discord Server
|
// this on the Rust Programming Language Community Discord Server
|
||||||
macro_rules! gen_workspace_subcommand_args {
|
macro_rules! gen_workspace_subcommand_args {
|
||||||
@@ -185,6 +204,34 @@ gen_workspace_subcommand_args! {
|
|||||||
Tiling: #[enum] BooleanState,
|
Tiling: #[enum] BooleanState,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! gen_named_workspace_subcommand_args {
|
||||||
|
// Workspace Property: #[enum] Value Enum (if the value is an Enum)
|
||||||
|
// Workspace Property: Value Type (if the value is anything else)
|
||||||
|
( $( $name:ident: $(#[enum] $(@$value_enum:tt)?)? $value:ty ),+ $(,)? ) => (
|
||||||
|
paste! {
|
||||||
|
$(
|
||||||
|
#[derive(clap::Parser, derive_ahk::AhkFunction)]
|
||||||
|
pub struct [<NamedWorkspace $name>] {
|
||||||
|
/// Target workspace name
|
||||||
|
workspace: String,
|
||||||
|
|
||||||
|
$(#[clap(value_enum)] $($value_enum)?)?
|
||||||
|
#[cfg_attr(
|
||||||
|
all($(FALSE $($value_enum)?)?),
|
||||||
|
doc = ""$name " of the workspace as a "$value ""
|
||||||
|
)]
|
||||||
|
value: $value,
|
||||||
|
}
|
||||||
|
)+
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
gen_named_workspace_subcommand_args! {
|
||||||
|
Layout: #[enum] DefaultLayout,
|
||||||
|
Tiling: #[enum] BooleanState,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Parser, AhkFunction)]
|
#[derive(Parser, AhkFunction)]
|
||||||
pub struct ClearWorkspaceLayoutRules {
|
pub struct ClearWorkspaceLayoutRules {
|
||||||
/// Monitor index (zero-indexed)
|
/// Monitor index (zero-indexed)
|
||||||
@@ -206,6 +253,15 @@ pub struct WorkspaceCustomLayout {
|
|||||||
path: String,
|
path: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Parser, AhkFunction)]
|
||||||
|
pub struct NamedWorkspaceCustomLayout {
|
||||||
|
/// Target workspace name
|
||||||
|
workspace: String,
|
||||||
|
|
||||||
|
/// JSON or YAML file from which the custom layout definition should be loaded
|
||||||
|
path: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Parser, AhkFunction)]
|
#[derive(Parser, AhkFunction)]
|
||||||
pub struct WorkspaceLayoutRule {
|
pub struct WorkspaceLayoutRule {
|
||||||
/// Monitor index (zero-indexed)
|
/// Monitor index (zero-indexed)
|
||||||
@@ -221,6 +277,18 @@ pub struct WorkspaceLayoutRule {
|
|||||||
layout: DefaultLayout,
|
layout: DefaultLayout,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Parser, AhkFunction)]
|
||||||
|
pub struct NamedWorkspaceLayoutRule {
|
||||||
|
/// Target workspace name
|
||||||
|
workspace: String,
|
||||||
|
|
||||||
|
/// The number of window containers on-screen required to trigger this layout rule
|
||||||
|
at_container_count: usize,
|
||||||
|
|
||||||
|
#[clap(value_enum)]
|
||||||
|
layout: DefaultLayout,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Parser, AhkFunction)]
|
#[derive(Parser, AhkFunction)]
|
||||||
pub struct WorkspaceCustomLayoutRule {
|
pub struct WorkspaceCustomLayoutRule {
|
||||||
/// Monitor index (zero-indexed)
|
/// Monitor index (zero-indexed)
|
||||||
@@ -236,6 +304,18 @@ pub struct WorkspaceCustomLayoutRule {
|
|||||||
path: String,
|
path: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Parser, AhkFunction)]
|
||||||
|
pub struct NamedWorkspaceCustomLayoutRule {
|
||||||
|
/// Target workspace name
|
||||||
|
workspace: String,
|
||||||
|
|
||||||
|
/// The number of window containers on-screen required to trigger this layout rule
|
||||||
|
at_container_count: usize,
|
||||||
|
|
||||||
|
/// JSON or YAML file from which the custom layout definition should be loaded
|
||||||
|
path: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Parser, AhkFunction)]
|
#[derive(Parser, AhkFunction)]
|
||||||
struct Resize {
|
struct Resize {
|
||||||
#[clap(value_enum)]
|
#[clap(value_enum)]
|
||||||
@@ -334,12 +414,6 @@ struct FocusMonitorWorkspace {
|
|||||||
target_workspace: usize,
|
target_workspace: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Parser, AhkFunction)]
|
|
||||||
struct FocusNamedWorkspace {
|
|
||||||
/// Target workspace name
|
|
||||||
name: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Parser, AhkFunction)]
|
#[derive(Parser, AhkFunction)]
|
||||||
pub struct SendToMonitorWorkspace {
|
pub struct SendToMonitorWorkspace {
|
||||||
/// Target monitor index (zero-indexed)
|
/// Target monitor index (zero-indexed)
|
||||||
@@ -370,6 +444,27 @@ gen_padding_subcommand_args! {
|
|||||||
WorkspacePadding,
|
WorkspacePadding,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! gen_named_padding_subcommand_args {
|
||||||
|
// SubCommand Pattern
|
||||||
|
( $( $name:ident ),+ $(,)? ) => {
|
||||||
|
$(
|
||||||
|
#[derive(clap::Parser, derive_ahk::AhkFunction)]
|
||||||
|
pub struct $name {
|
||||||
|
/// Target workspace name
|
||||||
|
workspace: String,
|
||||||
|
|
||||||
|
/// Pixels to pad with as an integer
|
||||||
|
size: i32,
|
||||||
|
}
|
||||||
|
)+
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
gen_named_padding_subcommand_args! {
|
||||||
|
NamedWorkspaceContainerPadding,
|
||||||
|
NamedWorkspacePadding,
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! gen_padding_adjustment_subcommand_args {
|
macro_rules! gen_padding_adjustment_subcommand_args {
|
||||||
// SubCommand Pattern
|
// SubCommand Pattern
|
||||||
( $( $name:ident ),+ $(,)? ) => {
|
( $( $name:ident ),+ $(,)? ) => {
|
||||||
@@ -622,6 +717,9 @@ enum SubCommand {
|
|||||||
/// Move the focused window to the specified workspace
|
/// Move the focused window to the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
MoveToWorkspace(MoveToWorkspace),
|
MoveToWorkspace(MoveToWorkspace),
|
||||||
|
/// Move the focused window to the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
MoveToNamedWorkspace(MoveToNamedWorkspace),
|
||||||
/// Move the focused window to the workspace in the given cycle direction
|
/// Move the focused window to the workspace in the given cycle direction
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
CycleMoveToWorkspace(CycleMoveToWorkspace),
|
CycleMoveToWorkspace(CycleMoveToWorkspace),
|
||||||
@@ -631,6 +729,9 @@ enum SubCommand {
|
|||||||
/// Send the focused window to the specified workspace
|
/// Send the focused window to the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
SendToWorkspace(SendToWorkspace),
|
SendToWorkspace(SendToWorkspace),
|
||||||
|
/// Send the focused window to the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
SendToNamedWorkspace(SendToNamedWorkspace),
|
||||||
/// Send the focused window to the workspace in the given cycle direction
|
/// Send the focused window to the workspace in the given cycle direction
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
CycleSendToWorkspace(CycleSendToWorkspace),
|
CycleSendToWorkspace(CycleSendToWorkspace),
|
||||||
@@ -646,7 +747,7 @@ enum SubCommand {
|
|||||||
/// Focus the specified workspace on the target monitor
|
/// Focus the specified workspace on the target monitor
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
FocusMonitorWorkspace(FocusMonitorWorkspace),
|
FocusMonitorWorkspace(FocusMonitorWorkspace),
|
||||||
/// Focus the specified workspace on the target monitor
|
/// Focus the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
FocusNamedWorkspace(FocusNamedWorkspace),
|
FocusNamedWorkspace(FocusNamedWorkspace),
|
||||||
/// Focus the monitor in the given cycle direction
|
/// Focus the monitor in the given cycle direction
|
||||||
@@ -700,33 +801,57 @@ enum SubCommand {
|
|||||||
/// Create at least this many workspaces for the specified monitor
|
/// Create at least this many workspaces for the specified monitor
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
EnsureWorkspaces(EnsureWorkspaces),
|
EnsureWorkspaces(EnsureWorkspaces),
|
||||||
/// Create at least this many workspaces for the specified monitor
|
/// Create these many named workspaces for the specified monitor
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
EnsureNamedWorkspaces(EnsureNamedWorkspaces),
|
EnsureNamedWorkspaces(EnsureNamedWorkspaces),
|
||||||
/// Set the container padding for the specified workspace
|
/// Set the container padding for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
ContainerPadding(ContainerPadding),
|
ContainerPadding(ContainerPadding),
|
||||||
|
/// Set the container padding for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspaceContainerPadding(NamedWorkspaceContainerPadding),
|
||||||
/// Set the workspace padding for the specified workspace
|
/// Set the workspace padding for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspacePadding(WorkspacePadding),
|
WorkspacePadding(WorkspacePadding),
|
||||||
|
/// Set the workspace padding for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspacePadding(NamedWorkspacePadding),
|
||||||
/// Set the layout for the specified workspace
|
/// Set the layout for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspaceLayout(WorkspaceLayout),
|
WorkspaceLayout(WorkspaceLayout),
|
||||||
|
/// Set the layout for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspaceLayout(NamedWorkspaceLayout),
|
||||||
/// Set a custom layout for the specified workspace
|
/// Set a custom layout for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspaceCustomLayout(WorkspaceCustomLayout),
|
WorkspaceCustomLayout(WorkspaceCustomLayout),
|
||||||
|
/// Set a custom layout for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspaceCustomLayout(NamedWorkspaceCustomLayout),
|
||||||
/// Add a dynamic layout rule for the specified workspace
|
/// Add a dynamic layout rule for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspaceLayoutRule(WorkspaceLayoutRule),
|
WorkspaceLayoutRule(WorkspaceLayoutRule),
|
||||||
|
/// Add a dynamic layout rule for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspaceLayoutRule(NamedWorkspaceLayoutRule),
|
||||||
/// Add a dynamic custom layout for the specified workspace
|
/// Add a dynamic custom layout for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspaceCustomLayoutRule(WorkspaceCustomLayoutRule),
|
WorkspaceCustomLayoutRule(WorkspaceCustomLayoutRule),
|
||||||
|
/// Add a dynamic custom layout for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspaceCustomLayoutRule(NamedWorkspaceCustomLayoutRule),
|
||||||
/// Clear all dynamic layout rules for the specified workspace
|
/// Clear all dynamic layout rules for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
ClearWorkspaceLayoutRules(ClearWorkspaceLayoutRules),
|
ClearWorkspaceLayoutRules(ClearWorkspaceLayoutRules),
|
||||||
|
/// Clear all dynamic layout rules for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
ClearNamedWorkspaceLayoutRules(ClearNamedWorkspaceLayoutRules),
|
||||||
/// Enable or disable window tiling for the specified workspace
|
/// Enable or disable window tiling for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspaceTiling(WorkspaceTiling),
|
WorkspaceTiling(WorkspaceTiling),
|
||||||
|
/// Enable or disable window tiling for the specified workspace
|
||||||
|
#[clap(arg_required_else_help = true)]
|
||||||
|
NamedWorkspaceTiling(NamedWorkspaceTiling),
|
||||||
/// Set the workspace name for the specified workspace
|
/// Set the workspace name for the specified workspace
|
||||||
#[clap(arg_required_else_help = true)]
|
#[clap(arg_required_else_help = true)]
|
||||||
WorkspaceName(WorkspaceName),
|
WorkspaceName(WorkspaceName),
|
||||||
@@ -920,6 +1045,9 @@ fn main() -> Result<()> {
|
|||||||
SubCommand::MoveToWorkspace(arg) => {
|
SubCommand::MoveToWorkspace(arg) => {
|
||||||
send_message(&SocketMessage::MoveContainerToWorkspaceNumber(arg.target).as_bytes()?)?;
|
send_message(&SocketMessage::MoveContainerToWorkspaceNumber(arg.target).as_bytes()?)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::MoveToNamedWorkspace(arg) => {
|
||||||
|
send_message(&SocketMessage::MoveContainerToNamedWorkspace(arg.workspace).as_bytes()?)?;
|
||||||
|
}
|
||||||
SubCommand::CycleMoveToWorkspace(arg) => {
|
SubCommand::CycleMoveToWorkspace(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::CycleMoveContainerToWorkspace(arg.cycle_direction).as_bytes()?,
|
&SocketMessage::CycleMoveContainerToWorkspace(arg.cycle_direction).as_bytes()?,
|
||||||
@@ -931,6 +1059,9 @@ fn main() -> Result<()> {
|
|||||||
SubCommand::SendToWorkspace(arg) => {
|
SubCommand::SendToWorkspace(arg) => {
|
||||||
send_message(&SocketMessage::SendContainerToWorkspaceNumber(arg.target).as_bytes()?)?;
|
send_message(&SocketMessage::SendContainerToWorkspaceNumber(arg.target).as_bytes()?)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::SendToNamedWorkspace(arg) => {
|
||||||
|
send_message(&SocketMessage::SendContainerToNamedWorkspace(arg.workspace).as_bytes()?)?;
|
||||||
|
}
|
||||||
SubCommand::CycleSendToWorkspace(arg) => {
|
SubCommand::CycleSendToWorkspace(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::CycleSendContainerToWorkspace(arg.cycle_direction).as_bytes()?,
|
&SocketMessage::CycleSendContainerToWorkspace(arg.cycle_direction).as_bytes()?,
|
||||||
@@ -990,12 +1121,23 @@ fn main() -> Result<()> {
|
|||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspaceContainerPadding(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspaceContainerPadding(arg.workspace, arg.size)
|
||||||
|
.as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::WorkspacePadding(arg) => {
|
SubCommand::WorkspacePadding(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::WorkspacePadding(arg.monitor, arg.workspace, arg.size)
|
&SocketMessage::WorkspacePadding(arg.monitor, arg.workspace, arg.size)
|
||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspacePadding(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspacePadding(arg.workspace, 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()?,
|
||||||
@@ -1027,6 +1169,11 @@ fn main() -> Result<()> {
|
|||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspaceLayout(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspaceLayout(arg.workspace, arg.value).as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::WorkspaceCustomLayout(arg) => {
|
SubCommand::WorkspaceCustomLayout(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::WorkspaceLayoutCustom(
|
&SocketMessage::WorkspaceLayoutCustom(
|
||||||
@@ -1037,6 +1184,15 @@ fn main() -> Result<()> {
|
|||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspaceCustomLayout(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspaceLayoutCustom(
|
||||||
|
arg.workspace,
|
||||||
|
resolve_windows_path(&arg.path)?,
|
||||||
|
)
|
||||||
|
.as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::WorkspaceLayoutRule(arg) => {
|
SubCommand::WorkspaceLayoutRule(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::WorkspaceLayoutRule(
|
&SocketMessage::WorkspaceLayoutRule(
|
||||||
@@ -1048,6 +1204,16 @@ fn main() -> Result<()> {
|
|||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspaceLayoutRule(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspaceLayoutRule(
|
||||||
|
arg.workspace,
|
||||||
|
arg.at_container_count,
|
||||||
|
arg.layout,
|
||||||
|
)
|
||||||
|
.as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::WorkspaceCustomLayoutRule(arg) => {
|
SubCommand::WorkspaceCustomLayoutRule(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::WorkspaceLayoutCustomRule(
|
&SocketMessage::WorkspaceLayoutCustomRule(
|
||||||
@@ -1059,17 +1225,37 @@ fn main() -> Result<()> {
|
|||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspaceCustomLayoutRule(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspaceLayoutCustomRule(
|
||||||
|
arg.workspace,
|
||||||
|
arg.at_container_count,
|
||||||
|
resolve_windows_path(&arg.path)?,
|
||||||
|
)
|
||||||
|
.as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::ClearWorkspaceLayoutRules(arg) => {
|
SubCommand::ClearWorkspaceLayoutRules(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::ClearWorkspaceLayoutRules(arg.monitor, arg.workspace).as_bytes()?,
|
&SocketMessage::ClearWorkspaceLayoutRules(arg.monitor, arg.workspace).as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::ClearNamedWorkspaceLayoutRules(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::ClearNamedWorkspaceLayoutRules(arg.workspace).as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::WorkspaceTiling(arg) => {
|
SubCommand::WorkspaceTiling(arg) => {
|
||||||
send_message(
|
send_message(
|
||||||
&SocketMessage::WorkspaceTiling(arg.monitor, arg.workspace, arg.value.into())
|
&SocketMessage::WorkspaceTiling(arg.monitor, arg.workspace, arg.value.into())
|
||||||
.as_bytes()?,
|
.as_bytes()?,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
SubCommand::NamedWorkspaceTiling(arg) => {
|
||||||
|
send_message(
|
||||||
|
&SocketMessage::NamedWorkspaceTiling(arg.workspace, arg.value.into()).as_bytes()?,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
SubCommand::Start(arg) => {
|
SubCommand::Start(arg) => {
|
||||||
let mut buf: PathBuf;
|
let mut buf: PathBuf;
|
||||||
|
|
||||||
@@ -1233,7 +1419,7 @@ fn main() -> Result<()> {
|
|||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
SubCommand::FocusNamedWorkspace(arg) => {
|
SubCommand::FocusNamedWorkspace(arg) => {
|
||||||
send_message(&SocketMessage::FocusNamedWorkspace(arg.name).as_bytes()?)?;
|
send_message(&SocketMessage::FocusNamedWorkspace(arg.workspace).as_bytes()?)?;
|
||||||
}
|
}
|
||||||
SubCommand::CycleMonitor(arg) => {
|
SubCommand::CycleMonitor(arg) => {
|
||||||
send_message(&SocketMessage::CycleFocusMonitor(arg.cycle_direction).as_bytes()?)?;
|
send_message(&SocketMessage::CycleFocusMonitor(arg.cycle_direction).as_bytes()?)?;
|
||||||
@@ -1470,9 +1656,10 @@ fn main() -> Result<()> {
|
|||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
SubCommand::AhkAppSpecificConfiguration(arg) => {
|
SubCommand::AhkAppSpecificConfiguration(arg) => {
|
||||||
let content = fs::read_to_string(resolve_windows_path(&arg.path)?)?;
|
let content = std::fs::read_to_string(resolve_windows_path(&arg.path)?)?;
|
||||||
let lines = if let Some(override_path) = arg.override_path {
|
let lines = if let Some(override_path) = arg.override_path {
|
||||||
let override_content = fs::read_to_string(resolve_windows_path(&override_path)?)?;
|
let override_content =
|
||||||
|
std::fs::read_to_string(resolve_windows_path(&override_path)?)?;
|
||||||
|
|
||||||
ApplicationConfigurationGenerator::generate_ahk(
|
ApplicationConfigurationGenerator::generate_ahk(
|
||||||
&content,
|
&content,
|
||||||
@@ -1507,7 +1694,7 @@ fn main() -> Result<()> {
|
|||||||
}
|
}
|
||||||
SubCommand::FormatAppSpecificConfiguration(arg) => {
|
SubCommand::FormatAppSpecificConfiguration(arg) => {
|
||||||
let file_path = resolve_windows_path(&arg.path)?;
|
let file_path = resolve_windows_path(&arg.path)?;
|
||||||
let content = fs::read_to_string(&file_path)?;
|
let content = std::fs::read_to_string(&file_path)?;
|
||||||
let formatted_content = ApplicationConfigurationGenerator::format(&content)?;
|
let formatted_content = ApplicationConfigurationGenerator::format(&content)?;
|
||||||
|
|
||||||
let mut file = OpenOptions::new()
|
let mut file = OpenOptions::new()
|
||||||
|
|||||||
Reference in New Issue
Block a user