A plugin for Hyprland that implements a workspace overview feature similar to that of KDE Plasma, GNOME and macOS, aimed to provide a efficient way of workspace and window management.
- Supports Hyprland release
>= 0.39
. All supported release versions will be pinned. New features might not be backported. Please report build issues on any supported release version.- Currently does not build on
hyprland-git
- Currently does not build on
Dont like this? Checkout hyprexpo from the official plugin repo that provides a grid style overview!
demo.mp4
- hyprsplit (tested, explicit support)
- hyprexpo (tested, minor bugs)
- Any layout & layout plugin (e.g. hyprRiver)
- Overview interface
- Workspace minimap
- Workspace display
- Mouse controls
- Moving window between workspaces
- Creating new workspaces
- Dragging windows between workspace views
- Configurability
- Styling
- Panel background
- Workspace background & border
- Panel on Bottom
- Vertical layout (on left / right)
- Panel top padding (reserved for bar / notch)
- Panel border (color / thickness)
- Unique styling for special workspaces
- Behavior
- Autodrag windows
- Autoscroll workspaces
- Responsive workspace switching
- Responsive exiting
- Exit on click / switch
- Exit with escape key
- Blacklisting workspaces
- Show / hide new workspace and empty workspaces
- Show / hide special workspace (#11)
- Styling
- Animation support
- Multi-monitor support (tested)
- Monitor scaling support (tested)
- aarch64 support (No function hook used)
- Touchpad & gesture support
- Workspace swipe (#9)
- Scrolling through workspace panel
- Swipe to open
To build, have hyprland headers installed and under the repo directory do:
make all
Then use hyprctl plugin load
followed by the absolute path to the .so
file to load, you could add this to your exec-once
to load the plugin on startup
hyprpm add https://github.com/KZDKM/Hyprspace
hyprpm enable Hyprspace
Refer to the Hyprland wiki on plugins, but your flake might look like this:
{
inputs = {
# Hyprland is **such** eye candy
hyprland ={
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
Hyprspace = {
url = "github:KZDKM/Hyprspace";
# Hyprspace uses latest Hyprland. We declare this to keep them in sync.
inputs.hyprland.follows = "hyprland";
};
};
... # your normal setup with hyprland
wayland.windowManager.hyprland.plugins = [
# ... whatever
inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
];
}
- Bind the
overview:toggle
or perform a workspace swipe vertically would open / close the panel.
- Window management:
- Click on workspace to change to it
- Click on a window to drag it
- Drag a window into a workspace would move the window to the workspace
- Exiting
- Click without dragging the window exits the overview
- Pressing ESC exits the overview
- Navigating
- When there are many workspaces open, scroll / swipe on the panel to pan through opened workspaces
- Use
overview:toggle
dispatcher to toggle workspace overview on current monitor - Use
overview:close
to close the overview on current monitor if opened - Use
overview:open
to open the overview on current monitor if closed - Adding the
all
argument to these dispatchers would toggle / open / close overview on all monitors
plugin:overview:panelColor
plugin:overview:panelBorderColor
plugin:overview:workspaceActiveBackground
plugin:overview:workspaceInactiveBackground
plugin:overview:workspaceActiveBorder
plugin:overview:workspaceInactiveBorder
plugin:overview:dragAlpha
overrides the alpha of window when dragged in overview (0 - 1, 0 = transparent, 1 = opaque)
plugin:overview:panelHeight
plugin:overview:panelBorderWidth
plugin:overview:onBottom
whether if panel should be on bottom instead of topplugin:overview:workspaceMargin
spacing of workspaces with eachother and the edge of the panelplugin:overview:reservedArea
padding on top of the panel, for Macbook camera notchplugin:overview:workspaceBorderSize
plugin:overview:centerAligned
whether if workspaces should be aligned at the center (KDE / macOS style) or at the left (Windows style)plugin:overview:hideBackgroundLayers
do not draw background and bottom layers in overviewplugin:overview:hideTopLayers
do not draw top layers in overviewplugin:overview:hideOverlayLayers
do not draw overlay layers in overviewplugin:overview:hideRealLayers
whether to hide layers in actual workspaceplugin:overview:drawActiveWorkspace
draw the active workspace in overview as-isplugin:overview:overrideGaps
whether if overview should override the layout gaps in the current workspace using the following valuesplugin:overview:gapsIn
plugin:overview:gapsOut
plugin:overview:affectStrut
whether the panel should push window aside, disabling this option also disablesoverrideGaps
- The panel uses the
windows
curve for a slide-in animation - Use
plugin:overview:overrideAnimSpeed
to override the animation speed
plugin:overview:autoDrag
mouse click always drags window when overview is openplugin:overview:autoScroll
mouse scroll on active workspace area always switch workspaceplugin:overview:exitOnClick
mouse click without dragging exits overviewplugin:overview:switchOnDrop
switch to the workspace when a window is droppped into itplugin:overview:exitOnSwitch
overview exits when overview is switched by clicking on workspace view or byswitchOnDrop
plugin:overview:showNewWorkspace
add a new empty workspace at the end of workspaces viewplugin:overview:showEmptyWorkspace
show empty workspaces that are inbetween non-empty workspacesplugin:overview:showSpecialWorkspace
defaults to falseplugin:overview:disableGestures
plugin:overview:reverseSwipe
reverses the direction of swipe gesture, for macOS peeps?- Touchpad gesture behavior follows Hyprland workspace swipe behavior
gestures:workspace_swipe_fingers
gestures:workspace_swipe_cancel_ratio
gestures:workspace_swipe_min_speed_to_force