Giter Club home page Giter Club logo

hyprspace's Introduction

Hyprspace

A plugin for Hyprland that implements a workspace overview feature similar to that of KDE Plasma and macOS, aims to provide a mouse-friendly way of workspace and window management.

Only works with the latest git version currently!

demo.mp4

Installation

Manual

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

Hyprpm

hyprpm add https://github.com/KZDKM/Hyprspace
hyprpm enable Hyprspace

Nix

Refer to the Hyprland wiki on plugins, but your flake might look like this:

{
  inputs = {
    # Hyprland is **such** eye candy
    hyprland ={
      # Update for releavant commit, this is just bleeding edge as of 2024/04/11
      url = github:hyprwm/Hyprland/ac0f3411c18497a39498b756b711e092512de9e0;
      inputs.nixpkgs.follows = "nixpkgs";
    };
    Hyprspace = {
      url = github:KZDKM/Hyprspace;
      inputs.hyprland.follows = "hyprland";
    };
  };

... # your normal setup with hyprland

  wayland.windowManager.hyprland.plugins = [
    # ... whatever
    inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
  ];
}

Configuration

Dispatchers

  • 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 overview:close and overview:open would open / close overview on all monitors

Styling

Colors

  • plugin:overview:panelColor
  • 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)

Layout

  • plugin:overview:panelHeight
  • plugin:overview:workspaceMargin spacing of workspaces with eachother and the edge of the panel
  • plugin: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:overrideGaps whether if the following tiling gap values should be applied when overview is open
  • plugin:overview:gapsIn
  • plugin:overview:gapsOut
  • plugin:overview:hideBackgroundLayers do not draw background layers in overview
  • plugin:overview:drawActiveWorkspace draw the active workspace in overview as-is

Animation

  • The panel uses the windows curve for a slide-in animation
  • Use plugin:overview:overrideAnimSpeed to override the animation speed

Behaviors

  • plugin:overview:autoDrag mouse click always drags window when overview is open
  • plugin:overview:autoScroll mouse scroll on active workspace area always switch workspace
  • plugin:overview:exitOnClick mouse click without dragging exits overview
  • plugin:overview:switchOnDrop switch to the workspace when a window is droppped into it
  • plugin:overview:exitOnSwitch overview exits when overview is switched by clicking on workspace view or by switchOnDrop
  • plugin:overview:showNewWorkspace add a new empty workspace at the end of workspaces view
  • plugin:overview:showEmptyWorkspace show empty workspaces that are inbetween non-empty workspaces

Roadmap

  • Overview interface
    • Workspace minimap
    • Workspace display
    • Workspace labels (workspace ID / name)
  • 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)
      • 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)
      • Blacklisting layers from hiding
  • Animation support
  • Multi-monitor support
  • Monitor scaling support
  • aarch64 support (CFunctionHook reimplementation)
  • Touchpad & gesture support
    • Workspace swipe (#9)
    • Scrolling through workspace panel (untested)
    • Swipe to open

Plugin Compatibility

hyprspace's People

Contributors

kzdkm avatar dmadisetti avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.