Important
- Supports Hyprland release
v0.46.2-v0.47.2
.
demo_small.mp4
- Modular Layouts
- Grid layout
- Linear layout
- Minimap layout
- Mouse controls
- Exit into workspace (hover, click)
- Drag and drop windows
- Keyboard controls
- Switch workspaces with direction
- Switch workspaces with absolute number
- Multi-monitor support (tested)
- Monitor scaling support (tested)
- Animation support
- Configurability
- Overview exit behavior
- Number of visible workspaces
- Custom workspace layouts
- Toggle behavior
- Toggle keybind
- Touch and gesture support
- Overview layers
hyprpm add https://github.com/raybbian/hyprtasking
hyprpm enable hyprtasking
Add hyprtasking to your flake inputs
# flake.nix
{
inputs = {
hyprland.url = "github:hyprwm/Hyprland/v0.46.2";
hyprtasking = {
url = "github:raybbian/hyprtasking";
inputs.hyprland.follows = "hyprland";
};
};
# ...
}
Include the plugin in the hyprland home manager options
# home.nix
{ inputs, ... }:
{
wayland.windowManager.hyprland = {
plugins = [
inputs.hyprtasking.packages.${pkgs.system}.hyprtasking
];
}
}
To build, have hyprland headers installed on the system and then:
meson setup build
cd build && meson compile
Then use hyprctl plugin load
to load the absolute path to the .so
file.
- Bind
hyprtasking:toggle, all
to a keybind to open/close the overlay on all monitors. - Bind
hyprtasking:toggle, cursor
to a keybind to open the overlay on one monitor and close on all monitors. - Swipe up/down on a touchpad device to open/close the overlay on one monitor.
- See below for configuration options.
- Workspace Transitioning:
- Open the overlay, then use right click to switch to a workspace
- Use the directional dispatchers
hyprtasking:move
to switch to a workspace
- Window management:
- Left click to drag and drop windows around
Example below:
bind = SUPER, tab, hyprtasking:toggle, cursor
bind = SUPER, space, hyprtasking:toggle, all
bind = SUPER, X, hyprtasking:killhovered
bind = SUPER, H, hyprtasking:move, left
bind = SUPER, J, hyprtasking:move, down
bind = SUPER, K, hyprtasking:move, up
bind = SUPER, L, hyprtasking:move, right
plugin {
hyprtasking {
layout = grid
gap_size = 20
bg_color = 0xff26233a
border_size = 4
exit_behavior = active interacted original hovered
gestures {
enabled = true
open_fingers = 3
open_distance = 300
open_positive = true
}
grid {
rows = 3
cols = 3
}
linear {
height = 400
scroll_speed = 1.1
blur = 0
}
}
}
-
hyprtasking:toggle, ARG
takes in 1 argument that is eithercursor
orall
- if the argument is
all
, then- if all overviews are hidden, then all overviews will be shown
- otherwise all overviews will be hidden
- if the argument is
cursor
, then- if current monitor's overview is hidden, then it will be shown
- otherwise all overviews will be hidden
- if the argument is
-
hyprtasking:move, ARG
takes in 1 argument that is one ofup
,down
,left
,right
- when dispatched, hyprtasking will switch workspaces with a nice animation
-
hyprtasking:killhovered
behaves similarly to the standardkillactive
dispatcher with focus on hover- when dispatched, hyprtasking will the currently hovered window, useful when the overview is active.
- this dispatcher is designed to replace killactive, it will work even when the overview is not active.
All options should are prefixed with plugin:hyprtasking:
.
Option | Type | Description | Default |
---|---|---|---|
layout |
Hyprlang::STRING |
The layout to use, either grid or linear |
grid |
bg_color |
Hyprlang::INT |
The color of the background of the overlay | 0x000000FF |
gap_size |
Hyprlang::FLOAT |
The width in logical pixels of the gaps between workspaces | 8.f |
border_size |
Hyprlang::FLOAT |
The width in logical pixels of the borders around workspaces | 4.f |
exit_behavior |
Hyprlang::STRING |
Determines which workspace to exit to when closed by keybind | active hovered interacted original |
gestures:enabled |
Hyprlang::INT |
Whether or not to enable gestures | 1 |
gestures:open_fingers |
Hyprlang::INT |
The number of fingers to use for the "open" gesture | 3 |
gestures:open_distance |
Hyprlang::FLOAT |
How large of a swipe on the touchpad is needed for the "open" gesture | 300.f |
gestures:open_positive |
Hyprlang::INT |
1 if swiping up should open the overlay, 0 otherwise |
1 |
grid:rows |
Hyprlang::INT |
The number of rows to display on the grid overlay | 3 |
grid:cols |
Hyprlang::INT |
The number of columns to display on the grid overlay | 3 |
linear:blur |
Hyprlang::INT |
Whether or not to blur the dimmed area | 0 |
linear:height |
Hyprlang::FLOAT |
The height of the linear overlay in logical pixels | 300.f |
linear:scroll_speed |
Hyprlang::FLOAT |
Scroll speed modifier. Set negative to flip direction | 1.f |
- When an overview is about to hide, hyprtasking will evaluate these strings in order
- If the string is
'hovered'
, hyprtasking will attempt to switch to the hovered workspace - If the string is
'interacted'
, hyprtasking will attempt to switch to the last interacted workspace (window drag/drop) - If the string is
'original'
, hyprtasking will attempt to switch to the workspace in which the overview was shown initially - (Fallback) If the string is
'active'
, hyprtasking will switch to the monitor's active workspace.
- If the string is