Namespace Whim
Classes
- ActivateAdjacentWorkspaceTransform
- Activates the next (or previous) workspace in the given monitor.
- ActivateLayoutEngineTransform
- Set the active layout engine in the workspace specified by
WorkspaceId
and Predicate(IContext, Workspace, ILayoutEngine, int).
- ActivatePreviouslyActiveLayoutEngineTransform
- Activate the previously active layout engine in the workspace specified by
WorkspaceId
.
- ActivateWorkspaceTransform
- Activates the given workspace in the active monitor, or the given monitor (if provided).
- ActiveLayoutEngineChangedEventArgs
- Event for when the active layout engine for a workspace has changed.
- AddProxyLayoutEngineTransform
- Adds a proxy layout engine to the list of proxy layout engine creators. This does not add the layout engine to any existing workspaces. A proxy layout engine is used by plugins to add layout functionality to all workspaces. This should be used by IPlugins.
- AddWindowToWorkspaceTransform
- Adds the given
Window
to the workspace with the givenWorkspaceId
- AddWorkspaceTransform
- Create a workspace with the given
Name
and layout engines. If this transform is called prior to initialization, then IWorkspace creation is deferred. null is returned by the transform if the workspace creation was deferred.
- BaseProxyLayoutEngine
- Abstract layout engine, which proxy layout engines should inherit from.
- BaseRemoveWorkspaceTransform
- Remove a workspace.
- BaseWorkspaceTransform
- Base transform for a workspace operation. The return value from the store dispatch is whether the workspace has changed.
- BaseWorkspaceWindowTransform
- Base transform for a window operation in a given workspace, where the window exists in the workspace.
- ColorExtensions
- Extension methods for Color.
- ColumnLayoutEngine
- Layout engine that lays out windows in columns.
- Command
- Supports all classes in the .NET class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all .NET classes; it is the root of the type hierarchy.
- ConfigLoaderException
- Exception thrown by Whim when loading the config.
- CycleLayoutEngineTransform
- Cycle the layout engine for the provided workspace with the given
WorkspaceId
- DefaultFilteredWindows
- Defaults for various IFilterManagers.
- DeferWindowPosHandle
- Sets the position of multiple windows at once, using SetWindowPos(HWND, HWND, int, int, int, int, SET_WINDOW_POS_FLAGS).
This internally calls SetWindowPos(HWND, HWND, int, int, int, int, SET_WINDOW_POS_FLAGS) to set the position of the window. Each call occurs in parallel.
When the system has non-100% scaled monitors, for some reason we need to set the window position twice, otherwise windows will have incorrect dimensions.
- DeferWindowPosState
- The positioning state of a window.
- DirectionHelpers
- Extension methods for the Direction enum.
- DoWorkspaceLayoutTransform
- Queues a layout (sets all the window positions) for the workspace specified by WorkspaceId. This requires that the workspace has a matching monitor in the IMonitorSector.
- ExitEventArgs
- Event arguments for the Exiting event.
- FileSinkConfig
- SinkConfig with custom functionality for the file sink.
- FirefoxWindowProcessor
- Custom logic to handle events from Firefox.
- FocusLayoutEngine
- A layout engine that displays one window at a time. FocusLayoutEngine supports showing windows as:
- Normal: The focused window is shown in its normal size.
- Maximized: The focused window is shown in its maximized size.
- Minimized: The focused window can be hidden. Additionally, all non-focused windows are shown as minimized (minimized to the taskbar).
The SwapWindowInDirection(Direction, IWindow) and FocusWindowInDirection(Direction, IWindow) behaviour are a bit different to other layout engines:- When SwapWindowInDirection(Direction, IWindow) is called, the window in the direction of the given window will be swapped with the given window in the list of windows. This does not change the focused window.
- When FocusWindowInDirection(Direction, IWindow) is called, the focused window will be changed to the window in the direction of the given window. This does not change the order of the windows.
- FocusMonitorDesktopTransform
- Focus the Windows desktop's window.
- FocusWindowInDirectionTransform
- Focus the window adjacent to the given
WindowHandle
in the workspace with the givenWorkspaceId
in the providedDirection
. Returns whether the active layout engine changed.
- FocusWindowTransform
- Queue focus for the provided
WindowHandle
. IfWindowHandle
isdefault
, focus the last focused window. If there is no last focused window, focus the monitor's desktop. The focus operation will be performed after the transform sequence is executed.
- FocusWorkspaceTransform
- Focus the last focused window in the workspace with given
WorkspaceId
. NOTE: This does not update the workspace's LastFocusedWindow. Instead, it queues a call to Focus(). If there is no last focused window, the monitor's desktop will be focused.
- InitializeWindowException
- Exception thrown when a window could not be initialized.
- IntExtensions
- Extension methods for int.
- KeyModifiersExtensions
- Extension methods for KeyModifiers.
- LayoutAllActiveWorkspacesTransform
- Triggers all active workspaces to update their layout. Active workspaces are those that are visible on a monitor.
- LayoutEngineCustomAction
- The payload for a custom action for a layout engine to perform, via PerformCustomAction<T>(LayoutEngineCustomAction<T>).
- LayoutEngineCustomActionTransform
- Performs a custom action in a layout engine.
- LayoutEngineCustomActionWithPayloadTransform<T>
- Performs a custom action in a layout engine.
- LayoutEngineCustomAction<T>
- The payload for a custom action for a layout engine to perform, via PerformCustomAction<T>(LayoutEngineCustomAction<T>).
- LayoutEngineIdentity
- The unique identity of a layout engine within a IWorkspace.
- ListExtensions
- Extension methods for IReadOnlyList<T>.
- Logger
- Logger used throughout Whim. It is accessed according to the singleton pattern.
- LoggerConfig
- The user-configurable settings for Logger.
- MergeWorkspaceWindowsTransform
- Merges the windows of the given
SourceWorkspaceId
into the givenTargetWorkspaceId
.
- MonitorHelpers
- Helper methods for converting between the coordinate systems.
- MonitorWorkspaceChangedEventArgs
- Event arguments for when the workspace shown on a monitor changes.
- MonitorsChangedEventArgs
- Represents the change in monitors of Windows and Whim. This may include monitors were added or removed, or monitors that were unchanged but had some properties changed, like their position, resolution, work area, or scaling factor.
- MoveWindowEdgesInDirectionTransform
- Moves the given
WindowHandle
by the givenPixelsDeltas
.
- MoveWindowToAdjacentMonitorTransform
- Moves the window with
WindowHandle
to the next (or previous) monitor.
- MoveWindowToAdjacentWorkspaceTransform
- Moves the window with handle
WindowHandle
to the next (or previous) workspace.
- MoveWindowToMonitorIndexTransform
- Move the window with
WindowHandle
to the monitor atMonitorIndex
.
- MoveWindowToMonitorTransform
- Moves the window with
WindowHandle
to the monitor withMonitorHandle
.
- MoveWindowToPointTransform
- Moves the window with
WindowHandle
to the givenPoint
.
- MoveWindowToWorkspaceTransform
- Moves the window with
WindowHandle
to the givenTargetWorkspaceId
.
- Picker<TResult>
- Description of how to retrieve data from the Whim.Store. The implementing record should be populated with the payload.
- Pickers
- Pure pickers for IMapSector.
- PluginCommands
- Supports all classes in the .NET class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all .NET classes; it is the root of the type hierarchy.
- PointHelpers
- Extension methods for the IPoint<T> interface.
- Point<T>
- Supports all classes in the .NET class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all .NET classes; it is the root of the type hierarchy.
- Rectangle
- Helpers for IRectangle<T>.
- RectangleExtensions
- Extension methods for IRectangle<T>.
- Rectangle<T>
- Supports all classes in the .NET class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all .NET classes; it is the root of the type hierarchy.
- RemoveWindowFromWorkspaceTransform
- Remove the window for the given
Window
from the workspace with the givenWorkspaceId
.
- RemoveWorkspaceByIdTransform
- Removes the first workspace which matches the
Id
.
- RemoveWorkspaceByNameTransform
- Removes the first workspace which matches the
Name
.
- RootSector
- Supports all classes in the .NET class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all .NET classes; it is the root of the type hierarchy.
- RouteEventArgs
- Describes how an IWindow has been routed between workspaces. This implicitly describes hypothetical `WindowAdded` and `WindowRemoved` events for a workspace.
- SaveStateTransform
- A transform that saves Whim's state.
- SetLayoutEngineFromIndexTransform
- Set the active layout engine in the workspace specified by
WorkspaceId
andLayoutEngineIndex
.
- SetLayoutEngineFromNameTransform
- Set the active layout engine in the workspace specified by
WorkspaceId
andLayoutEngineName
.
- SetWorkspaceNameTransform
- Set the name of the workspace with the provided
Id
toName
.
- SinkConfig
- Default configuration options for a logging sink.
- SwapWindowInDirectionTransform
- Swap the
WindowHandle
in the providedDirection
for the workspace with the givenWorkspaceId
- SwapWorkspaceWithAdjacentMonitorTransform
- Swap the workspace with
WorkspaceId
with the adjacent monitor.
- Transform
- Operation describing how to update the state of the IStore. The implementing record should be populated with the payload.
- Transform<TResult>
- Operation describing how to update the state of the IStore. The implementing record should be populated with the payload.
- TransparentWindowController
- Controller for making a window transparent.
- UIElementExtensions
- Extension methods for UIElement.
- Unit
- An empty type for DotNext.Result<T>s which don't return anything.
- VeryObservableCollection<T>
- A custom ObservableCollection<T> which also subscribes to changes in its children. A normal ObservableCollection<T> only raises events when the collection itself changes.
- VirtualKeyExtensions
- Extension methods for VIRTUAL_KEY.
- WhimException
- The standard exception for Whim errors.
- WindowAddedEventArgs
- Event arguments for when a IWindow has been added to Whim and Windows.
- WindowBackdropConfig
- WinUI supports different backdrops/materials, depending on the OS version. To see the different materials available, see https://learn.microsoft.com/en-us/windows/apps/design/signature-experiences/materials. The different materials support differing levels and style of transparency. This config lets you specify which backdrop to use for a given Whim window.
- WindowBackdropController
- Manages the system backdrop for a Window.
- WindowEventArgs
- Base event arguments for when a IWindow has had something happen to it.
- WindowExtensions
- Extensions for Window.
- WindowFocusedEventArgs
- Event arguments for when the focused window has changed. When Window is null, then Whim does not track the focused window.
- WindowMessageMonitorEventArgs
- Args for a Whim.WindowMessageMonitor event.
- WindowMessageMonitorEventArgsPayload
- Represents a message passed to a window procedure.
- WindowMinimizeEndedEventArgs
- Event arguments for when a IWindow is no longer minimized.
- WindowMinimizeStartedEventArgs
- Event arguments for when a IWindow has been minimized.
- WindowMoveEndedEventArgs
- Event arguments for when a IWindow has stopped moving.
- WindowMoveEventArgs
- Base event arguments for when a IWindow has been moved.
- WindowMoveStartedEventArgs
- Event arguments for when a IWindow has started moving.
- WindowMovedEventArgs
- Event arguments for when a window has changed location, shape, or size.
- WindowPosition
- A window's position at a point in time.
- WindowRemovedEventArgs
- Event arguments for when a IWindow has been removed from Whim and Windows.
- WindowState
- Supports all classes in the .NET class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all .NET classes; it is the root of the type hierarchy.
- Workspace
- Workspaces contain windows to be organized by layout engines.
- WorkspaceAddedEventArgs
- Event arguments for when a workspace has been added.
- WorkspaceEventArgs
- Event arguments for when an argument is added or removed from the workspace manager.
- WorkspaceLayoutCompletedEventArgs
- Event arguments for when a workspace has completed performing a layout.
- WorkspaceLayoutStartedEventArgs
- Event arguments for when a workspace has started performing a layout.
- WorkspaceRemovedEventArgs
- Event arguments for when a workspace has been removed.
- WorkspaceRenamedEventArgs
- Event arguments for when a workspace has been renamed.
- WorkspaceUtils
- Utilities for working with the updated IWorkspace immutable type.
Structs
Interfaces
- IButler
- The butler is responsible for using the IWorkspaceManager and IMonitorManager to handle events from the IWindowManager to update the assignment of IWindows to IWorkspaces, and IWorkspaces to IMonitors.
- IButlerChores
- Manage the movement of IWindows between IWorkspaces and IMonitors.
- IButlerPantry
- The Butler's pantry is responsible for mapping IWindows to IWorkspaces to IMonitors.
- ICommand
- A command is a function with a unique identifier.
- ICommandManager
- ICommandManager is responsible for managing all the commands for Whim.
- IContext
- This is the core of Whim.
IContext
consists of managers which contain and control Whim's state, and functionality.IContext
also contains other associated state and functionality, like the Logger.
- IFileManager
- Manages files and directories for Whim.
- IFilterManager
- Manages filters for IWindows.
- IKeybind
- A keybinding. This should be hashable.
- IKeybindManager
IKeybindManager
is responsible for managing all the keybinds for Whim.
- ILayoutEngine
- Layout engines dictate how windows are laid out.
- IMapSector
- The sector containing window-workspace and workspace-monitor mappings.
- IMapSectorEvents
- Events relating to the mapping of IWindows to IWorkspaces and IWorkspaces to IMonitors.
- IMonitor
- Represents a single display device.
- IMonitorManager
- The manager for IMonitors.
- IMonitorSector
- The sector containing monitors.
- IMonitorSectorEvents
- The events raised by the IMonitorSector.
- INativeManager
- Manager for interacting with native Windows APIs.
- INotificationManager
- The notification manager allows the sending of toast notifications to the user.
- IPlugin
- A plugin for Whim.
- IPluginCommands
- The commands and keybinds for a plugin.
- IPluginManager
- Manager for the loaded plugins.
- IPoint<T>
- A point in the coordinate space.
- IRectangle<T>
- A rectangle, where the origin is in the top-left of the primary monitor.
- IResourceManager
- Interface to load package and user ResourceDictionary.
- IRootSector
- The root sector of the state. This is read-only.
- IRouterManager
- Manages routers for IWindows.
- IStore
- Contains the state of Whim's monitors, windows, and workspaces.
- IWindow
- Represents a single window.
- IWindowManager
- The manager for IWindows.
- IWindowProcessor
- Represents a processor for events from Windows. This is for windows with non-standard behavior. For example, Firefox will try reset the window position on startup. The FirefoxWindowProcessor will ignore these events.
- IWindowSector
- The sector containing windows.
- IWindowSectorEvents
- Events for the IWindowSector
- IWindowState
- The state of a window.
- IWorkspace
- Workspaces contain windows to be organized by layout engines.
- IWorkspaceManager
- Container responsible for the creation and removal of IWorkspaces. Events for workspaces are exposed here. To activate a workspace, or change the mapping between workspaces and monitors, use the IButler.
- IWorkspaceSector
- The sector containing workspaces.
- IWorkspaceSectorEvents
- The events raised by the IWorkspaceSector.
Enums
- BackdropType
- The available backdrop types - see https://learn.microsoft.com/en-us/windows/apps/design/signature-experiences/materials..
- Direction
- A direction in the coordinate space.
- ExitReason
- The possible reasons why Whim has been shut down.
- FileSinkConfigRollingInterval
- The file sink's rolling interval for the file logs.
- KeyModifiers
- The available key modifiers.
- RouterOptions
- Describes how to route windows when they are added to Whim.
- UncaughtExceptionHandling
- Ways to handle uncaught exceptions.
- WindowProcessorResult
- The result of processing a window event by a IWindowProcessor.
- WindowSize
- The size of a window.
Delegates
- CreateLeafLayoutEngine
- Creates a non-proxy ILayoutEngine with the given
identity
.
- ProxyLayoutEngineCreator
- This delegate takes an in a layout engine and returns it with a wrapper layout engine. The wrapper layout engine provides additional functionality, but still utilises the underlying layout engine.
- PurePicker<TResult>
- Description of how to retrieve data from the Whim.Store. Pure pickers can be implemented in terms of pure functions.