Find a file
João Santos 9fb02a76eb fix(hyprexpo): correct workspace wrap logic in center picker for named workspaces
Ensure the center workspace picker correctly wraps and displays contiguous workspaces when using named or negative workspace IDs. The previous condition if (i > 0 && currentID <= firstID) prevented wrapping, so when the selected workspace was at the high end users saw empty slots after the center instead of the next active workspaces. Replace the condition with if (i > 0 && currentID == firstID) so the picker continues filling the visible slots with the next available workspaces and preserves screen real estate.

Behavioral notes
- Named workspaces that use negative IDs (for example -1337 and below) no longer break the picker layout.
- The picker now shows as many contiguous active workspaces as possible around the selected workspace instead of leaving trailing empty cards.
- The change is local to the center picker loop logic and preserves existing ordering and selection rules.
2025-10-14 12:35:31 +01:00
.github/workflows CI/Nix: add cache-nix-action 2025-06-20 01:28:32 +03:00
borders-plus-plus all: fix build with clang (#489) 2025-09-25 17:17:00 +02:00
csgo-vulkan-fix all: fix build with clang (#489) 2025-09-25 17:17:00 +02:00
hyprbars hyprbars: fix touch handling (#505) 2025-10-13 12:44:31 +01:00
hyprexpo fix(hyprexpo): correct workspace wrap logic in center picker for named workspaces 2025-10-14 12:35:31 +01:00
hyprfocus all: fix build with clang (#489) 2025-09-25 17:17:00 +02:00
hyprscrolling scrolling: Remove redundant workspace check (#506) 2025-10-11 02:39:56 +02:00
hyprtrails all: fix build with clang (#489) 2025-09-25 17:17:00 +02:00
hyprwinwrap all: fix build with clang (#489) 2025-09-25 17:17:00 +02:00
xtra-dispatchers all: fix build with clang (#489) 2025-09-25 17:17:00 +02:00
.clang-format Add clang-format 2023-02-28 12:22:29 +00:00
.gitignore flake: overlay: move packages to hyprlandPlugins namespace (#180) 2024-06-11 16:05:05 +03:00
flake.lock flake.lock: Update 2025-09-22 12:18:57 +03:00
flake.nix hyprfocus: fix nix 2025-06-20 11:41:32 +03:00
hyprload.toml hyprload: add hyprwinwrap manifest 2023-11-25 01:48:36 +00:00
hyprpm.toml hyprpm: add pins for 0.50.x 2025-08-01 19:16:34 +02:00
LICENSE Initial commit 2023-02-27 14:01:11 +00:00
README.md README: Explain hyprpm version pinning (#468) 2025-09-01 21:52:15 +02:00

hyprland-plugins

This repo houses official plugins for Hyprland.

Plugin list

  • borders-plus-plus -> adds one or two additional borders to windows
  • csgo-vulkan-fix -> fixes custom resolutions on CS:GO with -vulkan
  • hyprbars -> adds title bars to windows
  • hyprexpo -> adds an expo-like workspace overview
  • hyprfocus -> flashfocus for hyprland
  • hyprscrolling -> adds a scrolling layout to hyprland
  • hyprtrails -> adds smooth trails behind moving windows
  • hyprwinwrap -> clone of xwinwrap, allows you to put any app as a wallpaper
  • xtra-dispatchers -> adds some new dispatchers

Install

Important

hyprland-plugins only officially supports installation via hyprpm. hyprpm automatically detects your hyprland version & installs only the corresponding "pinned" release of hyprland-plugins. If you want the latest commits to hyprland-plugins, you need to use hyprland-git.

Install with hyprpm

To install these plugins, from the command line run:

hyprpm update

Then add this repository:

hyprpm add https://github.com/hyprwm/hyprland-plugins

then enable the desired plugin with

hyprpm enable <plugin-name>

See the respective README's in the subdirectories for configuration options.

See the plugins wiki and hyprpm -h for more details.

Install on Nix

To use these plugins, it's recommended that you are already using the Hyprland flake. First, add this flake to your inputs:

inputs = {
  # ...
  hyprland.url = "github:hyprwm/Hyprland";
  hyprland-plugins = {
    url = "github:hyprwm/hyprland-plugins";
    inputs.hyprland.follows = "hyprland";
  };

  # ...
};

The inputs.hyprland.follows guarantees the plugins will always be built using your locked Hyprland version, thus you will never get version mismatches that lead to errors.

After that's done, you can use the plugins with the Home Manager module like this:

{inputs, pkgs, ...}: {
  wayland.windowManager.hyprland = {
    enable = true;
    # ...
    plugins = [
      inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars
      # ...
    ];
  };
}

If you don't use Home Manager:

{ lib, pkgs, inputs, ... }:
with lib; let
  hyprPluginPkgs = inputs.hyprland-plugins.packages.${pkgs.system};
  hypr-plugin-dir = pkgs.symlinkJoin {
    name = "hyrpland-plugins";
    paths = with hyprPluginPkgs; [
      hyprexpo
      #...plugins
    ];
  };
in
{
  environment.sessionVariables = { HYPR_PLUGIN_DIR = hypr-plugin-dir; };
}

And in hyprland.conf

# load all the plugins you installed
exec-once = hyprctl plugin load "$HYPR_PLUGIN_DIR/lib/libhyprexpo.so"

Contributing

Feel free to open issues and MRs with fixes.

If you want your plugin added here, contact vaxry beforehand.